@edupia-tutor/spec-driven-docs 0.14.0 → 0.14.2
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.
- package/bin/index.js +12 -1
- package/commands/debug.md +436 -436
- package/commands/debug.tmpl +111 -111
- package/commands/define-product.md +350 -345
- package/commands/define-product.tmpl +69 -64
- package/commands/dev-gen-test.md +365 -365
- package/commands/dev-gen-test.tmpl +63 -63
- package/commands/dev-run-test.md +376 -376
- package/commands/dev-run-test.tmpl +74 -74
- package/commands/dev-smoke-test.md +341 -341
- package/commands/dev-smoke-test.tmpl +60 -60
- package/commands/fix-bug.md +403 -403
- package/commands/fix-bug.tmpl +78 -78
- package/commands/generate-bdd.md +513 -513
- package/commands/generate-bdd.tmpl +211 -211
- package/commands/generate-code.md +481 -483
- package/commands/generate-code.tmpl +179 -181
- package/commands/generate-design-spec.md +497 -497
- package/commands/generate-design-spec.tmpl +220 -220
- package/commands/generate-prd.md +452 -400
- package/commands/generate-prd.tmpl +50 -200
- package/commands/generate-spec-manifest.md +340 -340
- package/commands/generate-spec-manifest.tmpl +59 -59
- package/commands/generate-tech-docs.md +365 -365
- package/commands/generate-tech-docs.tmpl +84 -84
- package/commands/learn.md +347 -347
- package/commands/learn.tmpl +22 -22
- package/commands/map-testids.md +322 -322
- package/commands/map-testids.tmpl +41 -41
- package/commands/propose-scenario.md +335 -335
- package/commands/propose-scenario.tmpl +54 -54
- package/commands/qc-analyze.md +323 -324
- package/commands/qc-analyze.tmpl +42 -43
- package/commands/qc-design-test.md +304 -304
- package/commands/qc-design-test.tmpl +23 -23
- package/commands/qc-plan.md +297 -297
- package/commands/qc-plan.tmpl +16 -16
- package/commands/qc-report.md +302 -302
- package/commands/qc-report.tmpl +21 -21
- package/commands/qc-review.md +298 -298
- package/commands/qc-review.tmpl +17 -17
- package/commands/qc-run-test.md +337 -337
- package/commands/qc-run-test.tmpl +35 -35
- package/commands/refine-prd.md +428 -430
- package/commands/refine-prd.tmpl +62 -62
- package/commands/report-bug.md +351 -351
- package/commands/report-bug.tmpl +70 -70
- package/commands/review-code.md +364 -364
- package/commands/review-code.tmpl +39 -39
- package/commands/review-context.md +578 -580
- package/commands/review-context.tmpl +212 -212
- package/commands/review-tech-docs.md +427 -427
- package/commands/review-tech-docs.tmpl +146 -146
- package/commands/setup-ai-first.md +239 -239
- package/commands/setup-ai-first.tmpl +133 -133
- package/commands/sync.md +145 -145
- package/commands/sync.tmpl +93 -93
- package/commands/update-framework.md +88 -88
- package/commands/update-framework.tmpl +36 -36
- package/commands/validate-traces.md +381 -381
- package/commands/validate-traces.tmpl +100 -100
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +436 -436
- package/core/commands/define-product.md +350 -345
- package/core/commands/dev-gen-test.md +365 -365
- package/core/commands/dev-run-test.md +376 -376
- package/core/commands/dev-smoke-test.md +341 -341
- package/core/commands/fix-bug.md +403 -403
- package/core/commands/generate-bdd.md +513 -513
- package/core/commands/generate-code.md +481 -483
- package/core/commands/generate-design-spec.md +497 -497
- package/core/commands/generate-prd.md +452 -400
- package/core/commands/generate-spec-manifest.md +340 -340
- package/core/commands/generate-tech-docs.md +365 -365
- package/core/commands/learn.md +347 -347
- package/core/commands/map-testids.md +322 -322
- package/core/commands/propose-scenario.md +335 -335
- package/core/commands/qc-analyze.md +323 -324
- package/core/commands/qc-design-test.md +304 -304
- package/core/commands/qc-plan.md +297 -297
- package/core/commands/qc-report.md +302 -302
- package/core/commands/qc-review.md +298 -298
- package/core/commands/qc-run-test.md +337 -337
- package/core/commands/refine-prd.md +428 -430
- package/core/commands/report-bug.md +351 -351
- package/core/commands/review-code.md +364 -364
- package/core/commands/review-context.md +578 -580
- package/core/commands/review-tech-docs.md +427 -427
- package/core/commands/setup-ai-first.md +239 -239
- package/core/commands/sync.md +145 -145
- package/core/commands/update-framework.md +88 -88
- package/core/commands/validate-traces.md +381 -381
- package/core/skills/code/SKILL.md +389 -389
- package/core/skills/debug/SKILL.md +391 -391
- package/core/skills/design-spec/SKILL.md +318 -318
- package/core/skills/discovery/SKILL.md +7 -547
- package/core/skills/prd/SKILL.md +298 -394
- package/core/skills/setup-ai-first/SKILL.md +80 -80
- package/core/skills/spec/SKILL.md +178 -178
- package/core/skills/test/SKILL.md +604 -604
- package/core/steps/capture-lesson.md +44 -44
- package/core/steps/context-loader.md +175 -175
- package/core/steps/gate.md +54 -54
- package/core/steps/report-footer.md +52 -52
- package/core/steps/review-fanout.md +85 -87
- package/core/steps/spawn-agent.md +45 -45
- package/core/steps/trace-mirror.md +21 -21
- package/core/templates/architecture.template.md +37 -37
- package/core/templates/design-spec.template.md +77 -77
- package/core/templates/platform-guide.template.md +47 -47
- package/core/templates/prd.template.md +107 -232
- package/core/templates/product-definition.template.md +101 -88
- package/core/templates/project-context.yaml +2 -2
- package/docs/01-getting-started/core-concepts.md +1 -1
- package/docs/01-getting-started/quickstart.md +7 -7
- package/docs/02-guides/developer/bdd-and-trace.md +1 -1
- package/docs/02-guides/developer/scenarios.md +5 -5
- package/docs/02-guides/product-owner/handoff-checklist.md +1 -1
- package/docs/02-guides/product-owner/scenarios.md +23 -23
- package/docs/02-guides/tester/bug-reporting.md +2 -2
- package/docs/02-guides/tester/reading-specs.md +2 -2
- package/docs/02-guides/tester/scenarios.md +1 -1
- package/docs/02-guides/tester/spec-manifest.md +3 -3
- package/docs/02-guides/tester/workflow.md +1 -1
- package/docs/03-concepts/architecture.md +3 -3
- package/docs/03-concepts/pipeline.md +3 -3
- package/docs/04-operations/publishing.md +20 -3
- package/docs/04-operations/sync-and-update.md +5 -5
- package/docs/05-reference/command-cheatsheet.md +2 -2
- package/docs/05-reference/commands.md +8 -8
- package/package.json +1 -1
- package/scripts/migrate-specs.js +5 -3
- package/scripts/rename-prd-files.js +174 -0
- package/skills/code/SKILL.md +389 -389
- package/skills/code/SKILL.tmpl +56 -56
- package/skills/debug/SKILL.md +391 -391
- package/skills/debug/SKILL.tmpl +60 -60
- package/skills/design-spec/SKILL.md +318 -318
- package/skills/design-spec/SKILL.tmpl +37 -37
- package/skills/discovery/SKILL.md +7 -547
- package/skills/discovery/SKILL.tmpl +7 -140
- package/skills/prd/SKILL.md +298 -394
- package/skills/prd/SKILL.tmpl +40 -151
- package/skills/setup-ai-first/SKILL.md +80 -80
- package/skills/setup-ai-first/SKILL.tmpl +28 -28
- package/skills/spec/SKILL.md +178 -178
- package/skills/spec/SKILL.tmpl +20 -20
- package/skills/test/SKILL.md +604 -604
- package/skills/test/SKILL.tmpl +44 -44
- package/steps/capture-lesson.md +44 -44
- package/steps/context-loader.md +175 -175
- package/steps/gate.md +54 -54
- package/steps/report-footer.md +52 -52
- package/steps/review-fanout.md +85 -87
- package/steps/spawn-agent.md +45 -45
- package/steps/trace-mirror.md +21 -21
- package/templates/architecture.template.md +37 -37
- package/templates/design-spec.template.md +77 -77
- package/templates/platform-guide.template.md +47 -47
- package/templates/prd.template.md +107 -232
- package/templates/product-definition.template.md +101 -88
- package/templates/project-context.yaml +2 -2
|
@@ -1,111 +1,111 @@
|
|
|
1
|
-
# /setup-ai-first —
|
|
1
|
+
# /setup-ai-first — Khởi tạo Spec-Driven Docs trong một dự án
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Dẫn người dùng qua một setup một-lần tạo mọi thư mục cần thiết, cài CLAUDE.md, và verify môi trường.
|
|
4
4
|
|
|
5
5
|
## Gate
|
|
6
6
|
{{include:steps/gate.md}}
|
|
7
7
|
|
|
8
|
-
*
|
|
8
|
+
*Lưu ý: Với lệnh này — **bỏ qua Gate Step 1, 2, và 3** (chưa có file input và chưa có project context). Chỉ chạy Step 0-B (model check). Project root là **thư mục làm việc hiện tại**. Đi thẳng tới Precondition Check bên dưới.*
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
## Precondition Check
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
- N →
|
|
17
|
-
- Y →
|
|
18
|
-
-
|
|
14
|
+
Kiểm tra đã setup chưa:
|
|
15
|
+
- Nếu cả `CLAUDE.md` **và** `.agent/project-context.yaml` đều tồn tại → hỏi: "Dự án này đã được khởi tạo. Chạy lại setup để regenerate file config? (Y/N)"
|
|
16
|
+
- N → dừng
|
|
17
|
+
- Y → tiếp tục (file có sẵn được giữ — mỗi bước sẽ đề nghị merge/skip)
|
|
18
|
+
- Nếu chỉ có `specs/` hoặc phát hiện setup một phần → tiếp tục bình thường (an toàn chạy lại)
|
|
19
19
|
|
|
20
|
-
## Step 0.5 —
|
|
20
|
+
## Step 0.5 — Loại dự án
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Hỏi người dùng:
|
|
23
23
|
|
|
24
24
|
```
|
|
25
|
-
|
|
26
|
-
1. Single-service —
|
|
27
|
-
2. Umbrella repo —
|
|
28
|
-
3. PO Spec repo — docs
|
|
25
|
+
Dự án này thuộc loại nào?
|
|
26
|
+
1. Single-service — một codebase, một platform (setup chuẩn)
|
|
27
|
+
2. Umbrella repo — repo này chứa nhiều service submodule (microservices / multi-app)
|
|
28
|
+
3. PO Spec repo — chỉ docs, không có code chạy được (chỉ PRD + design-spec)
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
Lưu câu trả lời thành `project_type`. Mặc định `1` nếu user không trả lời.
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Dựa trên câu trả lời:
|
|
34
34
|
|
|
35
|
-
**project_type = 1 (Single-service):**
|
|
35
|
+
**project_type = 1 (Single-service):** Tiếp tục setup chuẩn bên dưới.
|
|
36
36
|
|
|
37
|
-
**project_type = 2 (Umbrella):**
|
|
38
|
-
- "Path
|
|
39
|
-
- "
|
|
40
|
-
(
|
|
37
|
+
**project_type = 2 (Umbrella):** Hỏi hai câu follow-up:
|
|
38
|
+
- "Path tới spec submodule (vd `free-trial-specs`)? Nhấn Enter để skip."
|
|
39
|
+
- "Liệt kê các service dạng cặp `domain:module`, ngăn cách bởi dấu phẩy
|
|
40
|
+
(vd `user:java-spring,order:java-spring`). Nhấn Enter để skip."
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
- Skip
|
|
44
|
-
-
|
|
45
|
-
*(
|
|
46
|
-
-
|
|
47
|
-
- Skip
|
|
48
|
-
-
|
|
42
|
+
Rồi:
|
|
43
|
+
- Skip tạo bất kỳ artifact `specs/` nào (mọi spec — PRD, BDD, tech-docs, design-spec — sống trong spec submodule theo bố cục feature-package `specs/{domain}/{prd-slug}/`)
|
|
44
|
+
- Chỉ tạo: `.trace/`, `.agent/review/` ở cấp umbrella
|
|
45
|
+
*(Trừ khi user yêu cầu rõ tạo cấu trúc đầy đủ)*
|
|
46
|
+
- Sinh `.agent/project-context.yaml` ở umbrella mode với services và spec_source đã cung cấp
|
|
47
|
+
- Skip tạo `CLAUDE.md` (umbrella không có một tech stack đơn)
|
|
48
|
+
- Sau setup, nhắc: "Mở từng service submodule riêng trong Claude Code để cài framework ở đó nếu cần."
|
|
49
49
|
|
|
50
50
|
**project_type = 3 (PO Spec repo):**
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
- Skip: `.trace/` (
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
- **
|
|
59
|
-
-
|
|
51
|
+
- Tạo base dir: `specs/product-definition/`, `specs/domain-knowledge/`, `feedback/`, `.agent/review/`
|
|
52
|
+
- Artifact theo từng feature (`specs/{domain}/{prd-slug}/{ {TICKET-ID}-{prd-slug}.md, bdd/, tech-docs/, design-spec/}`) được tạo on demand bởi các lệnh generate — ĐỪNG tạo trước
|
|
53
|
+
- Skip: `.trace/` (theo service, sống cạnh code trong mỗi service submodule)
|
|
54
|
+
- Sinh `CLAUDE.md` tối thiểu chỉ với §1 (project overview) và §7 (git conventions)
|
|
55
|
+
- Hỏi người dùng: **"Liệt kê các business domain của bạn (vd auth, payment, loyalty):"** — lưu thành domain list cho `project-context.yaml` và nhắc PO các tên này phải được dùng nhất quán làm `@trace.domain` trong mọi PRD
|
|
56
|
+
- Thông báo:
|
|
57
|
+
- Lệnh cho PO repo: `/define-product`, `/generate-prd`, `/review-context`, `/generate-design-spec`
|
|
58
|
+
- **Quan trọng cho handoff team dev:** Mọi PRD phải có `@trace.domain: {domain}` trong frontmatter. Team dev dùng nó để route BDD/code sinh ra tới đúng service submodule. Tên domain không nhất quán sẽ phá routing.
|
|
59
|
+
- Frontmatter PRD khuyến nghị:
|
|
60
60
|
```
|
|
61
|
-
@trace.domain: {domain} ←
|
|
61
|
+
@trace.domain: {domain} ← phải khớp một key trong services config của team dev
|
|
62
62
|
@trace.id: {TICKET-ID}
|
|
63
63
|
@trace.status: draft | approved
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
## Step 1 —
|
|
66
|
+
## Step 1 — Tạo cấu trúc thư mục
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
Tạo các thư mục này (skip nếu đã tồn tại):
|
|
69
69
|
|
|
70
70
|
```
|
|
71
71
|
{project-root}/
|
|
72
72
|
├── specs/
|
|
73
|
-
│ ├── product-definition/ ← Output
|
|
73
|
+
│ ├── product-definition/ ← Output của /define-product
|
|
74
74
|
│ └── domain-knowledge/ ← business dictionary & domain context
|
|
75
75
|
├── .trace/ ← .trace/{domain}/{prd-slug}/{UC-ID}.tsv
|
|
76
76
|
└── .agent/
|
|
77
77
|
└── review/
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
**
|
|
81
|
-
|
|
80
|
+
**Bố cục feature-package** — artifact spec theo từng feature KHÔNG được tạo trước. Mỗi lệnh generate
|
|
81
|
+
tự tạo folder của nó on demand dưới `specs/{domain}/{prd-slug}/`:
|
|
82
82
|
|
|
83
83
|
```
|
|
84
84
|
specs/{domain}/{prd-slug}/
|
|
85
|
-
├── prd.md
|
|
86
|
-
├── bdd/ ← /generate-bdd (.feature
|
|
85
|
+
├── {TICKET-ID}-{prd-slug}.md ← /generate-prd (vd SEG01-segment-scoring-service.md)
|
|
86
|
+
├── bdd/ ← /generate-bdd (file .feature)
|
|
87
87
|
├── tech-docs/ ← /generate-tech-docs
|
|
88
|
-
└── design-spec/ ← /generate-design-spec (FE/App
|
|
88
|
+
└── design-spec/ ← /generate-design-spec (chỉ platform FE/App)
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
*
|
|
91
|
+
*Tạo base dir nào tuỳ theo `project_type` set ở Step 0.5:*
|
|
92
92
|
|
|
93
|
-
| project_type |
|
|
93
|
+
| project_type | Tạo | Skip |
|
|
94
94
|
|---|---|---|
|
|
95
|
-
| **1 — Single-service** |
|
|
96
|
-
| **2 — Umbrella** | `.trace/` + `.agent/review/`
|
|
97
|
-
| **3 — PO Spec repo** | `specs/product-definition/`, `specs/domain-knowledge/`, **`feedback/`**, `.agent/review/` (
|
|
95
|
+
| **1 — Single-service** | Cấu trúc base ở trên (`specs/product-definition/`, `specs/domain-knowledge/`, `.trace/`, `.agent/review/`) | folder theo feature (tạo on demand) |
|
|
96
|
+
| **2 — Umbrella** | Chỉ `.trace/` + `.agent/review/` (ở umbrella root) | Mọi thứ khác — **toàn bộ spec sống trong spec submodule (`spec_source`)** dưới `specs/{domain}/{prd-slug}/`; service submodule chỉ chứa **code + `.trace/`** |
|
|
97
|
+
| **3 — PO Spec repo** | `specs/product-definition/`, `specs/domain-knowledge/`, **`feedback/`**, `.agent/review/` (folder `specs/{domain}/{prd-slug}/` theo feature tạo on demand) | `.trace/` (theo service, sống cạnh code trong mỗi service submodule) |
|
|
98
98
|
|
|
99
|
-
## Step 2 —
|
|
99
|
+
## Step 2 — Tạo CLAUDE.md
|
|
100
100
|
|
|
101
|
-
*
|
|
102
|
-
*
|
|
101
|
+
*Bỏ qua hoàn toàn step này nếu `project_type = 2` (Umbrella) — umbrella không có một tech stack đơn.*
|
|
102
|
+
*Với `project_type = 3` (PO Spec repo) — tạo CLAUDE.md tối thiểu chỉ với §1 (project overview) và §7 (git conventions). Skip §2–§6.*
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
104
|
+
Kiểm tra `CLAUDE.md` tồn tại chưa:
|
|
105
|
+
- Có → hỏi "Merge template hay skip?"
|
|
106
|
+
- Không → tạo từ template bên dưới
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
Sau khi tạo, hướng dẫn: "Mở CLAUDE.md và điền các giá trị `{{PLACEHOLDER}}` bằng thông tin dự án của bạn."
|
|
109
109
|
|
|
110
110
|
### CLAUDE.md Template
|
|
111
111
|
|
|
@@ -155,27 +155,27 @@ branch_feature: "feature/{{TICKET_PREFIX}}-{N}-{slug}"
|
|
|
155
155
|
commit_feature: "feat({{TICKET_PREFIX}}-{N}): {description}"
|
|
156
156
|
```
|
|
157
157
|
|
|
158
|
-
## Step 3 —
|
|
158
|
+
## Step 3 — Tạo project-context.yaml
|
|
159
159
|
|
|
160
|
-
*
|
|
161
|
-
- *
|
|
162
|
-
- *
|
|
160
|
+
*Với `project_type = 2` (Umbrella):*
|
|
161
|
+
- *Nếu `.agent/project-context.yaml` đã được sinh bởi `--init --umbrella` → mở nó và verify/sửa section `services` (domain key, path, module). Skip copy template bên dưới.*
|
|
162
|
+
- *Nếu chưa sinh → hỏi: "Path spec submodule?" và "Services (cặp domain:module)?" rồi sinh config umbrella (xem Step 0.5 cho format).*
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
Tạo `.agent/project-context.yaml` dùng `.agent/templates/project-context.yaml` làm template nguồn.
|
|
165
165
|
|
|
166
|
-
Copy
|
|
166
|
+
Copy template và hướng dẫn: "Mở `.agent/project-context.yaml` và điền mọi giá trị `{{PLACEHOLDER}}`. Section `paths` đã được cấu hình sẵn với default hợp lý — chỉnh nếu dự án dùng tên thư mục khác."
|
|
167
167
|
|
|
168
|
-
## Step 4 —
|
|
168
|
+
## Step 4 — Tạo business-dictionary.md
|
|
169
169
|
|
|
170
|
-
*Skip
|
|
170
|
+
*Skip Step 4 và 5 nếu `project_type = 2` (Umbrella) — business dictionary và core entities sống trong spec submodule và do team PO quản lý. Team dev đọc chúng từ `{spec_source}/specs/domain-knowledge/`.*
|
|
171
171
|
|
|
172
172
|
|
|
173
|
-
|
|
173
|
+
Tạo `specs/domain-knowledge/business-dictionary.md` nếu chưa tồn tại:
|
|
174
174
|
|
|
175
175
|
```markdown
|
|
176
176
|
# Business Dictionary — {{PROJECT_NAME}}
|
|
177
177
|
|
|
178
|
-
>
|
|
178
|
+
> Thuật ngữ chuẩn cho dự án này. Mọi PRD, BDD spec, và code phải theo các thuật ngữ này.
|
|
179
179
|
> Managed by: PO / SA team.
|
|
180
180
|
|
|
181
181
|
## Canonical Terms
|
|
@@ -197,17 +197,17 @@ Create `specs/domain-knowledge/business-dictionary.md` if it does not exist:
|
|
|
197
197
|
| {Entity} | status | {value1, value2} |
|
|
198
198
|
```
|
|
199
199
|
|
|
200
|
-
|
|
200
|
+
Hướng dẫn: "Mở `specs/domain-knowledge/business-dictionary.md` và thêm thuật ngữ dự án của bạn. File này sẽ được mọi lệnh đọc để enforce naming nhất quán."
|
|
201
201
|
|
|
202
|
-
## Step 5 —
|
|
202
|
+
## Step 5 — Tạo core-entities.md
|
|
203
203
|
|
|
204
|
-
|
|
204
|
+
Tạo `specs/domain-knowledge/core-entities.md` nếu chưa tồn tại:
|
|
205
205
|
|
|
206
206
|
```markdown
|
|
207
207
|
# Core Entities — {{PROJECT_NAME}}
|
|
208
208
|
|
|
209
|
-
>
|
|
210
|
-
>
|
|
209
|
+
> Glossary entity máy-đọc-được cho phát triển có AI hỗ trợ.
|
|
210
|
+
> Được mọi lệnh nạp để AI biết domain model của bạn mà không cần đọc source code.
|
|
211
211
|
> Managed by: Tech Lead / Architect.
|
|
212
212
|
>
|
|
213
213
|
> HOW TO USE:
|
|
@@ -245,114 +245,114 @@ Create `specs/domain-knowledge/core-entities.md` if it does not exist:
|
|
|
245
245
|
*(Add more entities following the same pattern above)*
|
|
246
246
|
```
|
|
247
247
|
|
|
248
|
-
|
|
248
|
+
Hướng dẫn: "Mở `specs/domain-knowledge/core-entities.md` và định nghĩa các domain entity chính. Bắt đầu với aggregate root. File này được mọi lệnh AI nạp — định nghĩa tốt ở đây tiết kiệm đáng kể qua-lại khi sinh code."
|
|
249
249
|
|
|
250
|
-
## Step 6 —
|
|
250
|
+
## Step 6 — Cài VS Code Extension (Khuyến nghị)
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
Khuyến nghị user cài extension VS Code **Spec Driven Docs Tools** — nó cung cấp panel Review Board + Living Documentation tích hợp với workflow này.
|
|
253
253
|
|
|
254
254
|
```bash
|
|
255
255
|
code --install-extension SpecDrivenDocsTools.spec-driven-docs-tool
|
|
256
256
|
```
|
|
257
257
|
|
|
258
|
-
|
|
258
|
+
Hoặc: VS Code → `Ctrl+Shift+P` → **"Extensions: Install from Marketplace"** → tìm **Spec Driven Docs Tools**.
|
|
259
259
|
|
|
260
|
-
**
|
|
261
|
-
- 📋 **Review Board** —
|
|
262
|
-
- 📊 **Living Documentation** — traceability
|
|
260
|
+
**Nó làm gì:**
|
|
261
|
+
- 📋 **Review Board** — UI trực quan để review findings từ `/refine-prd`, `/review-context`, `/review-tech-docs`
|
|
262
|
+
- 📊 **Living Documentation** — dashboard traceability dựa trên `.trace/*.tsv`
|
|
263
263
|
|
|
264
264
|
## Step 7 — Verify
|
|
265
265
|
|
|
266
|
-
Checklist
|
|
266
|
+
Checklist tuỳ theo `project_type`:
|
|
267
267
|
|
|
268
268
|
**project_type = 1 (Single-service):**
|
|
269
|
-
- [ ] `specs/`
|
|
270
|
-
- [ ] `specs/product-definition/`
|
|
271
|
-
- [ ] `specs/domain-knowledge/`
|
|
272
|
-
- [ ] `.trace/`
|
|
273
|
-
*(
|
|
274
|
-
- [ ] `.agent/project-context.yaml`
|
|
275
|
-
- [ ] `CLAUDE.md`
|
|
276
|
-
- [ ] `specs/domain-knowledge/business-dictionary.md`
|
|
277
|
-
- [ ] `specs/domain-knowledge/core-entities.md`
|
|
269
|
+
- [ ] `specs/` tồn tại
|
|
270
|
+
- [ ] `specs/product-definition/` tồn tại
|
|
271
|
+
- [ ] `specs/domain-knowledge/` tồn tại
|
|
272
|
+
- [ ] `.trace/` tồn tại
|
|
273
|
+
*(folder `specs/{domain}/{prd-slug}/` theo feature tạo on demand — không check ở đây)*
|
|
274
|
+
- [ ] `.agent/project-context.yaml` tồn tại
|
|
275
|
+
- [ ] `CLAUDE.md` tồn tại
|
|
276
|
+
- [ ] `specs/domain-knowledge/business-dictionary.md` tồn tại
|
|
277
|
+
- [ ] `specs/domain-knowledge/core-entities.md` tồn tại
|
|
278
278
|
|
|
279
279
|
**project_type = 2 (Umbrella):**
|
|
280
|
-
- [ ] `.agent/project-context.yaml`
|
|
281
|
-
- [ ] `services`
|
|
282
|
-
- [ ] `spec_source`
|
|
283
|
-
- [ ] `.agent/review/`
|
|
284
|
-
- [ ] Spec submodule
|
|
280
|
+
- [ ] `.agent/project-context.yaml` tồn tại với `setup.mode: umbrella`
|
|
281
|
+
- [ ] Section `services` có ít nhất một entry với đúng domain key
|
|
282
|
+
- [ ] Path `spec_source` tồn tại (vd thư mục `my-project-specs/` có mặt)
|
|
283
|
+
- [ ] `.agent/review/` tồn tại
|
|
284
|
+
- [ ] Spec submodule đã init: `git submodule status` không hiện prefix `-`
|
|
285
285
|
|
|
286
286
|
**project_type = 3 (PO Spec repo):**
|
|
287
|
-
- [ ] `specs/product-definition/`
|
|
288
|
-
- [ ] `specs/domain-knowledge/`
|
|
289
|
-
- [ ] `feedback/`
|
|
290
|
-
*(
|
|
291
|
-
- [ ] `.agent/review/`
|
|
292
|
-
- [ ] `.agent/project-context.yaml`
|
|
293
|
-
- [ ] `CLAUDE.md`
|
|
294
|
-
- [ ] `specs/domain-knowledge/business-dictionary.md`
|
|
295
|
-
- [ ] `specs/domain-knowledge/core-entities.md`
|
|
287
|
+
- [ ] `specs/product-definition/` tồn tại
|
|
288
|
+
- [ ] `specs/domain-knowledge/` tồn tại
|
|
289
|
+
- [ ] `feedback/` tồn tại
|
|
290
|
+
*(folder `specs/{domain}/{prd-slug}/` theo feature tạo on demand — không check ở đây)*
|
|
291
|
+
- [ ] `.agent/review/` tồn tại
|
|
292
|
+
- [ ] `.agent/project-context.yaml` tồn tại
|
|
293
|
+
- [ ] `CLAUDE.md` tồn tại (tối thiểu)
|
|
294
|
+
- [ ] `specs/domain-knowledge/business-dictionary.md` tồn tại
|
|
295
|
+
- [ ] `specs/domain-knowledge/core-entities.md` tồn tại
|
|
296
296
|
|
|
297
297
|
## Output
|
|
298
298
|
|
|
299
299
|
{{include:steps/report-footer.md}}
|
|
300
300
|
|
|
301
301
|
```
|
|
302
|
-
/setup-ai-first
|
|
302
|
+
/setup-ai-first Hoàn tất ✅
|
|
303
303
|
```
|
|
304
304
|
|
|
305
|
-
Output
|
|
305
|
+
Output tuỳ theo `project_type`:
|
|
306
306
|
|
|
307
307
|
**Single-service:**
|
|
308
308
|
```
|
|
309
309
|
Next:
|
|
310
|
-
1.
|
|
311
|
-
2.
|
|
312
|
-
3.
|
|
313
|
-
4.
|
|
314
|
-
5. git add
|
|
315
|
-
6.
|
|
310
|
+
1. Điền CLAUDE.md (thay các giá trị {{PLACEHOLDER}})
|
|
311
|
+
2. Điền .agent/project-context.yaml
|
|
312
|
+
3. Điền specs/domain-knowledge/business-dictionary.md
|
|
313
|
+
4. Điền specs/domain-knowledge/core-entities.md
|
|
314
|
+
5. git add và commit 4 file đó
|
|
315
|
+
6. Cài VS Code extension:
|
|
316
316
|
code --install-extension SpecDrivenDocsTools.spec-driven-docs-tool
|
|
317
|
-
7. /define-product
|
|
317
|
+
7. /define-product để bắt đầu feature đầu tiên
|
|
318
318
|
```
|
|
319
319
|
|
|
320
320
|
**Umbrella:**
|
|
321
321
|
```
|
|
322
322
|
Next:
|
|
323
323
|
1. Review .agent/project-context.yaml:
|
|
324
|
-
-
|
|
325
|
-
-
|
|
326
|
-
-
|
|
324
|
+
- Cập nhật services[].path khớp tên thư mục submodule thực tế
|
|
325
|
+
- Cập nhật domain key của services khớp @trace.domain trong các file PRD
|
|
326
|
+
- Xác nhận path spec_source đúng
|
|
327
327
|
|
|
328
|
-
2.
|
|
328
|
+
2. Chạy /sync — một lệnh lo mọi thứ còn lại:
|
|
329
329
|
/sync
|
|
330
330
|
→ git pull + submodule init + spec submodule update
|
|
331
|
-
→
|
|
332
|
-
(
|
|
331
|
+
→ Tự tạo .agent/project-context.yaml cho mỗi service submodule
|
|
332
|
+
(phát hiện module từ pom.xml / go.mod / package.json / pubspec.yaml v.v.)
|
|
333
333
|
→ Sync Living Docs panel
|
|
334
334
|
→ Refresh spec-manifest.yaml
|
|
335
335
|
|
|
336
|
-
3.
|
|
337
|
-
/generate-bdd {spec_source}/specs/{domain}/{prd-slug}/prd.md
|
|
336
|
+
3. Bắt đầu sinh:
|
|
337
|
+
/generate-bdd {spec_source}/specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
|
|
338
338
|
```
|
|
339
339
|
|
|
340
340
|
**PO Spec repo:**
|
|
341
341
|
```
|
|
342
342
|
Next:
|
|
343
|
-
1.
|
|
344
|
-
- domains: [
|
|
343
|
+
1. Điền .agent/project-context.yaml:
|
|
344
|
+
- domains: [liệt kê mọi business domain — chúng thành giá trị @trace.domain trong PRD]
|
|
345
345
|
- project.name, project.description
|
|
346
|
-
2.
|
|
347
|
-
3.
|
|
348
|
-
4. git add
|
|
349
|
-
5.
|
|
346
|
+
2. Điền specs/domain-knowledge/business-dictionary.md ← canonical terms
|
|
347
|
+
3. Điền specs/domain-knowledge/core-entities.md ← entity glossary
|
|
348
|
+
4. git add và commit các file đó
|
|
349
|
+
5. Cài VS Code extension:
|
|
350
350
|
code --install-extension SpecDrivenDocsTools.spec-driven-docs-tool
|
|
351
|
-
6. /define-product
|
|
351
|
+
6. /define-product để bắt đầu feature đầu tiên
|
|
352
352
|
|
|
353
|
-
⚠️
|
|
354
|
-
-
|
|
355
|
-
-
|
|
356
|
-
|
|
357
|
-
-
|
|
353
|
+
⚠️ Nhắc handoff team dev:
|
|
354
|
+
- Mỗi PRD phải có @trace.domain khớp một trong domains list của bạn
|
|
355
|
+
- Khi team dev setup umbrella repo của họ, họ map các tên domain này
|
|
356
|
+
tới path service submodule trong section services của project-context.yaml
|
|
357
|
+
- Chia sẻ tên domain với team dev trước khi họ cấu hình umbrella
|
|
358
358
|
```
|