design-qa – skill Thiết kế & UI cho agent AI
Dùng khi một màn hình, trang hoặc component UI sắp được coi là xong, bàn giao hoặc phát hành, hoặc khi UI được tạo ra trông chung chung hoặc dang dở. Kiểm tra kết quả đã render, không phải file thiết kế - tìm nút không hoạt động, nội dung placeholder, viền focus bị xóa, thiếu trạng thái loading/empty/error, độ tương phản thấp, chữ nhỏ
Cài skill design-qa bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/design-qa-de46f.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /design-qa – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/design-qa-de46f.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $design-qa – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/design-qa-de46f.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /design-qa – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/design-qa-de46f.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /design-qa – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Design QA
> Portability: 3 stdlib Python scripts, no network. The browser collector is
> plain JavaScript; the keyboard pass needs Playwright in your own project.
> This checks the build, not the taste. Objective defects block; template
> defaults only warn, because the brief may ask for them.
Screens get reviewed in a static, populated, happy-path frame and ship with a
button wired to () => {}, an empty state that says "Lorem ipsum", and a focus
ring someone removed. Each script catches one class of these before a user does.
Workflow
# 1 - Source: is anything unfinished in the code?
python scripts/finish_lint.py src/ --output json > lint.json
# 2 - States: does every surface have loading, empty, error, busy, focus...?
python scripts/state_matrix_checker.py --matrix states.csv --evidence-root .
# 3 - Rendered: what did the browser actually show? (capture 320 px and desktop)
node assets/capture_snapshot.mjs http://localhost:3000/invoices --width 320 --out s320.json
python scripts/rendered_audit.py --snapshot s320.json --waivers waivers.csvStep 1 blocks on inert handlers, dead links, placeholder copy and focus
outlines removed without a replacement. It warns on sample data, token drift and
each template trait it finds, and rates generic risk LOW, MEDIUM or HIGH.
Step 2 derives required states from each surface's kind (data_view,
form, action, control, media, page). An unlisted state counts as
missing, and DONE without evidence is reported. Start from assets/states.example.csv.
Step 3 reads a snapshot of the rendered page and blocks on WCAG 2.2 AA
failures: text contrast, no focus indicator, focus obscured, reflow at 320 px,
empty accessible names and targets under 24×24 px without the spacing exception.
Contrast is composited through translucent layers and opacity, so a token that
passes on white but fails inside a tinted card is caught. Repeated rows are grouped.
No Playwright? Paste assets/collect_snapshot.js into the DevTools console and
run copy(JSON.stringify(designQaSnapshot())). Focus results are then
unverified rather than passed.
Capture one snapshot per key state (empty, error, long content), not just the
populated page. Fill assets/finish_signoff.md from the three runs.
Hard rules
- Unlisted is missing. A state nobody wrote down was not built.
- Measure the render, not the CSS. Contrast on a real background beats a declared colour pair.
- Never block on taste. Template traits warn. Record in the sign-off whether the brief asks for the look.
- A waiver names the WCAG exception or a ticket. The scripts reject a waiver or NA with no reason.
- Unverified is not pass. Text on a gradient or focus from script focus is checked by hand or with the keyboard pass.
- Not an accessibility conformance claim. The checks cover what can be measured. A screen-reader pass and
a11y-auditcover the rest.
Scripts
| Script | Role | Exit codes |
|---|---|---|
| scripts/finish_lint.py | Inert controls, dead links, placeholder copy, removed focus, template traits, token drift | 0 clean · 2 findings · 3 bad input · 4 blocked |
| scripts/state_matrix_checker.py | Required states per surface kind, evidence and NA reasons | 0 complete · 2 · 3 · 4 blocked |
| scripts/rendered_audit.py | Contrast, focus, target size, names, clipping, reflow from a snapshot | 0 clean · 2 · 3 · 4 blocked |
All support --help, --sample and --output json.
References and assets
- [
references/rendered_checks_wcag22.md](references/rendered_checks_wcag22.md): each rendered check, its WCAG 2.2 criterion and exceptions (7 sources) - [
references/interaction_states.md](references/interaction_states.md): required states per kind and what done looks like (7 sources) - [
references/generic_ui_defaults.md](references/generic_ui_defaults.md): unfinished-work patterns and the template traits (6 sources) - [
assets/collect_snapshot.js](assets/collect_snapshot.js), [assets/capture_snapshot.mjs](assets/capture_snapshot.mjs): snapshot capture - [
assets/states.example.csv](assets/states.example.csv), [assets/snapshot.example.json](assets/snapshot.example.json), [assets/waivers.example.csv](assets/waivers.example.csv): input formats - [
assets/finish_signoff.md](assets/finish_signoff.md): sign-off before a screen is called done
Skill liên quan
- design-qa – Dùng khi một màn hình, trang hoặc component UI sắp được coi là xong, bàn giao hoặc phát…
- postgresql-table-design – Dùng kỹ năng này khi thiết kế hoặc rà soát schema dành riêng cho PostgreSQL. Bao gồm…
- design-system – Ghi nhận bản sắc thương hiệu của người dùng chỉ một lần qua trình hướng dẫn 10 câu hỏi…
- baseline-ui – Nhanh chóng làm sạch code UI bằng cách sửa khoảng cách, phân cấp, typography và các lỗi…
- beatra-ai-video-studio – Cài đặt và sử dụng gói Beatra AI Video Studio chính thức, ghim theo digest, cho các tác…
- bento-ui – Hướng dẫn triển khai Bento UI cho Web và App. Kích hoạt khi người dùng muốn thẻ lưới…
- epic-design – Xây dựng website 2.5D tương tác, điện ảnh, sử dụng kể chuyện theo cuộn trang, parallax…
- brand-guidelines – Viết nội dung theo hướng dẫn thương hiệu Sentry. Dùng khi viết văn bản giao diện, thông…