@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,19 +1,19 @@
|
|
|
1
|
-
# /map-testids —
|
|
1
|
+
# /map-testids — Định nghĩa/backfill test-id ổn định lên component FE tái dùng & có sẵn
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
> `/generate-code`
|
|
5
|
-
>
|
|
6
|
-
>
|
|
7
|
-
>
|
|
8
|
-
> forwarding
|
|
9
|
-
>
|
|
3
|
+
> Đồng hành với contract *Test Selectors* §2b của FE tech-design. `/generate-tech-docs` (FE) và
|
|
4
|
+
> `/generate-code` gán test-id cho code **mới**; lệnh này lo phần còn lại: component catalog
|
|
5
|
+
> **tái dùng** (id sống ở usage site; component phải *forward* được test-id) và màn
|
|
6
|
+
> **đã có / brownfield** đã code mà chưa có test-id. Nó reverse-document những gì đang có,
|
|
7
|
+
> gán id ổn định ở chỗ còn thiếu, đảm bảo component tái dùng forward được id, ghi việc
|
|
8
|
+
> forwarding vào figma-components catalog, patch các usage site, và ghi map §2b — để QC
|
|
9
|
+
> định vị element bằng id thay vì scan lúc runtime.
|
|
10
10
|
|
|
11
11
|
Usage: `/map-testids {UC-ID}`
|
|
12
12
|
|
|
13
13
|
## Gate
|
|
14
14
|
{{include:steps/gate.md}}
|
|
15
15
|
|
|
16
|
-
*
|
|
16
|
+
*Lưu ý: Với lệnh này, target ở Bước 1 là một UC-ID. Đọc `.feature` FE của UC (web/app), các màn Design Spec của nó, FE tech-design `{paths.tech_docs_dir}/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design-{platform}.md` (nếu có), và figma-components catalog cho `active_module`.*
|
|
17
17
|
|
|
18
18
|
## Context
|
|
19
19
|
{{include:steps/context-loader.md}}
|
|
@@ -22,60 +22,60 @@ Usage: `/map-testids {UC-ID}`
|
|
|
22
22
|
|
|
23
23
|
## Step 0 — Platform guard
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Phân giải `platform` từ `@trace.platform` / `platform_type`. Test-id là chuyện của **FE/App** — nếu `system` / backend → HALT:
|
|
26
26
|
```
|
|
27
|
-
❌ /map-testids
|
|
27
|
+
❌ /map-testids chỉ áp dụng cho FE/App (web/app). BE không có UI test-id.
|
|
28
28
|
```
|
|
29
|
-
|
|
29
|
+
Phân giải attribute test-id từ `@trace.testid_attr` (hoặc theo module): web `data-testid` · React Native `testID` · Flutter `Key`/`Semantics(identifier:)` · native iOS `accessibilityIdentifier`.
|
|
30
30
|
|
|
31
|
-
## Step 1 —
|
|
31
|
+
## Step 1 — Thu thập element có action
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
- **reused** —
|
|
35
|
-
- **existing** — feature
|
|
36
|
-
- **new** —
|
|
33
|
+
Từ các step `When` trong `.feature` FE của UC + các màn Design Spec, liệt kê mọi element **có action** mà scenario chạm tới (button, input, link, select, toggle, form-submit). Bỏ qua text/label tĩnh. Với mỗi cái, phân giải component render và phân loại:
|
|
34
|
+
- **reused** — khớp một row trong figma-components catalog (component design-system dùng chung);
|
|
35
|
+
- **existing** — component riêng của feature đã có trong codebase (brownfield);
|
|
36
|
+
- **new** — chưa code (để `/generate-code` lo; chỉ ghi lại id dự kiến).
|
|
37
37
|
|
|
38
|
-
## Step 2 —
|
|
38
|
+
## Step 2 — Phân giải test-id ổn định cho mỗi element
|
|
39
39
|
|
|
40
|
-
- **Existing/brownfield:**
|
|
41
|
-
- **Reused:**
|
|
42
|
-
- **Cross-platform:**
|
|
40
|
+
- **Existing/brownfield:** đọc file component. Nếu element **đã** có test-id (trong attribute của platform) → **reverse-document** nó (dùng lại as-is). Nếu không, gán theo quy ước `{uc-lower}-{screen}-{element}-{type}` (vd `ft001-login-submit-btn`). Không bao giờ nhúng số scenario.
|
|
41
|
+
- **Reused:** id được áp ở **usage site** (không bake vào component dùng chung) → gán theo cùng quy ước.
|
|
42
|
+
- **Cross-platform:** nếu tech-design của platform **kia** (`{UC-ID}-tech-design-{web|app}.md`) đã có id §2b cho cùng element logic, **dùng lại id value đó** (chỉ attribute khác theo platform) để web và app nhất quán và logic QC tái dùng được.
|
|
43
43
|
|
|
44
|
-
## Step 3 —
|
|
44
|
+
## Step 3 — Đảm bảo component tái dùng forward được test-id (catalog)
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
-
|
|
48
|
-
- **
|
|
49
|
-
-
|
|
50
|
-
-
|
|
46
|
+
Với mỗi component **reused** có action, tra section **`## Test-ID Forwarding`** của catalog (`{paths.domain_knowledge_dir}/figma-components/{active_module}.md`):
|
|
47
|
+
- **Đã ghi prop forwarding** → dùng nó ở usage site (Step 4).
|
|
48
|
+
- **Chưa ghi** → kiểm tra source component:
|
|
49
|
+
- Đã forward (spread `...props` / có prop `testId`/`testID` / truyền attribute qua) → **ghi** prop vào bảng Test-ID Forwarding của catalog.
|
|
50
|
+
- **Không** forward → **patch component MỘT LẦN** để nhận + forward test-id (web: thêm prop `testId` → render `data-testid={testId}`; RN: `testID`; Flutter: truyền `Key`/`Semantics(identifier:)`; iOS: `accessibilityIdentifier`), rồi ghi vào catalog.
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
In mọi row catalog được thêm và mọi component dùng chung được patch (chúng đụng code dùng chung — nêu ra để review).
|
|
53
53
|
|
|
54
|
-
## Step 4 — Patch usage
|
|
54
|
+
## Step 4 — Patch usage site (chỉ EXTEND)
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
Với mỗi element có action trong các màn **existing/reused** của UC này, thêm test-id ở usage site — attribute thô cho element thường, hoặc prop forwarding cho component tái dùng — với id từ Step 2. **EXTEND mode:** chỉ đụng attribute/prop; không refactor gì khác. Bỏ qua element đã mang đúng id (idempotent).
|
|
57
57
|
|
|
58
|
-
## Step 5 —
|
|
58
|
+
## Step 5 — Ghi/làm mới map §2b Test Selectors
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
60
|
+
Tạo hoặc cập nhật §2b của `{paths.tech_docs_dir}/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design-{platform}.md`:
|
|
61
|
+
- Nếu FE tech-design tồn tại → cập nhật bảng §2b của nó.
|
|
62
|
+
- Nếu **chưa** tồn tại (pure brownfield) → ghi một file tối thiểu: header `@trace` (gồm `@trace.testid_attr`) + chỉ §2b. `/generate-tech-docs` (FE) điền các section còn lại sau; nó không được ghi đè các id §2b mà lệnh này đã ghi.
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
Mỗi row: `Test-ID | Element | Component (reused/existing/new) | Action | Serves SC`.
|
|
65
65
|
|
|
66
66
|
## Step 6 — Handoff
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
Nếu tech-design sống trong spec repo dùng chung (`spec_source` được set), commit + push (2 tầng) như `/generate-tech-docs`. Patch component dùng chung đi vào FE service submodule (push 2 tầng, xem Sync & Update §4.4).
|
|
69
69
|
|
|
70
70
|
## Output
|
|
71
71
|
|
|
72
72
|
{{include:steps/report-footer.md}}
|
|
73
73
|
|
|
74
74
|
```
|
|
75
|
-
/map-testids
|
|
76
|
-
Elements: {N} mapped — {reused} reused · {existing} existing (backfilled) · {new}
|
|
77
|
-
Forwarding: {M}
|
|
75
|
+
/map-testids Hoàn tất — {UC-ID} ({platform})
|
|
76
|
+
Elements: {N} mapped — {reused} reused · {existing} existing (backfilled) · {new} để dành cho /generate-code
|
|
77
|
+
Forwarding: {M} component dùng chung được patch để forward test-id · {K} row catalog được ghi
|
|
78
78
|
§2b: {paths.tech_docs_dir}/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design-{platform}.md updated ({N} selectors)
|
|
79
|
-
Next: /review-tech-docs {tech-design} ← review
|
|
80
|
-
/qc-design-test {UC-ID} ← QC
|
|
79
|
+
Next: /review-tech-docs {tech-design} ← review map §2b + patch component dùng chung
|
|
80
|
+
/qc-design-test {UC-ID} ← QC giờ định vị bằng test-id (không scan)
|
|
81
81
|
```
|