@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.
Files changed (141) hide show
  1. package/commands/debug.md +435 -435
  2. package/commands/debug.tmpl +111 -111
  3. package/commands/define-product.md +330 -327
  4. package/commands/define-product.tmpl +50 -47
  5. package/commands/dev-gen-test.md +364 -364
  6. package/commands/dev-gen-test.tmpl +63 -63
  7. package/commands/dev-run-test.md +375 -375
  8. package/commands/dev-run-test.tmpl +74 -74
  9. package/commands/dev-smoke-test.md +340 -340
  10. package/commands/dev-smoke-test.tmpl +60 -60
  11. package/commands/fix-bug.md +402 -402
  12. package/commands/fix-bug.tmpl +78 -78
  13. package/commands/generate-bdd.md +512 -512
  14. package/commands/generate-bdd.tmpl +211 -211
  15. package/commands/generate-code.md +480 -482
  16. package/commands/generate-code.tmpl +179 -181
  17. package/commands/generate-design-spec.md +495 -495
  18. package/commands/generate-design-spec.tmpl +219 -219
  19. package/commands/generate-prd.md +445 -396
  20. package/commands/generate-prd.tmpl +45 -198
  21. package/commands/generate-spec-manifest.md +337 -337
  22. package/commands/generate-spec-manifest.tmpl +57 -57
  23. package/commands/generate-tech-docs.md +364 -364
  24. package/commands/generate-tech-docs.tmpl +84 -84
  25. package/commands/learn.md +346 -346
  26. package/commands/learn.tmpl +22 -22
  27. package/commands/map-testids.md +321 -321
  28. package/commands/map-testids.tmpl +41 -41
  29. package/commands/propose-scenario.md +334 -334
  30. package/commands/propose-scenario.tmpl +54 -54
  31. package/commands/qc-analyze.md +322 -323
  32. package/commands/qc-analyze.tmpl +42 -43
  33. package/commands/qc-design-test.md +303 -303
  34. package/commands/qc-design-test.tmpl +23 -23
  35. package/commands/qc-plan.md +296 -296
  36. package/commands/qc-plan.tmpl +16 -16
  37. package/commands/qc-report.md +301 -301
  38. package/commands/qc-report.tmpl +21 -21
  39. package/commands/qc-review.md +297 -297
  40. package/commands/qc-review.tmpl +17 -17
  41. package/commands/qc-run-test.md +336 -336
  42. package/commands/qc-run-test.tmpl +35 -35
  43. package/commands/refine-prd.md +426 -428
  44. package/commands/refine-prd.tmpl +61 -61
  45. package/commands/report-bug.md +350 -350
  46. package/commands/report-bug.tmpl +70 -70
  47. package/commands/review-code.md +363 -363
  48. package/commands/review-code.tmpl +39 -39
  49. package/commands/review-context.md +577 -579
  50. package/commands/review-context.tmpl +212 -212
  51. package/commands/review-tech-docs.md +426 -426
  52. package/commands/review-tech-docs.tmpl +146 -146
  53. package/commands/setup-ai-first.md +237 -237
  54. package/commands/setup-ai-first.tmpl +131 -131
  55. package/commands/sync.md +145 -145
  56. package/commands/sync.tmpl +93 -93
  57. package/commands/update-framework.md +88 -88
  58. package/commands/update-framework.tmpl +36 -36
  59. package/commands/validate-traces.md +379 -379
  60. package/commands/validate-traces.tmpl +99 -99
  61. package/core/FRAMEWORK_VERSION +1 -1
  62. package/core/commands/debug.md +435 -435
  63. package/core/commands/define-product.md +330 -327
  64. package/core/commands/dev-gen-test.md +364 -364
  65. package/core/commands/dev-run-test.md +375 -375
  66. package/core/commands/dev-smoke-test.md +340 -340
  67. package/core/commands/fix-bug.md +402 -402
  68. package/core/commands/generate-bdd.md +512 -512
  69. package/core/commands/generate-code.md +480 -482
  70. package/core/commands/generate-design-spec.md +495 -495
  71. package/core/commands/generate-prd.md +445 -396
  72. package/core/commands/generate-spec-manifest.md +337 -337
  73. package/core/commands/generate-tech-docs.md +364 -364
  74. package/core/commands/learn.md +346 -346
  75. package/core/commands/map-testids.md +321 -321
  76. package/core/commands/propose-scenario.md +334 -334
  77. package/core/commands/qc-analyze.md +322 -323
  78. package/core/commands/qc-design-test.md +303 -303
  79. package/core/commands/qc-plan.md +296 -296
  80. package/core/commands/qc-report.md +301 -301
  81. package/core/commands/qc-review.md +297 -297
  82. package/core/commands/qc-run-test.md +336 -336
  83. package/core/commands/refine-prd.md +426 -428
  84. package/core/commands/report-bug.md +350 -350
  85. package/core/commands/review-code.md +363 -363
  86. package/core/commands/review-context.md +577 -579
  87. package/core/commands/review-tech-docs.md +426 -426
  88. package/core/commands/setup-ai-first.md +237 -237
  89. package/core/commands/sync.md +145 -145
  90. package/core/commands/update-framework.md +88 -88
  91. package/core/commands/validate-traces.md +379 -379
  92. package/core/skills/code/SKILL.md +388 -388
  93. package/core/skills/debug/SKILL.md +390 -390
  94. package/core/skills/design-spec/SKILL.md +316 -316
  95. package/core/skills/discovery/SKILL.md +7 -547
  96. package/core/skills/prd/SKILL.md +298 -394
  97. package/core/skills/setup-ai-first/SKILL.md +79 -79
  98. package/core/skills/spec/SKILL.md +176 -176
  99. package/core/skills/test/SKILL.md +602 -602
  100. package/core/steps/capture-lesson.md +44 -44
  101. package/core/steps/context-loader.md +174 -174
  102. package/core/steps/gate.md +54 -54
  103. package/core/steps/report-footer.md +52 -52
  104. package/core/steps/review-fanout.md +85 -87
  105. package/core/steps/spawn-agent.md +45 -45
  106. package/core/steps/trace-mirror.md +21 -21
  107. package/core/templates/architecture.template.md +37 -37
  108. package/core/templates/design-spec.template.md +77 -77
  109. package/core/templates/platform-guide.template.md +47 -47
  110. package/core/templates/prd.template.md +106 -231
  111. package/core/templates/product-definition.template.md +101 -88
  112. package/docs/04-operations/publishing.md +20 -3
  113. package/package.json +1 -1
  114. package/skills/code/SKILL.md +388 -388
  115. package/skills/code/SKILL.tmpl +56 -56
  116. package/skills/debug/SKILL.md +390 -390
  117. package/skills/debug/SKILL.tmpl +60 -60
  118. package/skills/design-spec/SKILL.md +316 -316
  119. package/skills/design-spec/SKILL.tmpl +36 -36
  120. package/skills/discovery/SKILL.md +7 -547
  121. package/skills/discovery/SKILL.tmpl +7 -140
  122. package/skills/prd/SKILL.md +298 -394
  123. package/skills/prd/SKILL.tmpl +40 -151
  124. package/skills/setup-ai-first/SKILL.md +79 -79
  125. package/skills/setup-ai-first/SKILL.tmpl +27 -27
  126. package/skills/spec/SKILL.md +176 -176
  127. package/skills/spec/SKILL.tmpl +18 -18
  128. package/skills/test/SKILL.md +602 -602
  129. package/skills/test/SKILL.tmpl +44 -44
  130. package/steps/capture-lesson.md +44 -44
  131. package/steps/context-loader.md +174 -174
  132. package/steps/gate.md +54 -54
  133. package/steps/report-footer.md +52 -52
  134. package/steps/review-fanout.md +85 -87
  135. package/steps/spawn-agent.md +45 -45
  136. package/steps/trace-mirror.md +21 -21
  137. package/templates/architecture.template.md +37 -37
  138. package/templates/design-spec.template.md +77 -77
  139. package/templates/platform-guide.template.md +47 -47
  140. package/templates/prd.template.md +106 -231
  141. package/templates/product-definition.template.md +101 -88
