@educa-corp/sdd-framework 0.6.0 → 0.7.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.
Files changed (205) 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 +391 -30
  6. package/core/FRAMEWORK_VERSION +1 -1
  7. package/{commands/extend-prd.md → core/commands/amend-prd.md} +205 -173
  8. package/core/commands/dev-run-test.md +47 -9
  9. package/core/commands/extend-prd.md +39 -12
  10. package/core/commands/generate-bdd.md +43 -4
  11. package/core/commands/generate-code.md +33 -0
  12. package/core/commands/generate-tech-docs.md +34 -2
  13. package/core/commands/qc-run-test.md +29 -3
  14. package/core/commands/refine-prd.md +13 -2
  15. package/core/commands/review-context.md +43 -8
  16. package/core/commands/sync.md +105 -1
  17. package/core/commands/validate-traces.md +284 -11
  18. package/core/rules/workflow.md +34 -0
  19. package/core/steps/context-loader.md +26 -5
  20. package/core/templates/feature.template +1 -1
  21. package/docs/02-concepts/architecture.md +36 -0
  22. package/docs/04-reference/commands.md +148 -134
  23. package/docs/04-reference/trace-schema.md +39 -0
  24. package/docs/explain/02b-extend-prd.md +1 -1
  25. package/docs/explain/02c-amend-prd.md +152 -0
  26. package/docs/explain/28-sync.md +25 -0
  27. package/docs/explain/README.md +136 -135
  28. package/package.json +1 -8
  29. package/commands/debug.md +0 -529
  30. package/commands/debug.tmpl +0 -260
  31. package/commands/define-product.md +0 -438
  32. package/commands/define-product.tmpl +0 -225
  33. package/commands/dev-gen-test.md +0 -700
  34. package/commands/dev-gen-test.tmpl +0 -490
  35. package/commands/dev-run-test.md +0 -435
  36. package/commands/dev-run-test.tmpl +0 -225
  37. package/commands/dev-smoke-test.md +0 -374
  38. package/commands/dev-smoke-test.tmpl +0 -217
  39. package/commands/extend-prd.tmpl +0 -273
  40. package/commands/fix-bug.md +0 -519
  41. package/commands/fix-bug.tmpl +0 -197
  42. package/commands/generate-architecture.md +0 -354
  43. package/commands/generate-architecture.tmpl +0 -197
  44. package/commands/generate-bdd.md +0 -923
  45. package/commands/generate-bdd.tmpl +0 -590
  46. package/commands/generate-code.md +0 -859
  47. package/commands/generate-code.tmpl +0 -649
  48. package/commands/generate-design-spec.md +0 -737
  49. package/commands/generate-design-spec.tmpl +0 -524
  50. package/commands/generate-prd.md +0 -722
  51. package/commands/generate-prd.tmpl +0 -226
  52. package/commands/generate-spec-manifest.md +0 -321
  53. package/commands/generate-spec-manifest.tmpl +0 -164
  54. package/commands/generate-tech-docs.md +0 -920
  55. package/commands/generate-tech-docs.tmpl +0 -273
  56. package/commands/learn.md +0 -399
  57. package/commands/learn.tmpl +0 -130
  58. package/commands/map-testids.md +0 -238
  59. package/commands/map-testids.tmpl +0 -81
  60. package/commands/propose-scenario.md +0 -359
  61. package/commands/propose-scenario.tmpl +0 -202
  62. package/commands/qc-analyze.md +0 -269
  63. package/commands/qc-analyze.tmpl +0 -112
  64. package/commands/qc-design-test.md +0 -226
  65. package/commands/qc-design-test.tmpl +0 -69
  66. package/commands/qc-plan.md +0 -206
  67. package/commands/qc-plan.tmpl +0 -49
  68. package/commands/qc-report.md +0 -217
  69. package/commands/qc-report.tmpl +0 -60
  70. package/commands/qc-review.md +0 -210
  71. package/commands/qc-review.tmpl +0 -53
  72. package/commands/qc-run-test.md +0 -326
  73. package/commands/qc-run-test.tmpl +0 -116
  74. package/commands/refine-prd.md +0 -653
  75. package/commands/refine-prd.tmpl +0 -281
  76. package/commands/report-bug.md +0 -305
  77. package/commands/report-bug.tmpl +0 -148
  78. package/commands/review-code.md +0 -415
  79. package/commands/review-code.tmpl +0 -146
  80. package/commands/review-context.md +0 -902
  81. package/commands/review-context.tmpl +0 -530
  82. package/commands/review-tech-docs.md +0 -561
  83. package/commands/review-tech-docs.tmpl +0 -404
  84. package/commands/setup-ai-first.md +0 -602
  85. package/commands/setup-ai-first.tmpl +0 -450
  86. package/commands/sync.md +0 -430
  87. package/commands/sync.tmpl +0 -429
  88. package/commands/update-framework.md +0 -203
  89. package/commands/update-framework.tmpl +0 -202
  90. package/commands/validate-traces.md +0 -1077
  91. package/commands/validate-traces.tmpl +0 -920
  92. package/hooks/data-guard.js +0 -232
  93. package/hooks/settings.json +0 -19
  94. package/modules/android-compose/module.yaml +0 -13
  95. package/modules/android-compose/stack-profile.yaml +0 -57
  96. package/modules/angular/architecture-snippets/component-patterns.md +0 -187
  97. package/modules/angular/module.yaml +0 -6
  98. package/modules/angular/stack-profile.yaml +0 -38
  99. package/modules/context-engineering/architecture-snippets/context-design.md +0 -119
  100. package/modules/context-engineering/module.yaml +0 -9
  101. package/modules/context-engineering/stack-profile.yaml +0 -61
  102. package/modules/dotnet/architecture-snippets/clean-arch.md +0 -160
  103. package/modules/dotnet/module.yaml +0 -6
  104. package/modules/dotnet/stack-profile.yaml +0 -50
  105. package/modules/flutter/module.yaml +0 -14
  106. package/modules/flutter/stack-profile.yaml +0 -59
  107. package/modules/golang/architecture-snippets/domain-layout.md +0 -283
  108. package/modules/golang/module.yaml +0 -6
  109. package/modules/golang/stack-profile.yaml +0 -40
  110. package/modules/ios-swiftui/module.yaml +0 -13
  111. package/modules/ios-swiftui/stack-profile.yaml +0 -55
  112. package/modules/java-spring/architecture-snippets/layered-arch.md +0 -201
  113. package/modules/java-spring/module.yaml +0 -15
  114. package/modules/java-spring/stack-profile.yaml +0 -28
  115. package/modules/nextjs/architecture-snippets/app-router-patterns.md +0 -269
  116. package/modules/nextjs/module.yaml +0 -14
  117. package/modules/nextjs/stack-profile.yaml +0 -74
  118. package/modules/nuxt/module.yaml +0 -14
  119. package/modules/nuxt/stack-profile.yaml +0 -58
  120. package/modules/phaser-game/architecture-snippets/phaser-scene-patterns.md +0 -646
  121. package/modules/phaser-game/module.yaml +0 -15
  122. package/modules/phaser-game/stack-profile.yaml +0 -90
  123. package/modules/php-laravel/architecture-snippets/service-repository.md +0 -302
  124. package/modules/php-laravel/module.yaml +0 -15
  125. package/modules/php-laravel/stack-profile.yaml +0 -56
  126. package/modules/qc-playwright/stack-profile.yaml +0 -66
  127. package/modules/react/architecture-snippets/hooks-query-patterns.md +0 -254
  128. package/modules/react/module.yaml +0 -14
  129. package/modules/react/stack-profile.yaml +0 -63
  130. package/modules/react-native/module.yaml +0 -14
  131. package/modules/react-native/stack-profile.yaml +0 -56
  132. package/modules/vue/module.yaml +0 -14
  133. package/modules/vue/stack-profile.yaml +0 -65
  134. package/rules/data-protection.md +0 -80
  135. package/rules/workflow.md +0 -99
  136. package/skills/code/SKILL.md +0 -19
  137. package/skills/code/SKILL.tmpl +0 -19
  138. package/skills/debug/SKILL.md +0 -19
  139. package/skills/debug/SKILL.tmpl +0 -19
  140. package/skills/design-spec/SKILL.md +0 -11
  141. package/skills/design-spec/SKILL.tmpl +0 -11
  142. package/skills/discovery/SKILL.md +0 -14
  143. package/skills/discovery/SKILL.tmpl +0 -14
  144. package/skills/prd/SKILL.md +0 -19
  145. package/skills/prd/SKILL.tmpl +0 -19
  146. package/skills/qc/qa-analyst/DOC_GAPS.template.md +0 -63
  147. package/skills/qc/qa-analyst/acceptance-criteria.md +0 -60
  148. package/skills/qc/qa-analyst/business-rules.md +0 -59
  149. package/skills/qc/qa-analyst/data-flow.md +0 -64
  150. package/skills/qc/qa-analyst/spec-breakdown.md +0 -61
  151. package/skills/qc/qa-designer/e2e/journey.md +0 -41
  152. package/skills/qc/qa-designer/exploratory/charter.md +0 -68
  153. package/skills/qc/qa-designer/exploratory/explore-to-functional.md +0 -43
  154. package/skills/qc/qa-designer/functional/api.md +0 -45
  155. package/skills/qc/qa-designer/functional/gui-feature.md +0 -46
  156. package/skills/qc/qa-designer/functional/gui-screen.md +0 -52
  157. package/skills/qc/qa-designer/integration/api.md +0 -42
  158. package/skills/qc/qa-designer/integration/db.md +0 -39
  159. package/skills/qc/qa-designer/integration/gui.md +0 -40
  160. package/skills/qc/qa-designer/integration/kafka.md +0 -40
  161. package/skills/qc/qa-designer/non-functional.md +0 -40
  162. package/skills/qc/qa-planner/test-plan.md +0 -120
  163. package/skills/qc/qa-reviewer/script/e2e.md +0 -87
  164. package/skills/qc/qa-reviewer/script/exploratory.md +0 -45
  165. package/skills/qc/qa-reviewer/script/functional.md +0 -101
  166. package/skills/qc/qa-reviewer/script/integration.md +0 -91
  167. package/skills/qc/qa-reviewer/script/non-functional.md +0 -126
  168. package/skills/qc/qa-reviewer/test-case/e2e.md +0 -73
  169. package/skills/qc/qa-reviewer/test-case/exploratory.md +0 -43
  170. package/skills/qc/qa-reviewer/test-case/functional.md +0 -76
  171. package/skills/qc/qa-reviewer/test-case/integration.md +0 -69
  172. package/skills/qc/qa-reviewer/test-case/non-functional.md +0 -73
  173. package/skills/qc/qa-runner/e2e.md +0 -49
  174. package/skills/qc/qa-runner/exploratory/session.md +0 -36
  175. package/skills/qc/qa-runner/functional/api.md +0 -35
  176. package/skills/qc/qa-runner/functional/gui-feature.md +0 -51
  177. package/skills/qc/qa-runner/functional/gui-screen.md +0 -55
  178. package/skills/qc/qa-runner/integration.md +0 -47
  179. package/skills/qc/qa-runner/non-functional.md +0 -49
  180. package/skills/qc/qa-runner/report/report.md +0 -37
  181. package/skills/setup-ai-first/SKILL.md +0 -19
  182. package/skills/setup-ai-first/SKILL.tmpl +0 -19
  183. package/skills/spec/SKILL.md +0 -19
  184. package/skills/spec/SKILL.tmpl +0 -19
  185. package/skills/test/SKILL.md +0 -18
  186. package/skills/test/SKILL.tmpl +0 -18
  187. package/steps/business-language.md +0 -56
  188. package/steps/capture-lesson.md +0 -112
  189. package/steps/context-loader.md +0 -406
  190. package/steps/gate.md +0 -151
  191. package/steps/report-footer.md +0 -125
  192. package/steps/review-fanout.md +0 -159
  193. package/steps/spawn-agent.md +0 -129
  194. package/steps/trace-mirror.md +0 -53
  195. package/templates/README.md +0 -70
  196. package/templates/architecture.template.md +0 -394
  197. package/templates/ci/trace-gate.yml +0 -146
  198. package/templates/design-spec.template.md +0 -217
  199. package/templates/feature.template +0 -123
  200. package/templates/hooks/pre-push +0 -61
  201. package/templates/platform-guide.template.md +0 -145
  202. package/templates/prd.template.md +0 -283
  203. package/templates/product-definition.template.md +0 -188
  204. package/templates/project-context.yaml +0 -212
  205. 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}}"