@polymorphism-tech/morph-spec 4.12.0 → 4.13.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 (314) hide show
  1. package/README.md +21 -29
  2. package/bin/morph-spec.js +41 -24
  3. package/bin/task-manager.js +962 -1341
  4. package/bin/validate.js +1 -1
  5. package/claude-plugin.json +1 -1
  6. package/docs/CHEATSHEET.md +10 -11
  7. package/docs/QUICKSTART.md +15 -15
  8. package/framework/CLAUDE.md +5 -2
  9. package/framework/agents/README.md +3 -4
  10. package/framework/agents/ai-agents/ai-system-architect.md +6 -10
  11. package/framework/agents/architecture/seo-growth-hacker.md +166 -326
  12. package/framework/agents/architecture/standards-architect.md +21 -31
  13. package/framework/agents/backend/dotnet-senior.md +160 -86
  14. package/framework/agents/backend/ef-modeler.md +2 -6
  15. package/framework/agents/backend/hangfire-orchestrator.md +8 -9
  16. package/framework/agents/backend/ms-agent-expert.md +1 -1
  17. package/framework/agents/frontend/nextjs-expert.md +198 -133
  18. package/framework/agents/frontend/ui-ux-designer.md +226 -267
  19. package/framework/agents/infrastructure/infra-architect.md +191 -27
  20. package/framework/agents/integrations/clerk-auth.md +19 -26
  21. package/framework/agents/integrations/hangfire-integration.md +1 -4
  22. package/framework/agents.json +215 -1453
  23. package/framework/commands/morph-apply.md +4 -4
  24. package/framework/commands/morph-preflight.md +4 -26
  25. package/framework/commands/morph-proposal.md +19 -19
  26. package/framework/commands/morph-status.md +2 -2
  27. package/framework/commands/morph-troubleshoot.md +6 -13
  28. package/framework/hooks/README.md +1 -6
  29. package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +4 -6
  30. package/framework/hooks/claude-code/pre-compact/save-morph-context.js +12 -7
  31. package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +2 -2
  32. package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +2 -2
  33. package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +5 -10
  34. package/framework/hooks/claude-code/session-start/inject-morph-context.js +63 -30
  35. package/framework/hooks/claude-code/session-start/resume-context.js +77 -0
  36. package/framework/hooks/claude-code/statusline.py +4 -5
  37. package/framework/hooks/claude-code/stop/validate-completion.js +4 -4
  38. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +8 -8
  39. package/framework/hooks/shared/compact-restore.js +28 -5
  40. package/framework/hooks/shared/phase-utils.js +4 -8
  41. package/framework/hooks/shared/state-reader.js +34 -3
  42. package/framework/phases.json +7 -45
  43. package/framework/rules/ai-agents-standards.md +15 -0
  44. package/framework/rules/asaas-standards.md +13 -0
  45. package/framework/rules/clerk-standards.md +13 -0
  46. package/framework/rules/csharp-standards.md +8 -4
  47. package/framework/rules/data-standards.md +18 -0
  48. package/framework/rules/dotnet-templates.md +87 -0
  49. package/framework/rules/frontend-standards.md +13 -13
  50. package/framework/rules/hangfire-standards.md +13 -0
  51. package/framework/rules/infrastructure-standards.md +27 -16
  52. package/framework/rules/morph-workflow.md +73 -13
  53. package/framework/rules/nextjs-standards.md +1 -0
  54. package/framework/rules/nextjs-templates.md +40 -0
  55. package/framework/rules/resend-standards.md +12 -0
  56. package/framework/rules/supabase-standards.md +29 -0
  57. package/framework/skills/README.md +6 -8
  58. package/framework/skills/level-0-meta/mcp-registry.json +21 -99
  59. package/framework/{standards/ai-agents/team-orchestration.md → skills/level-0-meta/morph-agent-teams/SKILL.md} +472 -479
  60. package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +28 -1
  61. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
  62. package/framework/skills/level-0-meta/morph-code-review/SKILL.md +1 -5
  63. package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +1 -1
  64. package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +23 -41
  65. package/framework/skills/level-0-meta/morph-init/SKILL.md +18 -14
  66. package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +225 -0
  67. package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +20 -0
  68. package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +4 -8
  69. package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +15 -59
  70. package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +7 -19
  71. package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +8 -8
  72. package/framework/skills/level-1-workflows/README.md +1 -1
  73. package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +49 -50
  74. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +58 -124
  75. package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +5 -50
  76. package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +1 -1
  77. package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +127 -159
  78. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +4 -3
  79. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +2 -2
  80. package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +1 -1
  81. package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +17 -13
  82. package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +22 -40
  83. package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +0 -2
  84. package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +5 -5
  85. package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +57 -77
  86. package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
  87. package/framework/squad-templates/backend-only.json +6 -6
  88. package/framework/squad-templates/frontend-only.json +17 -8
  89. package/framework/squad-templates/full-stack.json +29 -24
  90. package/framework/standards/STANDARDS.json +1021 -2369
  91. package/framework/standards/backend/dotnet/fluent-validation-vsa.md +200 -0
  92. package/framework/standards/backend/dotnet/result-pattern.md +213 -0
  93. package/framework/standards/backend/dotnet/scalar-ui.md +172 -0
  94. package/framework/standards/backend/dotnet/scrutor.md +158 -0
  95. package/framework/standards/backend/dotnet/vsa-handler-patterns.md +274 -0
  96. package/framework/standards/frontend/nextjs/motion-patterns.md +1 -1
  97. package/framework/standards/infrastructure/supabase/mcp-setup.md +83 -193
  98. package/framework/standards/integration/mcp/mcp-tools.md +91 -77
  99. package/framework/templates/IDE-SNIPPETS.md +2 -6
  100. package/framework/templates/README.md +709 -814
  101. package/framework/templates/REGISTRY.json +223 -762
  102. package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -0
  103. package/framework/templates/code/dotnet/abstractions/error.cs +60 -0
  104. package/framework/templates/code/dotnet/abstractions/handler.cs +12 -0
  105. package/framework/templates/code/dotnet/abstractions/result.cs +74 -0
  106. package/framework/templates/code/dotnet/backend/repository.cs +148 -141
  107. package/framework/templates/code/dotnet/constants/api-tags.cs +6 -0
  108. package/framework/templates/code/dotnet/exceptions/exception-handler.cs +32 -0
  109. package/framework/templates/code/dotnet/extensions/database-extensions.cs +20 -0
  110. package/framework/templates/code/dotnet/extensions/handler-registration.cs +38 -0
  111. package/framework/templates/code/dotnet/extensions/health-checks.cs +24 -0
  112. package/framework/templates/code/dotnet/extensions/map-endpoints.cs +35 -0
  113. package/framework/templates/code/dotnet/extensions/result-extensions.cs +29 -0
  114. package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -0
  115. package/framework/templates/code/dotnet/feature/entity.cs.hbs +8 -0
  116. package/framework/templates/code/dotnet/feature/errors.cs.hbs +8 -0
  117. package/framework/templates/code/dotnet/feature/handler.cs.hbs +24 -0
  118. package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -0
  119. package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -0
  120. package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -0
  121. package/framework/templates/code/dotnet/jobs/job.cs +21 -17
  122. package/framework/templates/code/dotnet/pipelines/logging-decorator.cs +31 -0
  123. package/framework/templates/code/dotnet/pipelines/validation-decorator.cs +97 -0
  124. package/framework/templates/code/dotnet/test.cs +192 -106
  125. package/framework/templates/context/ARCHITECTURE.md +89 -0
  126. package/framework/templates/context/CONTEXT-FEATURE.md +2 -2
  127. package/framework/templates/context/CONTEXT.md +180 -181
  128. package/framework/templates/context/design-system.md +1 -5
  129. package/framework/templates/docs/onboarding.md +2 -3
  130. package/framework/templates/docs/proposal.md +171 -182
  131. package/framework/templates/docs/spec.md +1 -3
  132. package/framework/templates/docs/ui-components.md +0 -72
  133. package/framework/templates/examples/design-system-examples.md +4 -4
  134. package/framework/templates/feature/decisions.md +0 -66
  135. package/framework/templates/feature/recap.md +1 -2
  136. package/framework/templates/infrastructure/github/README.md +56 -593
  137. package/framework/templates/integrations/clerk-config.cs +0 -41
  138. package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +2 -2
  139. package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +1 -2
  140. package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +83 -126
  141. package/framework/templates/meta-prompts/validators/pre-commit-validator.md +2 -2
  142. package/framework/templates/project/validate.js +2 -4
  143. package/framework/templates/ui/design-system.css +1 -1
  144. package/framework/workflows/README.md +8 -8
  145. package/framework/workflows/configs/fast-track.json +51 -0
  146. package/framework/workflows/configs/full.json +68 -0
  147. package/framework/workflows/configs/standard.json +7 -3
  148. package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +1 -1
  149. package/framework/workflows/docs/enforcement-pipeline.md +18 -19
  150. package/framework/workflows/docs/full-morph.md +69 -76
  151. package/framework/workflows/docs/standard.md +49 -44
  152. package/framework/workflows/docs/ui-refresh.md +1 -1
  153. package/package.json +3 -3
  154. package/src/commands/agents/dispatch-agents.js +55 -116
  155. package/src/commands/context/context-refresh.js +79 -0
  156. package/src/commands/phase/phase-reset.js +1 -1
  157. package/src/commands/project/doctor.js +10 -32
  158. package/src/commands/project/init.js +12 -0
  159. package/src/commands/project/status.js +6 -12
  160. package/src/commands/scaffold/scaffold.js +131 -0
  161. package/src/commands/scope/escalate.js +1 -1
  162. package/src/commands/state/advance-phase.js +15 -29
  163. package/src/commands/state/state.js +20 -5
  164. package/src/commands/tasks/task.js +0 -30
  165. package/src/commands/validation/validate-feature.js +3 -10
  166. package/src/core/paths/output-schema.js +12 -13
  167. package/src/core/state/phase-state-machine.js +211 -217
  168. package/src/core/state/state-manager.js +9 -9
  169. package/src/lib/agents/agents-manager.js +2 -2
  170. package/src/lib/agents/output-collector.js +1 -2
  171. package/src/lib/detectors/design-system-detector.js +4 -4
  172. package/src/lib/detectors/index.js +1 -11
  173. package/src/lib/generators/architecture-scanner.js +640 -0
  174. package/src/lib/generators/context-generator.js +3 -3
  175. package/src/lib/generators/design-system-generator.js +508 -587
  176. package/src/lib/generators/index.js +12 -10
  177. package/src/lib/generators/metadata-extractor.js +386 -387
  178. package/src/lib/generators/recap-generator.js +4 -4
  179. package/src/lib/generators/scaffold-generator.js +317 -0
  180. package/src/lib/generators/settings-generator.js +0 -1
  181. package/src/lib/phase-chain/phase-validator.js +64 -42
  182. package/src/lib/stack/stack-profile.js +2 -2
  183. package/src/lib/standards/digest-builder.js +72 -285
  184. package/src/lib/tasks/task-parser.js +11 -5
  185. package/src/lib/validators/architecture/architecture-validator.js +259 -387
  186. package/src/lib/validators/content/content-validator.js +287 -287
  187. package/src/lib/validators/css/css-validator.js +340 -352
  188. package/src/lib/validators/packages/package-validator.js +347 -360
  189. package/src/lib/validators/shared/issue-counter.js +14 -18
  190. package/src/lib/validators/validation-runner.js +3 -19
  191. package/src/scripts/setup-infra.js +1 -1
  192. package/src/utils/agents-installer.js +24 -3
  193. package/src/utils/file-copier.js +1 -0
  194. package/src/utils/hooks-installer.js +11 -19
  195. package/src/utils/skills-installer.js +178 -178
  196. package/framework/agents/architecture/prompt-engineer.md +0 -195
  197. package/framework/agents/backend/api-designer.md +0 -106
  198. package/framework/agents/frontend/blazor-builder.md +0 -229
  199. package/framework/agents/frontend/nextjs-ui-specialist.md +0 -218
  200. package/framework/agents/infrastructure/azure-architect.md +0 -150
  201. package/framework/agents/infrastructure/azure-deploy-specialist.md +0 -707
  202. package/framework/agents/infrastructure/bicep-architect.md +0 -132
  203. package/framework/agents/infrastructure/container-specialist.md +0 -137
  204. package/framework/agents/infrastructure/devops-engineer.md +0 -126
  205. package/framework/agents/integrations/azure-identity.md +0 -148
  206. package/framework/agents/quality/code-analyzer.md +0 -239
  207. package/framework/agents/quality/testing-specialist.md +0 -130
  208. package/framework/hooks/claude-code/notification/approval-reminder.js +0 -57
  209. package/framework/hooks/claude-code/post-tool-use/context-refresh.js +0 -109
  210. package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +0 -78
  211. package/framework/index/troubleshooting-index.json +0 -184
  212. package/framework/rules/testing-standards.md +0 -14
  213. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +0 -230
  214. package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +0 -70
  215. package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +0 -256
  216. package/framework/skills/level-1-workflows/morph-phase-clarify/references/clarifications-example.md +0 -117
  217. package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +0 -269
  218. package/framework/standards/ai-agents/blazor-ui.md +0 -364
  219. package/framework/standards/architecture/ddd/aggregates.md +0 -120
  220. package/framework/standards/architecture/ddd/bounded-contexts.md +0 -105
  221. package/framework/standards/architecture/ddd/complexity-levels.md +0 -108
  222. package/framework/standards/architecture/ddd/entities.md +0 -99
  223. package/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
  224. package/framework/standards/architecture/ddd/value-objects.md +0 -124
  225. package/framework/standards/backend/api/minimal-api.md +0 -494
  226. package/framework/standards/backend/api/rest.md +0 -492
  227. package/framework/standards/backend/authentication/passkeys.md +0 -428
  228. package/framework/standards/backend/database/ef-core.md +0 -199
  229. package/framework/standards/backend/database/migrations.md +0 -393
  230. package/framework/standards/backend/database/repository-patterns.md +0 -528
  231. package/framework/standards/backend/dotnet/async.md +0 -366
  232. package/framework/standards/backend/dotnet/core.md +0 -117
  233. package/framework/standards/backend/dotnet/di.md +0 -439
  234. package/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
  235. package/framework/standards/context/analytics.md +0 -96
  236. package/framework/standards/context/bundles.md +0 -110
  237. package/framework/standards/context/priming.md +0 -78
  238. package/framework/standards/core/architecture.md +0 -185
  239. package/framework/standards/core/coding.md +0 -214
  240. package/framework/standards/core/git-branching-strategy.md +0 -403
  241. package/framework/standards/core/git.md +0 -185
  242. package/framework/standards/core/testing.md +0 -295
  243. package/framework/standards/data/nosql/blob-storage.md +0 -102
  244. package/framework/standards/data/vector-search/azure-ai-search.md +0 -121
  245. package/framework/standards/frontend/blazor/design-checklist.md +0 -222
  246. package/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
  247. package/framework/standards/frontend/blazor/fluent-ui.md +0 -137
  248. package/framework/standards/frontend/blazor/html-conversion.md +0 -184
  249. package/framework/standards/frontend/blazor/lifecycle.md +0 -195
  250. package/framework/standards/frontend/blazor/pitfalls.md +0 -198
  251. package/framework/standards/frontend/blazor/state.md +0 -191
  252. package/framework/standards/frontend/design-system/aesthetic-direction.md +0 -266
  253. package/framework/standards/frontend/design-system/design-trends.md +0 -171
  254. package/framework/standards/infrastructure/azure/azure.md +0 -624
  255. package/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
  256. package/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
  257. package/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
  258. package/framework/standards/infrastructure/azure/services/functions.md +0 -486
  259. package/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
  260. package/framework/standards/infrastructure/azure/services/storage.md +0 -407
  261. package/framework/standards/infrastructure/vercel/vercel-database.md +0 -106
  262. package/framework/standards/integration/api/graphql.md +0 -91
  263. package/framework/standards/integration/api/grpc.md +0 -114
  264. package/framework/standards/integration/api/rest-design.md +0 -95
  265. package/framework/standards/integration/event-driven/cqrs.md +0 -101
  266. package/framework/standards/integration/event-driven/event-sourcing.md +0 -124
  267. package/framework/standards/integration/event-driven/service-bus.md +0 -95
  268. package/framework/standards/observability/logging.md +0 -131
  269. package/framework/standards/observability/metrics.md +0 -121
  270. package/framework/standards/observability/monitoring.md +0 -114
  271. package/framework/standards/observability/tracing.md +0 -132
  272. package/framework/standards/workflows/parallel-execution.md +0 -112
  273. package/framework/standards/workflows/thread-management.md +0 -113
  274. package/framework/templates/code/dotnet/backend/service.cs +0 -139
  275. package/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
  276. package/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
  277. package/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
  278. package/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
  279. package/framework/templates/code/dotnet/contracts/contracts-level1.cs +0 -69
  280. package/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
  281. package/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
  282. package/framework/templates/code/dotnet/frontend/component.razor +0 -239
  283. package/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
  284. package/framework/templates/infrastructure/azure/README.md +0 -286
  285. package/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
  286. package/framework/templates/infrastructure/azure/app-service.bicep +0 -164
  287. package/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
  288. package/framework/templates/infrastructure/azure/container-app.bicep +0 -156
  289. package/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
  290. package/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
  291. package/framework/templates/infrastructure/azure/deploy.sh +0 -208
  292. package/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
  293. package/framework/templates/infrastructure/azure/main.bicep +0 -189
  294. package/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
  295. package/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
  296. package/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
  297. package/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
  298. package/framework/templates/infrastructure/azure/storage.bicep +0 -106
  299. package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
  300. package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
  301. package/framework/templates/integrations/azure-identity-config.cs +0 -288
  302. package/framework/templates/project-structure/dotnet-ddd.md +0 -70
  303. package/framework/templates/saas/subscription.cs +0 -347
  304. package/framework/templates/saas/tenant.cs +0 -338
  305. package/framework/templates/ui/FluentDesignTheme.cs +0 -149
  306. package/framework/templates/ui/MudTheme.cs +0 -281
  307. package/framework/workflows/configs/nodejs-cli.json +0 -40
  308. package/src/commands/standards/context-budget.js +0 -89
  309. package/src/lib/standards/index.js +0 -7
  310. package/src/lib/standards/standards-context-injector.js +0 -302
  311. package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +0 -316
  312. package/src/lib/validators/blazor/blazor-state-validator.js +0 -279
  313. package/src/lib/validators/blazor/blazor-validator.js +0 -369
  314. package/src/lib/validators/blazor/index.js +0 -9
