Hướng dẫn

Để Claude Code và Cursor dựng UI khớp với một trang web

Nhờ agent lập trình AI làm “một trang cài đặt gọn gàng” và bạn sẽ nhận được một trang chung chung. Đưa cho nó một DESIGN.md lấy từ trang web bạn thích, nó sẽ dựng giao diện bằng đúng màu, thang kiểu chữ, bo góc và quy tắc component thật của trang đó thay vì đoán.

Hướng dẫn này đi qua toàn bộ quy trình trong Claude Code và Cursor, lấy tệp của Linear trong thư viện mẫu làm ví dụ.

Viết cho lập trình viên làm việc với agent lập trình AI. Cập nhật .

Bạn sẽ nhận được

  • Một DESIGN.md của trang bạn thích, lưu trong repo ở chỗ agent đọc được.
  • Một đoạn trỏ ngắn trong CLAUDE.md cho Claude Code và một project rule cho Cursor, để mọi tác vụ UI đều bắt đầu từ tệp này.
  • Các prompt gọi tên token, để agent dùng giá trị chính xác thay vì đoán gần đúng.
  • Một quy trình rà soát nhanh để bắt những chỗ agent làm lệch.

Vì sao DESIGN.md tốt hơn ảnh chụp màn hình

Ảnh chụp màn hình chỉ cho agent các pixel để đoán. Nó sẽ bắt được không khí chung nhưng sai giá trị: một màu xanh gần giống, một bo góc lệch vài pixel, một font được chọn vì trông na ná. Mỗi màn hình mới lại đoán lại từ đầu, nên ứng dụng dần lệch đi.

DESIGN.md cho agent giá trị chính xác. Tệp tuân theo đặc tả DESIGN.md của Google: phần YAML front matter ở đầu chứa token (mã màu hex, họ font và cỡ chữ, bo góc, component), còn phần markdown bên dưới giải thích mỗi giá trị dùng ở đâu. Mới làm quen với định dạng này? Hãy đọc DESIGN.md là gì.

Các bước

  1. Chọn một trang có giao diện giống thứ bạn đang làm

    Màn hình sản phẩm có mật độ tương tự sẽ hiệu quả hơn một landing page với hero lớn. Nếu bạn đang làm dashboard, hãy chọn một sản phẩm có dashboard. Xem thư viện mẫu DESIGN.md trước: có thể tệp đã có sẵn ở đó.

  2. Lấy DESIGN.md của trang đó

    Sao chép từ trang trong thư viện mẫu, hoặc dán URL vào trang chủ Design Extractor và chạy một lượt trích xuất Pro. Pro lấy mẫu các trang chính của trang web, và mỗi lượt mất ít nhất một phút.

  3. Lưu thành DESIGN.md ở thư mục gốc của repository

    Đặt nó cạnh README.md và AGENTS.md rồi commit, để mọi nhánh và agent của mọi đồng đội đều đọc cùng một tệp.

  4. Trỏ agent tới tệp

    Thêm một đoạn trỏ ngắn vào CLAUDE.md cho Claude Code, hoặc một project rule cho Cursor. Các đoạn mẫu ở bên dưới.

  5. Yêu cầu UI bằng chính thuật ngữ của tệp

    Gọi tên token và component trong prompt (primary, body-md, một công thức nút) và yêu cầu agent liệt kê mọi giá trị nó không tìm thấy thay vì tự bịa ra.

  6. Đối chiếu kết quả với tệp

    Kiểm tra màu, font, bo góc và các trạng thái so với DESIGN.md trước khi chấp nhận thay đổi.

Ví dụ thực tế: Linear

DESIGN.md của Linear trong thư viện mẫu được trích xuất từ linear.app bằng một lượt Pro đã quét 5 trang. Tệp có 17 token màu, 16 kiểu chữ và 12 mức bo góc. Đây là những gì agent của bạn dựa vào.

Màu sắc

Kiểu chữ

hero-displayDesign is intelligence made visibleInter Variable72px / 510 / 1
display-lgDesign is intelligence made visibleInter Variable64px / 510 / 1
display-mdDesign is intelligence made visibleInter Variable48px / 510 / 1
heading-lgDesign is intelligence made visibleInter Variable32px / 590 / 1.15
title-mdDesign is intelligence made visibleInter Variable20px / 590 / 1.35
body-lgDesign is intelligence made visibleInter Variable17px / 400 / 1.6

Hình dạng

xs · 2px
sm · 4px
sm-2 · 4.4625px
md · 5px
md-2 · 6px
lg · 8px
lg-2 · 9px
xl · 12px

12 màu đầu tiên, 6 kiểu chữ và 8 mức bo góc của Linear, hiển thị từ DESIGN.md của trang. Nhấn vào một ô màu để sao chép mã hex.

Phần đầu tệp, đã rút gọn: 8 trên 17 màu, 2 trên 16 kiểu chữ và 4 trên 12 mức bo góc. Đây là các giá trị chính xác mà agent sao chép.
---
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
---

Trích xuất từ trang web công khai của Linear, không phải hướng dẫn thương hiệu chính thức. Đọc toàn bộ DESIGN.md của Linear

Tệp mô tả giao diện như thế nào

Phần văn bản bên dưới token cho agent biết mỗi giá trị dùng ở đâu. Nó mở đầu như sau:

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.

Quy tắc tệp đưa cho agent

Phần Do's and Don'ts biến giao diện thành quy tắc. Vài quy tắc đầu tiên:

Nên

  • 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.

