@educa-corp/sdd-framework 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/commands/generate-architecture.md +706 -0
  2. package/commands/generate-architecture.tmpl +194 -0
  3. package/commands/generate-code.md +16 -2
  4. package/commands/generate-code.tmpl +16 -2
  5. package/commands/generate-tech-docs.md +19 -0
  6. package/commands/generate-tech-docs.tmpl +19 -0
  7. package/core/FRAMEWORK_VERSION +1 -1
  8. package/core/commands/generate-architecture.md +706 -0
  9. package/core/commands/generate-code.md +16 -2
  10. package/core/commands/generate-tech-docs.md +19 -0
  11. package/core/skills/setup-ai-first/SKILL.md +12 -4
  12. package/core/templates/architecture.template.md +392 -111
  13. package/docs/01-getting-started/installation.md +47 -112
  14. package/docs/01-getting-started/quickstart.md +58 -72
  15. package/docs/01-getting-started/what-is-sdd.md +75 -0
  16. package/docs/02-concepts/architecture.md +109 -0
  17. package/docs/02-concepts/glossary.md +87 -0
  18. package/docs/02-concepts/overview.md +93 -0
  19. package/docs/02-concepts/pipeline-steps/00-setup.md +102 -0
  20. package/docs/02-concepts/pipeline-steps/01-discovery.md +129 -0
  21. package/docs/02-concepts/pipeline-steps/02-specification.md +130 -0
  22. package/docs/02-concepts/pipeline-steps/03-design-spec.md +90 -0
  23. package/docs/02-concepts/pipeline-steps/04-bdd.md +120 -0
  24. package/docs/02-concepts/pipeline-steps/05-tech-docs.md +101 -0
  25. package/docs/02-concepts/pipeline-steps/06-code.md +119 -0
  26. package/docs/02-concepts/pipeline-steps/07-dev-selftest.md +92 -0
  27. package/docs/02-concepts/pipeline-steps/08-qc-automation.md +102 -0
  28. package/docs/02-concepts/pipeline-steps/09-validate-traces.md +104 -0
  29. package/docs/02-concepts/pipeline-steps/10-feedback-loop.md +105 -0
  30. package/docs/02-concepts/pipeline-steps/README.md +92 -0
  31. package/docs/02-concepts/roles-and-hitl.md +73 -0
  32. package/docs/02-concepts/traceability.md +94 -0
  33. package/docs/03-guides/architect.md +98 -0
  34. package/docs/03-guides/developer.md +76 -0
  35. package/docs/03-guides/product-owner.md +68 -0
  36. package/docs/03-guides/tester-qa.md +70 -0
  37. package/docs/04-reference/commands.md +105 -0
  38. package/docs/04-reference/configuration.md +94 -0
  39. package/docs/04-reference/model-selection.md +68 -0
  40. package/docs/04-reference/modules.md +74 -0
  41. package/docs/04-reference/trace-schema.md +93 -0
  42. package/docs/README.md +29 -40
  43. package/docs/explain/00-setup-ai-first.md +77 -0
  44. package/docs/explain/00b-generate-architecture.md +76 -0
  45. package/docs/explain/01-define-product.md +79 -0
  46. package/docs/explain/02-generate-prd.md +78 -0
  47. package/docs/explain/03-refine-prd.md +86 -0
  48. package/docs/explain/04-review-context.md +100 -0
  49. package/docs/explain/05-generate-design-spec.md +73 -0
  50. package/docs/explain/06-generate-bdd.md +77 -0
  51. package/docs/explain/07-generate-tech-docs.md +71 -0
  52. package/docs/explain/08-review-tech-docs.md +79 -0
  53. package/docs/explain/09-generate-code.md +78 -0
  54. package/docs/explain/10-review-code.md +70 -0
  55. package/docs/explain/11-map-testids.md +69 -0
  56. package/docs/explain/12-dev-gen-test.md +66 -0
  57. package/docs/explain/13-dev-run-test.md +69 -0
  58. package/docs/explain/14-dev-smoke-test.md +67 -0
  59. package/docs/explain/15-qc-analyze.md +68 -0
  60. package/docs/explain/16-qc-plan.md +61 -0
  61. package/docs/explain/17-qc-design-test.md +61 -0
  62. package/docs/explain/18-qc-review.md +59 -0
  63. package/docs/explain/19-qc-run-test.md +67 -0
  64. package/docs/explain/20-qc-report.md +61 -0
  65. package/docs/explain/21-validate-traces.md +68 -0
  66. package/docs/explain/22-generate-spec-manifest.md +60 -0
  67. package/docs/explain/23-fix-bug.md +69 -0
  68. package/docs/explain/24-debug.md +61 -0
  69. package/docs/explain/25-report-bug.md +65 -0
  70. package/docs/explain/26-propose-scenario.md +63 -0
  71. package/docs/explain/27-learn.md +65 -0
  72. package/docs/explain/28-sync.md +70 -0
  73. package/docs/explain/29-update-framework.md +65 -0
  74. package/docs/explain/README.md +134 -0
  75. package/package.json +1 -1
  76. package/skills/setup-ai-first/SKILL.md +12 -4
  77. package/skills/setup-ai-first/SKILL.tmpl +12 -4
  78. package/templates/architecture.template.md +392 -111
  79. package/docs/01-getting-started/README.md +0 -19
  80. package/docs/01-getting-started/core-concepts.md +0 -102
  81. package/docs/02-guides/README.md +0 -26
  82. package/docs/02-guides/bdd-input-checklist.md +0 -68
  83. package/docs/02-guides/developer/README.md +0 -49
  84. package/docs/02-guides/developer/bdd-and-trace.md +0 -126
  85. package/docs/02-guides/developer/commands.md +0 -76
  86. package/docs/02-guides/developer/pr-checklist.md +0 -16
  87. package/docs/02-guides/developer/scenarios.md +0 -460
  88. package/docs/02-guides/developer/workflow.md +0 -121
  89. package/docs/02-guides/prd-input-checklist.md +0 -94
  90. package/docs/02-guides/product-owner/README.md +0 -81
  91. package/docs/02-guides/product-owner/commands.md +0 -30
  92. package/docs/02-guides/product-owner/handoff-checklist.md +0 -42
  93. package/docs/02-guides/product-owner/prd-writing-rules.md +0 -45
  94. package/docs/02-guides/product-owner/scenarios.md +0 -438
  95. package/docs/02-guides/tech-docs-input-checklist.md +0 -109
  96. package/docs/02-guides/tester/README.md +0 -75
  97. package/docs/02-guides/tester/bug-reporting.md +0 -117
  98. package/docs/02-guides/tester/qc-automation.md +0 -165
  99. package/docs/02-guides/tester/reading-specs.md +0 -79
  100. package/docs/02-guides/tester/scenarios.md +0 -186
  101. package/docs/02-guides/tester/spec-manifest.md +0 -130
  102. package/docs/02-guides/tester/test-checklist.md +0 -31
  103. package/docs/02-guides/tester/workflow.md +0 -77
  104. package/docs/03-concepts/README.md +0 -20
  105. package/docs/03-concepts/architecture.md +0 -248
  106. package/docs/03-concepts/mechanisms-explained.md +0 -124
  107. package/docs/03-concepts/pipeline.md +0 -278
  108. package/docs/03-concepts/traceability.md +0 -152
  109. package/docs/04-operations/README.md +0 -33
  110. package/docs/04-operations/bug-flow.md +0 -364
  111. package/docs/04-operations/publishing.md +0 -154
  112. package/docs/04-operations/sync-and-update.md +0 -522
  113. package/docs/05-reference/README.md +0 -34
  114. package/docs/05-reference/command-cheatsheet.md +0 -147
  115. package/docs/05-reference/commands.md +0 -234
  116. package/docs/05-reference/model-selection.md +0 -74
  117. package/docs/05-reference/modules.md +0 -110
  118. package/docs/05-reference/trace-schema.md +0 -154
  119. package/docs/06-commands/README.md +0 -75
  120. package/docs/06-commands/explain-debug.md +0 -32
  121. package/docs/06-commands/explain-define-product.md +0 -43
  122. package/docs/06-commands/explain-dev-gen-test.md +0 -28
  123. package/docs/06-commands/explain-dev-run-test.md +0 -24
  124. package/docs/06-commands/explain-dev-smoke-test.md +0 -25
  125. package/docs/06-commands/explain-fix-bug.md +0 -28
  126. package/docs/06-commands/explain-generate-bdd.md +0 -45
  127. package/docs/06-commands/explain-generate-code.md +0 -53
  128. package/docs/06-commands/explain-generate-design-spec.md +0 -54
  129. package/docs/06-commands/explain-generate-prd.md +0 -45
  130. package/docs/06-commands/explain-generate-spec-manifest.md +0 -20
  131. package/docs/06-commands/explain-generate-tech-docs.md +0 -56
  132. package/docs/06-commands/explain-learn.md +0 -21
  133. package/docs/06-commands/explain-map-testids.md +0 -28
  134. package/docs/06-commands/explain-propose-scenario.md +0 -24
  135. package/docs/06-commands/explain-qc-analyze.md +0 -22
  136. package/docs/06-commands/explain-qc-design-test.md +0 -20
  137. package/docs/06-commands/explain-qc-plan.md +0 -21
  138. package/docs/06-commands/explain-qc-report.md +0 -23
  139. package/docs/06-commands/explain-qc-review.md +0 -24
  140. package/docs/06-commands/explain-qc-run-test.md +0 -27
  141. package/docs/06-commands/explain-refine-prd.md +0 -51
  142. package/docs/06-commands/explain-report-bug.md +0 -24
  143. package/docs/06-commands/explain-review-code.md +0 -45
  144. package/docs/06-commands/explain-review-context.md +0 -68
  145. package/docs/06-commands/explain-review-tech-docs.md +0 -45
  146. package/docs/06-commands/explain-setup-ai-first.md +0 -25
  147. package/docs/06-commands/explain-sync.md +0 -24
  148. package/docs/06-commands/explain-update-framework.md +0 -22
  149. package/docs/06-commands/explain-validate-traces.md +0 -25
  150. package/docs/t-sample.md +0 -826
