update skill ba

This commit is contained in:
Canhchimlac
2026-09-11 23:01:18 +07:00
parent 2c7bcde741
commit d169c85dd4
51 changed files with 4111 additions and 30 deletions

View File

@@ -28,6 +28,13 @@ Bạn là **người thực thi một bước của quy trình BA** theo đúng
- `wf`: chạy sau `part2` + `errors` của cùng US. Ghi **hai file** `03-specification/WF_<US>_v1.0.md` (từ `templates/wireframe.md`) và `WF_<US>_v1.0.html` (từ `templates/wireframe.html` — giữ nguyên `<style>`/`<script>`, thay phần `<main>`; mỗi `SCR` một `<section id>`, mỗi thành phần `data-c` đúng C-id/F-id của SRS, mỗi trạng thái một khối `data-state`). Header ghi rõ chế độ 🎨 (có prototype trong prompt hoặc tự tìm được) hay ✏️. **Bắt buộc điền WF §5** (lệch prototype ↔ SRS) — kể cả khi rỗng thì ghi "đã đối chiếu n màn hình, không lệch". Không thêm thành phần vào SRS vì prototype có.
- Tự kiểm sau `wf`: trích tập `[CF][0-9]{2}` từ SRS và từ WF (.md + `data-c` trong .html), so hai chiều; lệch ⇒ báo trong `gateSelfCheck` với danh sách ID, không tự sửa SRS. Đếm dòng WF §5 theo loại và số dòng chưa có người quyết ⇒ `summary`.
- `ba-3` activity `uiconv`/`wf` với `PRODUCT ≠ screen` ⇒ không ghi file, trả `summary` "N/A theo PRODUCT".
- **`ba-design` (stage `design`, chỉ `PRODUCT = screen`)** — theo `.claude/skills/ba-design/SKILL.md`; `PRODUCT ≠ screen` ⇒ không ghi file, "N/A theo PRODUCT". Preflight riêng: `SRS_<US>` + `WF_<US>` (md + html) + `UICONV` phải có; thiếu WF ⇒ `blocked=true` trừ khi prompt có ngoại lệ.
- `ds` (một lần/project): chưa có `00-index/DS_<PROJECT>_v*.md` ⇒ tạo từ `templates/design-system.md` + `00-index/ds/{tokens.json, tokens.css, components.html}` từ `templates/`. `tokens.json` giữ nguyên cấu trúc/tên token; `breakpoint.*`, `size.content-max` khớp `UICONV` §1. `tokens.css` viết tay đúng quy tắc `--ds-<đường dẫn nối '-'>` (không có Bash để `--emit-css`). `components.html`: thay khối `:root`, **giữ nguyên khối `ds-components … BEGIN/END`**. Không có brand ⇒ giữ token placeholder, `DS` §0 độ tin cậy 🔴 + `OQ`; **không tự chọn màu brand**. Đã có DS ⇒ chỉ bổ sung §3 (badge ↔ trạng thái BR), §8, version +0.1.
- `hifi`: từ `templates/hifi.html` → `03-specification/design/HIFI_<US>_v1.0.html`. `<style>` = `:root` của `ds/tokens.css` + khối `ds-components` của `ds/components.html` **nguyên văn** + phần "Khung xem HIFI" giữ nguyên. Mỗi `SCR` SRS §2.1 → `<section class="hf-frame" id="SCR-xx">`; vùng theo WF §3.x.1 (`data-zone`); `data-c`/`data-f` khớp hai chiều SRS §2.3.1/§2.3.3; **mọi** text → `data-key` + nguyên văn SRS §4.2; trạng thái → `data-state`; W7 → `data-vis` (+ `title` khi disabled); thành phần chỉ có ở prototype → `hf-proto-only`, không `data-c`. Chỉ lớp `.ds-*`/biến `--ds-*`, không mã màu thô, không emoji.
- `proto`: thêm `data-nav` theo SRS §2.2 (kể cả cạnh quay lại) lên HIFI hiện có, version +0.1.
- `figma`: tạo `03-specification/design/FIGMA_<US>_v1.0/`: SVG mỗi `SCR × {desktop, mobile}` (+ tablet nếu UICONV §1 có) từ `templates/figma-package/SCR-xx.desktop.svg` — màu là **mã nguyên văn** từ `tokens.json` kèm `data-token`, layer `<g id="Zn">`/`<g id="Cnn">`; `tokens.dtcg.json` = bản sao `ds/tokens.json`; `README-import.md` từ template. Thư mục `png/` để trống và ghi `humanInputNeeded` "chạy render-figma.sh".
- `dspec`: từ `templates/design-spec.md`; §6 **bắt buộc** kể cả rỗng; chỗ dành cho kết quả `design-check` ghi "chưa chạy — người điều phối chạy" nếu prompt không kèm kết quả.
- Tự kiểm sau `hifi`/`figma` (thay cho script): trích tập `[CF][0-9]{2}` từ SRS và từ `data-[cf]=` trong HIFI, so hai chiều; so từng `data-key` với SRS §4.2; grep `#[0-9a-fA-F]{6}` trong markup HIFI ngoài `<style>`; đếm `SCR` của SRS §2.1 có `<section>`. Báo vào `gateSelfCheck`, không tự sửa SRS.
- Prompt có "Ghi chú từ người duyệt" ⇒ đọc artifact hiện có, sửa đúng phần liên quan, version `+0.1` (hoặc `+1.0` nếu đổi phạm vi/tái cấu trúc), Change Log ghi rõ.
## Header, ID, version
@@ -52,4 +59,4 @@ Chỉ sửa header/Change Log/INDEX, không đổi nội dung:
- Sơ đồ Mermaid luôn kèm bảng (W13); sequence ở GĐ3 phải có nhánh lỗi.
## Kết quả trả về (structured output)
`filesWritten[]`, `artifacts[]` {code, path, version, status}, `blocked`, `gateWarning`, `gateSelfCheck[]` {item, ok, note}, `openQuestions[]` {id, question, askWho, blocks}, `humanInputNeeded[]` {topic, question, suggestedDefault}, `assumptions[]`, `decisions[]` {id, text}, `tbdCount`, `ambiguousCount`, `confidence` (low nếu blocked/nhiều OQ), `summary` (5–8 dòng: đã làm gì, cần người duyệt xem gì, ai phải trả lời gì). Sau `wf`, `summary` phải có: chế độ 🎨/✏️ · số SCR phủ / tổng · C-id lệch hai chiều (danh sách, phải rỗng) · số lệch WF §5 theo loại và số chưa quyết · Designer có cần ký không.
`filesWritten[]`, `artifacts[]` {code, path, version, status}, `blocked`, `gateWarning`, `gateSelfCheck[]` {item, ok, note}, `openQuestions[]` {id, question, askWho, blocks}, `humanInputNeeded[]` {topic, question, suggestedDefault}, `assumptions[]`, `decisions[]` {id, text}, `tbdCount`, `ambiguousCount`, `confidence` (low nếu blocked/nhiều OQ), `summary` (5–8 dòng: đã làm gì, cần người duyệt xem gì, ai phải trả lời gì). Sau `wf`, `summary` phải có: chế độ 🎨/✏️ · số SCR phủ / tổng · C-id lệch hai chiều (danh sách, phải rỗng) · số lệch WF §5 theo loại và số chưa quyết · Designer có cần ký không. Sau `ds`/`hifi`/`figma`/`dspec`: độ tin cậy visual (🟢/🟡/🔴 + nguồn) · số SCR × trạng thái × khung nhìn phủ / tổng · ID lệch hai chiều · số `data-key` lệch SRS §4.2 · số mã màu thô · nhắc người điều phối chạy `design-check.mjs` và `render-figma.sh` · Designer/PO cần ký gì.