update skill and docs

This commit is contained in:
Canhchimlac
2026-09-22 13:46:36 +07:00
parent 343ad8bbbc
commit 51506aabc7
149 changed files with 43752 additions and 300 deletions

View File

@@ -14,13 +14,13 @@ Engine: `Workflow({ scriptPath: "<abs>/.claude/workflows/sa-pipeline.js", args }
|---|---|---|
| `project`, `date` | luôn | tên project, ngày hôm nay `YYYY-MM-DD` |
| `stage` | luôn | `init` · `audit` · `context` · `architecture` · `enablement` · `evolution` · `sign` · `sync` |
| `activity` | nên dùng | context `drivers|constraints|as-is|options|cost-risk` · architecture `qas|asr|sad|icd|dat|sec|inf|fail|adr` (**qas → asr → sad bắt buộc trước**) · enablement `agd|fit|review|debt` · evolution `conformance|cost|drift|postmortem|review|roadmap` |
| `activity` | nên dùng | context `drivers|constraints|as-is|options|cost-risk` · architecture `qas|asr|sad|icd|dat|sec|inf|fail|adr|dom|ctr|pdm` (**qas → asr → sad bắt buộc trước**; `dom` sau sad+dat · `ctr` sau icd · `pdm` sau dat+dom) · enablement `handoff|agd|fit|review|debt` (`handoff` ngay khi AG2 ký) · evolution `conformance|cost|drift|postmortem|review|roadmap` |
| `scope` | tuỳ | `--focus …`, component/luồng cụ thể, ADR-nnn |
| `inputs[]`, `answers`, `notes`, `override` | tuỳ | như ba-pipeline |
| `approvals[]`, `gate`, `decisions[]` | sign | `{artifact, decision: approve|baseline|revise, approver, role, note}` |
## Bước 0 — chốt với người dùng
1. Project, phạm vi (cả 9 artifact của sa-2 là việc nhiều tuần — hỏi cần gì trước).
1. Project, phạm vi (cả 12 artifact của sa-2 là việc nhiều tuần — hỏi cần gì trước; `dom`/`ctr`/`pdm` là lớp bàn giao dev, `handoff` của sa-3 chạy ngay khi AG2 ký).
2. Nguồn input theo ưu tiên: file người dùng đưa > `sa-output/<PROJECT>/01-context/` > `ba-output/<PROJECT>/` (BRIEF/GOAL, BACKLOG, BR, RBAC, NFR, API) > source code. Trình bảng `File | Vai trò | Độ tin cậy`.
3. **Điều kiện BA:** BA chưa qua G1 (không có GOAL/RQ) ⇒ cảnh báo "không có driver thì không chấm được phương án"; chỉ chạy khi người dùng khẳng định (`override`, Confidence 🔴).
4. Ngày hôm nay → `date`.
@@ -35,8 +35,20 @@ Engine: `Workflow({ scriptPath: "<abs>/.claude/workflows/sa-pipeline.js", args }
4. **Ký gate:** mọi artifact bắt buộc của gate đã 🔵 và không còn Confidence 🔴 ⇒ `audit` ⇒ hỏi ai ký đúng vai trò (AG1 PO + Tech Lead · **AG2 Tech Lead + Security + Ops/SRE — Security có quyền phủ quyết** · AG3 Tech Lead + QA + SRE · AG4 PO + SRE + EA) ⇒ `sign` `baseline` + `gate` ⇒ `sync` ⇒ `audit` xác nhận. `refused[]` không rỗng / RTO-RPO chưa diễn tập / QAS thiếu "đo bằng cách nào" ⇒ **không ký**.
5. Kết thúc lượt: gate, Confidence tổng, OQ mở (ai, hệ quả), việc kế tiếp.
## Kiểm bằng máy — bạn (gatekeeper, có Bash) chạy sau mỗi activity, trình kết quả nguyên văn
- **Sơ đồ (mọi activity có sơ đồ — `sad`, `icd`, `dat`, `sec`, `inf`, `dom`, `as-is`, `options`, `roadmap`):**
`A=.claude/skills/archify/bin/archify.mjs`; với mỗi spec runner liệt kê: `node $A validate <type> <spec.json> --quality showcase --json`
→ 0 lỗi thì `node $A deliver <type> <spec.json> <spec.html> --quality showcase --json`; rồi
`node .claude/skills/ba-lifecycle/scripts/diagram-check.mjs --md <artifact.md>`. Còn 🔴 ⇒ chạy lại activity với `notes` trích đúng
diagnostics (`subject`, `evidence`, `supportedFixes`), **không ký**. Sửa spec theo thứ tự `diagram-rules.md` §5.4, không xoá nhãn cạnh.
- **`ctr`:** `npx @stoplight/spectral-cli lint <contracts>/**/*.yaml` nếu có; luôn chạy
`node .claude/skills/sa-2-architecture/scripts/contract-check.mjs --dir <contracts> --icd <ICD> --srs <SRS…> --api <API…>` (C1–C7); chép kết quả vào `CTR` §4 qua `notes`.
- **`pdm`:** nếu có Docker/CSDL cục bộ: chạy migration up từ rỗng → down → up; tối thiểu `grep -c "CREATE TABLE"` = số `TBL`, mọi `V*.sql` có `.down.sql`.
- **`handoff`:** `node .claude/skills/sa-3-enablement/scripts/handoff-check.mjs --handoff <HANDOFF.md> --root <repo>` (H1–H5); còn 🔴 ⇒ gói chưa bàn giao được.
## Đặc thù & liên kết BA
- `architecture`: không vẽ SAD trước QAS; `INF` phải khớp số `TCO` (D9); `FAIL` bắt buộc bảng timeout/retry/idempotent cho mọi phụ thuộc ngoài process.
- `architecture`: không vẽ SAD trước QAS; `INF` phải khớp số `TCO` (D9); `FAIL` bắt buộc bảng timeout/retry/idempotent cho mọi phụ thuộc ngoài process; `ctr`/`pdm` là điều kiện AG2 — còn "contract dự kiến" hoặc thực thể `DAT` không có bảng `PDM` ⇒ không ký.
- `CTR` thắng `API` của BA (file thắng bảng); `PDM` cột ↔ `FLD` bảng field của SRS phải khớp độ dài/kiểu — lệch ⇒ `baSyncIssues`, BA sửa SRS hoặc SA sửa PDM, không im lặng.
- `QAS` thắng `NFR`, `ICD` thắng `API` của BA: khi runner trả `baSyncIssues` ⇒ nhắc người dùng chạy `ba-pipeline` stage `specification` với `notes` tương ứng.
- BA `G2` chờ SA `AG1`: sau khi AG1 ✅, báo người dùng quay lại `ba-pipeline` ký G2.