@anhth2/spec-driven-dev-plugin 0.10.0 → 0.12.0

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 (207) hide show
  1. package/commands/debug.md +43 -8
  2. package/commands/define-product.md +43 -8
  3. package/commands/dev-gen-test.md +44 -9
  4. package/commands/dev-gen-test.tmpl +1 -1
  5. package/commands/dev-run-test.md +48 -10
  6. package/commands/dev-run-test.tmpl +5 -2
  7. package/commands/dev-smoke-test.md +43 -8
  8. package/commands/fix-bug.md +79 -14
  9. package/commands/fix-bug.tmpl +36 -6
  10. package/commands/generate-bdd.md +49 -10
  11. package/commands/generate-bdd.tmpl +6 -2
  12. package/commands/generate-code.md +44 -9
  13. package/commands/generate-code.tmpl +1 -1
  14. package/commands/generate-design-spec.md +43 -8
  15. package/commands/generate-prd.md +43 -8
  16. package/commands/generate-spec-manifest.md +43 -8
  17. package/commands/generate-tech-docs.md +43 -8
  18. package/commands/learn.md +43 -8
  19. package/commands/propose-scenario.md +74 -19
  20. package/commands/propose-scenario.tmpl +31 -11
  21. package/commands/qc-analyze.md +534 -0
  22. package/commands/qc-analyze.tmpl +86 -0
  23. package/commands/qc-design-test.md +515 -0
  24. package/commands/qc-design-test.tmpl +67 -0
  25. package/commands/qc-plan.md +497 -0
  26. package/commands/qc-plan.tmpl +49 -0
  27. package/commands/qc-report.md +508 -0
  28. package/commands/qc-report.tmpl +60 -0
  29. package/commands/qc-review.md +501 -0
  30. package/commands/qc-review.tmpl +53 -0
  31. package/commands/qc-run-test.md +549 -0
  32. package/commands/qc-run-test.tmpl +83 -0
  33. package/commands/refine-prd.md +43 -8
  34. package/commands/report-bug.md +59 -10
  35. package/commands/report-bug.tmpl +16 -2
  36. package/commands/review-code.md +43 -8
  37. package/commands/review-context.md +43 -8
  38. package/commands/review-tech-docs.md +43 -8
  39. package/commands/setup-ai-first.md +7 -0
  40. package/commands/sync.md +19 -9
  41. package/commands/sync.tmpl +12 -9
  42. package/commands/update-framework.md +7 -0
  43. package/commands/validate-traces.md +67 -12
  44. package/commands/validate-traces.tmpl +24 -4
  45. package/core/FRAMEWORK_VERSION +1 -1
  46. package/core/commands/debug.md +43 -8
  47. package/core/commands/define-product.md +43 -8
  48. package/core/commands/dev-gen-test.md +44 -9
  49. package/core/commands/dev-run-test.md +48 -10
  50. package/core/commands/dev-smoke-test.md +43 -8
  51. package/core/commands/fix-bug.md +79 -14
  52. package/core/commands/generate-bdd.md +49 -10
  53. package/core/commands/generate-code.md +44 -9
  54. package/core/commands/generate-design-spec.md +43 -8
  55. package/core/commands/generate-prd.md +43 -8
  56. package/core/commands/generate-spec-manifest.md +43 -8
  57. package/core/commands/generate-tech-docs.md +43 -8
  58. package/core/commands/learn.md +43 -8
  59. package/core/commands/propose-scenario.md +74 -19
  60. package/core/commands/qc-analyze.md +534 -0
  61. package/core/commands/qc-design-test.md +515 -0
  62. package/core/commands/qc-plan.md +497 -0
  63. package/core/commands/qc-report.md +508 -0
  64. package/core/commands/qc-review.md +501 -0
  65. package/core/commands/qc-run-test.md +549 -0
  66. package/core/commands/refine-prd.md +43 -8
  67. package/core/commands/report-bug.md +59 -10
  68. package/core/commands/review-code.md +43 -8
  69. package/core/commands/review-context.md +43 -8
  70. package/core/commands/review-tech-docs.md +43 -8
  71. package/core/commands/setup-ai-first.md +7 -0
  72. package/core/commands/sync.md +19 -9
  73. package/core/commands/update-framework.md +7 -0
  74. package/core/commands/validate-traces.md +67 -12
  75. package/core/modules/qc-playwright/stack-profile.yaml +65 -0
  76. package/core/skills/code/SKILL.md +50 -8
  77. package/core/skills/debug/SKILL.md +57 -8
  78. package/core/skills/design-spec/SKILL.md +43 -8
  79. package/core/skills/discovery/SKILL.md +43 -8
  80. package/core/skills/prd/SKILL.md +14 -0
  81. package/core/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
  82. package/core/skills/qc/qa-analyst/acceptance-criteria.md +60 -0
  83. package/core/skills/qc/qa-analyst/business-rules.md +59 -0
  84. package/core/skills/qc/qa-analyst/data-flow.md +64 -0
  85. package/core/skills/qc/qa-analyst/spec-breakdown.md +61 -0
  86. package/core/skills/qc/qa-designer/e2e/journey.md +41 -0
  87. package/core/skills/qc/qa-designer/exploratory/charter.md +68 -0
  88. package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
  89. package/core/skills/qc/qa-designer/functional/api.md +45 -0
  90. package/core/skills/qc/qa-designer/functional/gui-feature.md +46 -0
  91. package/core/skills/qc/qa-designer/functional/gui-screen.md +52 -0
  92. package/core/skills/qc/qa-designer/integration/api.md +42 -0
  93. package/core/skills/qc/qa-designer/integration/db.md +39 -0
  94. package/core/skills/qc/qa-designer/integration/gui.md +40 -0
  95. package/core/skills/qc/qa-designer/integration/kafka.md +40 -0
  96. package/core/skills/qc/qa-designer/non-functional.md +40 -0
  97. package/core/skills/qc/qa-planner/test-plan.md +120 -0
  98. package/core/skills/qc/qa-reviewer/script/e2e.md +87 -0
  99. package/core/skills/qc/qa-reviewer/script/exploratory.md +45 -0
  100. package/core/skills/qc/qa-reviewer/script/functional.md +101 -0
  101. package/core/skills/qc/qa-reviewer/script/integration.md +91 -0
  102. package/core/skills/qc/qa-reviewer/script/non-functional.md +126 -0
  103. package/core/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
  104. package/core/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
  105. package/core/skills/qc/qa-reviewer/test-case/functional.md +76 -0
  106. package/core/skills/qc/qa-reviewer/test-case/integration.md +69 -0
  107. package/core/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
  108. package/core/skills/qc/qa-runner/e2e.md +49 -0
  109. package/core/skills/qc/qa-runner/exploratory/session.md +36 -0
  110. package/core/skills/qc/qa-runner/functional/api.md +35 -0
  111. package/core/skills/qc/qa-runner/functional/gui-feature.md +51 -0
  112. package/core/skills/qc/qa-runner/functional/gui-screen.md +55 -0
  113. package/core/skills/qc/qa-runner/integration.md +47 -0
  114. package/core/skills/qc/qa-runner/non-functional.md +49 -0
  115. package/core/skills/qc/qa-runner/report/report.md +37 -0
  116. package/core/skills/setup-ai-first/SKILL.md +7 -0
  117. package/core/skills/spec/SKILL.md +14 -0
  118. package/core/skills/test/SKILL.md +93 -16
  119. package/core/steps/context-loader.md +36 -8
  120. package/core/steps/report-footer.md +7 -0
  121. package/core/templates/project-context.yaml +27 -1
  122. package/docs/01-getting-started/README.md +19 -0
  123. package/docs/01-getting-started/core-concepts.md +102 -0
  124. package/docs/01-getting-started/installation.md +156 -0
  125. package/docs/01-getting-started/quickstart.md +85 -0
  126. package/docs/02-guides/README.md +27 -0
  127. package/docs/02-guides/developer/README.md +46 -0
  128. package/docs/02-guides/developer/bdd-and-trace.md +123 -0
  129. package/docs/02-guides/developer/commands.md +76 -0
  130. package/docs/02-guides/developer/pr-checklist.md +15 -0
  131. package/docs/02-guides/developer/scenarios.md +448 -0
  132. package/docs/02-guides/developer/workflow.md +61 -0
  133. package/docs/02-guides/product-owner/README.md +77 -0
  134. package/docs/02-guides/product-owner/commands.md +30 -0
  135. package/docs/02-guides/product-owner/handoff-checklist.md +42 -0
  136. package/docs/02-guides/product-owner/prd-writing-rules.md +45 -0
  137. package/docs/02-guides/product-owner/scenarios.md +357 -0
  138. package/docs/02-guides/qc-automation.md +157 -0
  139. package/docs/02-guides/tester/README.md +74 -0
  140. package/docs/02-guides/tester/bug-reporting.md +117 -0
  141. package/docs/02-guides/tester/reading-specs.md +79 -0
  142. package/docs/02-guides/tester/scenarios.md +186 -0
  143. package/docs/02-guides/tester/spec-manifest.md +124 -0
  144. package/docs/02-guides/tester/test-checklist.md +31 -0
  145. package/docs/02-guides/tester/workflow.md +80 -0
  146. package/docs/03-concepts/README.md +19 -0
  147. package/docs/03-concepts/architecture.md +245 -0
  148. package/docs/03-concepts/pipeline.md +262 -0
  149. package/docs/03-concepts/traceability.md +149 -0
  150. package/docs/04-operations/README.md +33 -0
  151. package/docs/04-operations/bug-flow.md +362 -0
  152. package/docs/04-operations/publishing.md +137 -0
  153. package/docs/04-operations/sync-and-update.md +365 -0
  154. package/docs/05-reference/README.md +29 -0
  155. package/docs/05-reference/commands.md +229 -0
  156. package/docs/05-reference/modules.md +110 -0
  157. package/docs/05-reference/trace-schema.md +152 -0
  158. package/docs/README.md +51 -0
  159. package/modules/qc-playwright/stack-profile.yaml +65 -0
  160. package/package.json +2 -2
  161. package/skills/code/SKILL.md +50 -8
  162. package/skills/debug/SKILL.md +57 -8
  163. package/skills/design-spec/SKILL.md +43 -8
  164. package/skills/discovery/SKILL.md +43 -8
  165. package/skills/prd/SKILL.md +14 -0
  166. package/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
  167. package/skills/qc/qa-analyst/acceptance-criteria.md +60 -0
  168. package/skills/qc/qa-analyst/business-rules.md +59 -0
  169. package/skills/qc/qa-analyst/data-flow.md +64 -0
  170. package/skills/qc/qa-analyst/spec-breakdown.md +61 -0
  171. package/skills/qc/qa-designer/e2e/journey.md +41 -0
  172. package/skills/qc/qa-designer/exploratory/charter.md +68 -0
  173. package/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
  174. package/skills/qc/qa-designer/functional/api.md +45 -0
  175. package/skills/qc/qa-designer/functional/gui-feature.md +46 -0
  176. package/skills/qc/qa-designer/functional/gui-screen.md +52 -0
  177. package/skills/qc/qa-designer/integration/api.md +42 -0
  178. package/skills/qc/qa-designer/integration/db.md +39 -0
  179. package/skills/qc/qa-designer/integration/gui.md +40 -0
  180. package/skills/qc/qa-designer/integration/kafka.md +40 -0
  181. package/skills/qc/qa-designer/non-functional.md +40 -0
  182. package/skills/qc/qa-planner/test-plan.md +120 -0
  183. package/skills/qc/qa-reviewer/script/e2e.md +87 -0
  184. package/skills/qc/qa-reviewer/script/exploratory.md +45 -0
  185. package/skills/qc/qa-reviewer/script/functional.md +101 -0
  186. package/skills/qc/qa-reviewer/script/integration.md +91 -0
  187. package/skills/qc/qa-reviewer/script/non-functional.md +126 -0
  188. package/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
  189. package/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
  190. package/skills/qc/qa-reviewer/test-case/functional.md +76 -0
  191. package/skills/qc/qa-reviewer/test-case/integration.md +69 -0
  192. package/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
  193. package/skills/qc/qa-runner/e2e.md +49 -0
  194. package/skills/qc/qa-runner/exploratory/session.md +36 -0
  195. package/skills/qc/qa-runner/functional/api.md +35 -0
  196. package/skills/qc/qa-runner/functional/gui-feature.md +51 -0
  197. package/skills/qc/qa-runner/functional/gui-screen.md +55 -0
  198. package/skills/qc/qa-runner/integration.md +47 -0
  199. package/skills/qc/qa-runner/non-functional.md +49 -0
  200. package/skills/qc/qa-runner/report/report.md +37 -0
  201. package/skills/setup-ai-first/SKILL.md +7 -0
  202. package/skills/spec/SKILL.md +14 -0
  203. package/skills/test/SKILL.md +93 -16
  204. package/steps/context-loader.md +36 -8
  205. package/steps/report-footer.md +7 -0
  206. package/templates/project-context.yaml +27 -1
  207. package/ARCHITECTURE.md +0 -258