@@ -1,15 +1,15 @@
1
- # /dev-gen-test — Generate Dev Self-Check Tests
1
+ # /dev-gen-test — Sinh Dev Self-Check Tests
2
2
 
3
- > **Scope — dev self-check (smoke), not the official test suite.** These tests let the
4
- > developer quickly verify their own generated code against the BDD scenarios. They are a
5
- > developer self-check, **not** the QC/dev-team's authoritative test suite (that has its
6
- > own separate flow, implemented elsewhere). Results surface to the Living Docs dashboard
7
- > as a **dev self-test** signal so QC can see the dev already ran their own checks.
3
+ > **Scope — dev self-check (smoke), không phải bộ test chính thức.** Các test này để
4
+ > dev nhanh chóng kiểm chứng code mình sinh ra so với các BDD scenario. Đây một
5
+ > self-check của dev, **không** phải bộ test authoritative của QC/dev-team (cái đó
6
+ > flow riêng, implement ở nơi khác). Kết quả hiện lên dashboard Living Docs như một tín hiệu
7
+ > **dev self-test** để QC thấy dev đã tự chạy check của mình.
8
8
 
9
9
  ## Gate
10
10
  {{include:steps/gate.md}}
11
11
 
12
- *Note: For this command, the target in Step 1 is a UC-ID or `.feature` file path. Find the feature file at `{paths.specs_dir}/{domain}/*/bdd/**/{UC-ID}-*.feature` (glob match across PRDs — filename includes slug suffix) and the implementation files tagged `@trace.implements={UC-ID}`.*
12
+ *Lưu ý: Với lệnh này, target Bước 1 một UC-ID hoặc path file `.feature`. Tìm file feature tại `{paths.specs_dir}/{domain}/*/bdd/**/{UC-ID}-*.feature` (glob khớp xuyên các PRD — filename gồm hậu tố slug) các file implementation gắn tag `@trace.implements={UC-ID}`.*
13
13
 