@@ -5,7 +5,7 @@ argument-hint: "[feature-name]"
5
5
  context: fork
6
6
  agent: general-purpose
7
7
  user-invocable: false
8
- cliVersion: "4.12.0"
8
+ cliVersion: "4.13.0"
9
9
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Agent
10
10
  ---
11
11
 
@@ -73,33 +73,76 @@ If any check fails → **STOP**. Do not start any task. Report what's missing:
73
73
 
74
74
  ---
75
75
 
76
- ## Pre-flight MCP — Connection Validation
76
+ ## Pre-flight — Tool Availability
77
77
 
78
- Before starting tasks, verify that MCPs needed for the implement phase are working.
78
+ Before starting tasks, verify that CLIs and MCPs needed for this phase are available. The `inject-morph-context` hook reports both at session start.
79
79
 
80
- **1. Collect MCPs for the implement phase:**
81
- - Read `framework/skills/level-0-meta/mcp-registry.json` → `phaseMatrix.implement`
82
- - Read `.claude/settings.local.json` → identify configured MCPs
80
+ **1. Check CLIs (from session context `CLIs:` line):**
83
81
 
84
- **2. For each CONFIGURED MCP in `phaseMatrix.implement`:**
85
- 1. Look for a tool matching `healthCheck.toolPattern`
86
- 2. If found → run `healthCheck.testCall` with `healthCheck.testParams`
87
- 3. Evaluate:
82
+ | CLI | Required for | If missing |
83
+ |-----|-------------|------------|
84
+ | `docker` | Container services (Supabase, Redis) | Start Docker Desktop |
85
+ | `supabase` | Migrations, schema, RLS | `npm install -g supabase` |
86
+ | `psql` | Direct DB queries | Included with Supabase CLI or install PostgreSQL client |
87
+ | `az` | Azure resource management | `winget install Microsoft.AzureCLI` |
88
+ | `gh` | GitHub PRs, issues | `winget install GitHub.cli` |
88
89
 
