@educa-corp/sdd-framework 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/bin/gate-trace.js +25 -2
  2. package/bin/index.js +32 -5
  3. package/bin/lint-trace.js +41 -0
  4. package/bin/self-check.js +430 -3
  5. package/bin/trace-schema.json +418 -31
  6. package/core/FRAMEWORK_VERSION +1 -1
  7. package/{commands/extend-prd.md → core/commands/amend-prd.md} +206 -173
  8. package/core/commands/dev-run-test.md +48 -10
  9. package/core/commands/extend-prd.md +39 -12
  10. package/core/commands/generate-bdd.md +52 -10
  11. package/core/commands/generate-code.md +35 -2
  12. package/core/commands/generate-tech-docs.md +36 -4
  13. package/core/commands/map-testids.md +1 -1
  14. package/core/commands/qc-run-test.md +29 -3
  15. package/core/commands/refine-prd.md +13 -2
  16. package/core/commands/review-context.md +43 -8
  17. package/core/commands/sync.md +105 -1
  18. package/core/commands/validate-traces.md +289 -16
  19. package/core/rules/workflow.md +34 -0
  20. package/core/steps/context-loader.md +27 -6
  21. package/core/templates/feature.template +1 -1
  22. package/core/templates/project-context.yaml +3 -3
  23. package/core/templates/tech-design.template.md +2 -2
  24. package/docs/02-concepts/architecture.md +37 -1
  25. package/docs/02-concepts/overview.md +1 -1
  26. package/docs/02-concepts/pipeline-steps/02-specification.md +13 -7
  27. package/docs/02-concepts/pipeline-steps/07-dev-selftest.md +2 -0
  28. package/docs/02-concepts/pipeline-steps/08-qc-automation.md +1 -0
  29. package/docs/02-concepts/pipeline-steps/09-validate-traces.md +34 -3
  30. package/docs/02-concepts/pipeline-steps/10-feedback-loop.md +10 -1
  31. package/docs/02-concepts/traceability.md +187 -183
  32. package/docs/03-guides/architect.md +13 -4
  33. package/docs/03-guides/developer.md +1 -0
  34. package/docs/03-guides/product-owner.md +89 -72
  35. package/docs/03-guides/tester-qa.md +81 -81
  36. package/docs/04-reference/commands.md +148 -134
  37. package/docs/04-reference/trace-schema.md +45 -1
  38. package/docs/explain/02b-extend-prd.md +1 -1
  39. package/docs/explain/02c-amend-prd.md +152 -0
  40. package/docs/explain/06-generate-bdd.md +1 -1
  41. package/docs/explain/13-dev-run-test.md +15 -1
  42. package/docs/explain/19-qc-run-test.md +91 -87
  43. package/docs/explain/21-validate-traces.md +79 -75
  44. package/docs/explain/28-sync.md +25 -0
  45. package/docs/explain/README.md +136 -135
  46. package/package.json +1 -8
  47. package/commands/debug.md +0 -529
  48. package/commands/debug.tmpl +0 -260
  49. package/commands/define-product.md +0 -438
  50. package/commands/define-product.tmpl +0 -225
  51. package/commands/dev-gen-test.md +0 -700
  52. package/commands/dev-gen-test.tmpl +0 -490
  53. package/commands/dev-run-test.md +0 -435
  54. package/commands/dev-run-test.tmpl +0 -225
  55. package/commands/dev-smoke-test.md +0 -374
  56. package/commands/dev-smoke-test.tmpl +0 -217
  57. package/commands/extend-prd.tmpl +0 -273
  58. package/commands/fix-bug.md +0 -519
  59. package/commands/fix-bug.tmpl +0 -197
  60. package/commands/generate-architecture.md +0 -354
  61. package/commands/generate-architecture.tmpl +0 -197
  62. package/commands/generate-bdd.md +0 -923
  63. package/commands/generate-bdd.tmpl +0 -590
  64. package/commands/generate-code.md +0 -859
  65. package/commands/generate-code.tmpl +0 -649
  66. package/commands/generate-design-spec.md +0 -737
  67. package/commands/generate-design-spec.tmpl +0 -524
  68. package/commands/generate-prd.md +0 -722
  69. package/commands/generate-prd.tmpl +0 -226
  70. package/commands/generate-spec-manifest.md +0 -321
  71. package/commands/generate-spec-manifest.tmpl +0 -164
  72. package/commands/generate-tech-docs.md +0 -920
  73. package/commands/generate-tech-docs.tmpl +0 -273
  74. package/commands/learn.md +0 -399
  75. package/commands/learn.tmpl +0 -130
  76. package/commands/map-testids.md +0 -238
  77. package/commands/map-testids.tmpl +0 -81
  78. package/commands/propose-scenario.md +0 -359
  79. package/commands/propose-scenario.tmpl +0 -202
  80. package/commands/qc-analyze.md +0 -269
  81. package/commands/qc-analyze.tmpl +0 -112
  82. package/commands/qc-design-test.md +0 -226
  83. package/commands/qc-design-test.tmpl +0 -69
  84. package/commands/qc-plan.md +0 -206
  85. package/commands/qc-plan.tmpl +0 -49
  86. package/commands/qc-report.md +0 -217
  87. package/commands/qc-report.tmpl +0 -60
  88. package/commands/qc-review.md +0 -210
  89. package/commands/qc-review.tmpl +0 -53
  90. package/commands/qc-run-test.md +0 -326
  91. package/commands/qc-run-test.tmpl +0 -116
  92. package/commands/refine-prd.md +0 -653
  93. package/commands/refine-prd.tmpl +0 -281
  94. package/commands/report-bug.md +0 -305
  95. package/commands/report-bug.tmpl +0 -148
  96. package/commands/review-code.md +0 -415
  97. package/commands/review-code.tmpl +0 -146
  98. package/commands/review-context.md +0 -902
  99. package/commands/review-context.tmpl +0 -530
  100. package/commands/review-tech-docs.md +0 -561
  101. package/commands/review-tech-docs.tmpl +0 -404
  102. package/commands/setup-ai-first.md +0 -602
  103. package/commands/setup-ai-first.tmpl +0 -450
  104. package/commands/sync.md +0 -430
  105. package/commands/sync.tmpl +0 -429
  106. package/commands/update-framework.md +0 -203
  107. package/commands/update-framework.tmpl +0 -202
  108. package/commands/validate-traces.md +0 -1077
  109. package/commands/validate-traces.tmpl +0 -920
  110. package/hooks/data-guard.js +0 -232
  111. package/hooks/settings.json +0 -19
  112. package/modules/android-compose/module.yaml +0 -13
  113. package/modules/android-compose/stack-profile.yaml +0 -57
  114. package/modules/angular/architecture-snippets/component-patterns.md +0 -187
  115. package/modules/angular/module.yaml +0 -6
  116. package/modules/angular/stack-profile.yaml +0 -38
  117. package/modules/context-engineering/architecture-snippets/context-design.md +0 -119
  118. package/modules/context-engineering/module.yaml +0 -9
  119. package/modules/context-engineering/stack-profile.yaml +0 -61
  120. package/modules/dotnet/architecture-snippets/clean-arch.md +0 -160
  121. package/modules/dotnet/module.yaml +0 -6
  122. package/modules/dotnet/stack-profile.yaml +0 -50
  123. package/modules/flutter/module.yaml +0 -14
  124. package/modules/flutter/stack-profile.yaml +0 -59
  125. package/modules/golang/architecture-snippets/domain-layout.md +0 -283
  126. package/modules/golang/module.yaml +0 -6
  127. package/modules/golang/stack-profile.yaml +0 -40
  128. package/modules/ios-swiftui/module.yaml +0 -13
  129. package/modules/ios-swiftui/stack-profile.yaml +0 -55
  130. package/modules/java-spring/architecture-snippets/layered-arch.md +0 -201
  131. package/modules/java-spring/module.yaml +0 -15
  132. package/modules/java-spring/stack-profile.yaml +0 -28
  133. package/modules/nextjs/architecture-snippets/app-router-patterns.md +0 -269
  134. package/modules/nextjs/module.yaml +0 -14
  135. package/modules/nextjs/stack-profile.yaml +0 -74
  136. package/modules/nuxt/module.yaml +0 -14
  137. package/modules/nuxt/stack-profile.yaml +0 -58
  138. package/modules/phaser-game/architecture-snippets/phaser-scene-patterns.md +0 -646
  139. package/modules/phaser-game/module.yaml +0 -15
  140. package/modules/phaser-game/stack-profile.yaml +0 -90
  141. package/modules/php-laravel/architecture-snippets/service-repository.md +0 -302
  142. package/modules/php-laravel/module.yaml +0 -15
  143. package/modules/php-laravel/stack-profile.yaml +0 -56
  144. package/modules/qc-playwright/stack-profile.yaml +0 -66
  145. package/modules/react/architecture-snippets/hooks-query-patterns.md +0 -254
  146. package/modules/react/module.yaml +0 -14
  147. package/modules/react/stack-profile.yaml +0 -63
  148. package/modules/react-native/module.yaml +0 -14
  149. package/modules/react-native/stack-profile.yaml +0 -56
  150. package/modules/vue/module.yaml +0 -14
  151. package/modules/vue/stack-profile.yaml +0 -65
  152. package/rules/data-protection.md +0 -80
  153. package/rules/workflow.md +0 -99
  154. package/skills/code/SKILL.md +0 -19
  155. package/skills/code/SKILL.tmpl +0 -19
  156. package/skills/debug/SKILL.md +0 -19
  157. package/skills/debug/SKILL.tmpl +0 -19
  158. package/skills/design-spec/SKILL.md +0 -11
  159. package/skills/design-spec/SKILL.tmpl +0 -11
  160. package/skills/discovery/SKILL.md +0 -14
  161. package/skills/discovery/SKILL.tmpl +0 -14
  162. package/skills/prd/SKILL.md +0 -19
  163. package/skills/prd/SKILL.tmpl +0 -19
  164. package/skills/qc/qa-analyst/DOC_GAPS.template.md +0 -63
  165. package/skills/qc/qa-analyst/acceptance-criteria.md +0 -60
  166. package/skills/qc/qa-analyst/business-rules.md +0 -59
  167. package/skills/qc/qa-analyst/data-flow.md +0 -64
  168. package/skills/qc/qa-analyst/spec-breakdown.md +0 -61
  169. package/skills/qc/qa-designer/e2e/journey.md +0 -41
  170. package/skills/qc/qa-designer/exploratory/charter.md +0 -68
  171. package/skills/qc/qa-designer/exploratory/explore-to-functional.md +0 -43
  172. package/skills/qc/qa-designer/functional/api.md +0 -45
  173. package/skills/qc/qa-designer/functional/gui-feature.md +0 -46
  174. package/skills/qc/qa-designer/functional/gui-screen.md +0 -52
  175. package/skills/qc/qa-designer/integration/api.md +0 -42
  176. package/skills/qc/qa-designer/integration/db.md +0 -39
  177. package/skills/qc/qa-designer/integration/gui.md +0 -40
  178. package/skills/qc/qa-designer/integration/kafka.md +0 -40
  179. package/skills/qc/qa-designer/non-functional.md +0 -40
  180. package/skills/qc/qa-planner/test-plan.md +0 -120
  181. package/skills/qc/qa-reviewer/script/e2e.md +0 -87
  182. package/skills/qc/qa-reviewer/script/exploratory.md +0 -45
  183. package/skills/qc/qa-reviewer/script/functional.md +0 -101
  184. package/skills/qc/qa-reviewer/script/integration.md +0 -91
  185. package/skills/qc/qa-reviewer/script/non-functional.md +0 -126
  186. package/skills/qc/qa-reviewer/test-case/e2e.md +0 -73
  187. package/skills/qc/qa-reviewer/test-case/exploratory.md +0 -43
  188. package/skills/qc/qa-reviewer/test-case/functional.md +0 -76
  189. package/skills/qc/qa-reviewer/test-case/integration.md +0 -69
  190. package/skills/qc/qa-reviewer/test-case/non-functional.md +0 -73
  191. package/skills/qc/qa-runner/e2e.md +0 -49
  192. package/skills/qc/qa-runner/exploratory/session.md +0 -36
  193. package/skills/qc/qa-runner/functional/api.md +0 -35
  194. package/skills/qc/qa-runner/functional/gui-feature.md +0 -51
  195. package/skills/qc/qa-runner/functional/gui-screen.md +0 -55
  196. package/skills/qc/qa-runner/integration.md +0 -47
  197. package/skills/qc/qa-runner/non-functional.md +0 -49
  198. package/skills/qc/qa-runner/report/report.md +0 -37
  199. package/skills/setup-ai-first/SKILL.md +0 -19
  200. package/skills/setup-ai-first/SKILL.tmpl +0 -19
  201. package/skills/spec/SKILL.md +0 -19
  202. package/skills/spec/SKILL.tmpl +0 -19
  203. package/skills/test/SKILL.md +0 -18
  204. package/skills/test/SKILL.tmpl +0 -18
  205. package/steps/business-language.md +0 -56
  206. package/steps/capture-lesson.md +0 -112
  207. package/steps/context-loader.md +0 -406
  208. package/steps/gate.md +0 -151
  209. package/steps/report-footer.md +0 -125
  210. package/steps/review-fanout.md +0 -159
  211. package/steps/spawn-agent.md +0 -129
  212. package/steps/trace-mirror.md +0 -53
  213. package/templates/README.md +0 -70
  214. package/templates/architecture.template.md +0 -394
  215. package/templates/ci/trace-gate.yml +0 -146
  216. package/templates/design-spec.template.md +0 -217
  217. package/templates/feature.template +0 -123
  218. package/templates/hooks/pre-push +0 -61
  219. package/templates/platform-guide.template.md +0 -145
  220. package/templates/prd.template.md +0 -283
  221. package/templates/product-definition.template.md +0 -188
  222. package/templates/project-context.yaml +0 -212
  223. package/templates/tech-design.template.md +0 -490