14
14
  ## Context
15
15
  {{include:steps/context-loader.md}}
@@ -18,16 +18,16 @@
18
18
 
19
19
  ## Service Detection
20
20
 
21
- Read `@trace.service` and `@trace.module` from the feature file header.
21
+ Đọc `@trace.service` `@trace.module` từ header file feature.
22
22
 
23
- | Condition | Action |
23
+ | Điều kiện | Hành động |
24
24
  |---|---|
25
- | `@trace.module` present | Use as `active_module` |
26
- | `@trace.module` absent | Use `tech_stack.module` from project-context.yaml |
27
- | `@trace.service` present | Store as `active_service` |
28
- | `@trace.service` absent | Use `{UC-ID}` domain as fallback |
25
+ | `@trace.module` mặt | Dùng làm `active_module` |
26
+ | `@trace.module` vắng | Dùng `tech_stack.module` từ project-context.yaml |
27
+ | `@trace.service` mặt | Lưu làm `active_service` |
28
+ | `@trace.service` vắng | Dùng domain của `{UC-ID}` làm fallback |
29
29
 
30
- **Platform type classification:**
30
+ **Phân loại platform type:**
31
31
 
32
32
  | Platform | Modules |
33
33
  |---|---|
@@ -39,28 +39,28 @@ Read `@trace.service` and `@trace.module` from the feature file header.
39
39
 
40
40
  ## CHECKPOINT — Test Plan
41
41
 
42
- Before generating, scan the feature file for scenarios and the implementation files for classes/functions. Display:
42
+ Trước khi sinh, quét file feature tìm scenario các file implementation tìm class/function. Hiện:
43
43
 
44
44
  ```
45
45
  Test Plan — {UC-ID} ({active_module})
46
46
  ──────────────────────────────────────
47
47
  Platform : {backend | web-frontend | mobile}
48
- Scenarios : {N} scenarios from .feature file
49
- Impl files : {list of files tagged @trace.implements={UC-ID}}
48
+ Scenarios : {N} scenario từ file .feature
49
+ Impl files : {danh sách file gắn tag @trace.implements={UC-ID}}
50
50
 
51
- Tests to generate:
52
- {platform-specific list see templates below}
51
+ Test cần sinh:
52
+ {danh sách riêng theo platform — xem template bên dưới}
53
53
 
54
54
  Proceed? (Y/N)
55
55
  ```
56
56
 
57
- Wait for explicit "Y" before generating.
57
+ Chờ "Y" ràng trước khi sinh.
58
58
 
59
59
  ---
60
60
 
61
61
  ## Generate
62
62
 
63
- ### If `platform_type = backend`
63
+ ### Nếu `platform_type = backend`
64
64
 
65
65
  #### java-spring
66
66
 
