คู่มือ
ให้ Claude Code และ Cursor สร้าง UI ที่เหมือนเว็บไซต์ต้นแบบ
ขอให้เอเจนต์เขียนโค้ดสร้าง “หน้าตั้งค่าที่ดูสะอาดตา” แล้วคุณจะได้หน้าทั่วไป แต่ถ้าให้ DESIGN.md ที่ดึงจากเว็บไซต์ที่คุณชอบ เอเจนต์จะสร้างด้วยสี สเกลตัวอักษร ความโค้งมุม และกฎของคอมโพเนนต์จริงของเว็บไซต์นั้นแทนการเดา
คู่มือนี้แสดงขั้นตอนทั้งหมดใน Claude Code และ Cursor โดยใช้ไฟล์ของ Linear จากแกลเลอรีเป็นตัวอย่าง
เขียนสำหรับนักพัฒนาที่สร้างงานด้วยเอเจนต์เขียนโค้ด AI อัปเดตเมื่อ
สิ่งที่คุณจะได้
- DESIGN.md ของเว็บไซต์ที่คุณชอบ บันทึกไว้ใน repo ที่เอเจนต์อ่านได้
- ข้อความอ้างอิงสั้น ๆ ใน CLAUDE.md สำหรับ Claude Code และ project rule สำหรับ Cursor เพื่อให้งาน UI ทุกงานเริ่มจากไฟล์นี้
- พรอมต์ที่ระบุชื่อโทเค็น เพื่อให้เอเจนต์ใช้ค่าที่แน่นอนแทนการเดาค่าใกล้เคียง
- วิธีรีวิวแบบรวดเร็วเพื่อจับจุดที่เอเจนต์ทำคลาดเคลื่อน
ทำไม DESIGN.md ดีกว่าภาพหน้าจอ
ภาพหน้าจอให้เอเจนต์มีแค่พิกเซลไว้เดา เอเจนต์จะได้อารมณ์โดยรวมใกล้เคียงแต่ค่าผิด เช่น สีน้ำเงินที่ใกล้เคียง ความโค้งมุมที่คลาดไปไม่กี่พิกเซล หรือฟอนต์ที่เลือกเพราะดูคล้าย ทุกหน้าจอใหม่ก็ต้องเดาใหม่ แอปจึงค่อย ๆ เพี้ยนไปเรื่อย ๆ
DESIGN.md ให้ค่าที่แน่นอน ไฟล์เป็นไปตามสเปก DESIGN.md ของ Google โดย YAML front matter ด้านบนเก็บโทเค็น (สี hex ฟอนต์และขนาด ความโค้งมุม คอมโพเนนต์) และ Markdown ด้านล่างอธิบายว่าแต่ละค่าควรใช้ตรงไหน เพิ่งรู้จักรูปแบบนี้ใช่ไหม อ่านว่า DESIGN.md คืออะไร
ขั้นตอน
เลือกเว็บไซต์ที่อินเทอร์เฟซให้ความรู้สึกเหมือนสิ่งที่คุณกำลังสร้าง
หน้าจอผลิตภัณฑ์ที่มีความหนาแน่นใกล้เคียงกันใช้ได้ดีกว่าหน้า landing ที่มี hero ขนาดใหญ่ หากคุณกำลังสร้างแดชบอร์ด ให้เลือกผลิตภัณฑ์ที่มีแดชบอร์ด ดูในแกลเลอรี DESIGN.mdก่อน ไฟล์อาจมีอยู่แล้ว
รับ DESIGN.md ของเว็บไซต์นั้น
คัดลอกจากหน้าแกลเลอรี หรือวาง URL ในหน้าแรกของ Design Extractor แล้วเริ่มการดึงดีไซน์ระดับ Pro ระดับ Pro เก็บตัวอย่างจากหน้าสำคัญของเว็บไซต์ และใช้เวลาอย่างน้อยหนึ่งนาที
บันทึกเป็น DESIGN.md ที่ root ของ repository
วางไว้ข้าง README.md และ AGENTS.md แล้ว commit เพื่อให้ทุก branch และเอเจนต์ของเพื่อนร่วมทีมทุกคนอ่านไฟล์เดียวกัน
บอกเอเจนต์ให้ใช้ไฟล์นี้
เพิ่มข้อความอ้างอิงสั้น ๆ ใน CLAUDE.md สำหรับ Claude Code หรือ project rule สำหรับ Cursor บล็อกต่าง ๆ อยู่ด้านล่าง
ขอ UI โดยใช้คำศัพท์ของไฟล์
ระบุชื่อโทเค็นและคอมโพเนนต์ในพรอมต์ (
primary,body-md, สูตรปุ่ม) และขอให้เอเจนต์แจ้งค่าที่หาไม่พบแทนการคิดขึ้นเองรีวิวผลลัพธ์เทียบกับไฟล์
ตรวจสอบสี ฟอนต์ ความโค้งมุม และสถานะเทียบกับ DESIGN.md ก่อนยอมรับการเปลี่ยนแปลง
ตัวอย่างจริง: Linear
DESIGN.md ของ Linear ในแกลเลอรีดึงมาจาก linear.app ด้วยการดึงดีไซน์ระดับ Pro ที่บันทึก 5 หน้า ไฟล์มีโทเค็นสี 17 ตัว สไตล์ตัวอักษร 16 แบบ และความโค้งมุม 12 ค่า นี่คือสิ่งที่เอเจนต์ของคุณใช้ทำงาน
สี
ตัวอักษร
รูปทรง
สี 12 สีแรก สไตล์ตัวอักษร 6 แบบแรก และความโค้งมุม 8 ค่าแรกของ Linear เรนเดอร์จาก DESIGN.md ของแบรนด์ คลิกแถบสีเพื่อคัดลอกค่า hex
---
name: Linear
colors:
primary: "#5E6AD2"
canvas: "#08090A"
surface: "#121414"
surface-raised: "#1C1C1F"
ink: "#F7F8F8"
ink-secondary: "#D0D6E0"
muted: "#8A8F98"
subtle: "#62666D"
typography:
hero-display:
fontFamily: Inter Variable
fontSize: 72px
fontWeight: 510
lineHeight: 1
letterSpacing: -1.584px
body-lg:
fontFamily: Inter Variable
fontSize: 17px
fontWeight: 400
lineHeight: 1.6
letterSpacing: normal
rounded:
xs: 2px
sm: 4px
sm-2: 4.4625px
md: 5px
---ดึงจากเว็บไซต์สาธารณะของ Linear ไม่ใช่แนวทางแบรนด์อย่างเป็นทางการ อ่าน DESIGN.md ฉบับเต็มของ Linear
ไฟล์อธิบายหน้าตาอย่างไร
ข้อความใต้โทเค็นบอกเอเจนต์ว่าแต่ละค่าควรใช้ตรงไหน เริ่มต้นแบบนี้:
Linear's marketing surface reads like the product itself: a near-black Void canvas (canvas, #08090A) with charcoal panels stacked a half-step lighter, fenced by 1px hairlines rather than shadows. The mood is engineering-grade and restrained. Realistic product UI mockups, a customer logo strip and Berkeley Mono micro-labels ("FIG 0.1") stand in for illustration. Nothing shouts; the page earns attention through precision.กฎที่ไฟล์ให้กับเอเจนต์ของคุณ
ส่วน Do's and Don'ts เปลี่ยนหน้าตาให้เป็นกฎ ข้อแรก ๆ ได้แก่:
ควรทำ
- Reserve Linear Indigo (primary, #5E6AD2) for focus and interactive accents. Every measured focus state is a 1px solid #5E69D1 outline with a 2px offset.
- Shape every button as a pill with rounded.full. button-ghost, button-ghost-2 and button-ghost-3 all measure 9999px.
- Keep control heights on the observed ladder: button-ghost and button-ghost-2 at 32px, button-ghost-4 at 29px, button-ghost-3 at 24px, and sidebar-nav-item and the icon buttons at 28px.
ไม่ควรทำ
- Don't use weights other than 400, 510 and 590, and never substitute a static 600 or 700 for heading-lg or title-md.
- Don't add a third typeface. Inter Variable carries everything, and Berkeley Mono is limited to micro figure labels.
- Don't use accent-blue, danger or success for marketing chrome; they belong inside product mockups.
คอมโพเนนต์
ไฟล์มีสูตรคอมโพเนนต์ 30 สูตรในรูป HTML และ CSS โดย 13 สูตรผ่านการตรวจสอบเทียบกับหน้าเว็บจริง สำหรับสูตรอื่น ไฟล์ระบุเหตุผลว่าทำไมไม่ผ่านหรือตรวจสอบไม่ได้ ไฟล์ทั้งหมดยาวประมาณ 276,000 ตัวอักษร ส่วนใหญ่เป็นสูตร นี่คือเหตุผลที่คุณควรอ้างถึงไฟล์แทนการวางลงในพรอมต์
บอกเอเจนต์ให้ใช้ไฟล์นี้
เอเจนต์ส่วนใหญ่ไม่เปิด DESIGN.md เอง การเพิ่มไม่กี่บรรทัดในคำสั่งที่เอเจนต์โหลดอยู่แล้วช่วยแก้ปัญหานี้ได้ ใน Claude Code ให้เพิ่มข้อความนี้ใน CLAUDE.md ที่ root ของ repository:
## Design
Follow DESIGN.md in the repository root for every UI change.
Use its color, typography, rounded and component tokens instead of inventing values.
Before you build a button, card or input, read its recipe in the Components section.ใน Cursor ให้เพิ่ม project rule บันทึกข้อความนี้เป็น .cursor/rules/design.mdc โดย alwaysApply จะโหลด rule นี้ในทุกคำขอของโปรเจกต์:
---
description: Follow DESIGN.md for every UI change
alwaysApply: true
---
Follow DESIGN.md in the repository root for every UI change.
Use its color, typography, rounded and component tokens instead of inventing values.
Before you build a button, card or input, read its recipe in the Components section.ใช้ข้อความอ้างอิงแทนการวางไฟล์ลงในคำสั่ง DESIGN.md ระดับ Pro มีสูตรสำหรับทุกคอมโพเนนต์ที่เลือกจากเว็บไซต์ ไฟล์จึงยาว และเอเจนต์ต้องใช้เฉพาะตอนทำงานด้าน UI
พรอมต์ที่ใช้โทเค็น
ระบุชื่อไฟล์และโทเค็น และให้ทางออกกับเอเจนต์แทนที่จะปล่อยให้เดา พรอมต์เหล่านี้เขียนขึ้นสำหรับคู่มือนี้โดยใช้ชื่อโทเค็นจริงของ Linear เปลี่ยนเป็นงานของคุณเองได้
Claude Code
Build a pricing page with three plan cards. Follow DESIGN.md:
- use primary (#5E6AD2) only where the file says it belongs
- set headings in hero-display and body copy in body-lg
- reuse the button-ghost recipe for the plan buttons, with its hover and focus states
- start the plan cards from the card recipe
List any value you could not find in DESIGN.md instead of inventing one.Cursor
@DESIGN.md Restyle the settings form in src/app/settings to match this file.
Take colors, type and radii from the tokens and inputs and buttons from the component recipes.
Keep the existing layout and logic, and list any value you could not find in the file.ใน Cursor @DESIGN.md จะแนบไฟล์ไปกับแชต ซึ่งช่วยเสริมจาก rule เมื่องานส่วนใหญ่เกี่ยวกับหน้าตา
ผลลัพธ์ควรมีหน้าตาอย่างไร ประมาณการ์ดนี้ ซึ่งหน้านี้วาดขึ้นจากโทเค็นโดยตรง การ์ดแสดงว่าค่าต่าง ๆ ทำอะไร ไม่ใช่สิ่งที่เอเจนต์สร้างขึ้น
วางแผนรีลีสถัดไป
ทุกงาน วันที่ และการตัดสินใจอยู่ในที่เดียว เพื่อให้ทีมส่งงานได้ตรงเวลา
รีวิวสิ่งที่เอเจนต์สร้าง
- สี ค้นหาค่า hex ใน diff ทุกค่าควรอยู่ใน DESIGN.md ค่าใหม่มักหมายความว่าเอเจนต์เดาเอง
- ฟอนต์ หลายแบรนด์ใช้ฟอนต์เชิงพาณิชย์ที่คุณนำไปใช้ไม่ได้ ส่วน Typography ของไฟล์มักระบุฟอนต์โอเพนซอร์สที่ใช้แทนได้ ตรวจสอบว่าเอเจนต์โหลดฟอนต์นั้น ไม่ใช่ฟอนต์สำรองแบบสุ่ม
- ความโค้งมุมและระยะห่าง ปุ่มและการ์ดควรใช้โทเค็น rounded ของไฟล์ ไม่ใช่ค่าเริ่มต้นอย่าง 8px ทุกที่
- สถานะ สไตล์ hover และ focus เป็นส่วนหนึ่งของสูตรคอมโพเนนต์แต่ละตัว กด Tab ไล่ไปทั่วหน้าแล้วตรวจสอบ focus ring
- สูตรที่ถูกแจ้งเตือน หากไฟล์ทำเครื่องหมายว่าสูตรถูกแจ้งเตือน (flagged) รูปทรงของสูตรนั้นเป็นค่าประมาณ ให้เปรียบเทียบคอมโพเนนต์นั้นกับเว็บไซต์จริง
หากคุณแก้ไข DESIGN.md เอง ให้ตรวจสอบด้วยตัวตรวจสอบ DESIGN.mdฟรีก่อนให้เอเจนต์อ่านอีกครั้ง
ไฟล์ที่ใช้ในคู่มือนี้
หน้าแกลเลอรีเหล่านี้แต่ละหน้ามี DESIGN.md ฉบับเต็มให้คัดลอกไปไว้ใน repo พร้อมพาเลตต์สีและตัวอย่างตัวอักษร
ซอฟต์แวร์และ SaaS · Productivity & NotesLinear
Design ของ Linear เป็นระบบที่เน้นโหมดมืดเป็นหลัก เป็นอินเทอร์เฟซผลิตภัณฑ์ที่มีความหนาแน่นของข้อมูลสูง ออกแบบมาสำหรับทีมวิศวกร ชุดสีพื้นผิวอิงกับสีดำเกือบสนิท (#08090a, #0f1011) พร้อมเฉดสีเทาเข้มที่ซ้อนกันเป็นชั้นเพื่อแยกแถบข้าง การ์ด และแผงต่าง ๆ การจัดตัวอักษรใช้ Inter Variable เพียงอย่างเดียว โดยปรับระยะห่างตัวอักษรให้แคบลงอย่างแม่นยำในขนาดตัวอักษรใหญ่ และใช้ Berkeley Mono สำหรับโค้ดแบบอินไลน์ ภาษาของการขอบมุมถูกกำหนดให้เล็กโดยตั้งใจ ส่วนใหญ่อยู่ที่ 2–6px ขณะที่รูปทรงแคปซูลสงวนไว้สำหรับป้ายกำกับและชิปสถานะ การยกระดับของวัตถุแสดงผ่านเส้นขอบ inset 1px ที่แผ่วเบาและเงาตกกระทบความทึบต่ำ มากกว่าการซ้อนชั้นที่โดดเด่น สีปุ่มเรียกให้ดำเนินการหลักคือสีคราม #5e6ad2 ซึ่งเป็นเอกลักษณ์ของ Linear ใช้กับปุ่ม Sign Up และลิงก์สำคัญ
การเงินและฟินเทคStripe
Stripe ใช้ระบบออกแบบที่ควบคุมอย่างเข้มงวด (HDS — Stripe Design System) ซึ่งสร้างขึ้นจากฟอนต์แบบ variable "sohne-var" ที่ใช้น้ำหนักบาง (300–400) และชุดสีแบรนด์ตั้งแต่กรมท่าเข้มไปจนถึงม่วงคราม โดยมี #533afd (Stripe Indigo) เป็นสีหลัก พร้อมส่วน hero ที่เป็นพื้นหลังไล่เฉดสเปกตรัมเต็มพื้นที่ซึ่งเป็นเอกลักษณ์ของแบรนด์ คอมโพเนนต์ใช้มุมโค้งน้อย (4–6px) เงาแบนหรือเงาน้อยที่สุด และจัดวางตามกริดระยะห่างฐาน 8px โดยรวมให้น้ำเสียงที่น่าเชื่อถือแต่เข้าถึงง่าย สื่อถึงโครงสร้างพื้นฐานทางการเงินผ่านงานตัวอักษรที่มั่นใจและการใช้สีอย่างประหยัด
เครื่องมือนักพัฒนาและโครงสร้างพื้นฐาน · Developer Tools & IDEsSupabase
Supabase ใช้ระบบดีไซน์แบบ dark-first ที่วางอยู่บนพื้นหลังสีดำเกือบสนิทลึก (oklch ~0.19) และมีสีเขียวสดใสเป็นสีเน้นของแบรนด์ (#3ecf8e / #3fcf8e) โครงหน้าจัดเป็นกริดการ์ดฟีเจอร์ที่ตอบสนองต่อขนาดจอ โดยใช้ Manrope สำหรับหัวข้อหลัก และ Inter สำหรับเนื้อหาและส่วนติดต่อผู้ใช้ ส่วนที่เป็นโค้ดและแบบอักษรขนาดเท่ากันทั้งหมดใช้ Source Code Pro ระบบสีสร้างจาก custom properties ของ oklch และตั้งชื่อตามหน้าที่ความหมาย การ์ดมีมุมโค้ง 12px พร้อมกรอบเส้นบางๆ ปุ่มมีมุมโค้ง 6–8px และความหนาแน่นของเนื้อหาอยู่ในระดับปานกลาง โดยอิงระบบระยะห่างฐาน 8px
FAQ
ทำ UI ให้เหมือนเว็บไซต์ใน Claude Code และ Cursor: คำถามที่พบบ่อย
คำตอบสั้น ๆ สำหรับคำถามที่คนมักถามก่อนลองทำ
ไม่ต้อง บันทึกครั้งเดียวเป็น DESIGN.md ที่ root ของ repository แล้วอ้างถึงจาก CLAUDE.md สำหรับ Claude Code หรือจาก project rule สำหรับ Cursor เอเจนต์จะอ่านไฟล์เมื่องานเกี่ยวข้องกับอินเทอร์เฟซ DESIGN.md ระดับ Pro ที่มีสูตรคอมโพเนนต์มีความยาวมาก การอ้างถึงไฟล์จึงช่วยให้พรอมต์ของคุณสั้น
ไม่ และนั่นไม่ใช่เป้าหมาย เอเจนต์ได้รับโทเค็นของเว็บไซต์ (สี ตัวอักษร ความโค้งมุม) สูตรคอมโพเนนต์ และกฎต่าง ๆ ส่วนเลย์เอาต์ เนื้อหา และฟีเจอร์ยังเป็นของคุณเอง สูตรที่ตรวจสอบเทียบกับเว็บไซต์จริงไม่ผ่านจะถูกทำเครื่องหมายว่าแจ้งเตือน (flagged) ในไฟล์ ให้ถือว่าสูตรเหล่านั้นเป็นค่าประมาณที่ใกล้เคียง
ได้ เอเจนต์ทุกตัวที่อ่านไฟล์ใน repository ได้ใช้ DESIGN.md ได้ ให้อ้างถึงไฟล์นี้จากคำสั่งที่เอเจนต์นั้นอ่านอยู่แล้ว เช่น AGENTS.md หรือ .github/copilot-instructions.md หรือระบุชื่อไฟล์ในพรอมต์
ได้ ทุกหน้าในแกลเลอรีมี DESIGN.md ฉบับเต็มให้คัดลอก ไฟล์ในแกลเลอรีดึงจากเว็บไซต์สาธารณะของแต่ละแบรนด์ ไม่ใช่แนวทางแบรนด์อย่างเป็นทางการ สำหรับเว็บไซต์ที่ไม่อยู่ในแกลเลอรี ให้วาง URL ในหน้าแรกแล้วเริ่มการดึงดีไซน์
รับ DESIGN.md ของเว็บไซต์ที่คุณชอบ
วาง URL สาธารณะใดก็ได้ การดึงดีไซน์ระดับ Pro จะเก็บตัวอย่างจากหน้าสำคัญของเว็บไซต์ และส่งคืน DESIGN.md ที่เอเจนต์ของคุณอ่านได้
คู่มือที่เกี่ยวข้อง
ไม่มีดีไซเนอร์? ยืมระบบดีไซน์ที่พิสูจน์แล้วมาใช้กับแอปของคุณ
วิธีเลือกเว็บไซต์อ้างอิง สิ่งที่ควรเก็บไว้จาก DESIGN.md และสิ่งที่ควรเปลี่ยน เพื่อให้ผลลัพธ์เป็นของคุณ ไม่ใช่การลอกเลียน
กำลังสร้างเว็บไซต์ใหม่? ดึงระบบดีไซน์ออกมาก่อน
บันทึกเว็บไซต์ปัจจุบันของคุณเป็น DESIGN.md ก่อนสร้างใหม่ รีแบรนด์ หรือย้ายเฟรมเวิร์ก และรู้ว่าต้องตรวจสอบอะไรด้วยตัวเอง
ผสานเว็บไซต์อ้างอิงสองแห่งเป็นดีไซน์เดียวสำหรับต้นแบบ
เทียบไฟล์ DESIGN.md ที่ดึงมาสองไฟล์ทีละโทเค็น แล้วรวมเป็นสเปกเดียวสำหรับต้นแบบ ด้วยมือหรือด้วยเอเจนต์ของคุณ
ให้เอเจนต์เขียนโค้ดดึงสเปกดีไซน์ได้ตามต้องการด้วย MCP
เชื่อมต่อเซิร์ฟเวอร์ MCP เพื่อให้เอเจนต์ดึง DESIGN.md ของเว็บไซต์ได้เอง รอผลลัพธ์ และสร้างงานจากไฟล์นั้น