@anhth2/spec-driven-dev-plugin 0.10.0 → 0.11.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/commands/debug.md +38 -8
- package/commands/define-product.md +38 -8
- package/commands/dev-gen-test.md +39 -9
- package/commands/dev-gen-test.tmpl +1 -1
- package/commands/dev-run-test.md +43 -10
- package/commands/dev-run-test.tmpl +5 -2
- package/commands/dev-smoke-test.md +38 -8
- package/commands/fix-bug.md +38 -8
- package/commands/generate-bdd.md +42 -10
- package/commands/generate-bdd.tmpl +4 -2
- package/commands/generate-code.md +39 -9
- package/commands/generate-code.tmpl +1 -1
- package/commands/generate-design-spec.md +38 -8
- package/commands/generate-prd.md +38 -8
- package/commands/generate-spec-manifest.md +38 -8
- package/commands/generate-tech-docs.md +38 -8
- package/commands/learn.md +38 -8
- package/commands/propose-scenario.md +38 -8
- package/commands/qc-analyze.md +514 -0
- package/commands/qc-analyze.tmpl +71 -0
- package/commands/qc-design-test.md +510 -0
- package/commands/qc-design-test.tmpl +67 -0
- package/commands/qc-plan.md +492 -0
- package/commands/qc-plan.tmpl +49 -0
- package/commands/qc-report.md +491 -0
- package/commands/qc-report.tmpl +48 -0
- package/commands/qc-review.md +496 -0
- package/commands/qc-review.tmpl +53 -0
- package/commands/qc-run-test.md +538 -0
- package/commands/qc-run-test.tmpl +77 -0
- package/commands/refine-prd.md +38 -8
- package/commands/report-bug.md +38 -8
- package/commands/review-code.md +38 -8
- package/commands/review-context.md +38 -8
- package/commands/review-tech-docs.md +38 -8
- package/commands/setup-ai-first.md +7 -0
- package/commands/sync.md +7 -0
- package/commands/update-framework.md +7 -0
- package/commands/validate-traces.md +54 -12
- package/commands/validate-traces.tmpl +16 -4
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +38 -8
- package/core/commands/define-product.md +38 -8
- package/core/commands/dev-gen-test.md +39 -9
- package/core/commands/dev-run-test.md +43 -10
- package/core/commands/dev-smoke-test.md +38 -8
- package/core/commands/fix-bug.md +38 -8
- package/core/commands/generate-bdd.md +42 -10
- package/core/commands/generate-code.md +39 -9
- package/core/commands/generate-design-spec.md +38 -8
- package/core/commands/generate-prd.md +38 -8
- package/core/commands/generate-spec-manifest.md +38 -8
- package/core/commands/generate-tech-docs.md +38 -8
- package/core/commands/learn.md +38 -8
- package/core/commands/propose-scenario.md +38 -8
- package/core/commands/qc-analyze.md +514 -0
- package/core/commands/qc-design-test.md +510 -0
- package/core/commands/qc-plan.md +492 -0
- package/core/commands/qc-report.md +491 -0
- package/core/commands/qc-review.md +496 -0
- package/core/commands/qc-run-test.md +538 -0
- package/core/commands/refine-prd.md +38 -8
- package/core/commands/report-bug.md +38 -8
- package/core/commands/review-code.md +38 -8
- package/core/commands/review-context.md +38 -8
- package/core/commands/review-tech-docs.md +38 -8
- package/core/commands/setup-ai-first.md +7 -0
- package/core/commands/sync.md +7 -0
- package/core/commands/update-framework.md +7 -0
- package/core/commands/validate-traces.md +54 -12
- package/core/modules/qc-playwright/stack-profile.yaml +65 -0
- package/core/skills/code/SKILL.md +45 -8
- package/core/skills/debug/SKILL.md +52 -8
- package/core/skills/design-spec/SKILL.md +38 -8
- package/core/skills/discovery/SKILL.md +38 -8
- package/core/skills/prd/SKILL.md +14 -0
- package/core/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
- package/core/skills/qc/qa-analyst/acceptance-criteria.md +56 -0
- package/core/skills/qc/qa-analyst/business-rules.md +55 -0
- package/core/skills/qc/qa-analyst/data-flow.md +60 -0
- package/core/skills/qc/qa-analyst/spec-breakdown.md +57 -0
- package/core/skills/qc/qa-designer/e2e/journey.md +41 -0
- package/core/skills/qc/qa-designer/exploratory/charter.md +68 -0
- package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
- package/core/skills/qc/qa-designer/functional/api.md +45 -0
- package/core/skills/qc/qa-designer/functional/gui-feature.md +46 -0
- package/core/skills/qc/qa-designer/functional/gui-screen.md +52 -0
- package/core/skills/qc/qa-designer/integration/api.md +42 -0
- package/core/skills/qc/qa-designer/integration/db.md +39 -0
- package/core/skills/qc/qa-designer/integration/gui.md +40 -0
- package/core/skills/qc/qa-designer/integration/kafka.md +40 -0
- package/core/skills/qc/qa-designer/non-functional.md +40 -0
- package/core/skills/qc/qa-planner/test-plan.md +120 -0
- package/core/skills/qc/qa-reviewer/script/e2e.md +87 -0
- package/core/skills/qc/qa-reviewer/script/exploratory.md +45 -0
- package/core/skills/qc/qa-reviewer/script/functional.md +101 -0
- package/core/skills/qc/qa-reviewer/script/integration.md +91 -0
- package/core/skills/qc/qa-reviewer/script/non-functional.md +126 -0
- package/core/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
- package/core/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
- package/core/skills/qc/qa-reviewer/test-case/functional.md +76 -0
- package/core/skills/qc/qa-reviewer/test-case/integration.md +69 -0
- package/core/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
- package/core/skills/qc/qa-runner/e2e.md +49 -0
- package/core/skills/qc/qa-runner/exploratory/session.md +36 -0
- package/core/skills/qc/qa-runner/functional/api.md +35 -0
- package/core/skills/qc/qa-runner/functional/gui-feature.md +51 -0
- package/core/skills/qc/qa-runner/functional/gui-screen.md +55 -0
- package/core/skills/qc/qa-runner/integration.md +47 -0
- package/core/skills/qc/qa-runner/non-functional.md +49 -0
- package/core/skills/qc/qa-runner/report/report.md +37 -0
- package/core/skills/setup-ai-first/SKILL.md +7 -0
- package/core/skills/spec/SKILL.md +14 -0
- package/core/skills/test/SKILL.md +83 -16
- package/core/steps/context-loader.md +31 -8
- package/core/steps/report-footer.md +7 -0
- package/core/templates/project-context.yaml +8 -0
- package/docs/01-getting-started/README.md +19 -0
- package/docs/01-getting-started/core-concepts.md +102 -0
- package/docs/01-getting-started/installation.md +154 -0
- package/docs/01-getting-started/quickstart.md +85 -0
- package/docs/02-guides/README.md +27 -0
- package/docs/02-guides/developer/README.md +46 -0
- package/docs/02-guides/developer/bdd-and-trace.md +123 -0
- package/docs/02-guides/developer/commands.md +76 -0
- package/docs/02-guides/developer/pr-checklist.md +15 -0
- package/docs/02-guides/developer/scenarios.md +448 -0
- package/docs/02-guides/developer/workflow.md +59 -0
- package/docs/02-guides/product-owner/README.md +77 -0
- package/docs/02-guides/product-owner/commands.md +30 -0
- package/docs/02-guides/product-owner/handoff-checklist.md +42 -0
- package/docs/02-guides/product-owner/prd-writing-rules.md +45 -0
- package/docs/02-guides/product-owner/scenarios.md +357 -0
- package/docs/02-guides/qc-automation.md +92 -0
- package/docs/02-guides/tester/README.md +72 -0
- package/docs/02-guides/tester/bug-reporting.md +117 -0
- package/docs/02-guides/tester/reading-specs.md +79 -0
- package/docs/02-guides/tester/scenarios.md +186 -0
- package/docs/02-guides/tester/spec-manifest.md +124 -0
- package/docs/02-guides/tester/test-checklist.md +31 -0
- package/docs/02-guides/tester/workflow.md +79 -0
- package/docs/03-concepts/README.md +19 -0
- package/docs/03-concepts/architecture.md +243 -0
- package/docs/03-concepts/pipeline.md +249 -0
- package/docs/03-concepts/traceability.md +148 -0
- package/docs/04-operations/README.md +33 -0
- package/docs/04-operations/bug-flow.md +321 -0
- package/docs/04-operations/publishing.md +137 -0
- package/docs/04-operations/sync-and-update.md +328 -0
- package/docs/05-reference/README.md +29 -0
- package/docs/05-reference/commands.md +229 -0
- package/docs/05-reference/modules.md +110 -0
- package/docs/05-reference/trace-schema.md +146 -0
- package/docs/README.md +51 -0
- package/modules/qc-playwright/stack-profile.yaml +65 -0
- package/package.json +2 -2
- package/skills/code/SKILL.md +45 -8
- package/skills/debug/SKILL.md +52 -8
- package/skills/design-spec/SKILL.md +38 -8
- package/skills/discovery/SKILL.md +38 -8
- package/skills/prd/SKILL.md +14 -0
- package/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
- package/skills/qc/qa-analyst/acceptance-criteria.md +56 -0
- package/skills/qc/qa-analyst/business-rules.md +55 -0
- package/skills/qc/qa-analyst/data-flow.md +60 -0
- package/skills/qc/qa-analyst/spec-breakdown.md +57 -0
- package/skills/qc/qa-designer/e2e/journey.md +41 -0
- package/skills/qc/qa-designer/exploratory/charter.md +68 -0
- package/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
- package/skills/qc/qa-designer/functional/api.md +45 -0
- package/skills/qc/qa-designer/functional/gui-feature.md +46 -0
- package/skills/qc/qa-designer/functional/gui-screen.md +52 -0
- package/skills/qc/qa-designer/integration/api.md +42 -0
- package/skills/qc/qa-designer/integration/db.md +39 -0
- package/skills/qc/qa-designer/integration/gui.md +40 -0
- package/skills/qc/qa-designer/integration/kafka.md +40 -0
- package/skills/qc/qa-designer/non-functional.md +40 -0
- package/skills/qc/qa-planner/test-plan.md +120 -0
- package/skills/qc/qa-reviewer/script/e2e.md +87 -0
- package/skills/qc/qa-reviewer/script/exploratory.md +45 -0
- package/skills/qc/qa-reviewer/script/functional.md +101 -0
- package/skills/qc/qa-reviewer/script/integration.md +91 -0
- package/skills/qc/qa-reviewer/script/non-functional.md +126 -0
- package/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
- package/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
- package/skills/qc/qa-reviewer/test-case/functional.md +76 -0
- package/skills/qc/qa-reviewer/test-case/integration.md +69 -0
- package/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
- package/skills/qc/qa-runner/e2e.md +49 -0
- package/skills/qc/qa-runner/exploratory/session.md +36 -0
- package/skills/qc/qa-runner/functional/api.md +35 -0
- package/skills/qc/qa-runner/functional/gui-feature.md +51 -0
- package/skills/qc/qa-runner/functional/gui-screen.md +55 -0
- package/skills/qc/qa-runner/integration.md +47 -0
- package/skills/qc/qa-runner/non-functional.md +49 -0
- package/skills/qc/qa-runner/report/report.md +37 -0
- package/skills/setup-ai-first/SKILL.md +7 -0
- package/skills/spec/SKILL.md +14 -0
- package/skills/test/SKILL.md +83 -16
- package/steps/context-loader.md +31 -8
- package/steps/report-footer.md +7 -0
- package/templates/project-context.yaml +8 -0
- package/ARCHITECTURE.md +0 -258
package/core/commands/debug.md
CHANGED
|
@@ -224,19 +224,41 @@ If the file does not exist → skip silently.
|
|
|
224
224
|
|
|
225
225
|
---
|
|
226
226
|
|
|
227
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
227
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
228
228
|
|
|
229
229
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
230
230
|
|
|
231
|
-
|
|
231
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
232
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
233
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
234
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
235
|
+
|
|
236
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
237
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
238
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
239
|
+
single-service mode) the project's only architecture + coding standards.
|
|
240
|
+
|
|
241
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
242
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
243
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
244
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
245
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
246
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
247
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
248
|
+
|
|
249
|
+
From the **merged** result, extract and store:
|
|
232
250
|
|
|
233
251
|
- **§1 Project Overview** → project name, language, framework, build/test commands, domains
|
|
234
|
-
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules
|
|
235
|
-
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns
|
|
236
|
-
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name
|
|
237
|
-
- **§7 Git Conventions** → branch naming pattern, commit message format
|
|
252
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
253
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
254
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
255
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
238
256
|
|
|
239
|
-
|
|
257
|
+
**Resolution rules:**
|
|
258
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
259
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
260
|
+
- If `service_root` is set but `{service_root}/CLAUDE.md` is **missing** → fall back to root CLAUDE.md and flag ⚠️ in the Step 7 recap (the service has no architecture/coding-standards definition — code generation will use umbrella defaults, which may be the wrong stack).
|
|
261
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
240
262
|
|
|
241
263
|
---
|
|
242
264
|
|
|
@@ -336,7 +358,8 @@ Output exactly this block:
|
|
|
336
358
|
[CTX LOADED]
|
|
337
359
|
Stack : {language} / {framework} / {database}
|
|
338
360
|
Platform : {active_module} ({platform_type})
|
|
339
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
361
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
362
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
340
363
|
Ticket : {ticket_prefix}-
|
|
341
364
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
342
365
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -604,6 +627,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
604
627
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
605
628
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
606
629
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
630
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
631
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
632
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
633
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
634
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
635
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
636
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
607
637
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
608
638
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
609
639
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
@@ -221,19 +221,41 @@ If the file does not exist → skip silently.
|
|
|
221
221
|
|
|
222
222
|
---
|
|
223
223
|
|
|
224
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
224
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
225
225
|
|
|
226
226
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
227
227
|
|
|
228
|
-
|
|
228
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
229
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
230
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
231
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
232
|
+
|
|
233
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
234
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
235
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
236
|
+
single-service mode) the project's only architecture + coding standards.
|
|
237
|
+
|
|
238
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
239
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
240
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
241
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
242
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
243
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
244
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
245
|
+
|
|
246
|
+
From the **merged** result, extract and store:
|
|
229
247
|
|
|
230
248
|
- **§1 Project Overview** → project name, language, framework, build/test commands, domains
|
|
231
|
-
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules
|
|
232
|
-
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns
|
|
233
|
-
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name
|
|
234
|
-
- **§7 Git Conventions** → branch naming pattern, commit message format
|
|
249
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
250
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
251
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
252
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
235
253
|
|
|
236
|
-
|
|
254
|
+
**Resolution rules:**
|
|
255
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
256
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
257
|
+
- If `service_root` is set but `{service_root}/CLAUDE.md` is **missing** → fall back to root CLAUDE.md and flag ⚠️ in the Step 7 recap (the service has no architecture/coding-standards definition — code generation will use umbrella defaults, which may be the wrong stack).
|
|
258
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
237
259
|
|
|
238
260
|
---
|
|
239
261
|
|
|
@@ -333,7 +355,8 @@ Output exactly this block:
|
|
|
333
355
|
[CTX LOADED]
|
|
334
356
|
Stack : {language} / {framework} / {database}
|
|
335
357
|
Platform : {active_module} ({platform_type})
|
|
336
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
358
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
359
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
337
360
|
Ticket : {ticket_prefix}-
|
|
338
361
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
339
362
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -538,6 +561,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
538
561
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
539
562
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
540
563
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
564
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
565
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
566
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
567
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
568
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
569
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
570
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
541
571
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
542
572
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
543
573
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
@@ -227,19 +227,41 @@ If the file does not exist → skip silently.
|
|
|
227
227
|
|
|
228
228
|
---
|
|
229
229
|
|
|
230
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
230
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
231
231
|
|
|
232
232
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
233
233
|
|
|
234
|
-
|
|
234
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
235
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
236
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
237
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
238
|
+
|
|
239
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
240
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
241
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
242
|
+
single-service mode) the project's only architecture + coding standards.
|
|
243
|
+
|
|
244
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
245
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
246
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
247
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
248
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
249
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
250
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
251
|
+
|
|
252
|
+
From the **merged** result, extract and store:
|
|
235
253
|
|
|
236
254
|
- **§1 Project Overview** → project name, language, framework, build/test commands, domains
|
|
237
|
-
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules
|
|
238
|
-
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns
|
|
239
|
-
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name
|
|
240
|
-
- **§7 Git Conventions** → branch naming pattern, commit message format
|
|
255
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
256
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
257
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
258
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
241
259
|
|
|
242
|
-
|
|
260
|
+
**Resolution rules:**
|
|
261
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
262
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
263
|
+
- If `service_root` is set but `{service_root}/CLAUDE.md` is **missing** → fall back to root CLAUDE.md and flag ⚠️ in the Step 7 recap (the service has no architecture/coding-standards definition — code generation will use umbrella defaults, which may be the wrong stack).
|
|
264
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
243
265
|
|
|
244
266
|
---
|
|
245
267
|
|
|
@@ -339,7 +361,8 @@ Output exactly this block:
|
|
|
339
361
|
[CTX LOADED]
|
|
340
362
|
Stack : {language} / {framework} / {database}
|
|
341
363
|
Platform : {active_module} ({platform_type})
|
|
342
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
364
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
365
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
343
366
|
Ticket : {ticket_prefix}-
|
|
344
367
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
345
368
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -819,7 +842,7 @@ After generating all test files, update `{paths.trace_dir}/{UC-ID}.tsv` — for
|
|
|
819
842
|
| `dev_selftest` | `not_run` (tests now exist but have not been executed — `/dev-run-test` sets pass/fail) |
|
|
820
843
|
| `last_updated` | today `YYYY-MM-DD` |
|
|
821
844
|
|
|
822
|
-
Leave all other columns unchanged (including `dev_selftest_at`, which `/dev-run-test` owns).
|
|
845
|
+
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).
|
|
823
846
|
|
|
824
847
|
---
|
|
825
848
|
|
|
@@ -884,6 +907,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
884
907
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
885
908
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
886
909
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
910
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
911
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
912
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
913
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
914
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
915
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
916
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
887
917
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
888
918
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
889
919
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
@@ -227,19 +227,41 @@ If the file does not exist → skip silently.
|
|
|
227
227
|
|
|
228
228
|
---
|
|
229
229
|
|
|
230
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
230
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
231
231
|
|
|
232
232
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
233
233
|
|
|
234
|
-
|
|
234
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
235
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
236
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
237
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
238
|
+
|
|
239
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
240
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
241
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
242
|
+
single-service mode) the project's only architecture + coding standards.
|
|
243
|
+
|
|
244
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
245
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
246
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
247
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
248
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
249
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
250
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
251
|
+
|
|
252
|
+
From the **merged** result, extract and store:
|
|
235
253
|
|
|
236
254
|
- **§1 Project Overview** → project name, language, framework, build/test commands, domains
|
|
237
|
-
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules
|
|
238
|
-
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns
|
|
239
|
-
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name
|
|
240
|
-
- **§7 Git Conventions** → branch naming pattern, commit message format
|
|
255
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
256
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
257
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
258
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
241
259
|
|
|
242
|
-
|
|
260
|
+
**Resolution rules:**
|
|
261
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
262
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
263
|
+
- If `service_root` is set but `{service_root}/CLAUDE.md` is **missing** → fall back to root CLAUDE.md and flag ⚠️ in the Step 7 recap (the service has no architecture/coding-standards definition — code generation will use umbrella defaults, which may be the wrong stack).
|
|
264
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
243
265
|
|
|
244
266
|
---
|
|
245
267
|
|
|
@@ -339,7 +361,8 @@ Output exactly this block:
|
|
|
339
361
|
[CTX LOADED]
|
|
340
362
|
Stack : {language} / {framework} / {database}
|
|
341
363
|
Platform : {active_module} ({platform_type})
|
|
342
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
364
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
365
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
343
366
|
Ticket : {ticket_prefix}-
|
|
344
367
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
345
368
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -543,8 +566,11 @@ test's `@trace.verifies={UC-ID}-SC{N}` tag):
|
|
|
543
566
|
| `dev_selftest` | `pass` if all tests for this SC passed · `fail` if any failed · `not_run` if its tests were skipped/absent |
|
|
544
567
|
| `dev_selftest_at` | today `YYYY-MM-DD` |
|
|
545
568
|
|
|
546
|
-
Leave all other columns unchanged
|
|
547
|
-
(
|
|
569
|
+
Leave all other columns unchanged — in particular **never** touch `qc_status`/`qc_run_at`
|
|
570
|
+
(the official QC automation result, owned by `/qc-run-test`). `dev_selftest` (dev smoke)
|
|
571
|
+
and `qc_status` (official QC) are separate
|
|
572
|
+
signals. `dev_selftest`/`dev_selftest_at` are also orthogonal to `status`
|
|
573
|
+
(OK/GAP/DRIFT/UNTRACKED): `status` tracks *coverage*, `dev_selftest` tracks the dev's latest *run result*.
|
|
548
574
|
|
|
549
575
|
## Refresh Panel Mirror
|
|
550
576
|
# Refresh Living Docs panel mirror *(local, umbrella mode)*
|
|
@@ -605,6 +631,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
605
631
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
606
632
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
607
633
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
634
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
635
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
636
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
637
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
638
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
639
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
640
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
608
641
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
609
642
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
610
643
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
@@ -223,19 +223,41 @@ If the file does not exist → skip silently.
|
|
|
223
223
|
|
|
224
224
|
---
|
|
225
225
|
|
|
226
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
226
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
227
227
|
|
|
228
228
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
229
229
|
|
|
230
|
-
|
|
230
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
231
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
232
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
233
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
234
|
+
|
|
235
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
236
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
237
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
238
|
+
single-service mode) the project's only architecture + coding standards.
|
|
239
|
+
|
|
240
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
241
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
242
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
243
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
244
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
245
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
246
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
247
|
+
|
|
248
|
+
From the **merged** result, extract and store:
|
|
231
249
|
|
|
232
250
|
- **§1 Project Overview** → project name, language, framework, build/test commands, domains
|
|
233
|
-
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules
|
|
234
|
-
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns
|
|
235
|
-
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name
|
|
236
|
-
- **§7 Git Conventions** → branch naming pattern, commit message format
|
|
251
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
252
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
253
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
254
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
237
255
|
|
|
238
|
-
|
|
256
|
+
**Resolution rules:**
|
|
257
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
258
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
259
|
+
- If `service_root` is set but `{service_root}/CLAUDE.md` is **missing** → fall back to root CLAUDE.md and flag ⚠️ in the Step 7 recap (the service has no architecture/coding-standards definition — code generation will use umbrella defaults, which may be the wrong stack).
|
|
260
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
239
261
|
|
|
240
262
|
---
|
|
241
263
|
|
|
@@ -335,7 +357,8 @@ Output exactly this block:
|
|
|
335
357
|
[CTX LOADED]
|
|
336
358
|
Stack : {language} / {framework} / {database}
|
|
337
359
|
Platform : {active_module} ({platform_type})
|
|
338
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
360
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
361
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
339
362
|
Ticket : {ticket_prefix}-
|
|
340
363
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
341
364
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -590,6 +613,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
590
613
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
591
614
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
592
615
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
616
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
617
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
618
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
619
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
620
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
621
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
622
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
593
623
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
594
624
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
595
625
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
package/core/commands/fix-bug.md
CHANGED
|
@@ -221,19 +221,41 @@ If the file does not exist → skip silently.
|
|
|
221
221
|
|
|
222
222
|
---
|
|
223
223
|
|
|
224
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
224
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
225
225
|
|
|
226
226
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
227
227
|
|
|
228
|
-
|
|
228
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
229
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
230
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
231
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
232
|
+
|
|
233
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
234
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
235
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
236
|
+
single-service mode) the project's only architecture + coding standards.
|
|
237
|
+
|
|
238
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
239
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
240
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
241
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
242
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
243
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
244
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
245
|
+
|
|
246
|
+
From the **merged** result, extract and store:
|
|
229
247
|
|
|
230
248
|
- **§1 Project Overview** → project name, language, framework, build/test commands, domains
|
|
231
|
-
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules
|
|
232
|
-
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns
|
|
233
|
-
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name
|
|
234
|
-
- **§7 Git Conventions** → branch naming pattern, commit message format
|
|
249
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
250
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
251
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
252
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
235
253
|
|
|
236
|
-
|
|
254
|
+
**Resolution rules:**
|
|
255
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
256
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
257
|
+
- If `service_root` is set but `{service_root}/CLAUDE.md` is **missing** → fall back to root CLAUDE.md and flag ⚠️ in the Step 7 recap (the service has no architecture/coding-standards definition — code generation will use umbrella defaults, which may be the wrong stack).
|
|
258
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
237
259
|
|
|
238
260
|
---
|
|
239
261
|
|
|
@@ -333,7 +355,8 @@ Output exactly this block:
|
|
|
333
355
|
[CTX LOADED]
|
|
334
356
|
Stack : {language} / {framework} / {database}
|
|
335
357
|
Platform : {active_module} ({platform_type})
|
|
336
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
358
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
359
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
337
360
|
Ticket : {ticket_prefix}-
|
|
338
361
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
339
362
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -596,6 +619,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
596
619
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
597
620
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
598
621
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
622
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
623
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
624
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
625
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
626
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
627
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
628
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
599
629
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
600
630
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
601
631
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
@@ -219,19 +219,41 @@ If the file does not exist → skip silently.
|
|
|
219
219
|
|
|
220
220
|
---
|
|
221
221
|
|
|
222
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
222
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
223
223
|
|
|
224
224
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
225
225
|
|
|
226
|
-
|
|
226
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
227
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
228
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
229
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
230
|
+
|
|
231
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
232
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
233
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
234
|
+
single-service mode) the project's only architecture + coding standards.
|
|
235
|
+
|
|
236
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
237
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
238
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
239
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
240
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
241
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
242
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
243
|
+
|
|
244
|
+
From the **merged** result, extract and store:
|
|
227
245
|
|
|
228
246
|
- **§1 Project Overview** → project name, language, framework, build/test commands, domains
|
|
229
|
-
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules
|
|
230
|
-
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns
|
|
231
|
-
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name
|
|
232
|
-
- **§7 Git Conventions** → branch naming pattern, commit message format
|
|
247
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
248
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
249
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
250
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
233
251
|
|
|
234
|
-
|
|
252
|
+
**Resolution rules:**
|
|
253
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
254
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
255
|
+
- If `service_root` is set but `{service_root}/CLAUDE.md` is **missing** → fall back to root CLAUDE.md and flag ⚠️ in the Step 7 recap (the service has no architecture/coding-standards definition — code generation will use umbrella defaults, which may be the wrong stack).
|
|
256
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
235
257
|
|
|
236
258
|
---
|
|
237
259
|
|
|
@@ -331,7 +353,8 @@ Output exactly this block:
|
|
|
331
353
|
[CTX LOADED]
|
|
332
354
|
Stack : {language} / {framework} / {database}
|
|
333
355
|
Platform : {active_module} ({platform_type})
|
|
334
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
356
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
357
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
335
358
|
Ticket : {ticket_prefix}-
|
|
336
359
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
337
360
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -811,7 +834,7 @@ After generating all `.feature` files, create or update `{paths.trace_dir}/{UC-I
|
|
|
811
834
|
|
|
812
835
|
**TSV columns (tab-separated, one header row + one data row per scenario):**
|
|
813
836
|
```
|
|
814
|
-
sc_id\tsc_title\tspec_ver\tgen_ver\timplemented_by\ttest_count\ttest_classes\tdev_selftest\tdev_selftest_at\tprd_version\tbdd_version\ttech_doc_revision\tprd_status\tuc_status\tfe_phase\tstatus\tlast_updated
|
|
837
|
+
sc_id\tsc_title\tspec_ver\tgen_ver\timplemented_by\ttest_count\ttest_classes\tdev_selftest\tdev_selftest_at\tqc_status\tqc_run_at\tprd_version\tbdd_version\ttech_doc_revision\tprd_status\tuc_status\tfe_phase\tstatus\tlast_updated
|
|
815
838
|
```
|
|
816
839
|
|
|
817
840
|
**Rules:**
|
|
@@ -819,7 +842,7 @@ sc_id\tsc_title\tspec_ver\tgen_ver\timplemented_by\ttest_count\ttest_classes\tde
|
|
|
819
842
|
- If file exists (re-generation) → for each SC in the new `.feature`:
|
|
820
843
|
- SC already in `.tsv` AND `spec_ver` is unchanged → update only: `sc_title`, `prd_version`, `bdd_version`, `prd_status`, `uc_status`, `last_updated`. Leave all other columns unchanged.
|
|
821
844
|
- SC already in `.tsv` AND `spec_ver` changed (scenario was modified) → update: `sc_title`, `spec_ver`, `prd_version`, `bdd_version`, `prd_status`, `uc_status`, `last_updated` AND set `status = DRIFT` immediately (so the TSV reflects drift without waiting for `/validate-traces`). Leave `gen_ver`, `implemented_by`, `test_count`, `test_classes`, `tech_doc_revision` unchanged.
|
|
822
|
-
- SC is new (added in this re-gen) → append new row with `gen_ver`, `implemented_by`, `test_count`, `test_classes`, `dev_selftest`, `dev_selftest_at`, `tech_doc_revision` all set to `—`.
|
|
845
|
+
- SC is new (added in this re-gen) → append new row with `gen_ver`, `implemented_by`, `test_count`, `test_classes`, `dev_selftest`, `dev_selftest_at`, `qc_status`, `qc_run_at`, `tech_doc_revision` all set to `—`.
|
|
823
846
|
- SC no longer in `.feature` (removed) → delete its row.
|
|
824
847
|
|
|
825
848
|
**Values to write for each scenario:**
|
|
@@ -835,6 +858,8 @@ sc_id\tsc_title\tspec_ver\tgen_ver\timplemented_by\ttest_count\ttest_classes\tde
|
|
|
835
858
|
| `test_classes` | `—` |
|
|
836
859
|
| `dev_selftest` | `—` (no tests run yet) |
|
|
837
860
|
| `dev_selftest_at` | `—` |
|
|
861
|
+
| `qc_status` | `—` (official QC automation result — set by `/qc-run-test`) |
|
|
862
|
+
| `qc_run_at` | `—` |
|
|
838
863
|
| `prd_version` | `@trace.prd_version` from `.feature` header |
|
|
839
864
|
| `bdd_version` | `@trace.bdd_version` from `.feature` header |
|
|
840
865
|
| `tech_doc_revision` | `—` |
|
|
@@ -903,6 +928,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
903
928
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
904
929
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
905
930
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
931
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
932
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
933
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
934
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
935
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
936
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
937
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
906
938
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
907
939
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
908
940
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|