@@ -97,10 +97,10 @@ class {Resource}ControllerTest {
97
97
  ```
98
98
 
99
99
  Rules:
100
- - Unit tests: mock at Repository layer, test Service logic
101
- - Integration tests: mock at Facade/Service layer, test HTTP contract only
102
- - Never mock the class under test
103
- - Follow naming: `methodName_whenCondition_shouldOutcome` (from CLAUDE.md §6)
100
+ - Unit test: mock layer Repository, test logic Service
101
+ - Integration test: mock layer Facade/Service, chỉ test HTTP contract
102
+ - Không bao giờ mock class đang được test
103
+ - Theo naming: `methodName_whenCondition_shouldOutcome` (từ CLAUDE.md §6)
104
104
 
105
105
  #### golang
106
106
 
@@ -180,9 +180,9 @@ class {Resource}ControllerTest extends TestCase {
180
180
 
181
181
  #### context-engineering
182
182
 
183
- Check `tech_stack.language` from project-context.yaml to select the correct test syntax:
183
+ Kiểm tra `tech_stack.language` từ project-context.yaml để chọn đúng pháp test:
184
184
 
185
- **If language = Python** (default):
185
+ **Nếu language = Python** (mặc định):
186
186
 
187
187
  ```python
188
188
  # @trace.verifies={UC-ID}
@@ -221,7 +221,7 @@ class Test{Resource}Prompt:
221
221
  {function}(input=None)
222
222
  ```
223
223
 
224
- **If language = TypeScript / JavaScript** (Node.js LangChain.js, etc.):
224
+ **Nếu language = TypeScript / JavaScript** (Node.js LangChain.js, v.v.):
225
225
 
226
226
  ```typescript
227
227
  // @trace.verifies={UC-ID}
@@ -244,17 +244,17 @@ describe('{Resource}Prompt', () => {
244
244
  })
245
245
  ```
246
246
 
247
- **If language = Java** (LangChain4j, etc.): use JUnit 5 + Mockito, same patterns as java-spring unit tests above — mock the `ChatLanguageModel` interface.
247
+ **Nếu language = Java** (LangChain4j, v.v.): dùng JUnit 5 + Mockito, cùng pattern như unit test java-spring trên — mock interface `ChatLanguageModel`.
248
248
 
249
249
  Rules:
250
- - Mock the LLM client at the boundary — never call real LLM in unit tests
251
- - Validate input schema and output schema separately
252
- - Each scenario in `.feature` maps to one test function
253
- - Use parameterized tests for multiple input variants
250
+ - Mock LLM client boundary — không bao giờ gọi LLM thật trong unit test
251
+ - Validate input schema output schema riêng biệt
252
+ - Mỗi scenario trong `.feature` map sang một test function
253
+ - Dùng parameterized test cho nhiều biến thể input
254
254
 
255
255
  ---
256
256
 
257
- ### If `platform_type = web-frontend`
257
+ ### Nếu `platform_type = web-frontend`
258
258
 
259
259
  #### react / nextjs / vue / nuxt / angular
260
260
 
@@ -292,15 +292,15 @@ test('{scenario from .feature}', async ({ page }) => {
292
292
  ```
293
293
 
294
294
  Rules:
295
- - One component test file per component involved in the UC
296
- - One E2E test file per UC covering happy path + key error scenarios
297
- - Mock API calls at the network layer (MSW or cy.intercept), not at component props
298
- - Use accessible queries (`getByRole`, `getByLabelText`) — avoid `getByTestId` unless necessary
299
- - Each test maps to exactly one scenario in the `.feature` file
295
+ - Một file component test cho mỗi component liên quan tới UC
296
+ - Một file E2E test cho mỗi UC, phủ happy path + các error scenario chính
297
+ - Mock API call network layer (MSW hoặc cy.intercept), không phải component props
298
+ - Dùng accessible query (`getByRole`, `getByLabelText`) — tránh `getByTestId` trừ khi cần
299
+ - Mỗi test map đúng một scenario trong file `.feature`
300
300
 
301
301
  ---
302
302
 
303
- ### If `platform_type = mobile`
303
+ ### Nếu `platform_type = mobile`
304
304
 
305
305
  #### flutter
306
306
 
@@ -436,37 +436,37 @@ class {Feature}ScreenTest {
436
436
 
437
437
  ## Checklist
438
438
 
439
- **All platforms:**
440
- - [ ] `@trace.verifies` on every test class / test group
441
- - [ ] `@trace.service` on every test class / test group
442
- - [ ] Every scenario in `.feature` file has ≥ 1 corresponding test
443
- - [ ] Happy path covered
444
- - [ ] Key error / edge case scenarios covered
439
+ **Mọi platform:**
440
+ - [ ] `@trace.verifies` trên mỗi test class / test group
441
+ - [ ] `@trace.service` trên mỗi test class / test group
442
+ - [ ] Mỗi scenario trong file `.feature` ≥ 1 test tương ứng
443
+ - [ ] Phủ happy path
444
+ - [ ] Phủ các scenario error / edge case chính
445
445
 
446
- **Backend only:**
447
- - [ ] Correct layer mocked (Repository in unit tests, Facade/Service in controller tests)
448
- - [ ] No real DB calls in unit tests
449
- - [ ] Test naming follows `methodName_whenCondition_shouldOutcome` (CLAUDE.md §6)
446
+ **Chỉ backend:**
447
+ - [ ] Mock đúng layer (Repository trong unit test, Facade/Service trong controller test)
448
+ - [ ] Không gọi DB thật trong unit test
449
+ - [ ] Test naming theo `methodName_whenCondition_shouldOutcome` (CLAUDE.md §6)
450
450
 
451
- **Frontend / Mobile only:**
452
- - [ ] No hardcoded delays (`sleep`, `setTimeout`) in testsuse `waitFor` / `pumpAndSettle`
453
- - [ ] Accessible queries used (role, label) not implementation-specific selectors
454
- - [ ] API calls mocked at network layer, not at component level
451
+ **Chỉ Frontend / Mobile:**
452
+ - [ ] Không hardcode delay (`sleep`, `setTimeout`) trong testdùng `waitFor` / `pumpAndSettle`
453
+ - [ ] Dùng accessible query (role, label) không phải selector phụ thuộc implementation
454
+ - [ ] Mock API call network layer, không phải component level
455
455
 
456
456
  ---
457
457
 
458
458
  ## Write Trace State
459
459
 
460
- After generating all test files, update `{paths.trace_dir}/{domain}/{prd-slug}/{UC-ID}.tsv` — for each scenario, find the existing row by `sc_id` and update:
460
+ Sau khi sinh tất cả file test, cập nhật `{paths.trace_dir}/{domain}/{prd-slug}/{UC-ID}.tsv` — với mỗi scenario, tìm row sẵn theo `sc_id` cập nhật:
461
461
 
462
- | Column | Value |
462
+ | Cột | Giá trị |
463
463
  |--------|-------|
464
- | `test_count` | number of test methods covering this SC |
465
- | `test_classes` | comma-separated test class / describe-block names |
466
- | `dev_selftest` | `not_run` (tests now exist but have not been executed — `/dev-run-test` sets pass/fail) |
467
- | `last_updated` | today `YYYY-MM-DD` |
464
+ | `test_count` | số test method phủ SC này |
465
+ | `test_classes` | tên test class / describe-block, ngăn cách bởi dấu phẩy |
466
+ | `dev_selftest` | `not_run` (test giờ đã tồn tại nhưng chưa chạy — `/dev-run-test` set pass/fail) |
467
+ | `last_updated` | hôm nay `YYYY-MM-DD` |
468
468
 
469
- Leave all other columns unchanged (including `dev_selftest_at`, which `/dev-run-test` owns, and `qc_status`/`qc_run_at`, which `/qc-run-test` owns).
469
+ Giữ nguyên mọi cột khác (gồm `dev_selftest_at`, do `/dev-run-test` sở hữu, `qc_status`/`qc_run_at`, do `/qc-run-test` sở hữu).
470
470
 
471
471
  ---
472
472
 
@@ -480,11 +480,11 @@ Leave all other columns unchanged (including `dev_selftest_at`, which `/dev-run-
480
480
  {{include:steps/report-footer.md}}
481
481
 
482
482
  ```
483
- /dev-gen-test Complete — {UC-ID} ({active_module})
483
+ /dev-gen-test Hoàn tất — {UC-ID} ({active_module})
484
484
  ✅ {TestClass1} ({N} tests)
485
485
  ✅ {TestClass2} ({N} tests)
486
486
  Trace: {paths.trace_dir}/{domain}/{prd-slug}/{UC-ID}.tsv updated
487
487
  Next: /dev-run-test {UC-ID}
488
488
 
489
- 📊 Living Docs: run /validate-traces (or /sync) to push this trace to the spec-module dashboard.
489
+ 📊 Living Docs: chạy /validate-traces (hoặc /sync) để push trace này lên dashboard spec-module.
490
490
  ```