@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
@@ -28,31 +28,9 @@
28
28
 
29
29
  ---
30
30
 
31
- ## Phase 1 — Setup
32
-
33
- **Goal:** Load context, detect stack, activate agents
34
-
35
- | Action | Tool | Why |
36
- |--------|------|-----|
37
- | Verify feature state | **Bash** `morph-spec state get {feature}` | CLI command |
38
- | Detect agents + standards | **Read** `.morph/framework/agents.json` → match keywords → **Bash** `morph-spec state add-agent {f} {id}` per match | Keyword matching is fast inline |
39
- | Read project context | **Read** `.morph/context/README.md` | Single file |
40
- | Read config | **Read** `.morph/config.json` | Single file |
41
- | Scan project structure | **Glob** `src/**/*.{ts,tsx,cs}` | Understand codebase layout |
42
- | Get repo metadata | **GitHub MCP** `get_repo()` | Structured repo info (if MCP available) |
43
- | Get dispatch config for next phases | **Bash** `morph-spec dispatch-agents {feature} design` | Shows which agents will be dispatched in design phase |
44
- | Update state | **Bash** `morph-spec state set ...` | CLI command |
45
-
46
- **MCPs used:** GitHub (optional — for repo metadata).
47
-
48
- **Anti-patterns:**
49
- - ❌ Calling `detect-agents` CLI (it doesn't exist — read `.morph/framework/agents.json` directly)
50
- - ❌ Task agent to detect project stack inline (keyword matching is fast enough directly)
51
- - ❌ WebSearch for project info (it's local, use Read/Glob)
52
-
53
31
  ---
54
32
 
55
- ## Phase 1.5 — UI/UX Design
33
+ ## Phase 2 — UI/UX Design
56
34
 
57
35
  **Goal:** Create UI mockups, design system, component specs, user flows
58
36
 
@@ -80,7 +58,7 @@
80
58
 
81
59
  ---
82
60
 
83
- ## Phase 2 — Design (Technical Spec)
61
+ ## Phase 3 — Design (Technical Spec)
84
62
 
85
63
  **Goal:** Analyze schema, create spec.md, contracts-level{N}.cs, decisions.md
86
64
 
@@ -88,11 +66,11 @@
88
66
  |--------|------|-----|
89
67
  | Read proposal + UI specs | **Read** output files | Single known files |
90
68
  | **Get dispatch config** | **Bash** `morph-spec dispatch-agents {feature} design` | Which agents to spawn + their task prompts |
91
- | **Dispatch domain-architect** (parallel) | **Task** subagent with prompt from dispatch config | Analyze DDD complexity independently |
69
+ | **Dispatch architecture analyst** (parallel) | **Task** subagent with prompt from dispatch config | Analyze architecture complexity independently |
92
70
  | **Dispatch tech leads** (parallel) | **Task** subagents (dotnet-senior, nextjs-expert, etc.) | Validate architecture independently |
93
- | Get database schema | **Supabase MCP** `list_tables()`, `get_table_schema()` | **PREFERRED** — real schema data |
94
- | Get table relationships | **Supabase MCP** `get_relationships()` | Real FK/constraint data |
95
- | Get RLS policies | **Supabase MCP** `query()` with pg_policies | Security analysis |
71
+ | Get database schema | **Bash** `npx supabase db dump --local` or `psql <DB_URL>` | **PREFERRED** — real local schema |
72
+ | Get table relationships | **Bash** `psql <DB_URL>` FK queries | Real FK/constraint data |
73
+ | Get RLS policies | **Bash** `psql <DB_URL>` pg_policies query | Security analysis |
96
74
  | **Fallback:** Find query files | **Grep** `\.from\(` or `\.select\(` in `*.ts,*.tsx,*.js,*.cs` | When no DB MCP available |
97
75
  | **Fallback:** Find type definitions | **Glob** `src/**/types/**/*.ts` or `**/Entities/**/*.cs` | When no DB MCP available |
98
76
  | **Fallback:** Read query/type files | **Read** each matched file | Extract field names manually |
@@ -105,45 +83,22 @@
105
83
  | Create schema-analysis.md | **Write** to output directory | Document findings |
106
84
  | Update state | **Bash** `morph-spec state mark-output {feature} schemaAnalysis && morph-spec state mark-output {feature} spec && morph-spec state mark-output {feature} contracts && morph-spec state mark-output {feature} decisions` | CLI command |
107
85
 
108
- **MCPs used:** Supabase (schema analysis), Context7 (library research), GitHub (code search).
86
+ **Tools used:** Supabase CLI / psql (schema analysis — local Docker), Context7 (library research), GitHub (code search).
109
87
 
110
- **Parallel dispatch opportunity:** Domain complexity analysis (domain-architect) and schema analysis (phase-codebase-analysis) are **independent** — run them as parallel Task subagents to cut design phase time.
88
+ **Parallel dispatch opportunity:** Architecture complexity analysis and schema analysis (phase-codebase-analysis) are **independent** — run them as parallel Task subagents to cut design phase time.
111
89
 
112
90
  **Anti-patterns:**
113
91
  - ❌ Guessing field names without checking schema (use MCP or Grep first!)
114
92
  - ❌ Task agent to read a single spec file (use Read directly)
115
- - ❌ WebSearch for database schema (use Supabase MCP or code analysis)
93
+ - ❌ WebSearch for database schema (use Supabase CLI/psql or code analysis)
116
94
  - ❌ Manually writing contracts-level{N}.cs from scratch (use template render)
117
95
  - ❌ Running domain analysis and schema analysis sequentially (they're independent — run in parallel)
118
96
 
119
97
  ---
120
98
 
121
- ## Phase 3 — Clarify
122
-
123
- **Goal:** Identify ambiguities, ask clarification questions, update spec
124
-
125
- | Action | Tool | Why |
126
- |--------|------|-----|
127
- | Read spec.md in detail | **Read** spec.md | Full content analysis |
128
- | Read contracts.cs | **Read** contracts.cs | Check contract consistency |
129
- | Read schema-analysis.md | **Read** schema-analysis.md | Cross-reference with spec |
130
- | Verify library capabilities | **Context7 MCP** `query_docs()` | Confirm feasibility of spec requirements |
131
- | Check known issues/limitations | **GitHub MCP** `search_issues()` | Library bugs affecting design |
132
- | Research edge case behavior | **WebSearch** | External knowledge for edge cases |
133
- | Update spec with clarifications | **Edit** spec.md | Preserve existing content, add sections |
134
- | Create clarifications.md | **Bash** `morph-spec template render docs/clarifications ...` | Use template |
135
- | Update state | **Bash** `morph-spec state mark-output {feature} clarifications` | CLI command |
136
-
137
- **MCPs used:** Context7 (validate feasibility), GitHub (known issues).
138
-
139
- **Anti-patterns:**
140
- - ❌ Task agent to read spec (just Read it directly)
141
- - ❌ Rewriting spec from scratch (use Edit to update sections)
142
- - ❌ Skipping schema-analysis.md cross-reference (critical for accuracy)
143
-
144
99
  ---
145
100
 
146
- ## Phase 4 — Tasks
101
+ ## Phase 6 — Tasks
147
102
 
148
103
  **Goal:** Break spec into tasks, define dependencies, set checkpoints
149
104
 
@@ -171,7 +126,7 @@
171
126
 
172
127
  ---
173
128
 
174
- ## Phase 5 — Implement
129
+ ## Phase 7 — Implement
175
130
 
176
131
  **Goal:** Implement tasks, checkpoint every 3, create recap
177
132
 
@@ -183,12 +138,13 @@
183
138
  | Create new files | **Write** new source files | New entities, services, pages |
184
139
  | Modify existing files | **Edit** existing source files | Add features to existing code |
185
140
  | Look up API during coding | **Context7 MCP** `query_docs()` | Accurate library usage |
186
- | Run database migrations | **Supabase MCP** `query()` | DDL statements directly |
141
+ | Run database migrations | **Bash** `npx supabase migration up --local` | DDL via psql |
187
142
  | **Fallback:** Run migrations | **Bash** `npx supabase migration ...` or `dotnet ef ...` | CLI tools |
188
143
  | Build project | **Bash** `dotnet build` or `npm run build` | Verify compilation |
189
144
  | Run tests | **Bash** `dotnet test` or `npm test` | Verify implementation |
190
145
  | Checkpoint validation | **Bash** `morph-spec checkpoint ...` | Every 3 tasks |
191
- | Create RLS policies | **Supabase MCP** `query()` | Security policies |
146
+ | Create RLS policies | **Bash** write SQL migration + `npx supabase migration up --local` | Security policies |
147
+ | Manage containers | **Bash** `docker ps`, `docker logs`, `docker compose` | Container health + debugging |
192
148
  | Create infrastructure | **Bash** `az bicep ...` or Bicep files via Write | IaC |
193
149
  | Create PR | **GitHub MCP** `create_pull_request()` or **Bash** `gh pr create` | Ship code |
194
150
  | Mark task done | **Bash** `morph-spec task done T001` | State tracking |
@@ -197,7 +153,7 @@
197
153
  | Screenshot para recap.md | **Playwright MCP** `browser_take_screenshot()` | Manual screenshot |
198
154
  | Mark recap output | **Bash** `morph-spec state mark-output {feature} recap` | CLI command |
199
155
 
200
- **MCPs used:** Supabase (migrations, RLS), Context7 (API lookup), GitHub (PRs), Playwright (smoke test, verification).
156
+ **Tools used:** Supabase CLI (migrations, RLS — local Docker), Context7 (API lookup), GitHub (PRs), Playwright (smoke test, verification).
201
157
 
202
158
  **Parallel dispatch threshold:**
203
159
  - `tasks.total ≥ 6` AND feature spans 2+ domains (e.g. `dotnet-senior` + `nextjs-expert`) → dispatch parallel implementers
@@ -30,16 +30,10 @@ allowed-tools: Read, Bash, Glob, Grep
30
30
  - [ ] `morph-spec state get {feature}` shows `phase: proposal`
31
31
  - [ ] `morph-spec state mark-output {feature} proposal` was called
32
32
 
33
- ### Phase 1 — Setup
33
+ ### Phase 1 — UI/UX (if applicable)
34
34
 
35
- - [ ] `morph-spec state get {feature}` shows `activeAgents` populated
36
- - [ ] Stack and architecture confirmed in context
37
- - [ ] State updated to `phase: setup`
38
-
39
- ### Phase 1.5 — UI/UX (if applicable)
40
-
41
- - [ ] `ui-design-system.md` exists with color tokens, typography, spacing
42
- - [ ] `ui-mockups.md` exists with wireframes/ASCII mockups
35
+ - [ ] `design-system.md` exists with color tokens, typography, spacing
36
+ - [ ] `mockups.md` exists with wireframes/ASCII mockups
43
37
  - [ ] `morph-spec validate-feature {feature} --phase uiux` passes
44
38
 
45
39
  ### Phase 2 — Design
@@ -47,16 +41,10 @@ allowed-tools: Read, Bash, Glob, Grep
47
41
  - [ ] `spec.md` contains: Overview, Functional Requirements, Technical Architecture, Data Model
48
42
  - [ ] `contracts.cs` exists with DTOs matching `schema-analysis.md`
49
43
  - [ ] `decisions.md` contains at least 1 ADR
44
+ - [ ] Quality + satisfaction score ≥ 85 (or user finalized)
50
45
  - [ ] `morph-spec validate-feature {feature} --phase design` passes
51
46
 
52
- ### Phase 3 — Clarify
53
-
54
- - [ ] All clarification questions answered by user
55
- - [ ] `spec.md` updated with Clarifications section
56
- - [ ] `clarifications.md` exists in `1-design/`
57
- - [ ] No unresolved ambiguities in spec
58
-
59
- ### Phase 4 — Plan
47
+ ### Phase 3 — Plan
60
48
 
61
49
  - [ ] `plan.md` exists in `.morph/features/{feature}/3-plan/`
62
50
  - [ ] Plan contains: Goal, Architecture, Execution Strategy, Task Groups
@@ -65,14 +53,14 @@ allowed-tools: Read, Bash, Glob, Grep
65
53
  - [ ] `morph-spec state mark-output {feature} plan` was called
66
54
  - [ ] User approved plan via `morph-spec approve {feature} plan`
67
55
 
68
- ### Phase 5 — Tasks
56
+ ### Phase 6 — Tasks
69
57
 
70
58
  - [ ] `tasks.md` exists
71
59
  - [ ] All tasks have: ID, title, description, dependencies
72
60
  - [ ] Checkpoints defined (every 3 tasks)
73
61
  - [ ] `morph-spec state set {feature} tasks.total N` called
74
62
 
75
- ### Phase 6 — Implement
63
+ ### Phase 7 — Implement
76
64
 
77
65
  - [ ] All tasks marked as completed
78
66
  - [ ] Build succeeds (`npm run build` or `dotnet build`)
@@ -23,16 +23,16 @@ const PHASE_OUTPUTS = {
23
23
  { file: '0-proposal/proposal.md', required: true },
24
24
  ],
25
25
  design: [
26
- { file: '1-design/spec.md', required: true },
27
- { file: '1-design/contracts.cs', required: true },
28
- { file: '1-design/decisions.md', required: true },
29
- { file: '1-design/schema-analysis.md', required: false },
26
+ { file: '2-design/spec.md', required: true },
27
+ { file: '2-design/contracts.cs', required: true },
28
+ { file: '2-design/decisions.md', required: true },
29
+ { file: '2-design/schema-analysis.md', required: false },
30
30
  ],
31
31
  uiux: [
32
- { file: '2-ui/design-system.md', required: true },
33
- { file: '2-ui/mockups.md', required: true },
34
- { file: '2-ui/components.md', required: true },
35
- { file: '2-ui/flows.md', required: false },
32
+ { file: '1-ui/design-system.md', required: true },
33
+ { file: '1-ui/mockups.md', required: true },
34
+ { file: '1-ui/components.md', required: true },
35
+ { file: '1-ui/flows.md', required: false },
36
36
  ],
37
37
  tasks: [
38
38
  { file: '4-tasks/tasks.md', required: true },
@@ -4,4 +4,4 @@ Phase orchestration and workflow management.
4
4
 
5
5
  **Purpose:** Skills that implement MORPH workflow phases (FASE 0-6).
6
6
 
7
- **Examples:** phase-setup, phase-design, phase-uiux
7
+ **Examples:** phase-design, phase-uiux, phase-plan, phase-implement
@@ -3,7 +3,7 @@ name: morph-phase-codebase-analysis
3
3
  description: MORPH-SPEC Design sub-phase that analyzes existing codebase and database schema, producing schema-analysis.md with real column names, types, relationships, and field mismatches. Use at the start of Design phase before generating contracts.cs to prevent incorrect field names or types.
4
4
  user-invocable: false
5
5
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
- cliVersion: "4.12.0"
6
+ cliVersion: "4.13.0"
7
7
  ---
8
8
 
9
9
  # MORPH Codebase Analysis - Design Sub-phase
@@ -15,7 +15,7 @@ Automates existing code analysis to generate `schema-analysis.md` with real data
15
15
 
16
16
  ## Prerequisites
17
17
 
18
- - [ ] Phase 1 (Setup) completed
18
+ - [ ] Proposal phase completed
19
19
  - [ ] Feature has approved `proposal.md`
20
20
  - [ ] Project context loaded (stack, agents)
21
21
 
@@ -26,17 +26,17 @@ Automates existing code analysis to generate `schema-analysis.md` with real data
26
26
 
27
27
  | Action | Tool | Alternative |
28
28
  |------|------------|-------------|
29
- | List database tables | **Supabase MCP** `list_tables()` | **Grep** `.from(` in code |
30
- | Get table schema | **Supabase MCP** `get_table_schema()` | **Read** type definitions |
31
- | Get FK relationships | **Supabase MCP** `get_relationships()` | **Grep** JOIN/FK patterns |
32
- | Get RLS policies | **Supabase MCP** `query()` | **Read** policy files |
29
+ | List database tables | **Bash** `npx supabase db dump --local` or `psql <DB_URL>` | **Grep** `.from(` in code |
30
+ | Get table schema | **Bash** `psql <DB_URL> -c "SELECT ... FROM information_schema.columns"` | **Read** type definitions |
31
+ | Get FK relationships | **Bash** `psql <DB_URL> -c "SELECT ... FROM information_schema.table_constraints"` | **Grep** JOIN/FK patterns |
32
+ | Get RLS policies | **Bash** `psql <DB_URL> -c "SELECT ... FROM pg_policies"` | **Read** policy files |
33
33
  | Find queries in code | **Grep** `\.from\(` in `*.ts,*.tsx,*.js,*.cs` | — |
34
34
  | Find type definitions | **Glob** `src/**/types/**/*.ts` or `**/Entities/**/*.cs` | — |
35
35
  | Read found files | **Read** each file | — |
36
36
  | Complex multi-file analysis | **Task** (subagent Explore) | Read individual |
37
37
  | Generate schema-analysis.md | **Write** using template | **Bash** template render |
38
38
 
39
- **MCPs for this phase:** Supabase (schema — **PRIORITY**), Generic database MCPs.
39
+ **Tools for this phase:** Supabase CLI / psql (schema — **PRIORITY**, local Docker), Generic database CLIs.
40
40
 
41
41
  ---
42
42
 
@@ -48,57 +48,56 @@ Automates existing code analysis to generate `schema-analysis.md` with real data
48
48
  Verify first with a test call before attempting to use it.
49
49
 
50
50
  ```
51
- 1. IF Supabase MCP configured in settings.json:
52
- → Try mcp__supabase__list_tables() with implicit timeout
53
- → IF returns valid data (array of tables with content):
54
- → Use Method A (direct MCP)
55
- → IF returns error, timeout, empty array, or inaccessible data:
56
- → Log: "Supabase MCP configured but inaccessible (CloudSQL? Auth? Permissions?)"
57
- → Use Method B (static code analysis)
58
-
59
- 2. IF Database MCP (other) configured:
60
- → Test connectivity with trivial query before using
61
- → IF OK: Use adapted Method A
62
- → IF fails: Use Method B
63
-
64
- 3. IF no MCP available:
51
+ 0. **Docker health check:** Run `docker info --format '{{.ServerVersion}}'` to verify Docker is running.
52
+ → IF Docker is not running → warn user: "Docker Desktop not running — Supabase local requires Docker."
53
+ → Ask user via AskUserQuestion: start Docker or fall back to Method B.
54
+
55
+ 1. IF Supabase project detected (supabase/ dir exists OR config.json stack includes supabase):
56
+ → Run `npx supabase status` to verify local Docker is running
57
+ → IF running (exit 0): extract DB URL from output → Use Method A (direct CLI/psql)
58
+ → IF not running (exit non-zero):
59
+ → Log: "Supabase local not running — run `npx supabase start`"
60
+ → Ask user via AskUserQuestion: start it or fall back to Method B
61
+
62
+ 2. IF no Supabase detected:
65
63
  → Use Method B (static code analysis)
66
64
  ```
67
65
 
68
- **Signs of inaccessible MCP:**
69
- - Empty response or `[]` from `list_tables()`
70
- - Authentication error / permission denied
71
- - Returned schema doesn't match code (e.g., tables exist in code but not in MCP)
66
+ **Signs of unavailable local Supabase:**
67
+ - `npx supabase status` exits with non-zero code
68
+ - Docker not running or Supabase containers stopped
72
69
  - Project uses database other than Supabase (CloudSQL, RDS, Azure SQL, etc.)
73
70
 
74
- ### Step 2A: MCP Method (Preferred)
71
+ ### Step 2A: CLI Method (Preferred — Local Docker)
75
72
 
76
- **Tools:** Supabase MCP
73
+ **Tools:** Bash (Supabase CLI + psql)
77
74
 
78
- ```javascript
79
- // 1. List all tables
80
- const tables = await mcp__supabase__list_tables();
75
+ ```bash
76
+ # 0. Get local DB URL (port may vary per instance)
77
+ npx supabase status
78
+ # → Extract "DB URL" line, e.g.: postgresql://postgres:postgres@127.0.0.1:54322/postgres
81
79
 
82
- // 2. For each feature-relevant table:
83
- for (const table of relevantTables) {
84
- // 2a. Complete schema
85
- const schema = await mcp__supabase__get_table_schema({ table: table.name });
86
- // → column_name, data_type, is_nullable, column_default
80
+ # 1. List all tables
81
+ npx supabase db dump --local --schema public 2>/dev/null | grep "CREATE TABLE"
87
82
 
88
- // 2b. Relationships
89
- const rels = await mcp__supabase__get_relationships({ table: table.name });
90
- // → foreign_table, foreign_column, constraint_type
83
+ # 2. For each feature-relevant table:
91
84
 
92
- // 2c. Indexes
93
- const indexes = await mcp__supabase__query({
94
- query: `SELECT indexname, indexdef FROM pg_indexes WHERE tablename = '${table.name}'`
95
- });
85
+ # 2a. Complete schema
86
+ psql $DB_URL -c "SELECT column_name, data_type, is_nullable, column_default \
87
+ FROM information_schema.columns WHERE table_name = 'TABLE_NAME' ORDER BY ordinal_position"
96
88
 
97
- // 2d. RLS policies (security)
98
- const policies = await mcp__supabase__query({
99
- query: `SELECT policyname, cmd, qual FROM pg_policies WHERE tablename = '${table.name}'`
100
- });
101
- }
89
+ # 2b. Relationships (FK)
90
+ psql $DB_URL -c "SELECT tc.table_name, kcu.column_name, ccu.table_name AS foreign_table, \
91
+ ccu.column_name AS foreign_column FROM information_schema.table_constraints tc \
92
+ JOIN information_schema.key_column_usage kcu ON tc.constraint_name = kcu.constraint_name \
93
+ JOIN information_schema.constraint_column_usage ccu ON tc.constraint_name = ccu.constraint_name \
94
+ WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = 'TABLE_NAME'"
95
+
96
+ # 2c. Indexes
97
+ psql $DB_URL -c "SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'TABLE_NAME'"
98
+
99
+ # 2d. RLS policies (security)
100
+ psql $DB_URL -c "SELECT policyname, cmd, qual FROM pg_policies WHERE tablename = 'TABLE_NAME'"
102
101
  ```
103
102
 
104
103
  ### Step 2B: Static Analysis Method (Fallback)
@@ -155,7 +154,7 @@ The template is at `framework/templates/docs/schema-analysis.md`. Use it via:
155
154
 
156
155
  ```bash
157
156
  morph-spec template render docs/schema-analysis \
158
- .morph/features/{feature}/1-design/schema-analysis.md \
157
+ .morph/features/{feature}/2-design/schema-analysis.md \
159
158
  '{
160
159
  "FEATURE_NAME": "{feature}",
161
160
  "FEATURE_NAME_TITLE": "{Feature Display Name}",
@@ -214,7 +213,7 @@ Use the template at `framework/templates/docs/schema-analysis.md`:
214
213
 
215
214
  ```bash
216
215
  morph-spec template render docs/schema-analysis \
217
- .morph/features/{feature-name}/1-design/schema-analysis.md \
216
+ .morph/features/{feature-name}/2-design/schema-analysis.md \
218
217
  '{ "FEATURE_NAME": "{feature-name}", "DATE": "..." }'
219
218
  ```
220
219
 
@@ -230,7 +229,7 @@ morph-spec state mark-output {feature-name} schema-analysis
230
229
 
231
230
  ## Outputs
232
231
 
233
- - `.morph/features/{feature}/1-design/schema-analysis.md`
232
+ - `.morph/features/{feature}/2-design/schema-analysis.md`
234
233
  - State updated with `schemaAnalysis` output
235
234
 
236
235
  ## CHECKPOINT