@anhth2/spec-driven-dev-plugin 0.10.0 → 0.12.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 +43 -8
- package/commands/define-product.md +43 -8
- package/commands/dev-gen-test.md +44 -9
- package/commands/dev-gen-test.tmpl +1 -1
- package/commands/dev-run-test.md +48 -10
- package/commands/dev-run-test.tmpl +5 -2
- package/commands/dev-smoke-test.md +43 -8
- package/commands/fix-bug.md +79 -14
- package/commands/fix-bug.tmpl +36 -6
- package/commands/generate-bdd.md +49 -10
- package/commands/generate-bdd.tmpl +6 -2
- package/commands/generate-code.md +44 -9
- package/commands/generate-code.tmpl +1 -1
- package/commands/generate-design-spec.md +43 -8
- package/commands/generate-prd.md +43 -8
- package/commands/generate-spec-manifest.md +43 -8
- package/commands/generate-tech-docs.md +43 -8
- package/commands/learn.md +43 -8
- package/commands/propose-scenario.md +74 -19
- package/commands/propose-scenario.tmpl +31 -11
- package/commands/qc-analyze.md +534 -0
- package/commands/qc-analyze.tmpl +86 -0
- package/commands/qc-design-test.md +515 -0
- package/commands/qc-design-test.tmpl +67 -0
- package/commands/qc-plan.md +497 -0
- package/commands/qc-plan.tmpl +49 -0
- package/commands/qc-report.md +508 -0
- package/commands/qc-report.tmpl +60 -0
- package/commands/qc-review.md +501 -0
- package/commands/qc-review.tmpl +53 -0
- package/commands/qc-run-test.md +549 -0
- package/commands/qc-run-test.tmpl +83 -0
- package/commands/refine-prd.md +43 -8
- package/commands/report-bug.md +59 -10
- package/commands/report-bug.tmpl +16 -2
- package/commands/review-code.md +43 -8
- package/commands/review-context.md +43 -8
- package/commands/review-tech-docs.md +43 -8
- package/commands/setup-ai-first.md +7 -0
- package/commands/sync.md +19 -9
- package/commands/sync.tmpl +12 -9
- package/commands/update-framework.md +7 -0
- package/commands/validate-traces.md +67 -12
- package/commands/validate-traces.tmpl +24 -4
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +43 -8
- package/core/commands/define-product.md +43 -8
- package/core/commands/dev-gen-test.md +44 -9
- package/core/commands/dev-run-test.md +48 -10
- package/core/commands/dev-smoke-test.md +43 -8
- package/core/commands/fix-bug.md +79 -14
- package/core/commands/generate-bdd.md +49 -10
- package/core/commands/generate-code.md +44 -9
- package/core/commands/generate-design-spec.md +43 -8
- package/core/commands/generate-prd.md +43 -8
- package/core/commands/generate-spec-manifest.md +43 -8
- package/core/commands/generate-tech-docs.md +43 -8
- package/core/commands/learn.md +43 -8
- package/core/commands/propose-scenario.md +74 -19
- package/core/commands/qc-analyze.md +534 -0
- package/core/commands/qc-design-test.md +515 -0
- package/core/commands/qc-plan.md +497 -0
- package/core/commands/qc-report.md +508 -0
- package/core/commands/qc-review.md +501 -0
- package/core/commands/qc-run-test.md +549 -0
- package/core/commands/refine-prd.md +43 -8
- package/core/commands/report-bug.md +59 -10
- package/core/commands/review-code.md +43 -8
- package/core/commands/review-context.md +43 -8
- package/core/commands/review-tech-docs.md +43 -8
- package/core/commands/setup-ai-first.md +7 -0
- package/core/commands/sync.md +19 -9
- package/core/commands/update-framework.md +7 -0
- package/core/commands/validate-traces.md +67 -12
- package/core/modules/qc-playwright/stack-profile.yaml +65 -0
- package/core/skills/code/SKILL.md +50 -8
- package/core/skills/debug/SKILL.md +57 -8
- package/core/skills/design-spec/SKILL.md +43 -8
- package/core/skills/discovery/SKILL.md +43 -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 +60 -0
- package/core/skills/qc/qa-analyst/business-rules.md +59 -0
- package/core/skills/qc/qa-analyst/data-flow.md +64 -0
- package/core/skills/qc/qa-analyst/spec-breakdown.md +61 -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 +93 -16
- package/core/steps/context-loader.md +36 -8
- package/core/steps/report-footer.md +7 -0
- package/core/templates/project-context.yaml +27 -1
- 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 +156 -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 +61 -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 +157 -0
- package/docs/02-guides/tester/README.md +74 -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 +80 -0
- package/docs/03-concepts/README.md +19 -0
- package/docs/03-concepts/architecture.md +245 -0
- package/docs/03-concepts/pipeline.md +262 -0
- package/docs/03-concepts/traceability.md +149 -0
- package/docs/04-operations/README.md +33 -0
- package/docs/04-operations/bug-flow.md +362 -0
- package/docs/04-operations/publishing.md +137 -0
- package/docs/04-operations/sync-and-update.md +365 -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 +152 -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 +50 -8
- package/skills/debug/SKILL.md +57 -8
- package/skills/design-spec/SKILL.md +43 -8
- package/skills/discovery/SKILL.md +43 -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 +60 -0
- package/skills/qc/qa-analyst/business-rules.md +59 -0
- package/skills/qc/qa-analyst/data-flow.md +64 -0
- package/skills/qc/qa-analyst/spec-breakdown.md +61 -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 +93 -16
- package/steps/context-loader.md +36 -8
- package/steps/report-footer.md +7 -0
- package/templates/project-context.yaml +27 -1
- package/ARCHITECTURE.md +0 -258
|
@@ -125,6 +125,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
125
125
|
- `paths.specs_dir` → BDD specs root
|
|
126
126
|
- `paths.prd_dir` → PRD documents root
|
|
127
127
|
- `paths.refinement_dir` → findings/review output dir
|
|
128
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
129
|
+
- `paths.qc_skills_dir` → where qc-* commands load QC skills from (default bundled `.agent/skills/qc`; override to the QC team's own repo/submodule so framework upgrade won't overwrite them)
|
|
128
130
|
- `paths.product_definitions_dir` → product definitions root
|
|
129
131
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
130
132
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -137,6 +139,8 @@ If `paths` section is absent, use these defaults:
|
|
|
137
139
|
- `specs_dir` = `specs/bdd`
|
|
138
140
|
- `prd_dir` = `specs/prd`
|
|
139
141
|
- `refinement_dir` = `.agent/review`
|
|
142
|
+
- `qc_dir` = `docs`
|
|
143
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
140
144
|
- `product_definitions_dir` = `specs/product-definition`
|
|
141
145
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
142
146
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -181,6 +185,7 @@ If `services` section is present:
|
|
|
181
185
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
182
186
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
183
187
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
188
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
184
189
|
|
|
185
190
|
> **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.
|
|
186
191
|
|
|
@@ -221,19 +226,41 @@ If the file does not exist → skip silently.
|
|
|
221
226
|
|
|
222
227
|
---
|
|
223
228
|
|
|
224
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
229
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
225
230
|
|
|
226
231
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
227
232
|
|
|
228
|
-
|
|
233
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
234
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
235
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
236
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
237
|
+
|
|
238
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
239
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
240
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
241
|
+
single-service mode) the project's only architecture + coding standards.
|
|
242
|
+
|
|
243
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
244
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
245
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
246
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
247
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
248
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
249
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
250
|
+
|
|
251
|
+
From the **merged** result, extract and store:
|
|
229
252
|
|
|
230
253
|
- **§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
|
|
254
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
255
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
256
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
257
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
235
258
|
|
|
236
|
-
|
|
259
|
+
**Resolution rules:**
|
|
260
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
261
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
262
|
+
- 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).
|
|
263
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
237
264
|
|
|
238
265
|
---
|
|
239
266
|
|
|
@@ -333,7 +360,8 @@ Output exactly this block:
|
|
|
333
360
|
[CTX LOADED]
|
|
334
361
|
Stack : {language} / {framework} / {database}
|
|
335
362
|
Platform : {active_module} ({platform_type})
|
|
336
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
363
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
364
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
337
365
|
Ticket : {ticket_prefix}-
|
|
338
366
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
339
367
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -625,7 +653,7 @@ Update `{paths.trace_dir}/{UC-ID}.tsv` — for each implemented scenario, find t
|
|
|
625
653
|
| `fe_phase` | `ui` if `--phase=ui` \| `integrated` if `--phase=integration` \| `—` if no phase flag |
|
|
626
654
|
| `last_updated` | today `YYYY-MM-DD` |
|
|
627
655
|
|
|
628
|
-
Leave all other columns (`sc_title`, `spec_ver`, `prd_version`, `prd_status`, `uc_status`, `test_count`, `test_classes`, `dev_selftest`, `dev_selftest_at`) unchanged.
|
|
656
|
+
Leave all other columns (`sc_title`, `spec_ver`, `prd_version`, `prd_status`, `uc_status`, `test_count`, `test_classes`, `dev_selftest`, `dev_selftest_at`, `qc_status`, `qc_run_at`) unchanged.
|
|
629
657
|
`status` is computed by `/validate-traces` — do not set here.
|
|
630
658
|
|
|
631
659
|
## Refresh Panel Mirror
|
|
@@ -693,6 +721,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
693
721
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
694
722
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
695
723
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
724
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
725
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
726
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
727
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
728
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
729
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
730
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
696
731
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
697
732
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
698
733
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
@@ -125,6 +125,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
125
125
|
- `paths.specs_dir` → BDD specs root
|
|
126
126
|
- `paths.prd_dir` → PRD documents root
|
|
127
127
|
- `paths.refinement_dir` → findings/review output dir
|
|
128
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
129
|
+
- `paths.qc_skills_dir` → where qc-* commands load QC skills from (default bundled `.agent/skills/qc`; override to the QC team's own repo/submodule so framework upgrade won't overwrite them)
|
|
128
130
|
- `paths.product_definitions_dir` → product definitions root
|
|
129
131
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
130
132
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -137,6 +139,8 @@ If `paths` section is absent, use these defaults:
|
|
|
137
139
|
- `specs_dir` = `specs/bdd`
|
|
138
140
|
- `prd_dir` = `specs/prd`
|
|
139
141
|
- `refinement_dir` = `.agent/review`
|
|
142
|
+
- `qc_dir` = `docs`
|
|
143
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
140
144
|
- `product_definitions_dir` = `specs/product-definition`
|
|
141
145
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
142
146
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -181,6 +185,7 @@ If `services` section is present:
|
|
|
181
185
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
182
186
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
183
187
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
188
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
184
189
|
|
|
185
190
|
> **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.
|
|
186
191
|
|
|
@@ -221,19 +226,41 @@ If the file does not exist → skip silently.
|
|
|
221
226
|
|
|
222
227
|
---
|
|
223
228
|
|
|
224
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
229
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
225
230
|
|
|
226
231
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
227
232
|
|
|
228
|
-
|
|
233
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
234
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
235
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
236
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
237
|
+
|
|
238
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
239
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
240
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
241
|
+
single-service mode) the project's only architecture + coding standards.
|
|
242
|
+
|
|
243
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
244
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
245
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
246
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
247
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
248
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
249
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
250
|
+
|
|
251
|
+
From the **merged** result, extract and store:
|
|
229
252
|
|
|
230
253
|
- **§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
|
|
254
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
255
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
256
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
257
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
235
258
|
|
|
236
|
-
|
|
259
|
+
**Resolution rules:**
|
|
260
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
261
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
262
|
+
- 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).
|
|
263
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
237
264
|
|
|
238
265
|
---
|
|
239
266
|
|
|
@@ -333,7 +360,8 @@ Output exactly this block:
|
|
|
333
360
|
[CTX LOADED]
|
|
334
361
|
Stack : {language} / {framework} / {database}
|
|
335
362
|
Platform : {active_module} ({platform_type})
|
|
336
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
363
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
364
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
337
365
|
Ticket : {ticket_prefix}-
|
|
338
366
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
339
367
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -827,6 +855,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
827
855
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
828
856
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
829
857
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
858
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
859
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
860
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
861
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
862
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
863
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
864
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
830
865
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
831
866
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
832
867
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
@@ -125,6 +125,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
125
125
|
- `paths.specs_dir` → BDD specs root
|
|
126
126
|
- `paths.prd_dir` → PRD documents root
|
|
127
127
|
- `paths.refinement_dir` → findings/review output dir
|
|
128
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
129
|
+
- `paths.qc_skills_dir` → where qc-* commands load QC skills from (default bundled `.agent/skills/qc`; override to the QC team's own repo/submodule so framework upgrade won't overwrite them)
|
|
128
130
|
- `paths.product_definitions_dir` → product definitions root
|
|
129
131
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
130
132
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -137,6 +139,8 @@ If `paths` section is absent, use these defaults:
|
|
|
137
139
|
- `specs_dir` = `specs/bdd`
|
|
138
140
|
- `prd_dir` = `specs/prd`
|
|
139
141
|
- `refinement_dir` = `.agent/review`
|
|
142
|
+
- `qc_dir` = `docs`
|
|
143
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
140
144
|
- `product_definitions_dir` = `specs/product-definition`
|
|
141
145
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
142
146
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -181,6 +185,7 @@ If `services` section is present:
|
|
|
181
185
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
182
186
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
183
187
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
188
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
184
189
|
|
|
185
190
|
> **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.
|
|
186
191
|
|
|
@@ -221,19 +226,41 @@ If the file does not exist → skip silently.
|
|
|
221
226
|
|
|
222
227
|
---
|
|
223
228
|
|
|
224
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
229
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
225
230
|
|
|
226
231
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
227
232
|
|
|
228
|
-
|
|
233
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
234
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
235
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
236
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
237
|
+
|
|
238
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
239
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
240
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
241
|
+
single-service mode) the project's only architecture + coding standards.
|
|
242
|
+
|
|
243
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
244
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
245
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
246
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
247
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
248
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
249
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
250
|
+
|
|
251
|
+
From the **merged** result, extract and store:
|
|
229
252
|
|
|
230
253
|
- **§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
|
|
254
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
255
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
256
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
257
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
235
258
|
|
|
236
|
-
|
|
259
|
+
**Resolution rules:**
|
|
260
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
261
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
262
|
+
- 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).
|
|
263
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
237
264
|
|
|
238
265
|
---
|
|
239
266
|
|
|
@@ -333,7 +360,8 @@ Output exactly this block:
|
|
|
333
360
|
[CTX LOADED]
|
|
334
361
|
Stack : {language} / {framework} / {database}
|
|
335
362
|
Platform : {active_module} ({platform_type})
|
|
336
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
363
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
364
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
337
365
|
Ticket : {ticket_prefix}-
|
|
338
366
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
339
367
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -630,6 +658,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
630
658
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
631
659
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
632
660
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
661
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
662
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
663
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
664
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
665
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
666
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
667
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
633
668
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
634
669
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
635
670
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
@@ -130,6 +130,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
130
130
|
- `paths.specs_dir` → BDD specs root
|
|
131
131
|
- `paths.prd_dir` → PRD documents root
|
|
132
132
|
- `paths.refinement_dir` → findings/review output dir
|
|
133
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
134
|
+
- `paths.qc_skills_dir` → where qc-* commands load QC skills from (default bundled `.agent/skills/qc`; override to the QC team's own repo/submodule so framework upgrade won't overwrite them)
|
|
133
135
|
- `paths.product_definitions_dir` → product definitions root
|
|
134
136
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
135
137
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -142,6 +144,8 @@ If `paths` section is absent, use these defaults:
|
|
|
142
144
|
- `specs_dir` = `specs/bdd`
|
|
143
145
|
- `prd_dir` = `specs/prd`
|
|
144
146
|
- `refinement_dir` = `.agent/review`
|
|
147
|
+
- `qc_dir` = `docs`
|
|
148
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
145
149
|
- `product_definitions_dir` = `specs/product-definition`
|
|
146
150
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
147
151
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -186,6 +190,7 @@ If `services` section is present:
|
|
|
186
190
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
187
191
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
188
192
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
193
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
189
194
|
|
|
190
195
|
> **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.
|
|
191
196
|
|
|
@@ -226,19 +231,41 @@ If the file does not exist → skip silently.
|
|
|
226
231
|
|
|
227
232
|
---
|
|
228
233
|
|
|
229
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
234
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
230
235
|
|
|
231
236
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
232
237
|
|
|
233
|
-
|
|
238
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
239
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
240
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
241
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
242
|
+
|
|
243
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
244
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
245
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
246
|
+
single-service mode) the project's only architecture + coding standards.
|
|
247
|
+
|
|
248
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
249
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
250
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
251
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
252
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
253
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
254
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
255
|
+
|
|
256
|
+
From the **merged** result, extract and store:
|
|
234
257
|
|
|
235
258
|
- **§1 Project Overview** → project name, language, framework, build/test commands, domains
|
|
236
|
-
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules
|
|
237
|
-
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns
|
|
238
|
-
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name
|
|
239
|
-
- **§7 Git Conventions** → branch naming pattern, commit message format
|
|
259
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
260
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
261
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
262
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
240
263
|
|
|
241
|
-
|
|
264
|
+
**Resolution rules:**
|
|
265
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
266
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
267
|
+
- 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).
|
|
268
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
242
269
|
|
|
243
270
|
---
|
|
244
271
|
|
|
@@ -338,7 +365,8 @@ Output exactly this block:
|
|
|
338
365
|
[CTX LOADED]
|
|
339
366
|
Stack : {language} / {framework} / {database}
|
|
340
367
|
Platform : {active_module} ({platform_type})
|
|
341
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
368
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
369
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
342
370
|
Ticket : {ticket_prefix}-
|
|
343
371
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
344
372
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -527,6 +555,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
527
555
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
528
556
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
529
557
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
558
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
559
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
560
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
561
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
562
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
563
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
564
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
530
565
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
531
566
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
532
567
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
@@ -146,6 +146,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
146
146
|
- `paths.specs_dir` → BDD specs root
|
|
147
147
|
- `paths.prd_dir` → PRD documents root
|
|
148
148
|
- `paths.refinement_dir` → findings/review output dir
|
|
149
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
150
|
+
- `paths.qc_skills_dir` → where qc-* commands load QC skills from (default bundled `.agent/skills/qc`; override to the QC team's own repo/submodule so framework upgrade won't overwrite them)
|
|
149
151
|
- `paths.product_definitions_dir` → product definitions root
|
|
150
152
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
151
153
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -158,6 +160,8 @@ If `paths` section is absent, use these defaults:
|
|
|
158
160
|
- `specs_dir` = `specs/bdd`
|
|
159
161
|
- `prd_dir` = `specs/prd`
|
|
160
162
|
- `refinement_dir` = `.agent/review`
|
|
163
|
+
- `qc_dir` = `docs`
|
|
164
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
161
165
|
- `product_definitions_dir` = `specs/product-definition`
|
|
162
166
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
163
167
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -202,6 +206,7 @@ If `services` section is present:
|
|
|
202
206
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
203
207
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
204
208
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
209
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
205
210
|
|
|
206
211
|
> **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.
|
|
207
212
|
|
|
@@ -242,19 +247,41 @@ If the file does not exist → skip silently.
|
|
|
242
247
|
|
|
243
248
|
---
|
|
244
249
|
|
|
245
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
250
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
246
251
|
|
|
247
252
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
248
253
|
|
|
249
|
-
|
|
254
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
255
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
256
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
257
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
258
|
+
|
|
259
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
260
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
261
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
262
|
+
single-service mode) the project's only architecture + coding standards.
|
|
263
|
+
|
|
264
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
265
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
266
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
267
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
268
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
269
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
270
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
271
|
+
|
|
272
|
+
From the **merged** result, extract and store:
|
|
250
273
|
|
|
251
274
|
- **§1 Project Overview** → project name, language, framework, build/test commands, domains
|
|
252
|
-
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules
|
|
253
|
-
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns
|
|
254
|
-
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name
|
|
255
|
-
- **§7 Git Conventions** → branch naming pattern, commit message format
|
|
275
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
276
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
277
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
278
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
256
279
|
|
|
257
|
-
|
|
280
|
+
**Resolution rules:**
|
|
281
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
282
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
283
|
+
- 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).
|
|
284
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
258
285
|
|
|
259
286
|
---
|
|
260
287
|
|
|
@@ -354,7 +381,8 @@ Output exactly this block:
|
|
|
354
381
|
[CTX LOADED]
|
|
355
382
|
Stack : {language} / {framework} / {database}
|
|
356
383
|
Platform : {active_module} ({platform_type})
|
|
357
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
384
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
385
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
358
386
|
Ticket : {ticket_prefix}-
|
|
359
387
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
360
388
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -558,6 +586,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
558
586
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
559
587
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
560
588
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
589
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
590
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
591
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
592
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
593
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
594
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
595
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
561
596
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
562
597
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
563
598
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
package/core/commands/learn.md
CHANGED
|
@@ -134,6 +134,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
134
134
|
- `paths.specs_dir` → BDD specs root
|
|
135
135
|
- `paths.prd_dir` → PRD documents root
|
|
136
136
|
- `paths.refinement_dir` → findings/review output dir
|
|
137
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
138
|
+
- `paths.qc_skills_dir` → where qc-* commands load QC skills from (default bundled `.agent/skills/qc`; override to the QC team's own repo/submodule so framework upgrade won't overwrite them)
|
|
137
139
|
- `paths.product_definitions_dir` → product definitions root
|
|
138
140
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
139
141
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -146,6 +148,8 @@ If `paths` section is absent, use these defaults:
|
|
|
146
148
|
- `specs_dir` = `specs/bdd`
|
|
147
149
|
- `prd_dir` = `specs/prd`
|
|
148
150
|
- `refinement_dir` = `.agent/review`
|
|
151
|
+
- `qc_dir` = `docs`
|
|
152
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
149
153
|
- `product_definitions_dir` = `specs/product-definition`
|
|
150
154
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
151
155
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -190,6 +194,7 @@ If `services` section is present:
|
|
|
190
194
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
191
195
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
192
196
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
197
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
193
198
|
|
|
194
199
|
> **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.
|
|
195
200
|
|
|
@@ -230,19 +235,41 @@ If the file does not exist → skip silently.
|
|
|
230
235
|
|
|
231
236
|
---
|
|
232
237
|
|
|
233
|
-
## Step 3 — [CRITICAL] Load CLAUDE.md
|
|
238
|
+
## Step 3 — [CRITICAL] Load CLAUDE.md (layered: root + service overlay)
|
|
234
239
|
|
|
235
240
|
*This is the highest-priority context — it defines HOW to write code and documents for this project.*
|
|
236
241
|
|
|
237
|
-
|
|
242
|
+
CLAUDE.md is loaded in **two layers** so umbrella-wide rules and service-specific
|
|
243
|
+
architecture/coding standards compose correctly. The agent always sits at the umbrella
|
|
244
|
+
root, but the implementation code lives in a service submodule with its OWN stack,
|
|
245
|
+
architecture, and conventions — so the service's CLAUDE.md must win for code generation.
|
|
246
|
+
|
|
247
|
+
**Layer 1 — [BASE] Root CLAUDE.md (umbrella-wide).**
|
|
248
|
+
Read `CLAUDE.md` at the repo root. Treat its contents as the **shared baseline** for the
|
|
249
|
+
whole umbrella — git conventions, data-protection posture, cross-cutting rules, and (in
|
|
250
|
+
single-service mode) the project's only architecture + coding standards.
|
|
251
|
+
|
|
252
|
+
**Layer 2 — [OVERLAY] Service CLAUDE.md (umbrella mode only).**
|
|
253
|
+
*Run only if `service_root` was set in Step 1.6 (i.e. a real service was routed to).*
|
|
254
|
+
Read `{service_root}/CLAUDE.md`. This file defines the architecture + coding standards of
|
|
255
|
+
the **actual stack being implemented** (e.g. `user-service` = java-spring, `web` = nextjs).
|
|
256
|
+
Overlay it on top of Layer 1: **on any conflict, the service value WINS** for architecture,
|
|
257
|
+
coding standards, and error handling. Layer-1 values that the service does not redefine
|
|
258
|
+
(e.g. git conventions, banned patterns shared org-wide) remain in effect.
|
|
259
|
+
|
|
260
|
+
From the **merged** result, extract and store:
|
|
238
261
|
|
|
239
262
|
- **§1 Project Overview** → project name, language, framework, build/test commands, domains
|
|
240
|
-
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules
|
|
241
|
-
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns
|
|
242
|
-
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name
|
|
243
|
-
- **§7 Git Conventions** → branch naming pattern, commit message format
|
|
263
|
+
- **§2 Architecture** → layer order (e.g., Controller → Facade → Service → Repository), architectural rules — *service overlay wins*
|
|
264
|
+
- **§3 Coding Standards** → naming conventions (classes, methods), response wrapper type, forbidden patterns — *service overlay wins*
|
|
265
|
+
- **§5 Error Handling** → exception types, HTTP status code mapping, not-found exception class name — *service overlay wins*
|
|
266
|
+
- **§7 Git Conventions** → branch naming pattern, commit message format — *root baseline unless service redefines*
|
|
244
267
|
|
|
245
|
-
|
|
268
|
+
**Resolution rules:**
|
|
269
|
+
- If both layers exist → merge as above; record `claude_md_source = root + {service_root}`.
|
|
270
|
+
- If only the service overlay exists (no root CLAUDE.md) → use the service file alone; `claude_md_source = {service_root}`.
|
|
271
|
+
- 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).
|
|
272
|
+
- If neither exists → note CLAUDE.md as missing and continue with project-context.yaml data only.
|
|
246
273
|
|
|
247
274
|
---
|
|
248
275
|
|
|
@@ -342,7 +369,8 @@ Output exactly this block:
|
|
|
342
369
|
[CTX LOADED]
|
|
343
370
|
Stack : {language} / {framework} / {database}
|
|
344
371
|
Platform : {active_module} ({platform_type})
|
|
345
|
-
Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
372
|
+
Layers : {layer order from merged CLAUDE.md §2, e.g., Controller → Facade → Service → Repository}
|
|
373
|
+
CLAUDE.md : {root + {service_root} | {service_root} only | root only | ⚠️ service overlay MISSING — using root | missing}
|
|
346
374
|
Ticket : {ticket_prefix}-
|
|
347
375
|
Dict : {loaded — N canonical terms, M banned terms | missing}
|
|
348
376
|
Entities : {loaded — EntityA, EntityB, EntityC | missing}
|
|
@@ -511,6 +539,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
511
539
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
512
540
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
513
541
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
542
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
543
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
544
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
545
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
546
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
547
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
548
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
514
549
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
515
550
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
516
551
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|