@anhth2/spec-driven-dev-plugin 0.9.1 → 0.10.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.
- package/ARCHITECTURE.md +20 -9
- package/bin/index.js +1 -2
- package/commands/debug.md +13 -12
- package/commands/define-product.md +12 -11
- package/commands/{generate-tests.md → dev-gen-test.md} +48 -15
- package/commands/{generate-tests.tmpl → dev-gen-test.tmpl} +18 -4
- package/{core/commands/run-tests.md → commands/dev-run-test.md} +62 -13
- package/commands/{run-tests.tmpl → dev-run-test.tmpl} +32 -2
- package/{core/commands/smoke-test.md → commands/dev-smoke-test.md} +17 -16
- package/commands/{smoke-test.tmpl → dev-smoke-test.tmpl} +5 -5
- package/commands/fix-bug.md +13 -12
- package/commands/generate-bdd.md +39 -13
- package/commands/generate-bdd.tmpl +9 -2
- package/commands/generate-code.md +86 -15
- package/commands/generate-code.tmpl +56 -4
- package/commands/generate-design-spec.md +105 -39
- package/commands/generate-design-spec.tmpl +93 -28
- package/commands/generate-prd.md +12 -11
- package/commands/generate-spec-manifest.md +12 -11
- package/commands/generate-tech-docs.md +63 -22
- package/commands/generate-tech-docs.tmpl +51 -11
- package/commands/learn.md +13 -12
- package/commands/propose-scenario.md +13 -12
- package/commands/propose-scenario.tmpl +1 -1
- package/commands/refine-prd.md +166 -16
- package/commands/refine-prd.tmpl +16 -5
- package/commands/report-bug.md +12 -11
- package/commands/review-code.md +14 -13
- package/commands/review-code.tmpl +1 -1
- package/commands/review-context.md +161 -12
- package/commands/review-context.tmpl +11 -1
- package/commands/review-tech-docs.md +13 -11
- package/commands/review-tech-docs.tmpl +1 -0
- package/commands/setup-ai-first.md +7 -7
- package/commands/sync.md +23 -20
- package/commands/sync.tmpl +16 -13
- package/commands/update-framework.md +7 -7
- package/commands/validate-traces.md +57 -37
- package/commands/validate-traces.tmpl +45 -26
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +13 -12
- package/core/commands/define-product.md +12 -11
- package/core/commands/{generate-tests.md → dev-gen-test.md} +48 -15
- package/{commands/run-tests.md → core/commands/dev-run-test.md} +62 -13
- package/{commands/smoke-test.md → core/commands/dev-smoke-test.md} +17 -16
- package/core/commands/fix-bug.md +13 -12
- package/core/commands/generate-bdd.md +39 -13
- package/core/commands/generate-code.md +86 -15
- package/core/commands/generate-design-spec.md +105 -39
- package/core/commands/generate-prd.md +12 -11
- package/core/commands/generate-spec-manifest.md +12 -11
- package/core/commands/generate-tech-docs.md +63 -22
- package/core/commands/learn.md +13 -12
- package/core/commands/propose-scenario.md +13 -12
- package/core/commands/refine-prd.md +166 -16
- package/core/commands/report-bug.md +12 -11
- package/core/commands/review-code.md +14 -13
- package/core/commands/review-context.md +161 -12
- package/core/commands/review-tech-docs.md +13 -11
- package/core/commands/setup-ai-first.md +7 -7
- package/core/commands/sync.md +23 -20
- package/core/commands/update-framework.md +7 -7
- package/core/commands/validate-traces.md +57 -37
- package/core/modules/android-compose/module.yaml +13 -0
- package/core/modules/android-compose/stack-profile.yaml +57 -0
- package/core/modules/flutter/module.yaml +14 -0
- package/core/modules/flutter/stack-profile.yaml +59 -0
- package/core/modules/ios-swiftui/module.yaml +13 -0
- package/core/modules/ios-swiftui/stack-profile.yaml +55 -0
- package/core/modules/nuxt/module.yaml +14 -0
- package/core/modules/nuxt/stack-profile.yaml +58 -0
- package/core/modules/react-native/module.yaml +14 -0
- package/core/modules/react-native/stack-profile.yaml +56 -0
- package/core/modules/vue/module.yaml +14 -0
- package/core/modules/vue/stack-profile.yaml +65 -0
- package/core/skills/code/SKILL.md +19 -18
- package/core/skills/debug/SKILL.md +27 -26
- package/core/skills/design-spec/SKILL.md +12 -11
- package/core/skills/discovery/SKILL.md +12 -11
- package/core/skills/prd/SKILL.md +14 -14
- package/core/skills/setup-ai-first/SKILL.md +7 -7
- package/core/skills/spec/SKILL.md +14 -14
- package/core/skills/test/SKILL.md +40 -38
- package/core/steps/capture-lesson.md +1 -1
- package/core/steps/context-loader.md +5 -4
- package/core/steps/report-footer.md +7 -7
- package/core/steps/review-fanout.md +138 -0
- package/core/steps/spawn-agent.md +1 -1
- package/core/steps/trace-mirror.md +18 -0
- package/core/templates/design-spec.template.md +16 -8
- package/core/templates/product-definition.template.md +3 -3
- package/core/templates/project-context.yaml +4 -1
- package/modules/android-compose/module.yaml +13 -0
- package/modules/android-compose/stack-profile.yaml +57 -0
- package/modules/flutter/module.yaml +14 -0
- package/modules/flutter/stack-profile.yaml +59 -0
- package/modules/ios-swiftui/module.yaml +13 -0
- package/modules/ios-swiftui/stack-profile.yaml +55 -0
- package/modules/nuxt/module.yaml +14 -0
- package/modules/nuxt/stack-profile.yaml +58 -0
- package/modules/react-native/module.yaml +14 -0
- package/modules/react-native/stack-profile.yaml +56 -0
- package/modules/vue/module.yaml +14 -0
- package/modules/vue/stack-profile.yaml +65 -0
- package/package.json +1 -1
- package/skills/code/SKILL.md +19 -18
- package/skills/debug/SKILL.md +27 -26
- package/skills/debug/SKILL.tmpl +1 -1
- package/skills/design-spec/SKILL.md +12 -11
- package/skills/discovery/SKILL.md +12 -11
- package/skills/prd/SKILL.md +14 -14
- package/skills/setup-ai-first/SKILL.md +7 -7
- package/skills/spec/SKILL.md +14 -14
- package/skills/test/SKILL.md +40 -38
- package/skills/test/SKILL.tmpl +9 -9
- package/steps/capture-lesson.md +1 -1
- package/steps/context-loader.md +5 -4
- package/steps/report-footer.md +7 -7
- package/steps/review-fanout.md +138 -0
- package/steps/spawn-agent.md +1 -1
- package/steps/trace-mirror.md +18 -0
- package/templates/design-spec.template.md +16 -8
- package/templates/product-definition.template.md +3 -3
- package/templates/project-context.yaml +4 -1
|
@@ -190,7 +190,7 @@ If `services` section is present:
|
|
|
190
190
|
|
|
191
191
|
**2. Route to service** — if active domain matches a key in `services`:
|
|
192
192
|
- Override `paths.specs_dir` → `services.{domain}.specs_dir`
|
|
193
|
-
- Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir`
|
|
193
|
+
- Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir` — **only if `setup.spec_source` is NOT set.** When `spec_source` IS set, the tech-design (API contract) is a cross-team artifact and must live in the shared spec repo (handled in step 4), so leave `tech_docs_dir` for step 4 to route — do NOT pin it per-service here.
|
|
194
194
|
- Store `active_service` = `services.{domain}.path`
|
|
195
195
|
- Store `active_service_module` = `services.{domain}.module`
|
|
196
196
|
- If service has its own `module` → use it as `active_module` (overrides `tech_stack.module`)
|
|
@@ -202,13 +202,14 @@ If `services` section is present:
|
|
|
202
202
|
**4. Spec source auto-override** — if `setup.spec_source` is set AND the corresponding path was not already explicitly set in `paths:`:
|
|
203
203
|
- Override `paths.prd_dir` → `{spec_source}/specs/prd`
|
|
204
204
|
- Override `paths.design_spec_dir` → `{spec_source}/specs/design-spec`
|
|
205
|
+
- Override `paths.tech_docs_dir` → `{spec_source}/specs/tech-docs` — **always when `spec_source` is set** (step 2 no longer pins tech-docs per-service in this case). The tech-design IS the cross-team API contract: BE authors it here, and FE/App read it from the same spec submodule at `/generate-code --phase=integration`. *(Per-service tech-docs only happen when there is no `spec_source` — a pure multi-service BE repo with no shared spec module.)*
|
|
205
206
|
- Override `paths.domain_knowledge_dir` → `{spec_source}/specs/domain-knowledge`
|
|
206
207
|
- Override `paths.business_dictionary` → `{spec_source}/specs/domain-knowledge/business-dictionary.md`
|
|
207
208
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
208
209
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
209
210
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
210
211
|
|
|
211
|
-
> **Why under `spec_source`:**
|
|
212
|
+
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
|
|
212
213
|
|
|
213
214
|
---
|
|
214
215
|
|
|
@@ -232,7 +233,7 @@ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-
|
|
|
232
233
|
| `paths.specs_dir` | `{active_service}/{service paths.specs_dir}` (if set in service config, else keep Step 1.5 override) |
|
|
233
234
|
|
|
234
235
|
**3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
|
|
235
|
-
- Shell commands (`/run-
|
|
236
|
+
- Shell commands (`/dev-run-test`, `/dev-gen-test`) run **from within** `service_root`
|
|
236
237
|
- File write operations (test files, trace TSVs) use paths **relative to** `service_root`
|
|
237
238
|
|
|
238
239
|
**4. If service config not found** — keep umbrella defaults, still set `service_root = {active_service}` (path anchor is always needed even without a config override).
|
|
@@ -325,7 +326,7 @@ active_module = tech_stack.module (e.g. "java-spring", "react", "flutter")
|
|
|
325
326
|
|
|
326
327
|
If `tech_stack.module` is blank or not recognized → set `platform_type = "unknown"` and flag as ⚠️ in the Step 7 recap.
|
|
327
328
|
|
|
328
|
-
These two variables (`active_module`, `platform_type`) are the canonical source for all branching logic in commands that need platform-specific behavior (
|
|
329
|
+
These two variables (`active_module`, `platform_type`) are the canonical source for all branching logic in commands that need platform-specific behavior (dev-gen-test, debug, fix-bug, dev-smoke-test).
|
|
329
330
|
|
|
330
331
|
---
|
|
331
332
|
|
|
@@ -505,13 +506,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
505
506
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
506
507
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
507
508
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
508
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
509
|
-
| /
|
|
510
|
-
| /run-
|
|
511
|
-
| /run-
|
|
512
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
513
|
-
| /smoke-test | Create PR and link to ticket |
|
|
514
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
509
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
510
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
511
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
512
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
513
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
514
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
515
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
515
516
|
| /fix-bug | Create PR and link to ticket |
|
|
516
517
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
517
518
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
|
@@ -623,13 +624,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
623
624
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
624
625
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
625
626
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
626
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
627
|
-
| /
|
|
628
|
-
| /run-
|
|
629
|
-
| /run-
|
|
630
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
631
|
-
| /smoke-test | Create PR and link to ticket |
|
|
632
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
627
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
628
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
629
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
630
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
631
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
632
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
633
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
633
634
|
| /fix-bug | Create PR and link to ticket |
|
|
634
635
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
635
636
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
|
@@ -105,7 +105,7 @@ If `services` section is present:
|
|
|
105
105
|
|
|
106
106
|
**2. Route to service** — if active domain matches a key in `services`:
|
|
107
107
|
- Override `paths.specs_dir` → `services.{domain}.specs_dir`
|
|
108
|
-
- Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir`
|
|
108
|
+
- Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir` — **only if `setup.spec_source` is NOT set.** When `spec_source` IS set, the tech-design (API contract) is a cross-team artifact and must live in the shared spec repo (handled in step 4), so leave `tech_docs_dir` for step 4 to route — do NOT pin it per-service here.
|
|
109
109
|
- Store `active_service` = `services.{domain}.path`
|
|
110
110
|
- Store `active_service_module` = `services.{domain}.module`
|
|
111
111
|
- If service has its own `module` → use it as `active_module` (overrides `tech_stack.module`)
|
|
@@ -117,13 +117,14 @@ If `services` section is present:
|
|
|
117
117
|
**4. Spec source auto-override** — if `setup.spec_source` is set AND the corresponding path was not already explicitly set in `paths:`:
|
|
118
118
|
- Override `paths.prd_dir` → `{spec_source}/specs/prd`
|
|
119
119
|
- Override `paths.design_spec_dir` → `{spec_source}/specs/design-spec`
|
|
120
|
+
- Override `paths.tech_docs_dir` → `{spec_source}/specs/tech-docs` — **always when `spec_source` is set** (step 2 no longer pins tech-docs per-service in this case). The tech-design IS the cross-team API contract: BE authors it here, and FE/App read it from the same spec submodule at `/generate-code --phase=integration`. *(Per-service tech-docs only happen when there is no `spec_source` — a pure multi-service BE repo with no shared spec module.)*
|
|
120
121
|
- Override `paths.domain_knowledge_dir` → `{spec_source}/specs/domain-knowledge`
|
|
121
122
|
- Override `paths.business_dictionary` → `{spec_source}/specs/domain-knowledge/business-dictionary.md`
|
|
122
123
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
123
124
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
124
125
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
125
126
|
|
|
126
|
-
> **Why under `spec_source`:**
|
|
127
|
+
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
|
|
127
128
|
|
|
128
129
|
---
|
|
129
130
|
|
|
@@ -147,7 +148,7 @@ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-
|
|
|
147
148
|
| `paths.specs_dir` | `{active_service}/{service paths.specs_dir}` (if set in service config, else keep Step 1.5 override) |
|
|
148
149
|
|
|
149
150
|
**3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
|
|
150
|
-
- Shell commands (`/run-
|
|
151
|
+
- Shell commands (`/dev-run-test`, `/dev-gen-test`) run **from within** `service_root`
|
|
151
152
|
- File write operations (test files, trace TSVs) use paths **relative to** `service_root`
|
|
152
153
|
|
|
153
154
|
**4. If service config not found** — keep umbrella defaults, still set `service_root = {active_service}` (path anchor is always needed even without a config override).
|
|
@@ -240,7 +241,7 @@ active_module = tech_stack.module (e.g. "java-spring", "react", "flutter")
|
|
|
240
241
|
|
|
241
242
|
If `tech_stack.module` is blank or not recognized → set `platform_type = "unknown"` and flag as ⚠️ in the Step 7 recap.
|
|
242
243
|
|
|
243
|
-
These two variables (`active_module`, `platform_type`) are the canonical source for all branching logic in commands that need platform-specific behavior (
|
|
244
|
+
These two variables (`active_module`, `platform_type`) are the canonical source for all branching logic in commands that need platform-specific behavior (dev-gen-test, debug, fix-bug, dev-smoke-test).
|
|
244
245
|
|
|
245
246
|
---
|
|
246
247
|
|
|
@@ -443,13 +444,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
443
444
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
444
445
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
445
446
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
446
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
447
|
-
| /
|
|
448
|
-
| /run-
|
|
449
|
-
| /run-
|
|
450
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
451
|
-
| /smoke-test | Create PR and link to ticket |
|
|
452
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
447
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
448
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
449
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
450
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
451
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
452
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
453
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
453
454
|
| /fix-bug | Create PR and link to ticket |
|
|
454
455
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
455
456
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
|
@@ -587,13 +588,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
587
588
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
588
589
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
589
590
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
590
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
591
|
-
| /
|
|
592
|
-
| /run-
|
|
593
|
-
| /run-
|
|
594
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
595
|
-
| /smoke-test | Create PR and link to ticket |
|
|
596
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
591
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
592
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
593
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
594
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
595
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
596
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
597
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
597
598
|
| /fix-bug | Create PR and link to ticket |
|
|
598
599
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
599
600
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
|
@@ -646,7 +647,7 @@ Gaps:
|
|
|
646
647
|
|
|
647
648
|
Recommendations:
|
|
648
649
|
- /generate-code {UC-ID} SC2
|
|
649
|
-
- /
|
|
650
|
+
- /dev-gen-test {UC-ID}
|
|
650
651
|
- Re-run /generate-code {UC-ID} for drifted scenarios
|
|
651
652
|
```
|
|
652
653
|
|
|
@@ -688,13 +689,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
688
689
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
689
690
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
690
691
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
691
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
692
|
-
| /
|
|
693
|
-
| /run-
|
|
694
|
-
| /run-
|
|
695
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
696
|
-
| /smoke-test | Create PR and link to ticket |
|
|
697
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
692
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
693
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
694
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
695
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
696
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
697
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
698
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
698
699
|
| /fix-bug | Create PR and link to ticket |
|
|
699
700
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
700
701
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
|
@@ -179,7 +179,7 @@ If `services` section is present:
|
|
|
179
179
|
|
|
180
180
|
**2. Route to service** — if active domain matches a key in `services`:
|
|
181
181
|
- Override `paths.specs_dir` → `services.{domain}.specs_dir`
|
|
182
|
-
- Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir`
|
|
182
|
+
- Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir` — **only if `setup.spec_source` is NOT set.** When `spec_source` IS set, the tech-design (API contract) is a cross-team artifact and must live in the shared spec repo (handled in step 4), so leave `tech_docs_dir` for step 4 to route — do NOT pin it per-service here.
|
|
183
183
|
- Store `active_service` = `services.{domain}.path`
|
|
184
184
|
- Store `active_service_module` = `services.{domain}.module`
|
|
185
185
|
- If service has its own `module` → use it as `active_module` (overrides `tech_stack.module`)
|
|
@@ -191,13 +191,14 @@ If `services` section is present:
|
|
|
191
191
|
**4. Spec source auto-override** — if `setup.spec_source` is set AND the corresponding path was not already explicitly set in `paths:`:
|
|
192
192
|
- Override `paths.prd_dir` → `{spec_source}/specs/prd`
|
|
193
193
|
- Override `paths.design_spec_dir` → `{spec_source}/specs/design-spec`
|
|
194
|
+
- Override `paths.tech_docs_dir` → `{spec_source}/specs/tech-docs` — **always when `spec_source` is set** (step 2 no longer pins tech-docs per-service in this case). The tech-design IS the cross-team API contract: BE authors it here, and FE/App read it from the same spec submodule at `/generate-code --phase=integration`. *(Per-service tech-docs only happen when there is no `spec_source` — a pure multi-service BE repo with no shared spec module.)*
|
|
194
195
|
- Override `paths.domain_knowledge_dir` → `{spec_source}/specs/domain-knowledge`
|
|
195
196
|
- Override `paths.business_dictionary` → `{spec_source}/specs/domain-knowledge/business-dictionary.md`
|
|
196
197
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
197
198
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
198
199
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
199
200
|
|
|
200
|
-
> **Why under `spec_source`:**
|
|
201
|
+
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
|
|
201
202
|
|
|
202
203
|
---
|
|
203
204
|
|
|
@@ -221,7 +222,7 @@ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-
|
|
|
221
222
|
| `paths.specs_dir` | `{active_service}/{service paths.specs_dir}` (if set in service config, else keep Step 1.5 override) |
|
|
222
223
|
|
|
223
224
|
**3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
|
|
224
|
-
- Shell commands (`/run-
|
|
225
|
+
- Shell commands (`/dev-run-test`, `/dev-gen-test`) run **from within** `service_root`
|
|
225
226
|
- File write operations (test files, trace TSVs) use paths **relative to** `service_root`
|
|
226
227
|
|
|
227
228
|
**4. If service config not found** — keep umbrella defaults, still set `service_root = {active_service}` (path anchor is always needed even without a config override).
|
|
@@ -314,7 +315,7 @@ active_module = tech_stack.module (e.g. "java-spring", "react", "flutter")
|
|
|
314
315
|
|
|
315
316
|
If `tech_stack.module` is blank or not recognized → set `platform_type = "unknown"` and flag as ⚠️ in the Step 7 recap.
|
|
316
317
|
|
|
317
|
-
These two variables (`active_module`, `platform_type`) are the canonical source for all branching logic in commands that need platform-specific behavior (
|
|
318
|
+
These two variables (`active_module`, `platform_type`) are the canonical source for all branching logic in commands that need platform-specific behavior (dev-gen-test, debug, fix-bug, dev-smoke-test).
|
|
318
319
|
|
|
319
320
|
---
|
|
320
321
|
|
|
@@ -472,13 +473,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
472
473
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
473
474
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
474
475
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
475
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
476
|
-
| /
|
|
477
|
-
| /run-
|
|
478
|
-
| /run-
|
|
479
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
480
|
-
| /smoke-test | Create PR and link to ticket |
|
|
481
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
476
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
477
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
478
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
479
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
480
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
481
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
482
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
482
483
|
| /fix-bug | Create PR and link to ticket |
|
|
483
484
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
484
485
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
|
@@ -84,7 +84,7 @@ If `services` section is present:
|
|
|
84
84
|
|
|
85
85
|
**2. Route to service** — if active domain matches a key in `services`:
|
|
86
86
|
- Override `paths.specs_dir` → `services.{domain}.specs_dir`
|
|
87
|
-
- Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir`
|
|
87
|
+
- Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir` — **only if `setup.spec_source` is NOT set.** When `spec_source` IS set, the tech-design (API contract) is a cross-team artifact and must live in the shared spec repo (handled in step 4), so leave `tech_docs_dir` for step 4 to route — do NOT pin it per-service here.
|
|
88
88
|
- Store `active_service` = `services.{domain}.path`
|
|
89
89
|
- Store `active_service_module` = `services.{domain}.module`
|
|
90
90
|
- If service has its own `module` → use it as `active_module` (overrides `tech_stack.module`)
|
|
@@ -96,13 +96,14 @@ If `services` section is present:
|
|
|
96
96
|
**4. Spec source auto-override** — if `setup.spec_source` is set AND the corresponding path was not already explicitly set in `paths:`:
|
|
97
97
|
- Override `paths.prd_dir` → `{spec_source}/specs/prd`
|
|
98
98
|
- Override `paths.design_spec_dir` → `{spec_source}/specs/design-spec`
|
|
99
|
+
- Override `paths.tech_docs_dir` → `{spec_source}/specs/tech-docs` — **always when `spec_source` is set** (step 2 no longer pins tech-docs per-service in this case). The tech-design IS the cross-team API contract: BE authors it here, and FE/App read it from the same spec submodule at `/generate-code --phase=integration`. *(Per-service tech-docs only happen when there is no `spec_source` — a pure multi-service BE repo with no shared spec module.)*
|
|
99
100
|
- Override `paths.domain_knowledge_dir` → `{spec_source}/specs/domain-knowledge`
|
|
100
101
|
- Override `paths.business_dictionary` → `{spec_source}/specs/domain-knowledge/business-dictionary.md`
|
|
101
102
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
102
103
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
103
104
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
104
105
|
|
|
105
|
-
> **Why under `spec_source`:**
|
|
106
|
+
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
|
|
106
107
|
|
|
107
108
|
---
|
|
108
109
|
|
|
@@ -126,7 +127,7 @@ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-
|
|
|
126
127
|
| `paths.specs_dir` | `{active_service}/{service paths.specs_dir}` (if set in service config, else keep Step 1.5 override) |
|
|
127
128
|
|
|
128
129
|
**3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
|
|
129
|
-
- Shell commands (`/run-
|
|
130
|
+
- Shell commands (`/dev-run-test`, `/dev-gen-test`) run **from within** `service_root`
|
|
130
131
|
- File write operations (test files, trace TSVs) use paths **relative to** `service_root`
|
|
131
132
|
|
|
132
133
|
**4. If service config not found** — keep umbrella defaults, still set `service_root = {active_service}` (path anchor is always needed even without a config override).
|
|
@@ -219,7 +220,7 @@ active_module = tech_stack.module (e.g. "java-spring", "react", "flutter")
|
|
|
219
220
|
|
|
220
221
|
If `tech_stack.module` is blank or not recognized → set `platform_type = "unknown"` and flag as ⚠️ in the Step 7 recap.
|
|
221
222
|
|
|
222
|
-
These two variables (`active_module`, `platform_type`) are the canonical source for all branching logic in commands that need platform-specific behavior (
|
|
223
|
+
These two variables (`active_module`, `platform_type`) are the canonical source for all branching logic in commands that need platform-specific behavior (dev-gen-test, debug, fix-bug, dev-smoke-test).
|
|
223
224
|
|
|
224
225
|
---
|
|
225
226
|
|
|
@@ -453,13 +454,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
453
454
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
454
455
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
455
456
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
456
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
457
|
-
| /
|
|
458
|
-
| /run-
|
|
459
|
-
| /run-
|
|
460
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
461
|
-
| /smoke-test | Create PR and link to ticket |
|
|
462
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
457
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
458
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
459
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
460
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
461
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
462
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
463
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
463
464
|
| /fix-bug | Create PR and link to ticket |
|
|
464
465
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
465
466
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
package/core/skills/prd/SKILL.md
CHANGED
|
@@ -196,13 +196,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
196
196
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
197
197
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
198
198
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
199
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
200
|
-
| /
|
|
201
|
-
| /run-
|
|
202
|
-
| /run-
|
|
203
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
204
|
-
| /smoke-test | Create PR and link to ticket |
|
|
205
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
199
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
200
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
201
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
202
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
203
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
204
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
205
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
206
206
|
| /fix-bug | Create PR and link to ticket |
|
|
207
207
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
208
208
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
|
@@ -445,13 +445,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
445
445
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
446
446
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
447
447
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
448
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
449
|
-
| /
|
|
450
|
-
| /run-
|
|
451
|
-
| /run-
|
|
452
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
453
|
-
| /smoke-test | Create PR and link to ticket |
|
|
454
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
448
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
449
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
450
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
451
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
452
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
453
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
454
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
455
455
|
| /fix-bug | Create PR and link to ticket |
|
|
456
456
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
457
457
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
|
@@ -142,13 +142,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
142
142
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
143
143
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
144
144
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
145
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
146
|
-
| /
|
|
147
|
-
| /run-
|
|
148
|
-
| /run-
|
|
149
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
150
|
-
| /smoke-test | Create PR and link to ticket |
|
|
151
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
145
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
146
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
147
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
148
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
149
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
150
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
151
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
152
152
|
| /fix-bug | Create PR and link to ticket |
|
|
153
153
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
154
154
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
|
@@ -213,13 +213,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
213
213
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
214
214
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
215
215
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
216
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
217
|
-
| /
|
|
218
|
-
| /run-
|
|
219
|
-
| /run-
|
|
220
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
221
|
-
| /smoke-test | Create PR and link to ticket |
|
|
222
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
216
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
217
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
218
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
219
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
220
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
221
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
222
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
223
223
|
| /fix-bug | Create PR and link to ticket |
|
|
224
224
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
225
225
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|
|
@@ -350,13 +350,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
350
350
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
351
351
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
352
352
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
353
|
-
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/
|
|
354
|
-
| /
|
|
355
|
-
| /run-
|
|
356
|
-
| /run-
|
|
357
|
-
| /review-code | `/smoke-test {UC-ID}` or create PR |
|
|
358
|
-
| /smoke-test | Create PR and link to ticket |
|
|
359
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/
|
|
353
|
+
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
354
|
+
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
355
|
+
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
356
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
|
|
357
|
+
| /review-code | `/dev-smoke-test {UC-ID}` or create PR |
|
|
358
|
+
| /dev-smoke-test | Create PR and link to ticket |
|
|
359
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
|
|
360
360
|
| /fix-bug | Create PR and link to ticket |
|
|
361
361
|
| /debug | `/fix-bug {ticket-id}` if fix needed |
|
|
362
362
|
| /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
|