@edupia-tutor/spec-driven-docs 0.14.0 → 0.14.1
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/commands/debug.md +435 -435
- package/commands/debug.tmpl +111 -111
- package/commands/define-product.md +330 -327
- package/commands/define-product.tmpl +50 -47
- package/commands/dev-gen-test.md +364 -364
- package/commands/dev-gen-test.tmpl +63 -63
- package/commands/dev-run-test.md +375 -375
- package/commands/dev-run-test.tmpl +74 -74
- package/commands/dev-smoke-test.md +340 -340
- package/commands/dev-smoke-test.tmpl +60 -60
- package/commands/fix-bug.md +402 -402
- package/commands/fix-bug.tmpl +78 -78
- package/commands/generate-bdd.md +512 -512
- package/commands/generate-bdd.tmpl +211 -211
- package/commands/generate-code.md +480 -482
- package/commands/generate-code.tmpl +179 -181
- package/commands/generate-design-spec.md +495 -495
- package/commands/generate-design-spec.tmpl +219 -219
- package/commands/generate-prd.md +445 -396
- package/commands/generate-prd.tmpl +45 -198
- package/commands/generate-spec-manifest.md +337 -337
- package/commands/generate-spec-manifest.tmpl +57 -57
- package/commands/generate-tech-docs.md +364 -364
- package/commands/generate-tech-docs.tmpl +84 -84
- package/commands/learn.md +346 -346
- package/commands/learn.tmpl +22 -22
- package/commands/map-testids.md +321 -321
- package/commands/map-testids.tmpl +41 -41
- package/commands/propose-scenario.md +334 -334
- package/commands/propose-scenario.tmpl +54 -54
- package/commands/qc-analyze.md +322 -323
- package/commands/qc-analyze.tmpl +42 -43
- package/commands/qc-design-test.md +303 -303
- package/commands/qc-design-test.tmpl +23 -23
- package/commands/qc-plan.md +296 -296
- package/commands/qc-plan.tmpl +16 -16
- package/commands/qc-report.md +301 -301
- package/commands/qc-report.tmpl +21 -21
- package/commands/qc-review.md +297 -297
- package/commands/qc-review.tmpl +17 -17
- package/commands/qc-run-test.md +336 -336
- package/commands/qc-run-test.tmpl +35 -35
- package/commands/refine-prd.md +426 -428
- package/commands/refine-prd.tmpl +61 -61
- package/commands/report-bug.md +350 -350
- package/commands/report-bug.tmpl +70 -70
- package/commands/review-code.md +363 -363
- package/commands/review-code.tmpl +39 -39
- package/commands/review-context.md +577 -579
- package/commands/review-context.tmpl +212 -212
- package/commands/review-tech-docs.md +426 -426
- package/commands/review-tech-docs.tmpl +146 -146
- package/commands/setup-ai-first.md +237 -237
- package/commands/setup-ai-first.tmpl +131 -131
- 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 +379 -379
- package/commands/validate-traces.tmpl +99 -99
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +435 -435
- package/core/commands/define-product.md +330 -327
- package/core/commands/dev-gen-test.md +364 -364
- package/core/commands/dev-run-test.md +375 -375
- package/core/commands/dev-smoke-test.md +340 -340
- package/core/commands/fix-bug.md +402 -402
- package/core/commands/generate-bdd.md +512 -512
- package/core/commands/generate-code.md +480 -482
- package/core/commands/generate-design-spec.md +495 -495
- package/core/commands/generate-prd.md +445 -396
- package/core/commands/generate-spec-manifest.md +337 -337
- package/core/commands/generate-tech-docs.md +364 -364
- package/core/commands/learn.md +346 -346
- package/core/commands/map-testids.md +321 -321
- package/core/commands/propose-scenario.md +334 -334
- package/core/commands/qc-analyze.md +322 -323
- package/core/commands/qc-design-test.md +303 -303
- package/core/commands/qc-plan.md +296 -296
- package/core/commands/qc-report.md +301 -301
- package/core/commands/qc-review.md +297 -297
- package/core/commands/qc-run-test.md +336 -336
- package/core/commands/refine-prd.md +426 -428
- package/core/commands/report-bug.md +350 -350
- package/core/commands/review-code.md +363 -363
- package/core/commands/review-context.md +577 -579
- package/core/commands/review-tech-docs.md +426 -426
- package/core/commands/setup-ai-first.md +237 -237
- package/core/commands/sync.md +145 -145
- package/core/commands/update-framework.md +88 -88
- package/core/commands/validate-traces.md +379 -379
- package/core/skills/code/SKILL.md +388 -388
- package/core/skills/debug/SKILL.md +390 -390
- package/core/skills/design-spec/SKILL.md +316 -316
- package/core/skills/discovery/SKILL.md +7 -547
- package/core/skills/prd/SKILL.md +298 -394
- package/core/skills/setup-ai-first/SKILL.md +79 -79
- package/core/skills/spec/SKILL.md +176 -176
- package/core/skills/test/SKILL.md +602 -602
- package/core/steps/capture-lesson.md +44 -44
- package/core/steps/context-loader.md +174 -174
- 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 +106 -231
- package/core/templates/product-definition.template.md +101 -88
- package/docs/04-operations/publishing.md +20 -3
- package/package.json +1 -1
- package/skills/code/SKILL.md +388 -388
- package/skills/code/SKILL.tmpl +56 -56
- package/skills/debug/SKILL.md +390 -390
- package/skills/debug/SKILL.tmpl +60 -60
- package/skills/design-spec/SKILL.md +316 -316
- package/skills/design-spec/SKILL.tmpl +36 -36
- 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 +79 -79
- package/skills/setup-ai-first/SKILL.tmpl +27 -27
- package/skills/spec/SKILL.md +176 -176
- package/skills/spec/SKILL.tmpl +18 -18
- package/skills/test/SKILL.md +602 -602
- package/skills/test/SKILL.tmpl +44 -44
- package/steps/capture-lesson.md +44 -44
- package/steps/context-loader.md +174 -174
- 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 +106 -231
- package/templates/product-definition.template.md +101 -88
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
# /generate-spec-manifest —
|
|
1
|
+
# /generate-spec-manifest — Sinh Spec Manifest cho External Agent
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Quét tất cả file spec và ghi một `spec-manifest.yaml` ở project root.
|
|
4
|
+
File này dành cho **external agent** (vd agent của tester) — nó không commit vào git.
|
|
5
5
|
|
|
6
6
|
## Gate
|
|
7
7
|
|
|
8
8
|
{{include:steps/gate.md}}
|
|
9
9
|
|
|
10
|
-
*
|
|
10
|
+
*Lưu ý: Với lệnh này, không có target file — nó quét cả dự án. Bỏ qua `$ARGUMENTS` trừ khi truyền domain filter.*
|
|
11
11
|
|
|
12
12
|
## Context
|
|
13
13
|
|
|
@@ -17,19 +17,19 @@ This file is for **external agents only** (e.g. tester's agent) — it is not co
|
|
|
17
17
|
|
|
18
18
|
## Process
|
|
19
19
|
|
|
20
|
-
### Step 1 —
|
|
20
|
+
### Step 1 — Xác định scan root
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Đọc `project-context.yaml` để xác định mode và path:
|
|
23
23
|
|
|
24
24
|
**Umbrella mode** (`setup.mode: umbrella`):
|
|
25
25
|
```
|
|
26
|
-
spec_root = {setup.spec_source} ←
|
|
26
|
+
spec_root = {setup.spec_source} ← spec submodule của PO
|
|
27
27
|
prd_glob = {spec_root}/specs/**/prd.md
|
|
28
28
|
pdd_glob = {spec_root}/specs/product-definition/**/*.md
|
|
29
|
-
services = {services} ← map
|
|
29
|
+
services = {services} ← map domain → paths
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
**Single-service mode** (
|
|
32
|
+
**Single-service mode** (không có `setup.mode`):
|
|
33
33
|
```
|
|
34
34
|
spec_root = .
|
|
35
35
|
prd_glob = {paths.specs_dir}/**/prd.md
|
|
@@ -37,59 +37,59 @@ pdd_glob = {paths.product_definitions_dir}/**/*.md
|
|
|
37
37
|
services = { default: { specs_dir: {paths.specs_dir}, tech_docs_dir: {paths.tech_docs_dir} } }
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
Nếu truyền domain filter trong `$ARGUMENTS` → chỉ quét PRD khớp domain đó.
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
44
|
-
### Step 2 —
|
|
44
|
+
### Step 2 — Quét file PRD
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
Với mỗi file `.md` khớp `prd_glob`:
|
|
47
47
|
|
|
48
|
-
1.
|
|
49
|
-
- `TICKET-ID`
|
|
50
|
-
- `domain`
|
|
51
|
-
- `status`
|
|
52
|
-
- `version`
|
|
53
|
-
2.
|
|
54
|
-
3.
|
|
48
|
+
1. Đọc bảng metadata của file:
|
|
49
|
+
- `TICKET-ID` từ `| **PRD ID** |`
|
|
50
|
+
- `domain` từ `| **Domain** |`
|
|
51
|
+
- `status` từ `| **Status** |`
|
|
52
|
+
- `version` từ `| **Version** |`
|
|
53
|
+
2. Cũng đọc frontmatter `@trace.domain` nếu có (dùng cái này thay vì domain bảng metadata nếu cả hai tồn tại)
|
|
54
|
+
3. Ghi: `{ ticket_id, domain, status, version, prd_path }` — path tương đối với manifest root
|
|
55
55
|
|
|
56
|
-
Skip
|
|
56
|
+
Skip file không xác định được `TICKET-ID`.
|
|
57
57
|
|
|
58
58
|
---
|
|
59
59
|
|
|
60
|
-
### Step 3 —
|
|
60
|
+
### Step 3 — Khớp file PDD
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
Với mỗi TICKET-ID tìm thấy ở Step 2:
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
64
|
+
Tìm `pdd_glob` một file có tên chứa TICKET-ID (vd `FT-001-*.md`).
|
|
65
|
+
- Tìm thấy → ghi `pdd_path` (tương đối với manifest root)
|
|
66
|
+
- Không thấy → ghi `pdd: null`
|
|
67
67
|
|
|
68
68
|
---
|
|
69
69
|
|
|
70
|
-
### Step 4 —
|
|
70
|
+
### Step 4 — Khớp file BDD và Tech-Doc theo từng service
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
Với mỗi TICKET-ID, với mỗi service trong map `services`:
|
|
73
73
|
|
|
74
74
|
**BDD:**
|
|
75
75
|
- Glob `{service.specs_dir}/**/{TICKET-ID}*.feature`
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
76
|
+
- Cũng kiểm tra file chứa `@trace.prd: {TICKET-ID}` trong frontmatter nếu glob không trả gì
|
|
77
|
+
- Tìm thấy → ghi path dưới `bdd.{service_key}`
|
|
78
|
+
- Không thấy → bỏ key (đừng ghi `null` cho service chưa có BDD)
|
|
79
79
|
|
|
80
80
|
**Tech-docs:**
|
|
81
81
|
- Glob `{service.tech_docs_dir}/**/{TICKET-ID}*.md`
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
82
|
+
- Cũng kiểm tra file chứa `@trace.prd: {TICKET-ID}` nếu glob không trả gì
|
|
83
|
+
- Tìm thấy → ghi path dưới `tech_docs.{service_key}`
|
|
84
|
+
- Không thấy → bỏ key
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
Mọi path tương đối với manifest root (umbrella root hoặc project root).
|
|
87
87
|
|
|
88
88
|
---
|
|
89
89
|
|
|
90
|
-
### Step 5 —
|
|
90
|
+
### Step 5 — Ghi spec-manifest.yaml
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
Ghi vào `{manifest_root}/spec-manifest.yaml` (ghi đè nếu tồn tại).
|
|
93
93
|
|
|
94
94
|
Format:
|
|
95
95
|
|
|
@@ -115,24 +115,24 @@ features:
|
|
|
115
115
|
{service_key}: "{path}" # only include services where file was found
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
Sort features
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
Sort features theo TICKET-ID alphabet.
|
|
119
|
+
Bỏ hẳn block `tech_docs` nếu không tìm thấy tech-doc cho service nào.
|
|
120
|
+
Bỏ hẳn block `bdd` nếu không tìm thấy BDD cho service nào.
|
|
121
121
|
|
|
122
122
|
---
|
|
123
123
|
|
|
124
|
-
### Step 6 —
|
|
124
|
+
### Step 6 — Đảm bảo .gitignore
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
126
|
+
Kiểm tra `{manifest_root}/.gitignore`:
|
|
127
|
+
- Nếu `spec-manifest.yaml` đã được liệt kê → không làm gì
|
|
128
|
+
- Nếu chưa → append vào `.gitignore`:
|
|
129
129
|
|
|
130
130
|
```
|
|
131
131
|
# Auto-generated — do not commit
|
|
132
132
|
spec-manifest.yaml
|
|
133
133
|
```
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
In: `✅ spec-manifest.yaml added to .gitignore`
|
|
136
136
|
|
|
137
137
|
---
|
|
138
138
|
|
|
@@ -141,7 +141,7 @@ Print: `✅ spec-manifest.yaml added to .gitignore`
|
|
|
141
141
|
{{include:steps/report-footer.md}}
|
|
142
142
|
|
|
143
143
|
```
|
|
144
|
-
/generate-spec-manifest
|
|
144
|
+
/generate-spec-manifest Hoàn tất
|
|
145
145
|
---
|
|
146
146
|
Status : ✅ Complete
|
|
147
147
|
Output : spec-manifest.yaml ({N} features)
|
|
@@ -149,16 +149,16 @@ Mode : {umbrella | single}
|
|
|
149
149
|
.gitignore : ✅ spec-manifest.yaml excluded
|
|
150
150
|
|
|
151
151
|
Summary:
|
|
152
|
-
{N}
|
|
153
|
-
{N}
|
|
154
|
-
{N} BDD
|
|
155
|
-
{N} Tech-doc
|
|
156
|
-
|
|
157
|
-
⚠️ {N}
|
|
158
|
-
- {TICKET-ID} ({domain}) —
|
|
159
|
-
⚠️ {N}
|
|
160
|
-
- {TICKET-ID} ({domain}) —
|
|
161
|
-
|
|
162
|
-
Next :
|
|
163
|
-
|
|
152
|
+
{N} PRD scanned ({A} approved, {D} draft)
|
|
153
|
+
{N} PDD matched
|
|
154
|
+
{N} BDD file matched (across {S} services)
|
|
155
|
+
{N} Tech-doc file matched (across {S} services)
|
|
156
|
+
|
|
157
|
+
⚠️ {N} PRD không có BDD khớp:
|
|
158
|
+
- {TICKET-ID} ({domain}) — chạy /generate-bdd trước
|
|
159
|
+
⚠️ {N} PRD không có tech-docs khớp:
|
|
160
|
+
- {TICKET-ID} ({domain}) — chạy /generate-tech-docs trước
|
|
161
|
+
|
|
162
|
+
Next : Chia sẻ path spec-manifest.yaml với tester agent
|
|
163
|
+
Sinh lại bất cứ lúc nào: /generate-spec-manifest
|
|
164
164
|
```
|