89
- | Result | Action |
90
- |--------|--------|
91
- | **Success** | `✓ {MCP} — ready` |
92
- | **Tool not found** | `○ {MCP} — needs restart` |
93
- | **Error** | → **AskUserQuestion** (below) |
90
+ If a critical CLI shows `✗`, use `AskUserQuestion` to ask the user:
91
+ - **Install now** — provide the install command
92
+ - **Continue without it** — use fallback (e.g., WebSearch instead of `az`)
93
+ - **Stop implementation** — user must fix and re-run
94
94
 
95
- **On error — ask the user:**
95
+ **2. Check MCPs (from session context `MCPs:` line):**
96
96
 
97
- Use `AskUserQuestion` with header `"{MCP}"` and options:
98
- - **Continue without {MCP}** — Show `fallback` from registry. Implementation will use the fallback automatically.
99
- - **Reconfigure credentials** — Collect credentials and update `.claude/settings.local.json`. Re-test after reconfiguring.
100
- - **Stop implementation** — Abort. User must fix the MCP and re-run `/morph-apply`.
97
+ For each MCP showing `✗ (recommended)`:
101
98
 
102
- > **Design:** This check is fail-open — consistent with morph-spec philosophy. The user gets explicit choice instead of tasks failing silently.
99
+ | MCP | Fallback |
100
+ |-----|----------|
101
+ | **Context7** | WebSearch + WebFetch |
102
+ | **Playwright** | `curl` / WebFetch (limited — no JS rendering) |
103
+ | **GitHub** | `gh` CLI |
104
+ | **Vercel** | `vercel` CLI |
105
+
106
+ > **Design:** This check is fail-open — consistent with morph-spec philosophy. Missing tools are warnings, not blockers (except `docker` for Supabase projects).
107
+
108
+ ---
109
+
110
+ ## Scaffold & Code Templates (MANDATORY before first task)
111
+
112
+ Before writing any implementation code, scaffold the feature structure using the CLI.
113
+
114
+ ### For .NET backend tasks (VSA):
115
+
116
+ **Scaffold all CRUD slices for the feature:**
117
+ ```bash
118
+ morph-spec scaffold dotnet $ENTITY create-$ENTITY
119
+ morph-spec scaffold dotnet $ENTITY get-${ENTITY}-by-id
120
+ morph-spec scaffold dotnet $ENTITY get-all-${ENTITY}s
121
+ morph-spec scaffold dotnet $ENTITY update-$ENTITY
122
+ morph-spec scaffold dotnet $ENTITY delete-$ENTITY
123
+ ```
124
+
125
+ > Entity and errors are generated with the first slice and auto-skipped on subsequent ones.
126
+ > After scaffolding, customize: fill in request/response properties, validation rules, and handler logic per contracts.cs.
127
+
128
+ ### For Next.js frontend tasks:
129
+
130
+ **Scaffold the feature page:**
131
+ ```bash
132
+ morph-spec scaffold nextjs $FEATURE
133
+ ```
134
+
135
+ > After scaffolding, customize: add columns to DataTable, form fields, and Zod schema.
136
+
137
+ ### Template reference (for manual adjustments):
138
+ ```bash
139
+ cat .morph/framework/templates/code/dotnet/feature/endpoint.cs.hbs
140
+ cat .morph/framework/templates/frontend/nextjs/page.tsx.hbs
141
+ ```
142
+
143
+ > **Rule:** All code MUST follow the patterns in these templates. Scaffold guarantees this. Do not invent different patterns.
144
+
145
+ See `.morph/framework/templates/` for the full template index (abstractions, extensions, pipelines, jobs, tests).
103
146
 
