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

@@ -13,11 +13,12 @@ Engine: `Workflow({ scriptPath: "<abs>/.claude/workflows/ba-pipeline.js", args }
| Tham số | Bắt buộc | Ý nghĩa |
|---|---|---|
| `project`, `date` | luôn | tên project (1 project/lần), ngày hôm nay `YYYY-MM-DD` (header) |
| `stage` | luôn | `init` · `audit` · `discovery` · `analysis` · `specification` · `delivery` · `post-release` · `sign` · `sync` |
| `activity` | nên dùng | 1 hoạt động của stage (mặc định cả stage): discovery `stakeholder|elicitation|requirements|goals-scope|risks` · analysis `process|backlog|rules|rbac|impact` · specification `uiconv|srs|part2|ac|errors|nfr|api|wf` (`uiconv`/`wf` chỉ khi `PRODUCT = screen`; `uiconv` chạy một lần đầu project) · delivery `clarification|cr|testcase-review|uat` · post-release `release-note|manual|feedback|benefit` |
| `scope` | specification/delivery | `US-012,US-013` (≤3 US) · `CR-004` · câu hỏi cụ thể |
| `stage` | luôn | `init` · `audit` · `discovery` · `analysis` · `specification` · `design` · `delivery` · `post-release` · `sign` · `sync` |
| `activity` | nên dùng | 1 hoạt động của stage (mặc định cả stage): discovery `stakeholder|elicitation|requirements|goals-scope|risks` · analysis `process|backlog|rules|rbac|impact` · specification `uiconv|srs|part2|ac|errors|nfr|api|wf` (`uiconv`/`wf` chỉ khi `PRODUCT = screen`; `uiconv` chạy một lần đầu project) · design `ds|hifi|proto|figma|dspec` (chỉ `screen`, sau `wf` của cùng US; `ds` chạy một lần đầu project; thứ tự `ds → hifi → proto → figma → dspec`) · delivery `clarification|cr|testcase-review|uat` · post-release `release-note|manual|feedback|benefit` |
| `scope` | specification/design/delivery | `US-012,US-013` (≤3 US) · `CR-004` · câu hỏi cụ thể |
| `profile` | init | `{product, lifecycle, rigor}` đã được người dùng xác nhận |
| `proto` | specification (screen) | Prototype tham chiếu: đường dẫn thư mục/file/URL hoặc mục SAD (`docs/sections/07-giao-dien.md`). Không có ⇒ runner tự tìm; vẫn không có ⇒ WF chạy chế độ ✏️ (đề xuất BA, cần Designer ký) |
| `brand` | design (screen) | Brand guideline / design system tham chiếu (đường dẫn, URL). Không có ⇒ runner tự tìm; vẫn không có ⇒ `DS` dùng token trung tính, độ tin cậy 🔴 + OQ |
| `inputs[]`, `answers`, `notes`, `override` | tuỳ | file người dùng đưa · trả lời OQ · ghi chú sửa · khẳng định chạy dù gate trước chưa qua |
| `approvals[]`, `gate`, `decisions[]` | sign | `{artifact, decision: approve|baseline|revise, approver, role, note}` · gate được ký · DEC-nn |
@@ -26,7 +27,7 @@ Hỏi bằng `AskUserQuestion` (≤4 câu/lượt), không hỏi lại điều
1. Project & phạm vi lần này (cả module hay US nào).
2. Profile: `PRODUCT` (screen | api-service | data-pipeline | ml-model | batch-job | process-only) · `LIFECYCLE` (greenfield | brownfield | enhancement) · `RIGOR` (light | standard | strict). Chưa có PROFILE ⇒ suy đoán từ tài liệu, nêu rõ là suy đoán, hỏi xác nhận.
3. Thư mục output: mặc định `ba-output/<PROJECT>/`; nếu repo đã có thư mục BA khác ⇒ hỏi dùng cái nào, **không tạo cấu trúc song song**.
4. Input đã tìm thấy (Glob `docs/`, `ba-output/`, `sa-output/`, `design/`, `prototype/`, file người dùng đưa) — trình bảng `File | Vai trò | Giai đoạn`. Với `screen` trước stage `specification`: hỏi **prototype/design system tham chiếu** là gì (→ `proto`) và **dự án có Designer không** (không có ⇒ PO ký thay `UICONV`/`WF`, ghi DEC).
4. Input đã tìm thấy (Glob `docs/`, `ba-output/`, `sa-output/`, `design/`, `prototype/`, file người dùng đưa) — trình bảng `File | Vai trò | Giai đoạn`. Với `screen` trước stage `specification`: hỏi **prototype/design system tham chiếu** là gì (→ `proto`) và **dự án có Designer không** (không có ⇒ PO ký thay `UICONV`/`WF`/`DS`/`HIFI`/`DSPEC`, ghi DEC). Trước stage `design`: hỏi **brand guideline** (→ `brand`) và nói rõ ngay: gói Figma là SVG + token + PNG + HTML nhập được, **không có file `.fig`**.
Lấy ngày hôm nay từ ngữ cảnh → `date`.
## Vòng lặp chuẩn cho mỗi bước
@@ -36,11 +37,13 @@ Lấy ngày hôm nay từ ngữ cảnh → `date`.
- Duyệt ⇒ hỏi **tên + vai trò người duyệt** ⇒ `sign` với `decision: approve` cho từng artifact. Không có tên người ⇒ không sign.
- Sửa ⇒ `notes` → chạy lại đúng activity. Trả lời ⇒ gom `answers` (`OQ-012: …`) → chạy lại.
- `blocked` ⇒ trình `gateWarning`; hỏi có **khẳng định chạy ngoại lệ** không; có ⇒ chạy lại với `override: true` và ghi `decisions: ["DEC: chạy <stage> khi <gate> chưa qua vì …"]` ở lần `sign` kế.
4. **Ký gate** khi mọi artifact của stage đã 🔵 Approved: `audit` ⇒ gate 🟠 chỉ còn thiếu chữ ký và coverage đạt ⇒ hỏi **ai ký** đúng vai trò (G1 PO · G2 PO + Tech Lead · G3 PO + Tech Lead + QA, `screen` thêm Designer cho `UICONV`/`WF` · G4 PO · G5 PO + BA Lead; `strict` thêm Bảo mật/Pháp chế) ⇒ `sign` với `gate` + `decision: baseline` ⇒ `sync` ⇒ `audit` xác nhận ✅. Coverage fail / còn TBD / `refused[]` không rỗng ⇒ **không ký**, quay lại bước 2.
4. **Ký gate** khi mọi artifact của stage đã 🔵 Approved: `audit` ⇒ gate 🟠 chỉ còn thiếu chữ ký và coverage đạt ⇒ hỏi **ai ký** đúng vai trò (G1 PO · G2 PO + Tech Lead · G3 PO + Tech Lead + QA, `screen` thêm Designer cho `UICONV`/`WF`/`DS`/`HIFI`/`DSPEC` · G4 PO · G5 PO + BA Lead; `strict` thêm Bảo mật/Pháp chế) ⇒ `sign` với `gate` + `decision: baseline` ⇒ `sync` ⇒ `audit` xác nhận ✅. Coverage fail / còn TBD / `refused[]` không rỗng ⇒ **không ký**, quay lại bước 2.
5. Kết thúc mỗi lượt: tóm tắt gate ✅/🟠/☐, OQ mở (ai, quá hạn?), việc kế tiếp.
## Đặc thù
- `specification`: ≤3 US mỗi lần; QA phải xác nhận "mọi AC test được" trước G3 (`standard`+). Với `screen`: lần đầu của project chạy `uiconv` trước; `wf` chạy sau `part2` + `errors` của cùng US, truyền `proto`; trình riêng **bảng lệch WF §5** (Tồn tại/Hành vi chưa quyết = blocker) và chế độ 🎨/✏️ để người dùng biết cần Designer ký hay không.
- `design` (chỉ `screen`): chạy sau `wf` của cùng US, `≤3 US`; lần đầu project chạy `ds` trước. **Sau mỗi activity bạn (gatekeeper, có Bash) chạy phép kiểm máy** và trình kết quả nguyên văn cùng `summary`:
`node .claude/skills/ba-design/scripts/design-check.mjs --tokens <ds/tokens.json> --css <ds/tokens.css> --components <ds/components.html> --html <HIFI> --srs <SRS> --wf <WF> --svg-dir <FIGMA/>` (bỏ tham số của artifact chưa có). Sau `figma` chạy thêm `.claude/skills/ba-design/scripts/render-figma.sh <HIFI> <FIGMA>/png` để có PNG. Còn 🔴 ⇒ chạy lại activity với `notes` trích đúng dòng lỗi, không ký. Trình riêng: **độ tin cậy visual** (`DS` §0), **bảng lệch `DSPEC` §6**, và Designer có cần ký không.
- `delivery`: chạy theo từng câu hỏi/CR; CR phải qua 6 bước của ba-4, không sửa artifact Baselined trực tiếp.
- `post-release`: `benefit` cần KPI baseline từ G1 — không có ⇒ ghi bài học, không lấp liếm.
- **Liên kết SA:** G2 cần `AG1` của `sa-pipeline` (Tech Lead ký "khả thi" dựa trên OPT/ARISK). SA báo lệch `NFR↔QAS`, `API↔ICD`, `RBAC↔SEC` ⇒ chạy lại `specification` activity liên quan với `notes` (QAS/ICD thắng).