@@ -1,154 +0,0 @@
1
- [📚 Docs](../README.md) › [Reference](README.md) › Trace TSV Schema
2
-
3
- # Trace TSV Schema
4
-
5
- > Schema chuẩn của `.trace/{UC-ID}-{platform}.tsv` — file trace state per **use-case × platform**. Mỗi UC có một sổ riêng cho `system` / `web` / `app`: 1 header row + 1 data row mỗi scenario. Tách theo platform vì `sc_id` = `{UC-ID}-SC{N}` chỉ độc nhất trong (UC × platform) (mỗi platform tự đánh số SC từ 1) — gộp một sổ sẽ khiến scenario các platform đè/xoá nhau. Đây là nguồn dữ liệu cho `/validate-traces` và panel Living Docs.
6
-
7
- ---
8
-
9
- ## Mục lục
10
-
11
- - [Canonical TSV header](#canonical-tsv-header)
12
- - [Column reference](#column-reference)
13
- - [Two independent signals: dev_selftest vs qc_status](#two-independent-signals-dev_selftest-vs-qc_status)
14
- - [Status computation (validate-traces)](#status-computation-validate-traces)
15
- - [@trace tags across artifacts](#trace-tags-across-artifacts)
16
- - [trace-report.json](#trace-reportjson)
17
-
18
- ---
19
-
20
- ## Canonical TSV header
21
-
22
- Tab-separated, một header row + một data row mỗi scenario. Header chính xác (từ `generate-bdd.tmpl`):
23
-
24
- ```
25
- sc_id sc_title spec_ver gen_ver implemented_by test_count test_classes dev_selftest dev_selftest_at qc_status qc_run_at qc_owner qc_blocked_by prd_version bdd_version tech_doc_revision fe_tech_doc_revision prd_status uc_status fe_phase status last_updated
26
- ```
27
-
28
- 22 cột, theo đúng thứ tự trên.
29
-
30
- ---
31
-
32
- ## Column reference
33
-
34
- | # | Column | Ý nghĩa | Giá trị khởi tạo (`/generate-bdd`) | Ai ghi |
35
- |---|--------|---------|------------------------------------|--------|
36
- | 1 | `sc_id` | `{UC-ID}-SC{N}` — khóa chính của row | `{UC-ID}-SC{N}` | generate-bdd |
37
- | 2 | `sc_title` | Scenario title text | từ `.feature` | generate-bdd |
38
- | 3 | `spec_ver` | `@trace.sc_version` hiện tại của scenario | từ `.feature` | generate-bdd / validate-traces (reconcile) |
39
- | 4 | `gen_ver` | Version tại thời điểm code được sinh | `—` | generate-code |
40
- | 5 | `implemented_by` | `ClassName.method` cài đặt scenario | `—` | generate-code |
41
- | 6 | `test_count` | Số test verify scenario | `—` | dev-gen-test |
42
- | 7 | `test_classes` | Danh sách test class | `—` | dev-gen-test |
43
- | 8 | `dev_selftest` | Kết quả dev self-check: `pass` / `fail` / `not_run` | `—` | **dev-run-test** |
44
- | 9 | `dev_selftest_at` | Ngày chạy dev self-check (`YYYY-MM-DD`) | `—` | **dev-run-test** |
45
- | 10 | `qc_status` | Kết quả QC chính thức: `pass` / `fail` / `skip` / `not_run` | `—` | **qc-run-test** |
46
- | 11 | `qc_run_at` | Ngày chạy QC (`YYYY-MM-DD`) | `—` | **qc-run-test** |
47
- | 12 | `qc_owner` | **Đang chờ ai** (PM view) khi SC chưa pass: `dev` / `po` / `—` | `—` | **qc-run-test** / **report-bug** |
48
- | 13 | `qc_blocked_by` | Artifact liên quan: `BUG-{id}` / `GAP-{id}` / `—` | `—` | **qc-run-test** / **report-bug** |
49
- | 14 | `prd_version` | `@trace.prd_version` từ `.feature` header | từ `.feature` | generate-bdd |
50
- | 15 | `bdd_version` | `@trace.bdd_version` từ `.feature` header | từ `.feature` | generate-bdd |
51
- | 16 | `tech_doc_revision` | Revision tech-doc gộp `{TICKET-ID}-tech-design.md` (§4 backend) tại thời điểm codegen | `—` | generate-code / review-tech-docs |
52
- | 17 | `fe_tech_doc_revision` | Revision **cùng** tech-doc gộp, ghi khi FE `--phase=integration` wire adapter theo §4.5.4 (drift-detect riêng cho FE) | `—` | generate-code `--phase=integration` |
53
- | 18 | `prd_status` | `\| **Status** \|` từ PRD metadata | từ PRD | generate-bdd |
54
- | 19 | `uc_status` | Trạng thái duyệt BDD của UC — **gương của `@trace.status`** (`.feature`): `draft` / `approved` | `draft` (UC mới) | generate-bdd (init) · validate-traces (sync ← `@trace.status`) · review-context (reset draft khi `--fix`/`--resume`) |
55
- | 20 | `fe_phase` | FE phase khi implement (`ui` / `integration`) | `—` | generate-code `--phase` |
56
- | 21 | `status` | Trạng thái tổng hợp: `OK` / `DRIFT` / `GAP` / `UNTRACKED` | `UNTRACKED` | validate-traces |
57
- | 22 | `last_updated` | Ngày update gần nhất (`YYYY-MM-DD`) | today | mọi command ghi row |
58
-
59
- > **`qc_owner` / `qc_blocked_by` (PM "waiting-on" view):** dành cho PO kiêm PM xem **case nào đang chờ ai**. `/qc-run-test` set khi ghi `qc_status`: product-gap FAIL → `qc_owner=dev`; `skip`/`not_run` do `DOC_GAPS` 🔴 Blocker mở → `qc_owner=po` + `qc_blocked_by=GAP-{id}`; `pass` → cả hai về `—`. `/report-bug` backfill `qc_blocked_by=BUG-{id}` (+ `qc_owner` theo layer) cho SC khớp. `/validate-traces` tổng hợp `waiting_dev` / `waiting_po` cho dashboard.
60
-
61
- > **Re-generation rules (generate-bdd):** SC đã có trong TSV & `spec_ver` không đổi → chỉ update `sc_title`, `prd_version`, `bdd_version`, `prd_status`, `uc_status`, `last_updated`. Nếu `spec_ver` đổi → thêm `spec_ver` và set `status = DRIFT` ngay. SC mới → append với `gen_ver`/`implemented_by`/`test_count`/`test_classes`/`dev_selftest`/`dev_selftest_at`/`qc_status`/`qc_run_at`/`qc_owner`/`qc_blocked_by`/`tech_doc_revision`/`fe_tech_doc_revision` = `—`. SC bị xóa khỏi `.feature` → xóa row.
62
-
63
- > **Backward-compat:** TSV cũ thiếu cột mới ở header → `/validate-traces` đọc thành giá trị rỗng, không lỗi: `qc_owner`/`qc_blocked_by` (trước 19 cột) → `null`; `fe_tech_doc_revision` (trước 22 cột) → `0`. Lần `/generate-bdd` re-gen kế tiếp tự nâng header lên 22 cột.
64
-
65
- ---
66
-
67
- ## Two independent signals: dev_selftest vs qc_status
68
-
69
- Trace TSV mang **hai cột tín hiệu độc lập** — không bao giờ trộn:
70
-
71
- | | `dev_selftest` (+ `dev_selftest_at`) | `qc_status` (+ `qc_run_at`) |
72
- |---|--------------------------------------|------------------------------|
73
- | Ghi bởi | `/dev-run-test` | `/qc-run-test` |
74
- | Ý nghĩa | Dev tự smoke-check code mình vừa sinh | Kết quả QC automation **chính thức** |
75
- | Giá trị | `pass` / `fail` / `not_run` | `pass` / `fail` / `skip` / `not_run` |
76
- | Stack | Dev implementation module | `qc-playwright` module |
77
- | Coverage chính thức? | **KHÔNG** — chỉ là dev self-check | **CÓ** — official QC result |
78
- | Keyed by | `@trace.verifies={UC-ID}` | `@trace.verifies={UC-ID}-SC{N}` |
79
-
80
- `/validate-traces` chỉ **đọc** hai cột này cho report — không bao giờ ghi đè (mỗi cột do command sở hữu nó quản lý). Living Docs hiển thị cả hai cạnh nhau.
81
-
82
- ---
83
-
84
- ## Status computation (validate-traces)
85
-
86
- `/validate-traces` tính cột `status` theo thứ tự ưu tiên (rule đầu tiên khớp thì dừng):
87
-
88
- | Rule | Status | Điều kiện |
89
- |------|--------|-----------|
90
- | 1 | `UNTRACKED` | `implemented_by == —` (chưa sinh code) |
91
- | 2 | `GAP` | `implemented_by != —` AND (`test_count == —` OR `test_count == 0`) |
92
- | 3 | `DRIFT` | `spec_ver != gen_ver` (scenario đổi sau lần codegen gần nhất) |
93
- | 4 | `OK` | tất cả: `spec_ver == gen_ver`, `implemented_by != —`, `test_count > 0` |
94
-
95
- Ngoài ra `/validate-traces` còn flag **`PRD_DRIFT`** (PRD version trong code/TSV trễ hơn PRD file hiện tại), **`TECHDOC_DRIFT`** (code BE sinh từ revision cũ của tech-doc gộp — so `tech_doc_revision`), và **`FE_TECHDOC_DRIFT`** (FE integration wire theo §4.5.4 ở revision cũ của cùng doc — so `fe_tech_doc_revision`).
96
-
97
- ---
98
-
99
- ## @trace tags across artifacts
100
-
101
- Mọi artifact link với nhau qua `@trace.*` tags.
102
-
103
- **`.feature` files:**
104
- ```gherkin
105
- # @trace.id: FEAT-001-UC1
106
- # @trace.service: web-admin
107
- # @trace.module: react
108
- # @trace.status: draft # draft/approved — người đặt approved sau review-context BDD sạch; mirror → uc_status
109
- # @trace.prd_version: 1.2
110
- # @trace.bdd_version: 3
111
- # @trace.api_source: existing # brownfield: API đã tồn tại, contract lấy từ PRD
112
- ```
113
- Per-scenario trong file: `# @trace.scenario: {UC-ID}-SC{N}`, `# @trace.sc_version: 1.0`, `# @trace.business_rules: ...`.
114
-
115
- **Code:**
116
- ```java
117
- // @trace.implements=FEAT-001-UC1-SC2
118
- // @trace.prd_version=1.2
119
- // @trace.bdd_version=3
120
- // @trace.tech_doc_revision=2
121
- ```
122
-
123
- **Dev self-check tests:**
124
- ```java
125
- // @trace.verifies=FEAT-001-UC1
126
- // @trace.service=api-backend
127
- // @trace.test_type=integration
128
- ```
129
-
130
- **QC tests** (`qc-playwright`, drive `qc_status`):
131
- ```python
132
- # @trace.verifies={UC-ID}-SC{N}
133
- # @trace.source=<official .feature path>
134
- # @trace.test_type=functional|integration|e2e|non-functional
135
- ```
136
-
137
- ---
138
-
139
- ## trace-report.json
140
-
141
- `/validate-traces` ghi `{paths.trace_dir}/trace-report.json` — single source of truth cho web dashboards. Cấu trúc rút gọn:
142
-
143
- - `generated_at`, `domain`
144
- - `summary` — aggregates: `total_prds`, `approved_prds`, `total_ucs`, `approved_ucs`, `draft_ucs`, `total_scs`, `coded_scs`, `tested_scs`, `code_coverage_pct`, `test_coverage_pct`, `drift_count`, `gap_count`, `untracked_count`, `dev_selftest_passing/failing/not_run`, `qc_passing/failing/skipped/not_run`, `waiting_dev`, `waiting_po`, `tech_docs_count`
145
- - `prds[]` → `ucs[]` → `scenarios[]` — mỗi scenario có đầy đủ các trường của TSV row (gồm `dev_selftest`, `dev_selftest_at`, `qc_status`, `qc_run_at`)
146
- - `issues` — phân loại: `drift`, `gap`, `untracked`, `prd_version_drift`, `techdoc_drift`, `fe_techdoc_drift` (kèm `platform`), mỗi entry kèm `fix` command gợi ý
147
-
148
- **TSV `"—"` → JSON mapping:** `implemented_by: "—"` → `null` · `test_count: "—"` → `0` · `test_classes: "—"` → `[]` · `tech_doc_revision: "—"` → `0` · `fe_tech_doc_revision: "—"` → `0` · `dev_selftest: "—"` → `"not_run"` · `dev_selftest_at: "—"` → `null` · `qc_status: "—"` → `"not_run"` · `qc_run_at: "—"` → `null`.
149
-
150
- > **Umbrella mode:** khi `spec_source` set, `.trace/*.tsv` authoritative nằm **một chỗ** ở `{spec_source}/.trace/` (committed — PM quản lý tập trung; mỗi scenario mang `@trace.service`). `/validate-traces` (hoặc `/sync`) sinh `trace-report.json` vào `{spec_source}/.living-docs/` + mirror `./.trace/trace-report.json` ở workspace hiện tại — cả hai generated, gitignore. (Không có `spec_source` → `.trace` per-service.)
151
-
152
- ---
153
-
154
- *Xem thêm:* [Command Reference](commands.md) (`/validate-traces`, `/qc-run-test`, `/dev-run-test`) · [03 · Concepts](../03-concepts/) (traceability system).
@@ -1,75 +0,0 @@
1
- [📚 Docs](../README.md) › Commands (Dễ Hiểu)
2
-
3
- # 06 · Commands — Giải Thích Dễ Hiểu
4
-
5
- > Mỗi trang giải thích **luồng chạy của một slash command** bằng ngôn ngữ dễ hiểu + ví von đời thường. Bổ sung cho đặc tả chính thức ở [05 · Reference](../05-reference/) — mục này ưu tiên *trực giác*, giúp bạn hình dung "lệnh làm gì, theo trình tự nào, vì sao" trước khi đọc chi tiết.
6
-
7
- Đủ **30 lệnh**, gom theo phase pipeline. Mỗi trang có một ví von + các bước + vị trí trong dây chuyền + một câu chốt.
8
-
9
- ---
10
-
11
- ## Discovery & PRD (PO/BA)
12
-
13
- | Trang | Ví von |
14
- |-------|--------|
15
- | [/setup-ai-first](explain-setup-ai-first.md) | Dựng khung xưởng một-lần (thư mục + nội quy + config + từ điển) |
16
- | [/define-product](explain-define-product.md) | Buổi phỏng vấn 8 chặng moi ý tưởng thành hồ sơ |
17
- | [/generate-prd](explain-generate-prd.md) | Thư ký biến biên bản phỏng vấn thành hồ sơ chuẩn |
18
- | [/refine-prd](explain-refine-prd.md) | Tổ soi bài 3 lăng kính nâng chất nội dung PRD |
19
- | [/review-context](explain-review-context.md) | Cửa kiểm định chất lượng cuối (PRD & BDD) |
20
-
21
- ## Design & BDD
22
-
23
- | Trang | Ví von |
24
- |-------|--------|
25
- | [/generate-design-spec](explain-generate-design-spec.md) | Bản thiết kế màn hình bám Figma thật, 2 tầng ngôn ngữ |
26
- | [/generate-bdd](explain-generate-bdd.md) | Biến yêu cầu thành kịch bản kiểm thử (web/app/system) |
27
-
28
- ## Tech Design & Code (Dev)
29
-
30
- | Trang | Ví von |
31
- |-------|--------|
32
- | [/generate-tech-docs](explain-generate-tech-docs.md) | Bản vẽ thi công (BE contract / FE client design) |
33
- | [/review-tech-docs](explain-review-tech-docs.md) | Hội đồng nghiệm thu bản vẽ + cổng chữ ký liên team |
34
- | [/generate-code](explain-generate-code.md) | Thợ thi công bám bản vẽ, làm đúng một hạng mục |
35
- | [/review-code](explain-review-code.md) | Giám sát công trình soi code 4 mặt |
36
- | [/map-testids](explain-map-testids.md) | Dán nhãn tên cố định lên element FE tái dùng/đã-có |
37
-
38
- ## Dev Test & Fix
39
-
40
- | Trang | Ví von |
41
- |-------|--------|
42
- | [/dev-gen-test](explain-dev-gen-test.md) | Sinh bộ tự-kiểm nhanh của dev |
43
- | [/dev-run-test](explain-dev-run-test.md) | Bấm nút chạy tự-kiểm + chẩn lỗi theo platform |
44
- | [/dev-smoke-test](explain-dev-smoke-test.md) | Thử máy tại chỗ trên service/app đang chạy |
45
- | [/debug](explain-debug.md) | Hỏi nhanh đồng nghiệp — phân tích lỗi, không sửa |
46
- | [/fix-bug](explain-fix-bug.md) | Xử lý sự cố có hồ sơ (truy gốc → sửa → test hồi quy) |
47
-
48
- ## QC Automation (dây chuyền 6 trạm)
49
-
50
- | Trang | Ví von |
51
- |-------|--------|
52
- | [/qc-analyze](explain-qc-analyze.md) | Trạm 1 — QC Analyst: phân rã yêu cầu + gap |
53
- | [/qc-plan](explain-qc-plan.md) | Trạm 2 — QC Planner: rủi ro + câu hỏi cho dev |
54
- | [/qc-design-test](explain-qc-design-test.md) | Trạm 3 — QC Designer: viết test case Markdown |
55
- | [/qc-review](explain-qc-review.md) | Trạm 4 — cổng review hai chiều (case & script) |
56
- | [/qc-run-test](explain-qc-run-test.md) | Trạm 5 — QC Runner: chạy Playwright, ghi `qc_status` chính thức |
57
- | [/qc-report](explain-qc-report.md) | Trạm 6 — report + evidence, đẩy product-gap về PO/Dev |
58
-
59
- ## Feedback & Vận hành
60
-
61
- | Trang | Ví von |
62
- |-------|--------|
63
- | [/report-bug](explain-report-bug.md) | Phiếu sự cố có hồ sơ spec (tester/QC) |
64
- | [/propose-scenario](explain-propose-scenario.md) | Hòm góp ý kịch bản test mới |
65
- | [/learn](explain-learn.md) | Dán tờ nhắc guardrail lên tường xưởng |
66
- | [/validate-traces](explain-validate-traces.md) | Đợt kiểm kê độ phủ spec↔code↔test |
67
- | [/generate-spec-manifest](explain-generate-spec-manifest.md) | Lập sổ mục lục spec cho agent ngoài |
68
- | [/sync](explain-sync.md) | Nghi thức đầu ngày đồng bộ umbrella |
69
- | [/update-framework](explain-update-framework.md) | Thay bộ đồ nghề framework lên bản npm mới |
70
-
71
- ---
72
-
73
- *Muốn giải thích dễ hiểu cho một lệnh khác → thêm một trang `explain-{command}.md` vào thư mục này và một dòng ở bảng phù hợp.*
74
-
75
- *Xem thêm:* [05 · Reference › Commands](../05-reference/commands.md) (đặc tả đầy đủ) · [03 · Concepts › Cơ chế (dễ hiểu)](../03-concepts/mechanisms-explained.md) (giải thích cơ chế framework).
@@ -1,32 +0,0 @@
1
- [📚 Docs](../README.md) › [Commands (Dễ Hiểu)](README.md) › /debug
2
-
3
- # `/debug` — Giải Thích Luồng Chạy (Ngôn Ngữ Dễ Hiểu)
4
-
5
- > Phân tích nhanh một lỗi/hành vi lạ — **chỉ phân tích, không sửa, không cần ticket**. Khác `/fix-bug` (workflow đầy đủ). Ưu tiên trực giác — đặc tả đầy đủ xem [Reference › Commands](../05-reference/commands.md).
6
-
7
- Hình dung `/debug` như **hỏi nhanh một đồng nghiệp rành việc**: bạn đưa lỗi (stack trace, test fail, hoặc câu hỏi code), nó chỉ ra *nguyên nhân gốc* và *cách sửa gợi ý* — gọn, không lôi cả quy trình ra.
8
-
9
- ---
10
-
11
- ## Cách chạy
12
-
13
- Đầu tiên nó hỏi **tình huống của bạn là gì**:
14
- 1. Đã có stack trace/log → dán vào.
15
- 2. Cần tái hiện trước → nó chỉ lệnh chạy service (từ `service_run`).
16
- 3. Test đang fail → nó chỉ lệnh test, bạn dán output fail.
17
- 4. Câu hỏi code (không cần chạy) → hỏi thẳng.
18
-
19
- Rồi nó phân tích:
20
- - **Stack trace:** đọc từ **dưới lên** (`Caused by:` mới là gốc thật).
21
- - Đối chiếu **bảng lỗi thường gặp** theo platform (BE / web / mobile / AI-LLM) để đoán nguyên nhân + hướng fix.
22
- - **Test fail:** so Expected vs Actual, kiểm mock setup, kiểm assertion.
23
-
24
- Ra một báo cáo: Lỗi · Nguyên nhân gốc · Vị trí (file/dòng/layer) · Cách sửa · Rule liên quan (CLAUDE.md) · Bước kế (`/fix-bug` nếu muốn sửa trọn vẹn).
25
-
26
- Nếu nguyên nhân là **lỗi AI hay lặp khi sinh code** → hỏi có ghi thành *lesson* không.
27
-
28
- ## Vị trí trong dây chuyền
29
-
30
- `/debug` là công cụ **cầm tay dùng bất cứ lúc nào** — không gắn cứng vào một chặng. Thường gọi khi `/dev-run-test` hoặc `/dev-smoke-test` báo lỗi.
31
-
32
- > **Một câu chốt:** `/debug` là "hỏi nhanh đồng nghiệp" — phân loại tình huống, đọc lỗi từ gốc, tra bảng lỗi theo platform, ra nguyên nhân + cách sửa; chỉ phân tích, muốn sửa trọn vẹn thì sang `/fix-bug`.
@@ -1,43 +0,0 @@
1
- [📚 Docs](../README.md) › [Commands (Dễ Hiểu)](README.md) › /define-product
2
-
3
- # `/define-product` — Giải Thích Luồng Chạy (Ngôn Ngữ Dễ Hiểu)
4
-
5
- > Bước **đầu tiên** của cả dây chuyền: biến một ý tưởng tính năng trong đầu PO thành một **hồ sơ khám phá** (product-definition) đủ rõ để sau này viết PRD. Ưu tiên trực giác — đặc tả đầy đủ xem [Reference › Commands](../05-reference/commands.md).
6
-
7
- Hình dung `/define-product` như một **buổi phỏng vấn khai thác ý tưởng có người dẫn**. AI đóng vai người phỏng vấn: hỏi bạn từng câu, ghi biên bản, và **chốt từng chặng** trước khi đi tiếp.
8
-
9
- ---
10
-
11
- ## Ví von: một buổi phỏng vấn 8 chặng, mỗi chặng có "chốt"
12
-
13
- Bạn tới với một ý tưởng còn mơ hồ. AI dẫn bạn qua 8 chặng, hỏi **từng câu một** (không dồn một lúc), và sau mỗi chặng quan trọng phải nghe bạn nói "✅ đúng rồi" mới đi tiếp (gọi là **CHECKPOINT**):
14
-
15
- 1. **Chặng 0 — Tự tra bối cảnh:** AI tự quét dự án xem có khái niệm/rule/feature liên quan nào (không cần bạn trả lời). Nếu thấy thuật ngữ lạ lặp lại → để dành hỏi ở Chặng 3.
16
- 2. **Chặng 1 — Định nghĩa tính năng:** vì sao cần, giải quyết vấn đề gì, mong muốn kết quả gì, ai dùng, làm gì / không làm gì, user story.
17
- 3. **Chặng 2 — Luồng người dùng:** vào từ đâu, đi qua các bước nào, có những màn hình chính nào, ra khỏi ra sao, các tình huống lỗi.
18
- 4. **Chặng 3 — Hỏi cho hết mơ hồ:** AI tự thấy chỗ nào còn hổng thì hỏi thêm, lặp tới khi **không còn mục tồn đọng**.
19
- 5. **Chặng 4 — Business Rules:** rút ra các luật "hệ thống PHẢI / KHÔNG được làm gì".
20
- 6. **Chặng 5 — Business Logic:** mỗi luật chạy theo logic nghiệp vụ nào (rẽ nhánh, công thức).
21
- 7. **Chặng 6 — Acceptance Criteria:** tiêu chí nghiệm thu, mỗi cái phải kiểm được pass/fail.
22
- 8. **Chặng 7 — Tự kiểm độ phủ:** AI tự lập bảng "mỗi hành động có đủ Rule + Logic + AC chưa?", còn thiếu (GAP) thì cảnh báo.
23
-
24
- ### Nói bằng lời nghiệp vụ
25
- Suốt buổi phỏng vấn, AI tránh hỏi chuyện kỹ thuật (API, database…) — chỉ khai thác **WHAT** (cần gì), không phải **HOW** (làm bằng gì).
26
-
27
- ---
28
-
29
- ## Bỏ dở cũng không sao — resume được
30
-
31
- Sau mỗi chặng được chốt, AI ghi lại "đã xong tới chặng mấy" vào file. Nếu buổi phỏng vấn bị ngắt, lần sau chạy lại **đi tiếp từ chặng kế** — không phải làm lại từ đầu.
32
-
33
- ---
34
-
35
- ## Kết quả & vị trí trong dây chuyền
36
-
37
- Ra một file `product-definition/{TICKET-ID}-{slug}.md`. Cái **slug** (tên rút gọn của feature) sinh ở đây và **dùng nguyên xuyên suốt** PRD, BDD, tech-docs, design-spec sau này.
38
-
39
- ```
40
- [ define-product ◀ bạn ở đây ] → generate-prd → design-spec → generate-bdd → …
41
- ```
42
-
43
- > **Một câu chốt:** `/define-product` là buổi phỏng vấn có người dẫn để **moi ý tưởng ra thành hồ sơ rõ ràng** — hỏi từng câu, chốt từng chặng, tự kiểm độ phủ; PRD chỉ được sinh khi buổi này xong hẳn (đủ 7 chặng).
@@ -1,28 +0,0 @@
1
- [📚 Docs](../README.md) › [Commands (Dễ Hiểu)](README.md) › /dev-gen-test
2
-
3
- # `/dev-gen-test` — Giải Thích Luồng Chạy (Ngôn Ngữ Dễ Hiểu)
4
-
5
- > Sinh **test tự-kiểm của dev** (smoke) từ các kịch bản BDD — để dev tự tin code chạy trước khi review. Ưu tiên trực giác — đặc tả đầy đủ xem [Reference › Commands](../05-reference/commands.md).
6
-
7
- Hình dung `/dev-gen-test` như **bộ tự-kiểm nhanh của thợ**: nhìn từng kịch bản BDD của một UC + code đã viết, rồi sinh các bài test tương ứng (unit / component / widget / e2e tuỳ platform) để dev tự chạy.
8
-
9
- > **Quan trọng — đây KHÔNG phải bộ test chính thức của QC.** Nó là *dev self-check*: một tín hiệu lên Living Docs cho QC biết "dev đã tự chạy kiểm rồi". Bộ test authoritative có flow riêng của QC.
10
-
11
- ---
12
-
13
- ## Cách chạy
14
-
15
- - **Nhận diện platform** từ `@trace.module` (backend / web-frontend / mobile) để chọn đúng khuôn test (java-spring, golang, react, flutter, swift…).
16
- - Hiện **plan** (bao nhiêu scenario, file impl nào) → chờ Y.
17
- - Sinh test, mỗi test gắn nhãn `@trace.verifies={UC-ID}`, mỗi scenario BDD có ≥1 test.
18
- - Cập nhật trace `.tsv`: `test_count`, `test_classes`, và `dev_selftest = not_run` (đã có test nhưng chưa chạy — `/dev-run-test` mới set pass/fail).
19
-
20
- Có quy tắc chất lượng theo platform: BE mock đúng layer, FE/Mobile không hardcode delay, dùng accessible query…
21
-
22
- ## Vị trí trong dây chuyền
23
-
24
- ```
25
- generate-code → [ dev-gen-test ◀ bạn ở đây ] → dev-run-test → review-code
26
- ```
27
-
28
- > **Một câu chốt:** `/dev-gen-test` sinh bộ tự-kiểm nhanh cho dev (theo platform, bám từng scenario BDD) — một tín hiệu self-check, không phải bộ test QC chính thức.
@@ -1,24 +0,0 @@
1
- [📚 Docs](../README.md) › [Commands (Dễ Hiểu)](README.md) › /dev-run-test
2
-
3
- # `/dev-run-test` — Giải Thích Luồng Chạy (Ngôn Ngữ Dễ Hiểu)
4
-
5
- > **Chạy** các test do `/dev-gen-test` sinh ra, phân tích lỗi, và ghi kết quả pass/fail vào trace. Ưu tiên trực giác — đặc tả đầy đủ xem [Reference › Commands](../05-reference/commands.md).
6
-
7
- Hình dung `/dev-run-test` như **bấm nút chạy bộ tự-kiểm** rồi đọc kết quả: chạy test, cái nào fail thì tra bảng "lỗi thường gặp → nguyên nhân → cách sửa" theo đúng platform, và ghi lại "lần chạy gần nhất của dev: pass hay fail".
8
-
9
- ---
10
-
11
- ## Cách chạy
12
-
13
- - **Chọn đúng lệnh test** theo module (`mvn test`, `go test`, `vitest`, `flutter test`…). Ở chế độ umbrella thì `cd` vào đúng service submodule trước (mỗi service có runner riêng).
14
- - **Chạy** (có thể thu hẹp theo class cho nhanh).
15
- - **Phân tích lỗi:** với mỗi test fail, đối chiếu bảng lỗi theo platform (vd BE "Expected 200 got 401 → thiếu setup auth"; FE "Unable to find role → element chưa render, bọc waitFor"; Flutter "pumpAndSettle timed out"…).
16
- - **Ghi trace:** cập nhật `dev_selftest = pass/fail/not_run` + `dev_selftest_at`. **Không bao giờ** đụng `qc_status` — đó là tín hiệu QC chính thức, tách riêng.
17
-
18
- ## Vị trí trong dây chuyền
19
-
20
- ```
21
- dev-gen-test → [ dev-run-test ◀ bạn ở đây ] → (pass) → review-code | (fail) → fix-bug / sửa test
22
- ```
23
-
24
- > **Một câu chốt:** `/dev-run-test` chạy bộ tự-kiểm của dev, chẩn lỗi theo bảng-lỗi-từng-platform, và ghi kết quả `dev_selftest` — một tín hiệu riêng, độc lập với kết quả QC chính thức.
@@ -1,25 +0,0 @@
1
- [📚 Docs](../README.md) › [Commands (Dễ Hiểu)](README.md) › /dev-smoke-test
2
-
3
- # `/dev-smoke-test` — Giải Thích Luồng Chạy (Ngôn Ngữ Dễ Hiểu)
4
-
5
- > Kiểm nhanh một UC trên **service/app đang chạy thật**. Khác `/dev-run-test` (không cần server sống). Ưu tiên trực giác — đặc tả đầy đủ xem [Reference › Commands](../05-reference/commands.md).
6
-
7
- Hình dung `/dev-smoke-test` như **thử máy tại chỗ**: service/app đã bật sẵn, ta gọi thẳng endpoint (BE) hoặc bấm thử luồng trên màn (FE/App) để xem "chạy thật có ra đúng không".
8
-
9
- ---
10
-
11
- ## Cách chạy (tuỳ platform)
12
-
13
- - **Backend:** kiểm service đã chạy chưa (curl health endpoint) → tìm endpoint của UC (theo `@trace.implements`) → lấy token nếu cần → gọi `curl` GET/POST → đọc mã trạng thái (200 OK, 200-nhưng-sai-data → lỗi logic, 401/403/500 → theo bảng).
14
- - **Web:** kiểm dev server → chạy E2E smoke (Playwright/Cypress lọc theo UC), hoặc thử tay trên browser.
15
- - **Mobile:** cài build lên device/emulator → đi qua màn của UC, làm hành động chính (When) → xác nhận kết quả (Then) → hốt log nếu crash.
16
-
17
- Kết quả là một bảng ✅ (ổn) / ⚠️ (chạy nhưng sai data → lỗi logic) / ❌ (lỗi/chưa chạy). Có vấn đề → dán vào `/debug` hoặc mở `/fix-bug`.
18
-
19
- ## Vị trí trong dây chuyền
20
-
21
- ```
22
- generate-code → dev-gen-test → dev-run-test → [ dev-smoke-test ◀ thử máy thật ] → PR
23
- ```
24
-
25
- > **Một câu chốt:** `/dev-smoke-test` là "thử máy tại chỗ" trên service/app đang chạy thật — gọi endpoint hoặc bấm luồng để xác nhận kết quả thực, khác với `/dev-run-test` chạy test không cần server sống.
@@ -1,28 +0,0 @@
1
- [📚 Docs](../README.md) › [Commands (Dễ Hiểu)](README.md) › /fix-bug
2
-
3
- # `/fix-bug` — Giải Thích Luồng Chạy (Ngôn Ngữ Dễ Hiểu)
4
-
5
- > Workflow **fix bug đầy đủ**: tìm nguyên nhân → sửa → test hồi quy → build → commit → đóng bug. Khác `/debug` (chỉ phân tích). Ưu tiên trực giác — đặc tả đầy đủ xem [Reference › Commands](../05-reference/commands.md).
6
-
7
- Hình dung `/fix-bug` như **quy trình xử lý sự cố có hồ sơ**: không chỉ vá, mà còn truy nguyên nhân gốc, thêm test chống tái phát, build kiểm, commit đúng nhánh, và đóng phiếu bug.
8
-
9
- ---
10
-
11
- ## Sáu chặng
12
-
13
- 1. **Gom thông tin:** nhận ticket / một `{BUG-ID}` đã file (từ `/report-bug` — đọc luôn spec context, AC bị vi phạm) / hoặc mô tả (hỏi: xảy ra ở đâu, tái hiện sao, expected vs actual, log).
14
- 2. **Truy nguyên nhân gốc:** tra bảng "loại bug → chỗ hay gặp → cách kiểm" theo platform. Ra **CHECKPOINT** (root cause, file ảnh hưởng, fix đề xuất, mức rủi ro hồi quy) → chờ Y.
15
- 3. **Sửa:** tạo branch `fix/...` (umbrella thì `cd` vào service submodule), áp fix, gắn nhãn `@trace.fixes`.
16
- 4. **Test hồi quy:** thêm một test tái hiện bug (chống tái phát), chạy tới khi xanh (tối đa 3 vòng).
17
- 5. **Build & commit:** build kiểm, commit; umbrella thì **push 2 tầng** (service submodule → bump pointer umbrella).
18
- 6. **Đóng bug (nếu fix một `{BUG-ID}`):** đặt `State: Fixed` + ghi Resolution. **Chưa Closed** — QC sở hữu việc verify: khi `/qc-run-test` chạy lại pass thì mới `Closed`.
19
-
20
- Cuối cùng có thể hỏi ghi *lesson* nếu nguyên nhân là lỗi AI hay lặp.
21
-
22
- > **Ranh giới:** `/fix-bug` chỉ sửa **code**, không bao giờ sửa PRD/BDD (đổi spec là việc PO/Dev theo bug-flow).
23
-
24
- ## Vị trí trong dây chuyền
25
-
26
- `/fix-bug` gọi khi review/test/QC phát hiện bug thật (từ `/review-code`, `/dev-run-test`, hoặc `/report-bug` của QC).
27
-
28
- > **Một câu chốt:** `/fix-bug` là xử lý sự cố có hồ sơ — truy gốc, sửa code (không đụng spec), thêm test hồi quy, build + commit 2 tầng, và chuyển bug sang Fixed để QC verify đóng.
@@ -1,45 +0,0 @@
1
- [📚 Docs](../README.md) › [Commands (Dễ Hiểu)](README.md) › /generate-bdd
2
-
3
- # `/generate-bdd` — Giải Thích Luồng Chạy (Ngôn Ngữ Dễ Hiểu)
4
-
5
- > Biến **PRD đã duyệt** (+ Design Spec) thành các **kịch bản kiểm thử** viết bằng ngôn ngữ nghiệp vụ (file `.feature` — Gherkin Given/When/Then). Ưu tiên trực giác — đặc tả đầy đủ xem [Reference › Commands](../05-reference/commands.md).
6
-
7
- Hình dung `/generate-bdd` như một người **biến yêu cầu thành kịch bản diễn thử**: đọc PRD, viết ra từng tình huống "cho trạng thái này → khi làm hành động kia → thì kết quả phải thế này". Mỗi AC/BR đều phải có ít nhất một kịch bản phủ.
8
-
9
- ---
10
-
11
- ## Trước khi viết, hỏi/kiểm mấy điều
12
-
13
- - **PRD duyệt chưa?** Chưa duyệt (draft) → cảnh báo mềm, hỏi có làm tiếp không (cho phép prototype).
14
- - **Cho platform nào?** web / app / **system** (BDD tầng hệ thống). Từ vựng viết kịch bản đổi theo: web "clicks", app "taps", system "the system returns" (không dùng từ UI).
15
- - **Có Design Spec chưa?** (chỉ FE/App) — nếu có và đã approved → rút thêm các **Screen State** (loading/error/empty) và **AC-UI** để phủ; chưa sẵn sàng → cảnh báo mềm.
16
-
17
- ---
18
-
19
- ## Nét đặc thù: 3 cơ chế đáng nhớ
20
-
21
- **1. Việc lớn thì chia cho "thợ phụ" (orchestration).** PRD lớn (> 3 UC hoặc > 300 dòng) → session chính thành "sếp", **giao mỗi UC cho một sub-agent** làm song song cho nhanh và đỡ sót. PRD nhỏ thì làm một mình.
22
-
23
- **2. System BDD = tổng hợp từ web + app.** Khi làm platform *system*, nó **đọc lại BDD web & app đã có** rồi gộp thành hợp đồng tầng hệ thống. Nếu web và app **mong đợi khác nhau** (vd web muốn A, app muốn B) → dừng ở CHECKPOINT bắt bạn chọn cách hoà giải (gộp chung / tách endpoint / theo header…). Nếu PRD là brownfield (API có sẵn) thì dùng thẳng contract trong PRD, khỏi tổng hợp.
24
-
25
- **3. PRD đổi thì bắt kịp (version drift).** Nếu BDD cũ sinh từ PRD v1.0 mà PRD giờ v1.2 → đọc Change Log, hỏi cập nhật phần ảnh hưởng (Y) hay làm lại toàn bộ (F). Không chắc đổi ở đâu → khuyên làm lại toàn bộ cho an toàn.
26
-
27
- ---
28
-
29
- ## Luật viết kịch bản (giữ chất lượng)
30
-
31
- Có bộ luật R1–R10 (mỗi kịch bản đủ Given/When/Then, một hành vi mỗi kịch bản, dùng ngôn ngữ nghiệp vụ không dùng selector/API, tên kịch bản là *kết quả nghiệp vụ*…) và bộ tuân thủ C.1–C.5 (mỗi thành phần Wireframe/AC/BR đều phải có kịch bản phủ, 0 thuật ngữ cấm…).
32
-
33
- Trước khi sinh, nó trình **outline** các kịch bản cho bạn xác nhận (thêm/bớt) → rồi mới viết.
34
-
35
- ---
36
-
37
- ## Kết quả & vị trí trong dây chuyền
38
-
39
- Ra các file `.feature` + cập nhật **trace `.tsv`** (bảng theo dõi mỗi kịch bản: version, ai implement, trạng thái test…).
40
-
41
- ```
42
- PRD duyệt → [ generate-bdd ◀ bạn ở đây ] (web → app → system) → review-context(BDD) → generate-tech-docs → …
43
- ```
44
-
45
- > **Một câu chốt:** `/generate-bdd` biến yêu cầu thành kịch bản kiểm thử nghiệp vụ; chia việc cho thợ phụ khi PRD lớn, tổng hợp System BDD từ web+app (chặn lại khi hai bên mâu thuẫn), và bám version PRD để không lệch.
@@ -1,53 +0,0 @@
1
- [📚 Docs](../README.md) › [Commands (Dễ Hiểu)](README.md) › /generate-code
2
-
3
- # `/generate-code` — Giải Thích Luồng Chạy (Ngôn Ngữ Dễ Hiểu)
4
-
5
- > Từ **BDD + tech-design đã duyệt**, sinh **code thật**. Ưu tiên trực giác — đặc tả đầy đủ xem [Reference › Commands](../05-reference/commands.md).
6
-
7
- Hình dung `/generate-code` như một **thợ thi công theo bản vẽ**: đọc kịch bản (BDD) + bản vẽ kỹ thuật (tech-design), rồi viết code đúng theo đó, có gắn "nhãn truy vết" để sau này biết dòng code nào phục vụ kịch bản nào.
8
-
9
- ---
10
-
11
- ## Kỷ luật số 1: chỉ làm đúng một hạng mục (Scope Lock)
12
-
13
- Thợ này **chỉ đọc và implement đúng một file feature** được giao — **không** ngó sang các `.feature` khác cùng folder, kể cả khi dùng chung entity. Tránh làm lan man ngoài phạm vi.
14
-
15
- ---
16
-
17
- ## Có thể làm "phần thô" trước, "đường ống thật" sau (Phase)
18
-
19
- Với FE/App, code chia 2 pha để không phải đợi backend:
20
-
21
- - **`--phase=ui`** — dựng UI + một **lớp mock** (giả lập API) dựa trên hợp đồng/System BDD. Tester test được ngay, không cần BE deploy.
22
- - **`--phase=integration`** — thay mock bằng **lời gọi API thật** theo bản vẽ FE (§4). Giữ lại mock cho unit test.
23
- - *(không flag)* — làm đầy đủ (thường cho BE).
24
-
25
- **Bám Figma thật khi dựng UI:** nếu bật được **Figma Dev Mode MCP local** (app desktop), thợ đọc layout/token/component thật để code chính xác hơn nhiều link web trần; chưa bật thì gợi ý bật, hoặc skip (fallback text spec).
26
-
27
- ---
28
-
29
- ## Trước khi gõ code
30
-
31
- - **Guard:** BDD/Design Spec chưa duyệt → cảnh báo mềm.
32
- - **Đọc trace:** xem scenario nào chưa có code (UNTRACKED), scenario nào đã đổi (DRIFT) cần làm lại, cái nào bỏ qua.
33
- - **File Scan:** phân loại mỗi file cần **CREATE** (mới) / **EXTEND** (chỉ thêm method, không viết lại code cũ) / **SKIP**.
34
- - Hiện **plan** + chờ Y, rồi tạo **branch** riêng.
35
-
36
- ---
37
-
38
- ## Khi gõ code
39
-
40
- - Viết theo **đúng thứ tự layer** trong CLAUDE.md (DTO → Entity → Repository → Service → Facade → Controller).
41
- - Gắn **nhãn `@trace.implements`** ở layer entry-point (Controller/handler) kèm version PRD/BDD/tech-doc — để `/validate-traces` bắt được drift sau này.
42
- - **(UI FE/App)** phát **test-id ổn định** cho mỗi element có action (theo §4.5.6 của tech-doc gộp) để QC định vị.
43
- - Tự review 3 vòng, **build thử** (tối đa 3 lần retry), cập nhật trace `.tsv`, rồi commit.
44
-
45
- ---
46
-
47
- ## Vị trí trong dây chuyền
48
-
49
- ```
50
- tech-docs approved → [ generate-code ◀ bạn ở đây ] → review-code → dev-gen-test → dev-run-test → QC
51
- ```
52
-
53
- > **Một câu chốt:** `/generate-code` là thợ thi công bám bản vẽ — chỉ làm đúng một feature, có thể dựng UI-với-mock trước rồi lắp API thật sau, gắn nhãn truy vết từng dòng, và luôn build thử trước khi commit.
@@ -1,54 +0,0 @@
1
- [📚 Docs](../README.md) › [Commands (Dễ Hiểu)](README.md) › /generate-design-spec
2
-
3
- # `/generate-design-spec` — Giải Thích Luồng Chạy (Ngôn Ngữ Dễ Hiểu)
4
-
5
- > Từ PRD, sinh **bản đặc tả thiết kế màn hình** cho FE/App — bám **Figma thật**. Ưu tiên trực giác — đặc tả đầy đủ xem [Reference › Commands](../05-reference/commands.md).
6
-
7
- Hình dung `/generate-design-spec` như một người **biên soạn bản thiết kế màn hình**: đọc PRD để biết có những màn nào, rồi với **mỗi màn** mở đúng frame Figma tương ứng để tả layout, thành phần, các trạng thái (bình thường / đang tải / lỗi / trống) — dựa trên **thiết kế thật**, không bịa.
8
-
9
- ---
10
-
11
- ## Nét đặc thù: bắt buộc bám Figma theo từng màn
12
-
13
- Đây là lệnh gen **duy nhất cần "vật liệu ngoài"** (Figma). AI **không đọc được link file Figma trần** — nó cần link **node-level tới từng frame** (URL có `?node-id=`). Nên nó thu **một link cho mỗi màn**, rồi fetch layout/component/token thật của frame đó về mà tả.
14
-
15
- - Màn nào có link đọc được → tả dựa trên frame thật.
16
- - Màn nào **chưa có link** → vẫn sinh nhưng đánh dấu ❌ Missing, và giữ **draft** (chưa cho ký duyệt) tới khi đủ link.
17
-
18
- ---
19
-
20
- ## Các bước kiểm trước khi sinh
21
-
22
- - **PRD duyệt chưa?** Chưa → cảnh báo mềm (cho làm song song).
23
- - **Platform nào?** backend → **dừng** (BE không có design spec). web / app / app-ios / app-android.
24
- - **PRD đổi chưa (drift)?** Nếu design-spec cũ dựng từ PRD v cũ mà PRD đã đổi → hỏi cập nhật phần ảnh hưởng hay làm lại.
25
- - **Chốt danh sách màn** với bạn, rồi thu link Figma từng màn, rồi CHECKPOINT xác nhận.
26
-
27
- ---
28
-
29
- ## Hai tầng ngôn ngữ (Design Language Guard)
30
-
31
- Design Spec là **cầu nối PRD → code**, nên có hai loại bề mặt, ngôn ngữ khác nhau:
32
-
33
- - **Tầng A — bề mặt đọc** (danh mục màn, mô tả layout, mô tả các trạng thái, hành động, AC-UI): **thuần nghiệp vụ/UX** — "thanh tiến độ", "nút chính", "trạng thái chưa chọn". KHÔNG nhét tên layer/variant Figma, mã màu hex, số đo px, hay ẩn dụ dữ liệu ("cờ").
34
- - **Tầng B — cột/phụ lục kỹ thuật** (Component Inventory với tên code + import path, cột link Figma, bảng Design Token): **được giữ code/token** — vì đây là ngăn dành cho FE/Designer.
35
-
36
- Nguyên tắc: **không xoá chi tiết kỹ thuật, dồn về đúng tầng.** (Xem thêm [Cơ chế · Business Language Guard](../03-concepts/mechanisms-explained.md).)
37
-
38
- ---
39
-
40
- ## Cổng tự-rà trước khi ghi
41
-
42
- Trước khi ghi file, nó chạy một **checklist bắt buộc**: mọi màn có đủ đặc tả + 3 trạng thái tối thiểu, component đã map hoặc gắn cờ `[NEW]`, chỉ sinh phần đúng platform, AC-UI kiểm được, ngôn ngữ Tầng A sạch. Mục nào fail → ghi cảnh báo vào "Giả định AI" + giữ draft.
43
-
44
- ---
45
-
46
- ## Kết quả & vị trí trong dây chuyền
47
-
48
- Ra `design-spec/{TICKET-ID}-design-spec-{platform}-{slug}.md`. Ký duyệt (PO + Designer đặt approved) **chỉ khi 0 màn Missing**.
49
-
50
- ```
51
- PRD duyệt → [ generate-design-spec ◀ bạn ở đây ] → PO+Designer ký duyệt → generate-bdd (đọc AC-UI cho kịch bản FE)
52
- ```
53
-
54
- > **Một câu chốt:** `/generate-design-spec` tả màn hình bám Figma thật (mỗi màn một link node-id), phân tầng ngôn ngữ (bề mặt đọc thuần nghiệp vụ, code/token dồn về cột kỹ thuật), và giữ draft cho tới khi đủ frame để ký duyệt.
@@ -1,45 +0,0 @@
1
- [📚 Docs](../README.md) › [Commands (Dễ Hiểu)](README.md) › /generate-prd
2
-
3
- # `/generate-prd` — Giải Thích Luồng Chạy (Ngôn Ngữ Dễ Hiểu)
4
-
5
- > Biến **biên bản phỏng vấn** (product-definition) thành một **hồ sơ yêu cầu chuẩn** (PRD) — tài liệu chính thức để cả team dựa vào. Ưu tiên trực giác — đặc tả đầy đủ xem [Reference › Commands](../05-reference/commands.md).
6
-
7
- Hình dung `/generate-prd` như một **thư ký biên tập**: nhận biên bản buổi khám phá, sắp xếp lại thành một hồ sơ đúng khuôn (Metadata, Use Case, AC, Business Rule, Wireframe…), đúng thuật ngữ chuẩn, thuần ngôn ngữ nghiệp vụ.
8
-
9
- ---
10
-
11
- ## Trước khi viết, thư ký kiểm mấy điều
12
-
13
- - **Biên bản đã xong chưa?** Nếu product-definition chưa chốt đủ 7 chặng → **dừng**, bảo bạn chạy lại `/define-product` cho xong. PRD là hồ sơ ký duyệt, không dựng từ nguồn còn dang dở.
14
- - **API thuộc loại nào?** Hỏi **một** câu để chốt loại nguồn API (bạn chỉ chọn loại, không gõ chi tiết):
15
- - *existing* — API đã chạy production (AI trích contract as-is vào Appendix, không bịa).
16
- - *greenfield* — tự thiết kế sau (ở tech-docs).
17
- - *partner* — đối tác làm song song, chưa có contract.
18
- - **Có link ticket thật không?** AI không tự bịa URL Jira — hỏi bạn, có thì đặt link cạnh mã ticket, không thì để mã trơn.
19
- - **Tên PO** lấy từ biên bản; thiếu thì hỏi.
20
-
21
- ---
22
-
23
- ## Viết PRD — kỷ luật quan trọng nhất: "đúng tầng"
24
-
25
- Thư ký này rất kỹ về việc **cái gì viết ở đâu** (gọi là *altitude*):
26
-
27
- - **AC** (nghiệm thu) = chỉ ghi *kết quả quan sát được* + trỏ số hiệu BR. KHÔNG nhồi cơ chế (số lần thử lại, timeout, nhánh lỗi chi tiết).
28
- - **BR / Business Logic** = nơi chứa cơ chế "chạy thế nào".
29
- - **Scope** = ranh giới (làm gì / không làm gì), không định nghĩa thuật ngữ.
30
-
31
- Và **thuần nghiệp vụ**: chi tiết kỹ thuật (API, token, DB) → thuộc Tech Docs; chi tiết hình ảnh (màu, animation, pixel) → thuộc Design Spec. PRD chỉ giữ Wireframe ở mức nghiệp vụ (màn có gì, bấm ra kết quả gì).
32
-
33
- Ngoài ra thư ký còn giữ **liên kết truy vết**: mỗi AC trỏ về ≥1 BR, mỗi UC liệt kê "AC liên quan", và hai chiều phải khớp nhau — lệch là lỗi, phải sửa trước khi ghi.
34
-
35
- ---
36
-
37
- ## Kết quả & vị trí trong dây chuyền
38
-
39
- Ra file PRD `specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md` ở **version 1.0, trạng thái draft**.
40
-
41
- ```
42
- define-product → [ generate-prd ◀ bạn ở đây ] → refine-prd → review-context → PO duyệt → generate-bdd
43
- ```
44
-
45
- > **Một câu chốt:** `/generate-prd` là thư ký biến biên bản khám phá thành **hồ sơ chuẩn thuần nghiệp vụ**, canh đúng tầng AC/BR và giữ truy vết — rồi chuyển cho `refine-prd`/`review-context` soi lại trước khi PO duyệt.