104
147
  ---
105
148
 
@@ -111,14 +154,13 @@ Use `AskUserQuestion` with header `"{MCP}"` and options:
111
154
 
112
155
  | Action | Tool | Alternative |
113
156
  |--------|------|-------------|
114
- | Check execution mode (single/subagents/agent-teams) | **Bash** `morph-spec dispatch-agents $ARGUMENTS implement` | Task groups + subagent prompts |
115
- | **Dispatch implementers by domain** (subagents) | **Agent** `subagent_type=<taskGroups[group].subagentType>` + `prompt=taskPrompt` from dispatch config | Backend + frontend + infra in parallel |
116
- | **Create Agent Team** (critical multi-domain features) | Natural language — see Step 0.5b | — |
157
+ | Get dispatch recommendation | **Bash** `morph-spec dispatch-agents $ARGUMENTS implement` | Agent recommendations + task routing |
158
+ | **Dispatch implementers by domain** | **Agent** `subagent_type=<recommended[group][0]>` — agent .md file provides the prompt | Backend + frontend + infra in parallel |
117
159
  | Read task details | **Read** tasks.md, spec.md, contracts.cs/.ts | — |
118
160
  | Create new files | **Write** source files | — |
119
161
  | Modify existing files | **Edit** source files | — |
120
162
  | Look up library API | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