@@ -0,0 +1,76 @@
1
+ [📚 Docs](../../README.md) › [Guides](../README.md) › [Developer](README.md) › Commands
2
+
3
+ # Commands Dành Cho Dev
4
+
5
+ | Command | Mục đích | Khi nào dùng |
6
+ |---|---|---|
7
+ | `/sync` `[spec-branch]` | **One-command setup hoặc update** — git pull + submodule sync + Living Docs refresh. Truyền branch để override branch spec submodule (vd `/sync develop`) | **Mỗi sáng trước khi bắt đầu work** |
8
+ | `/update-framework` | Nâng cấp **bản thân framework** (`.agent/commands/`, steps/, modules/) từ npm | Khi có version framework mới — không đụng project-context/CLAUDE.md |
9
+ | `/review-context {prd-file}` | Đọc + xác nhận PRD + BDD đủ rõ trước khi code — fan-out review dimension thành sub-agent song song + completeness-critic loop, findings file đầy đủ ngay trong 1 lần chạy | **Bước đầu tiên** khi nhận PRD mới |
10
+ | `/generate-tech-docs {prd-file}` | Sinh Tech Docs (API, DB schema, sequence diagram) | Sau khi đọc BDD từ spec submodule |
11
+ | `/generate-code {bdd-file}` | Sinh code — BE hoặc FE khi API đã sẵn sàng | Sau khi tech docs `approved` |
12
+ | `/generate-code {bdd-file} --phase=ui` | FE: gen UI + mock adapter (BE chưa ready) | Ngay sau khi đọc BDD |
13
+ | `/generate-code {bdd-file} --phase=integration` | FE: wire API thật thay mock | Sau khi sign-off gate `approved` |
14
+ | `/dev-gen-test {bdd-file}` | **Dev self-check** — sinh test cases từ BDD để dev tự verify code mình vừa gen (KHÔNG phải bộ test chính thức của QC/dev-team) | Song song hoặc sau generate-code |
15
+ | `/review-code {file}` | Review code theo 4 lens (Security/Perf/Arch/Test) | Trước khi tạo PR |
16
+ | `/review-tech-docs {tech-doc-file}` | Review chất lượng Tech Docs | Sau generate-tech-docs |
17
+ | `/dev-run-test` | **Dev self-check** — chạy test do dev tự gen để xác nhận code mình hoạt động (smoke/self-verify, KHÔNG phải coverage chính thức) — *umbrella mode: tự `cd` vào service_root, dùng service's `test_command`*. Ghi `dev_selftest` (pass/fail) vào trace TSV | Sau khi code + tests sẵn sàng |
18
+ | `/fix-bug {issue}` | Phân tích + fix bug có trace | Khi có bug report |
19
+ | `/debug {symptom}` | Debug vấn đề chưa rõ nguyên nhân | Khi cần trace root cause |
20
+ | `/dev-smoke-test` | **Dev self-check** — kiểm tra nhanh các luồng chính của code mình vừa làm (smoke, không thay thế bộ test chính thức) | Sau deploy hoặc merge lớn |
21
+ | `/validate-traces` | Kiểm tra toàn bộ trace chain còn hợp lệ | Sau refactor hoặc khi PRD update |
22
+ | `/learn {text}` | Ghi lại lỗi AI hay lặp thành guardrail | Khi AI lặp lại lỗi mà bạn không muốn nó tái diễn |
23
+
24
+ > **Dev self-check vs QC chính thức:** `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` (ghi `dev_selftest`) chỉ là **smoke self-check của riêng dev**. Bộ QC chính thức giờ là native pipeline `/qc-analyze → /qc-plan → /qc-design-test → /qc-review → /qc-run-test → /qc-report` — **do QC chạy, không phải việc của dev** — và ghi `qc_status` riêng. Chi tiết: [QC Automation Guide](../qc-automation.md).
25
+
26
+ > Danh mục đầy đủ mọi command: [Reference › Commands](../../05-reference/commands.md).
27
+
28
+ ## Project Lessons — dạy framework không lặp lỗi
29
+
30
+ AI đôi khi lặp đi lặp lại một lỗi trong dự án (vd: gọi repository thẳng từ controller, quên null-check). Thay vì sửa thủ công mỗi lần, **ghi lại thành "lesson"** — context-loader sẽ nạp nó vào đầu **mọi** lệnh như một ràng buộc cứng.
31
+
32
+ **2 cách ghi nhận:**
33
+ ```bash
34
+ # Cách 1 — chủ động
35
+ /learn AI hay gọi repository thẳng từ controller, phải đi qua service layer
36
+
37
+ # Cách 2 — tự động: khi /review-code, /fix-bug, /debug phát hiện lỗi lặp lại
38
+ # → nó hỏi "Record as a project lesson? (Y/N)" → Y
39
+ ```
40
+
41
+ **Lưu ở đâu:** `paths.lessons_file` (mặc định `specs/domain-knowledge/lessons-learned.md`; umbrella: `.agent/project-lessons.md` mỗi service). **Commit file này** để cả team cùng được bảo vệ.
42
+
43
+ > Đây là **bộ nhớ dự án**, không phải fine-tune model — lesson được nạp vào context mỗi lần chạy, nên AI "nhớ" và không lặp lại. Xem `[CTX LOADED]` có dòng `Lessons: loaded — N guardrails`.
44
+
45
+ ## Xử lý feedback từ tester
46
+
47
+ Tester gửi bug report (`/report-bug`) và đề xuất scenario (`/propose-scenario`) vào `feedback/` của **spec repo**. Khi dev chạy `/sync`, nó liệt kê:
48
+ ```
49
+ 📥 New tester feedback (pulled this sync):
50
+ Bug reports: BUG-20260608-01 FT-001 — ... [layer: Code]
51
+ Scenario proposals: FT-001-trailing-spaces → AC2 (pending review)
52
+ ```
53
+
54
+ Dev hành động theo phân loại:
55
+ - **Bug report** → `/fix-bug {BUG-ID}` (report đã có sẵn spec-context + AC bị vi phạm + layer)
56
+ - **Scenario proposal map vào AC sẵn có** → thêm scenario vào `.feature` (hoặc `/generate-bdd` lại), rồi `/generate-code` + `/dev-gen-test`
57
+ - **Proposal là yêu cầu mới (PRD change request)** → chuyển PO sửa PRD trước
58
+
59
+ > Bug reports có thể đến từ hai nguồn: Tester dùng `/report-bug` trực tiếp, **hoặc** từ kết quả QC automation (`qc_status: fail` trong `.trace/*.tsv` → QC (hoặc tester) chạy `/report-bug` → `/sync` → dev thấy tại đây). Cả hai đều dùng cùng luồng `/fix-bug`.
60
+
61
+ > Tester chỉ *đề xuất* trong `feedback/` — dev/PO mới đưa vào BDD chính thức. Giữ đúng ownership.
62
+
63
+ ## Khi nào dùng `--phase` cho FE/App?
64
+
65
+ | Tình huống | Command |
66
+ |---|---|
67
+ | API **đã có sẵn** và đang hoạt động | `/generate-code {file}` — không flag, gen real API ngay |
68
+ | BE **chưa ready**, FE muốn bắt đầu ngay | `/generate-code {file} --phase=ui` — UI + mock adapter |
69
+ | Sign-off gate xong, cần wire API thật | `/generate-code {file} --phase=integration` |
70
+ | BE implement (system BDD) | `/generate-code {file}` — không flag |
71
+
72
+ > `--phase` chỉ có giá trị khi BE chưa sẵn sàng. Nếu API đã live → bỏ qua `--phase`, chạy thẳng default.
73
+
74
+ ---
75
+
76
+ ← [Developer Guide](README.md) · Tiếp theo: [BDD & Trace System](bdd-and-trace.md)
@@ -0,0 +1,15 @@
1
+ [📚 Docs](../../README.md) › [Guides](../README.md) › [Developer](README.md) › PR Checklist
2
+
3
+ # Checklist Trước Khi Tạo PR
4
+
5
+ - [ ] `/validate-traces` → all green (không broken trace)
6
+ - [ ] `/dev-run-test` → all pass *(umbrella: đảm bảo service có `.agent/project-context.yaml` với `test_command` trước khi chạy)*
7
+ - [ ] `/review-code` → không có issue Critical hoặc Major chưa xử lý
8
+ - [ ] Code trace về đúng BDD scenarios trong `my-project-specs/specs/bdd/`
9
+ - [ ] Code có `@trace.bdd` comment cho các function implement BDD scenario
10
+ - [ ] Tech Docs đã được update nếu có thay đổi API/DB schema
11
+ - [ ] **Không tự sửa BDD** — BDD là của PO, nếu cần update thì báo PO rồi pull lại
12
+
13
+ ---
14
+
15
+ ← [Tình huống thực tế](scenarios.md)
@@ -0,0 +1,448 @@
1
+ [📚 Docs](../../README.md) › [Guides](../README.md) › [Developer](README.md) › Tình huống thực tế
2
+
3
+ # Tình Huống Thực Tế
4
+
5
+ - [1. Nhận PRD + BDD mới và bắt đầu work](#tình-huống-1-nhận-prd--bdd-mới-và-bắt-đầu-work)
6
+ - [2. Đọc và hiểu System BDD (BE dev)](#tình-huống-2-đọc-và-hiểu-system-bdd-be-dev)
7
+ - [3. Đọc Web/App BDD (FE/App dev)](#tình-huống-3-đọc-webapp-bdd-feapp-dev)
8
+ - [4. PRD thay đổi mid-sprint](#tình-huống-4-prd-thay-đổi-mid-sprint)
9
+ - [4b. Chờ API design — BE + FE/App đồng thuận](#tình-huống-4b-chờ-api-design--be--feapp-đồng-thuận)
10
+ - [5. Nhận bug report từ Tester](#tình-huống-5-nhận-bug-report-từ-tester)
11
+ - [6. Nhận Design Spec + BDD từ PO (FE/App)](#tình-huống-6-nhận-design-spec--bdd-từ-po-feapp)
12
+ - [7b. Brownfield — API đã tồn tại](#tình-huống-7b-brownfield--api-đã-tồn-tại-trên-hệ-thống-cũ)
13
+ - [7. Setup service submodule (Umbrella)](#tình-huống-7-setup-service-submodule-umbrella-mode)
14
+ - [8. Validate traces trước khi tạo PR lớn](#tình-huống-8-validate-traces-trước-khi-tạo-pr-lớn)
15
+
16
+ ## Tình huống 1: Nhận PRD + BDD mới và bắt đầu work
17
+
18
+ **Bối cảnh:** PO thông báo PRD `FT-042-checkout.md` và BDD đã approved, sẵn sàng implement.
19
+ ```
20
+ 1. git submodule update --remote my-project-specs
21
+ (lấy PRD + BDD mới nhất từ PO)
22
+
23
+ 2. /review-context my-project-specs/specs/prd/payment/FT-042-checkout.md
24
+ → Kiểm tra @trace.status = approved (không code khi còn draft)
25
+ → Đọc kỹ AC, UC, BR
26
+
27
+ 3. Đọc BDD tương ứng theo platform của mình:
28
+ FE/Web: my-project-specs/specs/bdd/payment/web/FT-042-UC*.feature
29
+ App: my-project-specs/specs/bdd/payment/app/FT-042-UC*.feature
30
+ BE: my-project-specs/specs/bdd/payment/system/FT-042-UC*.feature
31
+
32
+ 4. Nếu có thắc mắc về PRD hoặc BDD → hỏi PO ngay, không tự suy diễn
33
+ Ví dụ: "BR5 trong System BDD nói 'kiểm tra giới hạn thanh toán' — limit này
34
+ có khác nhau theo tier user không? BDD không chỉ rõ."
35
+
36
+ 5. Bắt đầu: /generate-tech-docs dựa trên BDD
37
+ ```
38
+ **Lưu ý:** Nếu `/review-context` báo P0 warning (domain không match config) → **dừng lại**, báo PO/DevOps fix config trước.
39
+
40
+ ## Tình huống 2: Đọc và hiểu System BDD (BE dev)
41
+
42
+ **Bối cảnh:** BE dev nhận thông báo BDD đã sẵn sàng tại `specs/bdd/auth/system/`.
43
+
44
+ **System BDD tập trung vào:** API contracts được tổng hợp từ FE + App BDD · Business rule enforcement tại system level · Data contracts (request/response shape) · Cross-platform consistency.
45
+ ```
46
+ # Đọc file BDD (không generate):
47
+ my-project-specs/specs/bdd/auth/system/FT-001-UC1-login-system.feature
48
+ ```
49
+ ```gherkin
50
+ # Ví dụ System BDD do PO gen (tổng hợp từ web + app BDD)
51
+ Feature: User Authentication — System Contract
52
+ # @trace.prd: FT-001
53
+ # @trace.platform: system
54
+
55
+ Scenario: Successful login returns token and profile
56
+ Given a registered user with valid credentials
57
+ When the system receives a login request
58
+ Then the system returns an auth token
59
+ And the system returns the user profile
60
+ And the session is valid for 3600 seconds
61
+
62
+ Scenario: Account locked after 5 failed attempts
63
+ Given a user with 4 failed login attempts
64
+ When the system receives a 5th failed login
65
+ Then the system locks the account for 30 minutes
66
+ And the system signals the locked state with remaining time
67
+ ```
68
+ BE dev dùng System BDD để: thiết kế API endpoint + response schema (`/generate-tech-docs`) · generate code skeleton (`/generate-code`) · viết integration tests (`/dev-gen-test`).
69
+
70
+ ## Tình huống 3: Đọc Web/App BDD (FE/App dev)
71
+
72
+ **Bối cảnh:** FE dev nhận thông báo BDD web đã sẵn sàng tại `specs/bdd/auth/web/`.
73
+ ```
74
+ # Đọc file BDD (không generate):
75
+ my-project-specs/specs/bdd/auth/web/FT-001-UC1-login-web.feature
76
+ ```
77
+ ```gherkin
78
+ # Ví dụ Web BDD do PO gen (vocabulary: clicks, sees, navigates)
79
+ Scenario: User sees error after wrong password
80
+ Given user is on the Login screen
81
+ When user submits login with wrong password
82
+ Then user sees "Sai mật khẩu" error
83
+ And the password field is cleared
84
+
85
+ Scenario: Account locked — countdown shown
86
+ Given user has submitted wrong password 5 times
87
+ Then user sees "Tài khoản bị khoá. Thử lại sau 29:45"
88
+ And the countdown decrements every second
89
+ ```
90
+ FE dev dùng Web BDD để:
91
+ 1. Thiết kế component spec + API integration plan (`/generate-tech-docs`)
92
+ 2. Gen UI + mock adapter từ System BDD contract (`/generate-code --phase=ui`) → Mock adapter trả về fixture data đúng với BDD `Then` clauses → Tester test toàn bộ FE flow ngay, không cần chờ BE
93
+ 3. [Trong khi đó — tham gia review API contract, sign-off T7 gate]
94
+ 4. Khi sign-off done → wire real API (`/generate-code --phase=integration`)
95
+ 5. Viết E2E tests với Playwright/Cypress (`/dev-gen-test`)
96
+
97
+ ## Tình huống 4: PRD thay đổi mid-sprint
98
+
99
+ **Bối cảnh:** PO update PRD `FT-042` từ v1.0 → v1.1 khi dev đang code.
100
+ ```
101
+ PO notify: "FT-042 updated — BR7 thay đổi giới hạn từ 5tr → 10tr"
102
+
103
+
104
+ Dev chạy:
105
+ /review-context specs/prd/payment/FT-042-checkout.md
106
+ → Xem diff từ v1.0 sang v1.1 (agent highlight thay đổi)
107
+
108
+
109
+ Đánh giá impact:
110
+ - BDD bị ảnh hưởng? → thông báo PO để PO update BDD trong spec repo, rồi pull lại
111
+ - Tech Docs bị ảnh hưởng? → update API spec
112
+ - Code bị ảnh hưởng? → update logic + tests
113
+
114
+
115
+ /validate-traces
116
+ → Đảm bảo không có trace nào còn trỏ về spec cũ
117
+ ```
118
+ **Nguyên tắc:** Không merge code khi traces broken. Fix traces trước.
119
+
120
+ ## Tình huống 4b: Chờ API design — BE + FE/App đồng thuận
121
+
122
+ **Bối cảnh:** System BDD đã gen, BE dev bắt đầu `/generate-tech-docs` nhưng FE/App chưa confirm API contract. **Trạng thái tech docs trong thời gian này:** `@trace.status: in-review`.
123
+ ```
124
+ BE dev: /generate-tech-docs auth/FT-001-UC1
125
+ # Umbrella mode (có spec_source): output nằm trong SPEC REPO chung
126
+ → Output: free-trial-specs/specs/tech-docs/auth/FT-001-UC1-tech-design.md
127
+ # Single-service (không có spec_source): output nằm tại project root
128
+ → Output: specs/tech-docs/auth/FT-001-UC1-tech-design.md
129
+ → @trace.status: draft
130
+ → @trace.sign_off: { be_team: done, fe_team: pending, app_team: pending, sa: pending }
131
+ → Publish: commit + push file lên spec repo (2-layer) để FE/App `/sync` đọc được
132
+
133
+ BE dev: /review-tech-docs free-trial-specs/specs/tech-docs/auth/FT-001-UC1-tech-design.md
134
+ → Chạy T1–T7 (bao gồm T7 cross-team contract check)
135
+ → Report: "Sign-off gate: 🔒 BLOCKED — pending: fe_team, app_team, sa"
136
+ ```
137
+ **FE dev review API contract:**
138
+ ```
139
+ # FE dev mở tech-design file → xem API contract section
140
+ # Xác nhận: response fields có đủ cho web BDD expectations không?
141
+ # Nếu ok → thêm comment hoặc báo BE dev cập nhật sign_off
142
+ ```
143
+ Khi FE/App confirm xong → BE dev update header:
144
+ ```yaml
145
+ # @trace.sign_off:
146
+ # be_team: done
147
+ # fe_team: done ← FE đã confirm
148
+ # app_team: done ← App đã confirm
149
+ # sa: done ← SA đã approve
150
+ ```
151
+ ```
152
+ BE dev: /review-tech-docs --resume {tech-design-file}
153
+ → Sign-off gate: ✅ READY
154
+ → @trace.status: approved
155
+ → BE có thể chạy /generate-code
156
+ → FE chạy /generate-code --phase=integration để wire API thật
157
+ ```
158
+ ```
159
+ # FE — sau khi sign-off gate approved:
160
+ /generate-code --phase=integration auth/FT-001-UC1
161
+ → Reads existing mock adapter interface ({UC-ID}ApiPort)
162
+ → Generates real API adapter với calls đến endpoints trong tech-doc
163
+ → Flips DI/env flag: service dùng real adapter thay mock
164
+ → Mock adapter giữ lại cho unit test
165
+ ```
166
+ **Nguyên tắc:**
167
+ - `/generate-code` (không phase flag) cho BE trả về warning nếu tech docs status là `in-review` hoặc `draft`.
168
+ - FE dùng `--phase=ui` được ngay sau khi đọc BDD — không cần chờ.
169
+ - FE dùng `--phase=integration` chỉ sau khi sign-off gate `approved`.
170
+
171
+ ## Tình huống 5: Nhận bug report từ Tester
172
+
173
+ **Bối cảnh:** Tester gửi bug report theo đúng format spec-driven, có đầy đủ spec context.
174
+ ```
175
+ Bug ID : BUG-20260605-003
176
+ Feature : FT-001 — User Login
177
+ Service : BE
178
+ Severity : Major
179
+
180
+ Spec context:
181
+ PRD : specs/prd/auth/FT-001-login.md (v1.0)
182
+ BDD : free-trial-be/specs/bdd/auth/FT-001-login.feature
183
+ → Scenario: "Lock account after 5 failed attempts"
184
+ Tech Doc : free-trial-specs/specs/tech-docs/auth/FT-001-auth-api.md
185
+
186
+ AC bị vi phạm:
187
+ AC3: "Sai password 5 lần liên tiếp → khoá tài khoản 30 phút"
188
+
189
+ BDD Scenario bị fail:
190
+ Given : user has 0 failed attempts
191
+ When : login with wrong password 5 times
192
+ Then : 5th attempt returns 423 Locked AND retry_after = 1800
193
+
194
+ Actual: 5th attempt trả 401, không có retry_after, tài khoản không bị khoá
195
+ ```
196
+
197
+ **Bước 1 — Tìm code implement scenario bị fail:**
198
+ ```
199
+ Đọc theo thứ tự: PRD → BDD → Code
200
+
201
+ PRD AC3: "5 lần sai → khoá 30 phút" → rõ ràng ✅
202
+ BDD SC3: "Then 423 Locked, retry_after=1800" → đúng theo PRD ✅
203
+ Code: ??? → kiểm tra tiếp
204
+ ```
205
+ Chạy:
206
+ ```
207
+ /fix-bug "BUG-20260605-003: FT-001-UC2-BR3 — account not locked after 5 failures
208
+ PRD: specs/prd/auth/FT-001-login.md
209
+ BDD: free-trial-be/specs/bdd/auth/FT-001-login.feature"
210
+ ```
211
+ Agent sẽ: đọc BDD scenario được chỉ định · tìm code implement scenario đó (theo `@trace.bdd`) · so sánh logic thực tế vs spec · propose fix có giải thích.
212
+
213
+ **Bước 2 — Xác định bug thuộc layer nào:** Đọc theo thứ tự PRD → BDD → Code để tìm chỗ lệch. Có 3 khả năng:
214
+
215
+ | PRD | BDD | Code | → Fix ở đâu |
216
+ |---|---|---|---|
217
+ | ✅ rõ | ✅ đúng | ❌ sai | Fix code |
218
+ | ✅ rõ | ❌ sai | ❌ sai | Fix BDD + code |
219
+ | ❌ mơ hồ | bất kỳ | bất kỳ | Hỏi PO trước, không tự fix |
220
+
221
+ > Flow đầy đủ cho cả 6 cases (bao gồm PRD change, Design Spec bug, env bug) và cách phối hợp với PO/Tester: xem [Operations › Bug Flow](../../04-operations/bug-flow.md).
222
+
223
+ **Bước 3 — Sau khi fix:**
224
+ ```
225
+ /validate-traces
226
+ → Đảm bảo @trace.bdd trong code vẫn trỏ đúng BDD scenario
227
+ → Không có trace broken
228
+
229
+ /dev-run-test
230
+ → BDD pass = fix đúng theo spec
231
+
232
+ Notify tester:
233
+ "BUG-20260605-003 fixed — deploy to staging [link commit/PR]
234
+ Root cause: Case A — code dùng > thay vì >=
235
+ BDD: không đổi (spec đã đúng)
236
+ Re-test: FT-001-UC2-SC3"
237
+ ```
238
+
239
+ ## Tình huống 6: Nhận Design Spec + BDD từ PO (FE/App)
240
+
241
+ **Bối cảnh:** PO tạo Design Spec + BDD web cho tính năng checkout — FE cần implement.
242
+ ```
243
+ PO thông báo: "FT-042 Design Spec + BDD đã sẵn sàng"
244
+
245
+
246
+ git submodule update --remote my-project-specs
247
+
248
+ FE dev đọc:
249
+ - my-project-specs/specs/prd/payment/FT-042-checkout.md (business rules)
250
+ - my-project-specs/specs/design-spec/payment/FT-042-*.md (screens, components)
251
+ - my-project-specs/specs/bdd/payment/web/FT-042-UC*.feature (BDD đã gen sẵn)
252
+
253
+
254
+ Bật Figma Dev Mode MCP (nếu dùng Figma — để FE codegen chính xác):
255
+ → Mở Figma DESKTOP app + enable Dev Mode MCP server (local, http://127.0.0.1:3845)
256
+ → `/generate-code` (FE/App UI) tự detect server local + prompt nếu chưa bật
257
+ → Dùng real tokens, components, Code Connect thay vì web link → codegen sát design hơn
258
+
259
+
260
+ /generate-tech-docs payment/FT-042-UC1
261
+ → Gen component spec, API integration plan dựa trên Design Spec + BDD
262
+
263
+
264
+ /generate-code payment/FT-042-UC1 --phase=ui
265
+ → Gen UI components + mock API adapter (fixture từ System BDD Then clauses)
266
+ → FE codegen đọc Figma Dev Mode MCP local nếu đang bật (tokens/components/Code Connect)
267
+ → Tester có thể test FE ngay
268
+ │ [trong khi đó: tham gia review API contract — T7 sign-off gate]
269
+
270
+ [Nhận thông báo: sign-off gate approved]
271
+
272
+
273
+ /generate-code payment/FT-042-UC1 --phase=integration
274
+ → Wire real API adapter thay thế mock
275
+ → /dev-gen-test payment/FT-042-UC1
276
+ → /review-code {files-changed}
277
+ → /dev-run-test
278
+ ```
279
+ **Lưu ý:** BE không cần đọc Design Spec — chỉ đọc System BDD tại `specs/bdd/{domain}/system/`.
280
+
281
+ ## Tình huống 7b: Brownfield — API đã tồn tại trên hệ thống cũ
282
+
283
+ **Bối cảnh:** PO viết PRD cho feature mới nhưng BE API đã có sẵn trên hệ thống cũ, chưa có tài liệu. PO khai báo luôn trong PRD thay vì thiết kế lại.
284
+
285
+ **Dấu hiệu nhận ra:** PRD Metadata có `| **API Source** | existing |` · PRD có section "Existing API Contract" với bảng endpoint + response.
286
+
287
+ **Dev workflow (đơn giản hơn greenfield):**
288
+ ```
289
+ git submodule update --remote my-project-specs
290
+
291
+ 1. /review-context → đọc PRD + BDD
292
+ → BDD system đã dùng contract sẵn có từ PRD (không synthesis)
293
+ → @trace.api_source: existing trong BDD header
294
+
295
+ 2. /generate-tech-docs {feature-file}
296
+ → Mode: Reverse-document
297
+ → §2 API Endpoints: mô tả lại API đã tồn tại từ bảng PRD
298
+ → Ghi chú gaps nếu contract thực tế khác BDD expectations
299
+
300
+ 3. /review-tech-docs {tech-design-file}
301
+ → T7 sign-off gate: tự động SKIP (không có API design mới)
302
+ → Chỉ review T1–T6 (architecture, entity, BDD traceability, ...)
303
+ → Approved nhanh hơn
304
+
305
+ 4. /generate-code {feature-file} ← không cần --phase
306
+ → API đã live, gen real adapter trực tiếp
307
+ ```
308
+
309
+ **Điểm khác biệt so với greenfield:**
310
+
311
+ | | Greenfield | Brownfield (API existing) |
312
+ |---|---|---|
313
+ | System BDD | Synthesize từ FE + App BDD | Dùng PRD contract trực tiếp |
314
+ | T7 gate | Bắt buộc | Tự động skip |
315
+ | `--phase=ui` | Cần nếu BE chưa ready | Không cần |
316
+ | `generate-tech-docs` | Design mới | Reverse-document |
317
+
318
+ ## Tình huống 7: Setup service submodule (Umbrella mode)
319
+
320
+ **Bối cảnh:** Project dùng umbrella repo. Dev được assign vào service `mass-product-be`.
321
+
322
+ **Setup lần đầu:**
323
+ ```bash
324
+ # 1. Clone umbrella repo
325
+ git clone {umbrella-repo-url} mass-product
326
+ cd mass-product
327
+
328
+ # 2. Mở Claude Code TẠI umbrella root (QUAN TRỌNG)
329
+ code . ← hoặc claude .
330
+
331
+ # 3. Chạy một lệnh duy nhất — setup toàn bộ
332
+ /sync
333
+ # → tự detect setup mode (submodule chưa init)
334
+ # → git pull + git submodule update --init --recursive --remote
335
+ # → validate service configs (cảnh báo nếu thiếu .agent/project-context.yaml)
336
+ # → sync Living Docs panel
337
+
338
+ # 4. Framework tự detect umbrella mode từ project-context.yaml
339
+ # Khi chạy /review-context với PRD có @trace.domain: be
340
+ # → tự động route tới mass-product-be/specs/bdd/
341
+ ```
342
+
343
+ **Update hằng ngày — cũng chỉ 1 lệnh:**
344
+ ```bash
345
+ /sync
346
+ # → git pull + submodule update --remote
347
+ # → refresh Living Docs
348
+ ```
349
+
350
+ **project-context.yaml của umbrella:**
351
+ ```yaml
352
+ setup:
353
+ mode: umbrella
354
+ spec_source: "mass-product-spec"
355
+ services:
356
+ be:
357
+ path: "mass-product-be"
358
+ module: "NestJS"
359
+ specs_dir: "mass-product-be/specs/bdd"
360
+ web:
361
+ path: "mass-product-web"
362
+ module: "NextJS"
363
+ specs_dir: "mass-product-web/specs/bdd"
364
+ ```
365
+
366
+ > **Tech-docs (API contract):** không khai trong `services`. Khi `setup.spec_source` được set, BE tech-design (API contract) **LUÔN** nằm tại `{spec_source}/specs/tech-docs` (vd `mass-product-spec/specs/tech-docs`) — context-loader tự route `tech_docs_dir` về đó. BE generate xong → commit + push lên spec repo; FE/App đọc qua `/sync` + `/generate-code --phase=integration`. Per-service tech-docs **chỉ** khi KHÔNG có `spec_source`.
367
+ >
368
+ > **Bắt buộc:** Mỗi service submodule cũng cần file `.agent/project-context.yaml` riêng. Framework đọc file này (context-loader Step 1.6) để lấy đúng `test_command` và `build_command` khi `/dev-run-test` hoặc `/dev-gen-test` chạy từ umbrella root.
369
+
370
+ **project-context.yaml của từng service submodule:**
371
+ ```yaml
372
+ # mass-product-be/.agent/project-context.yaml
373
+ tech_stack:
374
+ language: "TypeScript"
375
+ framework: "NestJS"
376
+ module: "nestjs"
377
+
378
+ conventions:
379
+ test_command: "npm test"
380
+ build_command: "npm run build"
381
+
382
+ paths:
383
+ trace_dir: ".trace"
384
+ ```
385
+ ```yaml
386
+ # mass-product-web/.agent/project-context.yaml
387
+ tech_stack:
388
+ language: "TypeScript"
389
+ framework: "Next.js 14"
390
+ module: "nextjs"
391
+
392
+ conventions:
393
+ test_command: "npx vitest run"
394
+ build_command: "npm run build"
395
+
396
+ paths:
397
+ trace_dir: ".trace"
398
+ ```
399
+
400
+ Khi `/dev-run-test` chạy từ umbrella root cho một UC thuộc domain `be`:
401
+ 1. Step 1.5 detect `service_root = "mass-product-be"`
402
+ 2. Step 1.6 load `mass-product-be/.agent/project-context.yaml` → `test_command = "npm test"`
403
+ 3. Lệnh test chạy: `cd mass-product-be && npm test`
404
+
405
+ **Commit 2 lớp (bắt buộc):**
406
+ ```bash
407
+ # Lớp 1: Commit trong service submodule
408
+ cd mass-product-be
409
+ git add specs/bdd/auth/FT-001-login.feature
410
+ git commit -m "feat(bdd): add login BDD scenarios — FT-001"
411
+ git push origin feature/ft-001-login
412
+
413
+ # Lớp 2: Update pointer tại umbrella
414
+ cd .. ← về umbrella root
415
+ git add mass-product-be
416
+ git commit -m "chore: update mass-product-be submodule pointer — FT-001 BDD"
417
+ git push
418
+ ```
419
+ **Không commit lớp 2 → umbrella repo vẫn trỏ về commit cũ của service.**
420
+
421
+ ## Tình huống 8: Validate traces trước khi tạo PR lớn
422
+
423
+ **Bối cảnh:** Dev refactor module Auth — đổi tên `AuthService` → `IdentityService`.
424
+ ```
425
+ Sau khi refactor xong:
426
+
427
+ /validate-traces
428
+
429
+
430
+ Agent kiểm tra:
431
+ - BDD có @trace.module: AuthService → BROKEN (class không còn tồn tại)
432
+ - Code comments @trace.bdd: FT-001-UC1-SC1 → còn hợp lệ không?
433
+ - Tech Docs mention "AuthService" → stale reference
434
+
435
+
436
+ Report:
437
+ ❌ BROKEN specs/bdd/auth/FT-001-login.feature @trace.module: AuthService (not found)
438
+ ❌ BROKEN specs/tech-docs/auth/FT-001-auth-api.md "AuthService" referenced 7 times
439
+ ✅ OK src/identity/identity.service.ts @trace.bdd: FT-001-UC1-SC1
440
+
441
+
442
+ Fix: Update @trace.module và references → re-run /validate-traces → all green → tạo PR
443
+ ```
444
+ **Quy tắc:** PR không được merge khi còn broken traces.
445
+
446
+ ---
447
+
448
+ ← [Workflow](workflow.md) · Tiếp theo: [Checklist trước khi tạo PR](pr-checklist.md)
@@ -0,0 +1,61 @@
1
+ [📚 Docs](../../README.md) › [Guides](../README.md) › [Developer](README.md) › Workflow
2
+
3
+ # Workflow Cơ Bản
4
+
5
+ ```
6
+ Nhận thông báo PRD + BDD mới từ PO
7
+
8
+
9
+ git submodule update --remote my-project-specs
10
+ (lấy spec mới nhất, bao gồm cả BDD đã được PO gen)
11
+
12
+
13
+ /review-context {prd-file}
14
+ → Kiểm tra @trace.domain, @trace.status = approved
15
+ → Đọc hiểu AC, UC, BR trong PRD
16
+ → Đọc BDD tương ứng trong specs/bdd/{domain}/{platform}/
17
+ → Nếu có gì không rõ: hỏi PO TRƯỚC khi tiếp tục
18
+
19
+
20
+ (Đọc BDD từ spec submodule — KHÔNG tự generate BDD)
21
+ FE/Web: my-project-specs/specs/bdd/{domain}/web/{TICKET-ID}-UC*.feature
22
+ App: my-project-specs/specs/bdd/{domain}/app/{TICKET-ID}-UC*.feature
23
+ BE: my-project-specs/specs/bdd/{domain}/system/{TICKET-ID}-UC*.feature
24
+
25
+
26
+ /generate-tech-docs {prd-file}
27
+ → Gen API spec, DB schema, sequence diagram dựa trên BDD
28
+ → /review-tech-docs để verify chất lượng
29
+
30
+
31
+ # BE (hoặc full-stack không cần mock split):
32
+ /generate-code {bdd-file}
33
+ → Gen code skeleton theo BDD + tech docs
34
+ → Đảm bảo @trace.bdd comment trong code
35
+
36
+ # FE/App (2 phases — không cần chờ BE):
37
+ /generate-code {bdd-file} --phase=ui # Phase 1: UI + mock adapter
38
+ → Tester test FE ngay (không cần BE ready)
39
+ /generate-code {bdd-file} --phase=integration # Phase 2: sau khi sign-off done
40
+ → Wire real API thay thế mock
41
+
42
+
43
+ /dev-gen-test {bdd-file}
44
+ → Gen unit test (dev self-check, không phải coverage chính thức)
45
+ → /dev-run-test để verify → ghi dev_selftest (pass/fail) + dev_selftest_at vào trace TSV
46
+ → /validate-traces (hoặc /sync) để push trace lên spec-module Living Docs ({spec_source}/.living-docs/)
47
+
48
+
49
+ /review-code {files}
50
+ → 4 lens: Security / Performance / Architecture / Test Coverage
51
+ → Fix issues trước khi tạo PR
52
+
53
+
54
+ Tạo PR → notify PO/SA review
55
+ ```
56
+
57
+ > **Commit ở đâu, push mấy tầng?** Code + `.trace/` nằm trong service submodule → **commit 2 tầng** (service rồi umbrella pointer); tech-docs đẩy lên spec repo. Sơ đồ git đầy đủ theo từng role: [Sync & Update — Git flow theo role](../../04-operations/sync-and-update.md#ai-commit-vào-repo-nào-git-flow-theo-role).
58
+
59
+ ---
60
+
61
+ ← [BDD & Trace System](bdd-and-trace.md) · Tiếp theo: [Tình huống thực tế](scenarios.md)