@@ -1,212 +0,0 @@
1
- # =============================================================
2
- # Project Context — SDD Framework
3
- # =============================================================
4
- # This is the SINGLE SOURCE OF TRUTH for project-specific
5
- # paths, tools, and routing used by all workflows.
6
- #
7
- # Workflows reference this file for WHERE to find things.
8
- # Workflow steps define WHAT to do (universal best practices).
9
- # =============================================================
10
- #
11
- # HOW AI AGENTS USE THIS FILE:
12
- # 1. Open this file at the start of any workflow
13
- # 2. Parse the YAML structure
14
- # 3. When a workflow says "→ key.subkey", look up that key
15
- # and use the resolved value as the actual path
16
- # 4. All paths are RELATIVE to workspace root
17
- # 5. For "{domain}", substitute the feature's domain (PRD: row `Domain` in Metadata / folder path; .feature: @trace.domain)
18
- # =============================================================
19
-
20
- project:
21
- name: "{{PROJECT_NAME}}"
22
- description: "{{PROJECT_DESCRIPTION}}"
23
-
24
- # ----- File Paths -----
25
- # All paths are relative to workspace root.
26
- paths:
27
- # Feature-Package Layout:
28
- # specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md — PRD document
29
- # specs/{domain}/{prd-slug}/bdd/{platform}/ — BDD .feature ({platform} = web | app | system)
30
- # specs/{domain}/{prd-slug}/tech-docs/ — Technical design (ONE merged doc per PRD: {TICKET-ID}-tech-design.md)
31
- # specs/{domain}/{prd-slug}/design-spec/ — Design specs (FE/App only)
32
- # specs/{domain}/{prd-slug}/changelog/ — PRD changelog overflow (created once history exceeds 5 versions)
33
- # .trace/{domain}/{prd-slug}/{UC-ID}-{platform}.tsv — Trace state (ONE book per UC × platform)
34
- #
35
- # The {platform} segment is NOT optional — in any mode, including umbrella.
36
- # A UC's `web` and `system` features are two different files; without the segment they
37
- # collide on one filename and overwrite each other. Trace is split the same way, so the
38
- # spec layout has to match it. Every .feature also carries `@trace.platform` matching
39
- # its own {platform} segment. (Projects still on the old flat bdd/ layout:
40
- # run `npx @educa-corp/sdd-framework --migrate-bdd-platform` — dry-run by default.)
41
- #
42
- # specs_dir is the unified root for all spec artifact types (PRD, BDD, tech-docs, design-spec).
43
- # prd-slug is derived from the PRD folder path — not a separate config variable.
44
- specs_dir: "specs"
45
-
46
- # Source code root — gốc mã nguồn của service/app này (nơi generate-code đặt & quét code).
47
- # BE thường suy vị trí từ CLAUDE.md §2 (code_base_package + layer); src_dir là gốc chung,
48
- # và là NGUỒN CHÍNH cho FE (component/hook/service/adapter) + phạm vi quét reuse (DS5).
49
- # Ví dụ: "src" (mono FE), "app/src", "src/main/java" (BE). Chỉnh theo layout thật của repo.
50
- src_dir: "src"
51
-
52
- # ── Template artifact — KHÔNG cấu hình được ──
53
- # Đã bỏ 6 key chết (không lệnh nào đọc): feature_template · prd_template ·
54
- # templates_dir · bdd_writing_guide · product_definition_template · trace_report.
55
- # Các skeleton được {{include}} NƯỚNG CỨNG vào file lệnh lúc `npm run build`,
56
- # nên lệnh không bao giờ đọc một path template lúc chạy.
57
- # (trace_report còn trỏ sai hẳn: report thật là {trace_dir}/trace-report.json.)
58
- #
59
- # Đổi cấu trúc .feature / PRD sinh ra = sửa templates/*.template* TRONG REPO
60
- # FRAMEWORK rồi build lại. Sửa .agent/templates/* trong project KHÔNG có tác
61
- # dụng, và sẽ bị GHI ĐÈ IM LẶNG ở lần /update-framework kế tiếp (--init copy
62
- # core/ → .agent/ vô điều kiện; file duy nhất được giữ là .agent/project-context.yaml).
63
- refinement_dir: ".agent/review"
64
-
65
- # QC's OWN analysis/design working docs (qc-analyze/plan/design-test outputs:
66
- # REQUIREMENT_ANALYSIS.md, DOC_GAPS.md, TEST_PLAN.md, test-cases/*.Test.md).
67
- # One subfolder per UC: {qc_dir}/{UC-ID}/. Default "docs" (the QC team's own
68
- # convention), VISIBLE — not hidden under .agent/. NOTE: specs (PRD / .feature /
69
- # design-spec) are NOT here — they come from the PO spec submodule (spec_source).
70
- qc_dir: "docs"
71
-
72
- # WHERE the qc-* commands LOAD their skills from (qa-analyst / qa-designer / qa-planner
73
- # / qa-reviewer / qa-runner + DOC_GAPS.template.md). Default = the framework-bundled
74
- # copy at .agent/skills/qc (works standalone). The QC team OWNS these skills in their
75
- # canonical repo (ai-automation-qc-base) — point this at that repo/submodule (e.g.
76
- # "qc-base/.claude/skills") so the skills evolve INDEPENDENTLY and are NOT overwritten
77
- # by framework upgrade (--init / upgrade.sh rewrite only .agent/, never this path).
78
- qc_skills_dir: ".agent/skills/qc"
79
-
80
- # Product Definitions
81
- product_definitions_dir: "specs/product-definition"
82
-
83
- # Domain Knowledge
84
- domain_knowledge_dir: "specs/domain-knowledge"
85
- business_dictionary: "specs/domain-knowledge/business-dictionary.md"
86
- core_entities: "specs/domain-knowledge/core-entities.md"
87
-
88
- # Project Lessons (guardrails accumulated via /learn — loaded by context-loader Step 6.7)
89
- # Single-service default below. In umbrella/service mode, set this in each service's
90
- # .agent/project-context.yaml to ".agent/project-lessons.md" (resolved per service_root).
91
- lessons_file: "specs/domain-knowledge/lessons-learned.md"
92
-
93
- # Tech Docs (BE-authored API contract).
94
- # Merged into specs_dir in the feature-package layout:
95
- # tech-docs live at specs/{domain}/{prd-slug}/tech-docs/.
96
- # In umbrella mode with spec_source set, context-loader auto-routes this to
97
- # {spec_source}/specs so FE/App read the contract via the spec submodule.
98
- tech_docs_dir: "specs"
99
-
100
- # Design Specs (FE/App platforms only — web, app).
101
- # In the feature-package layout, design-specs live at specs/{domain}/{prd-slug}/design-spec/.
102
- # This variable is no longer needed as a separate path — derived from specs_dir.
103
- # design_spec_dir: "specs/design-spec" ← removed; use specs_dir instead
104
-
105
- # Trace (internal structure: .trace/{domain}/{prd-slug}/{UC-ID}-{platform}.tsv — one book per UC × platform)
106
- trace_dir: ".trace"
107
-
108
- # Tester / QC feedback (written by /report-bug and /propose-scenario).
109
- # These live in the SHARED spec repo so PO/Dev see them on their next /sync.
110
- # In umbrella mode, context-loader auto-resolves them under {spec_source}/feedback/.
111
- bug_reports_dir: "feedback/bug-reports"
112
- bdd_proposals_dir: "feedback/bdd-proposals"
113
- # PRD change requests (new requirement found in test, not covered by any AC) —
114
- # written by /propose-scenario Case B so the PO can add/extend an AC then re-/generate-bdd.
115
- prd_change_requests_dir: "feedback/prd-change-requests"
116
-
117
- tech_stack:
118
- language: "{{LANGUAGE}}" # e.g., Java 17 / TypeScript / C# / Go
119
- framework: "{{FRAMEWORK}}" # e.g., Spring Boot 3.2 / Angular 17 / .NET 8
120
- build_tool: "{{BUILD_TOOL}}" # e.g., Maven / npm / dotnet / go
121
- test_framework: "{{TEST_FRAMEWORK}}" # e.g., JUnit 5 + Mockito / Jest / xUnit
122
- database: "{{DATABASE}}" # e.g., PostgreSQL / MySQL / MongoDB
123
- module: "{{MODULE}}" # e.g., java-spring / angular / dotnet / golang / context-engineering
124
-
125
- conventions:
126
- build_command: "{{BUILD_COMMAND}}" # e.g., mvn clean install -DskipTests
127
- test_command: "{{TEST_COMMAND}}" # e.g., mvn test
128
- service_run: "{{RUN_COMMAND}}" # e.g., mvn spring-boot:run
129
- ticket_prefix: "{{TICKET_PREFIX}}" # e.g., PROJ / FEAT / UC
130
-
131
- domains:
132
- - "{{DOMAIN_1}}"
133
- # - "{{DOMAIN_2}}"
134
-
135
- # ----- Multi-Service / Umbrella Setup -----
136
- # Fill this section ONLY if this is an UMBRELLA repo that contains multiple
137
- # service submodules. Leave commented out for single-service projects.
138
- #
139
- # setup:
140
- # mode: umbrella # "umbrella" | "single" (default: single)
141
- # spec_source: "{{SPEC_SUBMODULE_PATH}}" # path to PO spec submodule, e.g. "free-trial-specs"
142
- #
143
- # When spec_source is set, context-loader auto-derives (ALL specs live in the spec repo
144
- # using the feature-package layout; service submodules hold only code):
145
- # specs_dir → {spec_source}/specs # unified root — PRD/BDD/tech-docs/design-spec
146
- # tech_docs_dir → {spec_source}/specs # merged into specs_dir
147
- # domain_knowledge_dir → {spec_source}/specs/domain-knowledge
148
- # trace_dir → {spec_source}/.trace # structure: .trace/{domain}/{prd-slug}/{UC-ID}-{platform}.tsv
149
- # (You can still override these manually in paths: section below.)
150
- # With spec_source set, only ONE override is needed instead of four separate dir vars.
151
- #
152
- # services: # domain → service submodule routing
153
- # # Each domain key MUST match the PRD's `Domain` (Metadata row) / folder path segment.
154
- # # A domain value has THREE forms — context-loader (Step 1.5) auto-detects in this order:
155
- # # has `path` → FORM A (resolved)
156
- # # has `by_prd_slug` → FORM C (look up one more level)
157
- # # otherwise → FORM B (per-platform map)
158
- # #
159
- # # FORM A — FLAT (one domain ↔ one submodule, all platforms):
160
- # {{DOMAIN_1}}:
161
- # path: "{{SERVICE_SUBMODULE_DIR}}" # relative path to service submodule (code + .trace/)
162
- # module: "{{STACK_MODULE}}" # e.g., java-spring, nextjs, flutter
163
- # #
164
- # # FORM B — PER-PLATFORM MAP (one business-domain implemented on several platforms /
165
- # # submodules — a merged monorepo/workspace). No direct `path`; instead one
166
- # # sub-key per platform (system | web | app). context-loader routes by the
167
- # # target .feature's @trace.platform → picks {path, module} for that platform.
168
- # # The PRD keeps a SINGLE business @trace.domain (do NOT invent onboarding-web).
169
- # {{DOMAIN_2}}:
170
- # system: { path: "{{BE_SUBMODULE_DIR}}", module: "java-spring" }
171
- # web: { path: "{{WEB_SUBMODULE_DIR}}", module: "nextjs" }
172
- # app: { path: "{{APP_SUBMODULE_DIR}}", module: "flutter" }
173
- # #
174
- # # FORM C — PER-PRD_SLUG MAP (one routing cell ↔ MANY submodules, one per feature-package).
175
- # # Use when a platform — or a whole domain — is split into one repo per feature,
176
- # # e.g. each webview mini-game lives in its own repo. No `path`; instead a
177
- # # `by_prd_slug` table keyed by the feature-package folder name. context-loader
178
- # # already extracted prd_slug in Step 1, so no extra detection is needed.
179
- # # Valid at BOTH levels: directly under the domain, or nested under a platform.
180
- # {{DOMAIN_3}}:
181
- # system: { path: "{{BE_SUBMODULE_DIR}}", module: "java-spring" } # normal entry
182
- # webview: # this cell → many repos
183
- # by_prd_slug:
184
- # {{PRD_SLUG_1}}: { path: "games/{{GAME_1}}", module: "phaser-game" }
185
- # {{PRD_SLUG_2}}: { path: "games/{{GAME_2}}", module: "phaser-game" }
186
- # # A prd_slug with no entry → active_service = unresolved (the command STOPS rather than
187
- # # guessing a lookalike repo). An entry with BOTH `path` and `by_prd_slug` is a config
188
- # # error, as is nesting `by_prd_slug` inside `by_prd_slug`.
189
- # #
190
- # # NOTE: with spec_source set, BDD + tech-docs are cross-team and live in the spec repo —
191
- # # do NOT pin per-service specs_dir / tech_docs_dir here (they would be ignored).
192
- # # Per-service specs_dir / tech_docs_dir apply ONLY when there is no spec_source.
193
- #
194
- # IMPORTANT — per-service CLAUDE.md:
195
- # Each service submodule should have its OWN CLAUDE.md ({path}/CLAUDE.md) defining its
196
- # architecture + coding standards for ITS stack. context-loader loads CLAUDE.md in two
197
- # layers: root CLAUDE.md (umbrella-wide shared rules) + {service}/CLAUDE.md (overlay,
198
- # wins on conflict for architecture/coding-standards). The agent sits at the umbrella
199
- # root, so without a service CLAUDE.md, code generation falls back to umbrella defaults
200
- # + the module stack-profile (a ⚠️ is flagged in the context recap). Generate one per
201
- # service via /setup-ai-first inside each. For FORM B, add one CLAUDE.md per platform
202
- # submodule ({system|web|app}.path/CLAUDE.md). For FORM C, one per feature repo
203
- # (by_prd_slug.{slug}.path/CLAUDE.md) — these repos usually share a stack, so the fastest
204
- # route is to write one and copy it, adjusting the parts that actually differ.
205
-
206
- # ----- Architecture -----
207
- architecture:
208
- style: "{{ARCH_STYLE}}" # e.g., Layered / Clean / Hexagonal
209
- layers: "{{LAYER_STACK}}" # e.g., Controller → Facade → Service → Repository
210
- key_rules:
211
- - "{{ARCH_RULE_1}}"
212
- - "{{ARCH_RULE_2}}"