121
- | Run migrations | **Supabase MCP** `query()` | **Bash** `npx supabase migration ...` |
163
+ | Run migrations | **Bash** `npx supabase migration up --local` | `psql <DB_URL>` for verification |
122
164
  | Build project | **Bash** `dotnet build` or `npm run build` | — |
123
165
  | Run tests | **Bash** `dotnet test` or `npm test` | — |
124
166
  | Checkpoint validation | **Bash** `morph-spec validate-feature ...` | — |
@@ -130,12 +172,13 @@ Use `AskUserQuestion` with header `"{MCP}"` and options:
130
172
  | Create PR | **Bash** `gh pr create ...` | **GitHub MCP** `create_pull_request()` |
131
173
  | Update state | **Bash** `morph-spec state set ...` | — |
132
174
 
133
- **Phase MCPs:** Supabase (migrations, RLS), Context7 (API lookup), Playwright (smoke test), GitHub (PRs), Vercel (deploy, logs, env vars).
175
+ **Phase tools:** Docker CLI (container health, logs), Supabase CLI (migrations, RLS — local Docker), Context7 (API lookup), Playwright (smoke test), GitHub (PRs), Vercel (deploy, logs, env vars).
176
+
177
+ > **Supabase CLI:** When creating or running database migrations, use `npx supabase migration new <name>` to create, then `npx supabase migration up --local` to apply against the local Docker instance. Verify with `npx supabase db dump --local --schema public` or `psql` against local instance (get DB URL from `npx supabase status`).
134
178
 
135
179
  **Anti-patterns:**
136
180
  - Task agent for editing a single file (use Edit directly)
137
- - Agent Teams for single-domain features (subagents suffice)
138
- - Agent Teams without plan approval (creates risk of divergent implementations)
181
+ - Subagents for single-domain features (sequential suffices)
139
182
  - `Bash cat` to create files (use Write tool)
140
183
  - `Bash sed` to modify code (use Edit tool)
141
184
  - Implementing without reading contracts.cs/.ts first (contracts are the source of truth!)
@@ -146,57 +189,24 @@ Use `AskUserQuestion` with header `"{MCP}"` and options:
146
189
  - **(VSA)** Using `Guid.NewGuid()` — use `Guid.CreateVersion7()`
147
190
  - Trying to fix a bug without invoking `systematic-debugging` first
148
191
 
192
+ > **Docker CLI:** If a build or test fails with connection errors to local services (Supabase, Redis, etc.), check container health first: `docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"`. For debugging: `docker logs <container> --tail 50` to see recent logs. To restart a stuck container: `docker restart <container>`.
193
+
149
194
  ---
150
195
 
151
196
  ## Context Loading
152
197
 
153
- ## MANDATORY: Session Tasks
154
-
155
- > **You MUST create one native task per T001-T00N from tasks.md BEFORE starting implementation.**
156
- > After creating all tasks, wire dependencies using `addBlockedBy`.
157
- > Update each to `in_progress` before starting and `completed` after `task done` succeeds.
158
-
159
198
  ### 1. Read full context in PARALLEL
160
199
 
161
200
  ```
162
201
  # Single parallel call, not sequential:
163
202
  Read: .morph/features/{feature}/4-tasks/tasks.md
164
- + Read: .morph/features/{feature}/1-design/spec.md
165
- + Read: .morph/features/{feature}/1-design/contracts.cs (or contracts.ts for TypeScript projects)
203
+ + Read: .morph/features/{feature}/2-design/spec.md
204
+ + Read: .morph/features/{feature}/2-design/contracts.cs (or contracts.ts for TypeScript projects)
166
205
  + Read: .morph/config/config.json (→ architecture.style)
167
206
  + Read: .morph/features/{feature}/3-plan/plan.md
168
207
  ```
169
208
 
170
- ### 2. Create native tasks for each T001-T00N
171
-
172
- Create one native task per task found in `tasks.md`, mirroring `tasks.md` exactly:
173
-
174
- ```
175
- # one native task per task found — loop over every T001-T00N:
176
- TaskCreate: "T001: {title}"
177
- → description: "{full task description from tasks.md}"
178
- → activeForm: "Implementing T001"
179
-
180
- TaskCreate: "T002: {title}"
181
- → activeForm: "Implementing T002"
182
-
183
- # ... repeat for each task ...
184
-
185
- # Orchestral tasks (always at the end):
186
- TaskCreate: "Checkpoints and validation" → activeForm: "Validating checkpoint"
187
- TaskCreate: "Generate recap.md" → activeForm: "Generating recap"
188
- ```
189
-
190
- **After creating all tasks, wire up dependencies using `addBlockedBy`**, mirroring `tasks.md` dependency fields:
191
-
192
- ```
193
- # For each task with dependencies (e.g., T003 depends on T001, T002):
194
- TaskUpdate: taskId="{T003 native id}" addBlockedBy=["{T001 native id}", "{T002 native id}"]
195
- ```
196
-
197
- > Map T-codes to native task IDs as you create them (keep a local `{ T001: id, T002: id, ... }` map).
198
-
199
- ### 3. Detect architecture style
209
+ ### 2. Detect architecture style
200
210
 