Không nên

  • 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.

Component

Tệp có 30 công thức component bằng HTML và CSS. 13 trong số đó đã vượt qua bước kiểm tra với trang thật; với những công thức còn lại, tệp ghi rõ vì sao chúng không đạt hoặc không kiểm tra được. Toàn bộ tệp dài khoảng 276.000 ký tự, phần lớn là công thức. Vì vậy bạn nên trỏ agent tới tệp thay vì dán nó vào prompt.

Trỏ agent tới tệp

Phần lớn agent không tự mở DESIGN.md. Vài dòng trong phần hướng dẫn mà chúng vốn đã tải sẽ khắc phục điều đó. Trong Claude Code, thêm đoạn này vào CLAUDE.md ở thư mục gốc của 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.

Trong Cursor, thêm một project rule. Lưu đoạn này thành .cursor/rules/design.mdc; alwaysApply sẽ tải nó cho mọi yêu cầu trong dự án:

---
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.

Hãy dùng đoạn trỏ thay vì dán cả tệp vào phần hướng dẫn. DESIGN.md bản Pro có công thức cho từng component lấy từ trang web nên khá dài, và agent chỉ cần nó khi làm UI.

Prompt dùng token

Nêu tên tệp và token của nó, và cho agent một lối thoát thay vì một lý do để đoán. Các prompt này được viết cho hướng dẫn này với tên token thật của Linear; hãy thay bằng tác vụ của bạn.

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.

Trong Cursor, @DESIGN.md đính kèm tệp vào cuộc trò chuyện, giúp ích thêm ngoài rule khi tác vụ chủ yếu liên quan đến giao diện.

Kết quả nên trông thế nào? Đại khái như thẻ này, do trang này vẽ trực tiếp từ token. Thẻ cho thấy các giá trị tạo ra hiệu ứng gì, không phải thứ một agent đã tạo ra.

Lên kế hoạch cho bản phát hành tiếp theo

Mọi việc, mốc thời gian và quyết định ở cùng một nơi, để cả nhóm phát hành đúng hạn.

Bắt đầu xây dựngLiên hệ bộ phận bán hàng
Hình minh họa do trang này vẽ từ token của Linear: canvas #08090A, ink #F7F8F8, primary #5E6AD2 và button-ghost.rounded 9999px. Đây không phải kết quả từ một agent lập trình AI, và font chỉ hiển thị nếu thiết bị của bạn có font đó.

Rà soát những gì agent đã dựng

  • Màu. Tìm các mã hex trong diff. Mỗi mã phải có trong DESIGN.md. Một mã mới thường có nghĩa là agent đã đoán.
  • Font. Nhiều thương hiệu dùng font thương mại mà bạn không được phép phân phối. Phần Typography của tệp thường nêu một font mã nguồn mở thay thế; hãy chắc chắn agent đã tải đúng font đó chứ không phải một font dự phòng ngẫu nhiên.
  • Bo góc và khoảng cách. Nút và thẻ nên dùng token rounded của tệp, không phải một giá trị mặc định như 8px ở mọi nơi.
  • Trạng thái. Kiểu hover và focus là một phần của mỗi công thức component. Hãy nhấn Tab qua trang và kiểm tra vòng focus.
  • Công thức flagged. Nếu tệp đánh dấu một công thức là flagged, hình dạng của nó chỉ là xấp xỉ. Hãy so component đó với trang thật.

Nếu bạn sửa DESIGN.md bằng tay, hãy kiểm tra bằng Trình kiểm tra DESIGN.md miễn phí trước khi agent đọc lại.

FAQ

Khớp giao diện một trang web trong Claude Code và Cursor: câu hỏi thường gặp

Trả lời ngắn cho những điều mọi người hay hỏi trước khi thử.

Không. Lưu nó một lần dưới tên DESIGN.md ở thư mục gốc của repository, rồi trỏ tới nó từ CLAUDE.md cho Claude Code hoặc từ một project rule cho Cursor. Agent sẽ đọc tệp khi tác vụ liên quan đến giao diện. DESIGN.md bản Pro có công thức component nên khá dài, vì vậy trỏ tới tệp giúp prompt của bạn ngắn gọn.

Không, và đó cũng không phải mục tiêu. Agent nhận token của trang (màu, kiểu chữ, bo góc), công thức component và quy tắc của trang. Bố cục, nội dung và tính năng vẫn là của bạn. Những công thức không vượt qua bước kiểm tra với trang thật được đánh dấu flagged trong tệp, nên hãy coi chúng là bản xấp xỉ gần đúng.

Có. Agent nào đọc được tệp trong repository của bạn đều dùng được DESIGN.md. Hãy trỏ tới nó từ phần hướng dẫn mà agent đó vốn đã đọc, như AGENTS.md hoặc .github/copilot-instructions.md, hoặc nêu tên tệp trong prompt.

Có. Mỗi trang trong thư viện mẫu đều có toàn bộ DESIGN.md để sao chép. Các tệp trong thư viện mẫu được trích xuất từ trang web công khai của từng thương hiệu, không phải hướng dẫn thương hiệu chính thức. Với trang chưa có trong thư viện mẫu, hãy dán URL của nó ở trang chủ và chạy một lượt trích xuất.

Lấy DESIGN.md cho trang web bạn thích

Dán bất kỳ URL công khai nào. Một lượt trích xuất Pro lấy mẫu các trang chính của trang web và trả về DESIGN.md mà agent của bạn đọc được.

Xem tất cả hướng dẫn DESIGN.md