201
211
  ```bash
202
212
  cat .morph/config/config.json | grep architecture
@@ -215,129 +225,85 @@ Structure: `Features/{Entity}Feature/{Op}/` with Handler (+ Request/Response rec
215
225
 
216
226
  ## Workflow
217
227
 
218
- ### Step 0.5: Plan Execution Mode
228
+ ### Step 0.5: Dispatch Recommendation
219
229
 
220
- **Read the plan's execution strategy:**
221
- ```
222
- Read: .morph/features/{feature}/3-plan/plan.md → extract "Execution Strategy" field
223
- ```
224
-
225
- The strategy was defined and approved in the Plan phase. Use it directly:
226
-
227
- | Strategy | Action |
228
- |----------|--------|
229
- | `"single"` | → Continue to the sequential task loop (Step 2) |
230
- | `"subagents"` | → Dispatch Task subagents in parallel (below) |
231
- | `"agent-teams"` | → Create Agent Team with plan approval (Step 0.5b) |
232
-
233
- If `plan.md` doesn't exist or the field is missing, auto-detect via dispatch-agents:
230
+ Get agent dispatch recommendation:
234
231
 
235
232
  ```bash
236
233
  morph-spec dispatch-agents $ARGUMENTS implement
237
234
  ```
238
235
 
239
- Check the `mode` field in the JSON output to determine the execution strategy.
236
+ The output is a JSON advisor — it recommends which agents to use and which tasks they handle:
237
+ - `recommended`: `{ [group]: subagentType[] }` — maps groups to agent file names
238
+ - `tasks`: `{ [group]: taskId[] }` — maps groups to task IDs from tasks.md
239
+ - `shouldDispatch`: true if 2+ agents available (parallel dispatch beneficial)
240
240
 
241
- ---
242
-
243
- #### Subagents Mode (if strategy is `"subagents"`):
241
+ **If `shouldDispatch` is true:**
244
242
 
245
- **Step 0.5a: Get dispatch config:**
243
+ 1. Read `recommended` — maps groups (backend, frontend, etc.) to agent subagentTypes
244
+ 2. Read `tasks` — maps groups to task IDs
245
+ 3. For each agent, verify `.claude/agents/{subagentType}.md` exists. If missing → **STOP** with: `"Agent file not found. Run: morph-spec setup-infra"`. Do NOT fall back to general-purpose agents.
246
+ 4. Dispatch each group in **parallel** using native Agent tool:
246
247
 
247
- ```bash
248
- morph-spec dispatch-agents $ARGUMENTS implement
249
248
  ```
250
-
251
- Parse the JSON output. Extract `taskGroups` and each group's `subagentType`.
252
-
253
- **Step 0.5b: Verify agent files exist:**
254
-
255
- For each group, verify `.claude/agents/{subagentType}.md` exists:
256
-
257
- ```bash
258
- ls .claude/agents/{subagentType}.md
249
+ Agent(subagent_type="morph-dotnet-senior", prompt="Implement tasks T001, T002 for feature {feature}. Read .morph/features/{feature}/4-tasks/tasks.md for task details and .morph/features/{feature}/2-design/ for contracts and spec. Follow the task loop: start → implement → verify → done. Checkpoint every 3 tasks. Domain isolation: modify ONLY files in your domain.")
259
250
  ```
260
251
 
261
- If missing → **STOP** with: `"Agent file .claude/agents/{subagentType}.md not found. Run: morph-spec setup-infra"`. Do NOT fall back to general-purpose agents for missing files.
262
-
263
- **Step 0.5c: Dispatch subagents:**
264
-
265
- 1. For each group with >= 3 tasks and no cross-group dependencies, use **Agent tool** with `subagent_type` from dispatch config:
266
-
267
- > **Mapping:** `taskGroups[group].subagentType` = `subagent_type` in Agent tool.
268
- > Example: `subagentType: "morph-dotnet-senior"` → `Agent(subagent_type="morph-dotnet-senior", prompt=taskPrompt)`.
252
+ > **MANDATORY:** Use the exact `subagentType` value from `recommended`. Do NOT use `general-purpose` agents when a `subagentType` is available.
269
253
  >
270
- > **MANDATORY:** Use the exact `subagentType` value. Do NOT use `general-purpose` agents when a `subagentType` is available.
254
+ > The agent `.md` file contains the full expertise prompt, task routing, and key standards. No additional prompt injection needed — just provide the task assignment.
271
255
 
272
- Each subagent receives a prompt with:
273
- - Full spec.md and contracts.cs/.ts content
274
- - The group's task list
275
- - Instructions to create native tasks, follow the task loop (start → implement → verify → done), checkpoint every 3 tasks
276
- - Domain isolation: modify ONLY files in their domain
277
- - **MANDATORY verification before every `task done`** (see Step 2, item 6b)
256
+ 5. After all subagents complete, validate integration: `morph-spec validate-feature $ARGUMENTS --phase implement`
278
257
 
279
- 2. Dispatch subagents for groups in **parallel** (when no cross-group dependencies)
280
- 3. After all complete, validate integration: `morph-spec validate-feature $ARGUMENTS --phase implement`
258
+ **If `shouldDispatch` is false** → continue to sequential task loop (Step 2).
281
259
 
282
260
  **Fallback:** If `dispatch-agents` fails (non-zero exit or invalid JSON), log a warning and fall back to sequential single-agent mode (Step 2).
283
261
 
284
- **If strategy is `"single"`** → continue to sequential task loop below.
285
-
286
- ---
287
-
288
- #### Step 0.5b: Agent Teams (critical multi-domain features)
289
-
290
- **When:** strategy is `"agent-teams"`
291
- **Requirement:** `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` in `.claude/settings.local.json`
292
-
293
- **Why Agent Teams over subagents:**
294
- Agent Teams have a shared TaskList, direct teammate messaging, and `TeammateIdle` hooks. Subagents are fire-and-forget. For features where backend and frontend need to coordinate API contracts, Agent Teams ensure frontend doesn't implement calls before backend stabilizes DTOs.
295
-
296
- Create the team with natural language specifying:
297
- - Backend teammate (dotnet-senior): backend/domain/application files only
298
- - Frontend teammate (blazor-builder or nextjs-expert): UI/components/pages files only
299
- - Quality teammate (standards-architect): review + validate-feature after each implementation
300
- - Enable **plan approval**: teammates must get plans approved before implementing
301
- - Gate: only approve plans matching contracts.cs/.ts and spec.md
302
-
303
- After all teammates complete: `morph-spec validate-feature $ARGUMENTS --phase implement`
304
-
305
262
  ---
306
263
 
307
264
  ### Step 2: Task Loop
308
265
 
309
- ```bash
310
- morph-spec task next $ARGUMENTS
311
- ```
312
-
313
266
  For each task (T001 → T00N):
314
267
 
315
- 1. **Mark as in-progress (native task):**
316
- ```
317
- TaskUpdate(taskId="<native id>", status="in_progress")
318
- ```
319
- 2. **Start via CLI:**
268
+ 1. **Start task:**
320
269
  ```bash
321
270
  morph-spec task start $ARGUMENTS T001
322
271
  ```
323
- 3. **Read the task description** + contracts.cs/.ts for relevant DTOs/interfaces
324
- 4. **Implement** using Write (new) or Edit (existing)
325
- 5. **Verify** — build, lint, tests
326
- 6. **MANDATORY — Verification before `task done`:**
272
+ 2. **Read FR context** (MANDATORY — NON-NEGOTIABLE):
273
+ - Parse task's `[FR references]` from tasks.md (e.g., `### T001: Create user endpoint [FR001, FR003]`)
274
+ - **Read spec.md** → the sections for those specific FRs (functional requirements, acceptance criteria)
275
+ - **Read contracts.cs/.ts** → the DTOs/interfaces referenced by those FRs
276
+ - The spec is the source of truth. Code that doesn't match the spec is a bug.
277
+ > **MCP:** Before implementing, use **Context7 MCP** (`resolve-library-id` → `query-docs`) to verify the correct API of the libraries being used. If Context7 is not available, use **WebSearch** + **WebFetch** to check official docs.
278
+ 3. **Implement** using Write (new) or Edit (existing)
279
+ 4. **Verify** — build, lint, tests
280
+ 5. **MANDATORY — Verification before `task done`:**
327
281
  Run `validate-feature` before marking ANY task as done. This is non-negotiable — it catches broken code, missing files, and spec violations before they compound across tasks.
328
282
  ```bash
329
283
  morph-spec validate-feature $ARGUMENTS --phase implement
330
284
  ```
331
- Only proceed to step 7 if verification passes. If it fails → fix before marking `task done`.
332
- 7. **Mark as done via CLI:**
285
+ Only proceed to step 6 if verification passes. If it fails → fix before marking `task done`.
286
+ 6. **Mark as done via CLI:**
333
287
  ```bash
334
288
  morph-spec task done $ARGUMENTS T001
335
289
  ```
336
- 8. **If `task done` returns without error, update group task progress:**
337
- - Increment completed count for the task's group
338
- - `TaskUpdate(groupTaskId, subject="{Group} tasks ({first}-{last}) — {completed}/{total}")`
339
- - If all tasks in the group are done: `TaskUpdate(groupTaskId, status="completed")`
340
- > Progress update only happens if `task done` returns without error (validation passed).
290
+
291
+ ### Step 2.5: Scope Escalation (when task is too complex)
292
+
293
+ If during implementation a task reveals significantly more complexity than estimated:
294
+
295
+ - **Low impact (1-3 subtasks):** Expand the task directly:
296
+ ```bash
297
+ morph-spec task expand $ARGUMENTS T001 --into "T001a: First sub" "T001b: Second sub"
298
+ ```
299
+ Then implement each subtask following the same loop above.
300
+
301
+ - **Medium/High impact (4+ tasks or spec is wrong):** Run the scope escalation workflow:
302
+ ```bash
303
+ /morph-scope-escalation $ARGUMENTS
304
+ ```
305
+
306
+ **Rule:** Never implement extra functionality within a task without registering it. If a task takes more than expected, expand it into subtasks — this ensures validation gates run for each piece and progress is tracked accurately.
341
307
 
342
308
  ### Step 3: Checkpoint Every 3 Tasks
343
309
 
@@ -377,6 +343,8 @@ npm test -- test/path/to/test.js
377
343
 
378
344
  ### Step 5: Smoke Test with Playwright (if UI)
379
345
 
346
+ > **MCP:** After implementing an API endpoint or page, if **Playwright MCP** is available, immediately do a quick smoke test: navigate to the endpoint/page URL, call `browser_snapshot()` to verify it loads, and check `browser_console_messages({ level: 'error' })` for errors. Catch issues while context is fresh rather than waiting for post-implementation. If Playwright is not available, verify manually via `curl` or browser.
347
+
380
348
  After implementing visual components:
381
349
 
382
350
  ```javascript
@@ -444,17 +412,17 @@ morph-spec uses its own agents and validators for implementation, dispatch, and
444
412
 
445
413
  ### Implementation
446
414
 
447
- Implementers are dispatched via `dispatch-agents`:
415
+ Get dispatch recommendation and use native Agent tool:
448
416
  ```bash
449
417
  morph-spec dispatch-agents $ARGUMENTS implement
450
418
  ```
451
419
 
452
- Use the `subagentType` from each group in the Agent tool:
420
+ Use `recommended[group]` subagentTypes directly:
453
421
  ```
454
- Agent(subagent_type=<subagentType>, prompt=<filled prompts/implementer-prompt.md>)
422
+ Agent(subagent_type="morph-dotnet-senior", prompt="Implement tasks T001, T002 for feature X...")
455
423
  ```
456
424
 
457
- > The `subagentType` maps agent IDs to `.claude/agents/` filenames:
425
+ > Agent `.md` files are self-contained — they include the expertise prompt, task routing, and key standards. The `subagentType` maps to `.claude/agents/` filenames:
458
426
  > - Tier 1-3: `morph-{id}` (e.g., `morph-dotnet-senior`)
459
427
  > - Tier 4: `morph-validator-{id}` (e.g., `morph-validator-architecture-expert`)
460
428
 
@@ -4,10 +4,11 @@ You are implementing tasks for the feature '{{FEATURE_NAME}}' as agent '{{AGENT_
4
4
 
5
5
  ## Context
6
6
 
7
- **Spec:** Read `.morph/features/{{FEATURE_NAME}}/1-design/spec.md`
8
- **Contracts:** Read `.morph/features/{{FEATURE_NAME}}/1-design/contracts.cs`
7
+ **Spec:** Read `.morph/features/{{FEATURE_NAME}}/2-design/spec.md`
8
+ **Contracts:** Read `.morph/features/{{FEATURE_NAME}}/2-design/contracts.cs`
9
9
  **Plan:** Read `.morph/features/{{FEATURE_NAME}}/3-plan/plan.md`
10
- **Standards:** Read `.morph/context/standards.md` and relevant files in `framework/standards/`
10
+ **Standards:** Read relevant files in `.morph/framework/standards/`
11
+ **Code Templates:** Read `.morph/framework/templates/code/dotnet/feature/` (endpoint, handler, validator) — follow these patterns exactly
11
12
 
12
13
  ## Agent Briefing
13
14
 
@@ -9,8 +9,8 @@ Review the implementation against the specification. Your job is to ensure the c
9
9
  ## Reference Documents
10
10
 
11
11
  Read these before reviewing:
12
- - `.morph/features/{{FEATURE_NAME}}/1-design/spec.md` — The specification
13
- - `.morph/features/{{FEATURE_NAME}}/1-design/contracts.cs` — The contracts (source of truth)
12
+ - `.morph/features/{{FEATURE_NAME}}/2-design/spec.md` — The specification
13
+ - `.morph/features/{{FEATURE_NAME}}/2-design/contracts.cs` — The contracts (source of truth)
14
14
  - `.morph/features/{{FEATURE_NAME}}/3-plan/plan.md` — The implementation plan
15
15
 
16
16
  ## Review Checklist
@@ -10,7 +10,7 @@
10
10
  | **Completed** | 2025-01-22 |
11
11
  | **Total Tasks** | 11 / 11 |
12
12
  | **Time Spent** | ~9h |
13
- | **Agents Used** | dotnet-senior, azure-architect, blazor-builder |
13
+ | **Agents Used** | dotnet-senior, nextjs-expert, infra-architect |
14
14
  | **Stack** | blazor-azure |
15
15
 
16
16
  ---
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: morph-phase-plan
3
- description: MORPH-SPEC Phase 4 (Plan). Generates a detailed implementation plan with exact file paths, TDD code blocks, and execution strategy analysis. Produces plan.md in 3-plan/. Use after clarify phase to create an actionable implementation plan before task breakdown.
3
+ description: MORPH-SPEC Phase 3 (Plan). Generates a detailed implementation plan with exact file paths, TDD code blocks, and execution strategy analysis. Produces plan.md in 3-plan/. Use after design phase to create an actionable implementation plan before task breakdown.
4
4
  argument-hint: "[feature-name]"
5
5
  user-invocable: false
6
6
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
7
- cliVersion: "4.12.0"
7
+ cliVersion: "4.13.0"
8
8
  ---
9
9
 
10
- # MORPH Plan — Phase 4
10
+ # MORPH Plan — Phase 3
11
11
 
12
12
  > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
13
13
 
@@ -15,8 +15,8 @@ Generate a detailed implementation plan with exact paths, TDD code, and executio
15
15
 
16
16
  ## Prerequisites
17
17
 
18
- - [ ] Phase 3 (Clarify) completed
19
- - [ ] `spec.md` updated with clarifications
18
+ - [ ] Phase 2 (Design) completed and approved
19
+ - [ ] `spec.md` defined
20
20
  - [ ] `contracts.cs` or `contracts.ts` defined
21
21
 
22
22
  ## Recommended Tools
@@ -36,7 +36,7 @@ Generate a detailed implementation plan with exact paths, TDD code, and executio
36
36
  - Generic paths ("add the file") — always use exact paths
37
37
  - Incomplete code in plan ("add validation") — always include complete code
38
38
  - Skipping existing codebase analysis (existing patterns guide the plan)
39
- - Ignoring `config.architecture.style` — VSA and DDD have different structures
39
+ - Ignoring `config.architecture.style` — VSA and standard architectures have different structures
40
40
 
41
41
  ---
42
42
 
@@ -65,11 +65,11 @@ Check the `"phase"` field:
65
65
  ### 1. Read all prerequisites in PARALLEL
66
66
 
67
67
  ```
68
- Read: .morph/features/{feature}/1-design/spec.md
69
- + Read: .morph/features/{feature}/1-design/contracts.cs (or contracts.ts)
70
- + Read: .morph/features/{feature}/1-design/decisions.md
71
- + Read: .morph/features/{feature}/1-design/clarifications.md
72
- + Read: .morph/features/{feature}/1-design/schema-analysis.md (if exists)
68
+ Read: .morph/features/{feature}/2-design/spec.md
69
+ + Read: .morph/features/{feature}/2-design/contracts.cs (or contracts.ts)
70
+ + Read: .morph/features/{feature}/2-design/decisions.md
71
+ + Read: .morph/features/{feature}/2-design/decisions.md
72
+ + Read: .morph/features/{feature}/2-design/schema-analysis.md (if exists)
73
73
  + Read: .morph/config/config.json
74
74
  ```
75
75
 
@@ -91,7 +91,7 @@ cat .morph/config/config.json | grep -A3 '"architecture"'
91
91
  | `config.architecture.style` value | Path structure |
92
92
  |------------------------------------|---------------|
93
93
  | `"vertical-slice"` | VSA: `Features/{Entity}Feature/{Operation}/` |
94
- | any other value | DDD by layer |
94
+ | any other value | Standard layer-based |
95
95
 
96
96
  ### Step 2: Determine Execution Strategy
97
97
 
@@ -141,7 +141,10 @@ Create `.morph/features/$ARGUMENTS/3-plan/plan.md` with this structure:
141
141
 
142
142
  {Pattern and context for the group}
143
143
 
144
- ### {A1} — {Task Name}
144
+ ### {A1} — {Task Name} [FR001, FR003]
145
+
146
+ **Spec refs:** FR001 (description), FR003 (description)
147
+ **Contracts:** {RelevantRequest}, {RelevantResponse}, {ErrorType}
145
148
 
146
149
  **Files:**
147
150
  - Create: `exact/path/to/file.cs`
@@ -173,6 +176,7 @@ git commit -m "{message}"
173
176
  ```
174
177
 
175
178
  **Mandatory rules:**
179
+ - **FR cross-references in EVERY task** — each task MUST reference the spec FRs it implements (e.g., `[FR001, FR003]`). Extract FR IDs from spec.md and map them to task groups. Include `Spec refs:` and `Contracts:` fields.
176
180
  - Exact paths ALWAYS (never "add the file somewhere")
177
181
  - COMPLETE code in each step (never "add validation later" or "implement here")
178
182
  - Exact test commands with expected output (pass/fail message)