@polymorphism-tech/morph-spec 3.1.0 → 4.2.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 (333) hide show
  1. package/CLAUDE.md +882 -3
  2. package/README.md +79 -18
  3. package/bin/detect-agents.js +1 -1
  4. package/bin/morph-spec.js +163 -26
  5. package/bin/task-manager.cjs +101 -7
  6. package/bin/validate.js +1 -1
  7. package/docs/cli-auto-detection.md +219 -0
  8. package/docs/getting-started.md +0 -5
  9. package/docs/llm-interaction-config.md +735 -0
  10. package/docs/troubleshooting.md +269 -0
  11. package/docs/v3.0/AGENTS.md +521 -0
  12. package/docs/v3.0/ANALYSIS.md +555 -0
  13. package/docs/v3.0/ARCHITECTURE.md +436 -0
  14. package/docs/v3.0/EXECUTION-FLOW.md +1304 -0
  15. package/docs/v3.0/FEATURES.md +688 -0
  16. package/docs/v3.0/README.md +231 -0
  17. package/docs/v3.0/ROADMAP.md +801 -0
  18. package/docs/validation-checklist.md +0 -1
  19. package/package.json +5 -1
  20. package/src/commands/agents/index.js +4 -0
  21. package/src/commands/agents/spawn-team.js +172 -0
  22. package/src/commands/{create-story.js → feature/create-story.js} +357 -354
  23. package/src/commands/feature/index.js +6 -0
  24. package/src/commands/{shard-spec.js → feature/shard-spec.js} +2 -2
  25. package/src/commands/{sprint-status.js → feature/sprint-status.js} +1 -1
  26. package/src/commands/{generate-context.js → generation/generate-context.js} +40 -40
  27. package/src/commands/{generate.js → generation/generate.js} +130 -3
  28. package/src/commands/generation/index.js +5 -0
  29. package/src/commands/index.js +16 -0
  30. package/src/commands/learning/capture-pattern.js +121 -0
  31. package/src/commands/learning/index.js +5 -0
  32. package/src/commands/learning/search-patterns.js +126 -0
  33. package/src/commands/{detect-agents.js → project/detect-agents.js} +178 -178
  34. package/src/commands/project/detect-workflow.js +174 -0
  35. package/src/commands/{detect.js → project/detect.js} +104 -104
  36. package/src/commands/{doctor.js → project/doctor.js} +356 -356
  37. package/src/commands/project/index.js +10 -0
  38. package/src/commands/{init.js → project/init.js} +305 -258
  39. package/src/commands/{sync.js → project/sync.js} +167 -167
  40. package/src/commands/{update.js → project/update.js} +240 -204
  41. package/src/commands/{advance-phase.js → state/advance-phase.js} +416 -266
  42. package/src/commands/state/approve.js +221 -0
  43. package/src/commands/state/index.js +8 -0
  44. package/src/commands/{rollback-phase.js → state/rollback-phase.js} +185 -185
  45. package/src/commands/{state.js → state/state.js} +334 -334
  46. package/src/commands/{validate-phase.js → state/validate-phase.js} +221 -221
  47. package/src/commands/tasks/index.js +4 -0
  48. package/src/commands/{task.js → tasks/task.js} +78 -78
  49. package/src/commands/templates/index.js +8 -0
  50. package/src/commands/templates/template-customize.js +101 -0
  51. package/src/commands/templates/template-list.js +128 -0
  52. package/src/commands/templates/template-render.js +95 -0
  53. package/src/commands/templates/template-show.js +131 -0
  54. package/src/commands/templates/template-validate.js +91 -0
  55. package/src/commands/utils/index.js +7 -0
  56. package/src/commands/utils/migrate-state.js +158 -0
  57. package/src/commands/{session-summary.js → utils/session-summary.js} +291 -291
  58. package/src/commands/{troubleshoot.js → utils/troubleshoot.js} +222 -222
  59. package/src/commands/utils/upgrade.js +346 -0
  60. package/src/commands/{analyze-blazor-concurrency.js → validation/analyze-blazor-concurrency.js} +193 -193
  61. package/src/commands/validation/index.js +8 -0
  62. package/src/commands/{lint-fluent.js → validation/lint-fluent.js} +352 -352
  63. package/src/commands/{validate-blazor-state.js → validation/validate-blazor-state.js} +210 -210
  64. package/src/commands/{validate-blazor.js → validation/validate-blazor.js} +156 -156
  65. package/src/commands/{validate-css.js → validation/validate-css.js} +84 -84
  66. package/src/core/index.js +10 -0
  67. package/src/core/registry/command-registry.js +302 -0
  68. package/src/core/registry/index.js +8 -0
  69. package/src/core/registry/validator-registry.js +204 -0
  70. package/src/core/state/index.js +8 -0
  71. package/src/core/state/phase-state-machine.js +214 -0
  72. package/src/{lib → core/state}/state-manager.js +572 -414
  73. package/src/core/templates/index.js +9 -0
  74. package/src/core/templates/template-data-sources.js +325 -0
  75. package/src/core/templates/template-registry.js +335 -0
  76. package/src/core/templates/template-renderer.js +477 -0
  77. package/src/core/templates/template-validator.js +296 -0
  78. package/src/core/workflows/index.js +7 -0
  79. package/src/core/workflows/workflow-detector.js +354 -0
  80. package/src/generator/config-generator.js +206 -0
  81. package/src/generator/templates/config.json.template +40 -0
  82. package/src/generator/templates/project.md.template +67 -0
  83. package/src/lib/{complexity-analyzer.js → analysis/complexity-analyzer.js} +441 -441
  84. package/src/lib/analysis/index.js +7 -0
  85. package/src/lib/checkpoints/checkpoint-hooks.js +258 -0
  86. package/src/lib/checkpoints/index.js +7 -0
  87. package/src/lib/detectors/config-detector.js +223 -223
  88. package/src/lib/detectors/conversation-analyzer.js +163 -163
  89. package/src/lib/{design-system-detector.js → detectors/design-system-detector.js} +187 -187
  90. package/src/lib/detectors/index.js +87 -84
  91. package/src/lib/detectors/standards-generator.js +275 -275
  92. package/src/lib/detectors/structure-detector.js +245 -245
  93. package/src/lib/{context-generator.js → generators/context-generator.js} +526 -516
  94. package/src/lib/generators/index.js +10 -0
  95. package/src/lib/generators/metadata-extractor.js +387 -0
  96. package/src/lib/{recap-generator.js → generators/recap-generator.js} +205 -205
  97. package/src/lib/learning/index.js +7 -0
  98. package/src/lib/orchestration/index.js +7 -0
  99. package/src/lib/{team-orchestrator.js → orchestration/team-orchestrator.js} +323 -323
  100. package/src/lib/stacks/index.js +7 -0
  101. package/src/lib/{stack-resolver.js → stacks/stack-resolver.js} +180 -148
  102. package/src/lib/standards/index.js +7 -0
  103. package/src/lib/{standards-context-injector.js → standards/standards-context-injector.js} +298 -288
  104. package/src/lib/troubleshooting/index.js +8 -0
  105. package/src/lib/{troubleshoot-grep.js → troubleshooting/troubleshoot-grep.js} +204 -204
  106. package/src/lib/{troubleshoot-index.js → troubleshooting/troubleshoot-index.js} +144 -144
  107. package/src/lib/validators/architecture/architecture-validator.js +387 -0
  108. package/src/lib/validators/architecture/index.js +7 -0
  109. package/src/lib/validators/architecture-validator.js +40 -367
  110. package/src/lib/{blazor-concurrency-analyzer.js → validators/blazor/blazor-concurrency-analyzer.js} +277 -288
  111. package/src/lib/{blazor-state-validator.js → validators/blazor/blazor-state-validator.js} +279 -291
  112. package/src/lib/{blazor-validator.js → validators/blazor/blazor-validator.js} +369 -374
  113. package/src/lib/validators/blazor/index.js +9 -0
  114. package/src/lib/validators/content/content-validator.js +351 -0
  115. package/src/lib/validators/content/index.js +7 -0
  116. package/src/lib/validators/content-validator.js +164 -0
  117. package/src/lib/validators/{contract-compliance-validator.js → contracts/contract-compliance-validator.js} +273 -273
  118. package/src/lib/validators/contracts/index.js +7 -0
  119. package/src/lib/{css-validator.js → validators/css/css-validator.js} +352 -352
  120. package/src/lib/validators/css/index.js +7 -0
  121. package/src/lib/validators/{design-system-validator.js → design-system/design-system-validator.js} +231 -231
  122. package/src/lib/validators/design-system/index.js +7 -0
  123. package/src/lib/validators/package-validator.js +41 -340
  124. package/src/lib/validators/packages/index.js +7 -0
  125. package/src/lib/validators/packages/package-validator.js +360 -0
  126. package/src/lib/validators/shared/index.js +12 -0
  127. package/src/lib/validators/shared/issue-counter.js +18 -0
  128. package/src/lib/validators/shared/result-formatter.js +124 -0
  129. package/src/lib/{spec-validator.js → validators/spec-validator.js} +258 -258
  130. package/src/lib/validators/ui/index.js +7 -0
  131. package/src/lib/validators/ui/ui-contrast-validator.js +422 -0
  132. package/src/lib/validators/ui-contrast-validator.js +31 -409
  133. package/src/lib/{validation-runner.js → validators/validation-runner.js} +286 -284
  134. package/src/llm/analyzer.js +215 -0
  135. package/src/llm/environment-detector.js +43 -0
  136. package/src/llm/few-shot-examples.js +216 -0
  137. package/src/llm/project-config-schema.json +188 -0
  138. package/src/llm/prompt-builder.js +96 -0
  139. package/src/orchestrator.js +206 -0
  140. package/src/sanitizer/context-sanitizer.js +221 -0
  141. package/src/sanitizer/patterns.js +163 -0
  142. package/src/scanner/project-scanner.js +242 -0
  143. package/src/ui/diff-display.js +91 -0
  144. package/src/ui/interactive-wizard.js +96 -0
  145. package/src/ui/user-review.js +211 -0
  146. package/src/ui/wizard-questions.js +188 -0
  147. package/src/utils/color-utils.js +70 -0
  148. package/src/utils/file-copier.js +188 -189
  149. package/src/utils/process-handler.js +97 -0
  150. package/src/writer/file-writer.js +86 -0
  151. package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +3 -3
  152. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/api-designer.md +59 -0
  153. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +45 -255
  154. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +33 -88
  155. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +25 -89
  156. package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/hangfire-orchestrator.md +64 -0
  157. package/stacks/blazor-azure/.morph/config/agents.json +879 -764
  158. package/stacks/blazor-azure/.morph/hooks/{pre-commit-tests.sh → pre-commit/tests-csharp.sh} +3 -2
  159. package/stacks/blazor-azure/.morph/templates/.gitkeep +0 -0
  160. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +41 -0
  161. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +24 -0
  162. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +23 -0
  163. package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +221 -0
  164. package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +79 -0
  165. package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +529 -0
  166. package/stacks/nextjs-supabase/.claude/commands/morph-infra.md +209 -0
  167. package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +227 -0
  168. package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +122 -0
  169. package/stacks/nextjs-supabase/.claude/commands/morph-status.md +86 -0
  170. package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +122 -0
  171. package/stacks/nextjs-supabase/.claude/settings.local.json +6 -0
  172. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +30 -150
  173. package/stacks/nextjs-supabase/.morph/config/agents.json +345 -345
  174. package/stacks/nextjs-supabase/.morph/hooks/pre-commit/tests-typescript.sh +61 -0
  175. package/stacks/nextjs-supabase/.morph/templates/.gitkeep +0 -0
  176. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +22 -0
  177. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +22 -0
  178. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +35 -0
  179. package/stacks/nextjs-supabase/README.md +6 -15
  180. package/bin/render-template.js +0 -303
  181. package/bin/semantic-detect-agents.js +0 -247
  182. package/bin/validate-agents-skills.js +0 -257
  183. package/bin/validate-agents.js +0 -70
  184. package/bin/validate-phase.js +0 -263
  185. package/docs/examples.md +0 -328
  186. package/scripts/reorganize-skills.cjs +0 -175
  187. package/scripts/validate-agents-structure.cjs +0 -52
  188. package/scripts/validate-skills.cjs +0 -180
  189. package/src/commands/deploy.js +0 -780
  190. package/src/lib/continuous-validator.js +0 -421
  191. package/src/lib/decision-constraint-loader.js +0 -109
  192. package/src/lib/design-system-scaffolder.js +0 -299
  193. package/src/lib/hook-executor.js +0 -257
  194. package/src/lib/mockup-generator.js +0 -366
  195. package/src/lib/ui-detector.js +0 -350
  196. package/stacks/blazor-azure/.azure/README.md +0 -293
  197. package/stacks/blazor-azure/.azure/docs/azure-devops-setup.md +0 -454
  198. package/stacks/blazor-azure/.azure/docs/branch-strategy.md +0 -398
  199. package/stacks/blazor-azure/.azure/docs/local-development.md +0 -515
  200. package/stacks/blazor-azure/.azure/pipelines/pipeline-variables.yml +0 -34
  201. package/stacks/blazor-azure/.azure/pipelines/prod-pipeline.yml +0 -319
  202. package/stacks/blazor-azure/.azure/pipelines/staging-pipeline.yml +0 -234
  203. package/stacks/blazor-azure/.azure/pipelines/templates/build-dotnet.yml +0 -75
  204. package/stacks/blazor-azure/.azure/pipelines/templates/deploy-app-service.yml +0 -94
  205. package/stacks/blazor-azure/.azure/pipelines/templates/deploy-container-app.yml +0 -120
  206. package/stacks/blazor-azure/.azure/pipelines/templates/infra-deploy.yml +0 -90
  207. package/stacks/blazor-azure/.claude/settings.local.json +0 -15
  208. package/stacks/blazor-azure/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -392
  209. package/stacks/blazor-azure/.morph/docs/workflows/design-impl.md +0 -37
  210. package/stacks/blazor-azure/.morph/docs/workflows/enforcement-pipeline.md +0 -668
  211. package/stacks/blazor-azure/.morph/docs/workflows/fast-track.md +0 -29
  212. package/stacks/blazor-azure/.morph/docs/workflows/full-morph.md +0 -76
  213. package/stacks/blazor-azure/.morph/docs/workflows/standard.md +0 -44
  214. package/stacks/blazor-azure/.morph/docs/workflows/ui-refresh.md +0 -39
  215. package/stacks/blazor-azure/.morph/examples/api-nextjs/README.md +0 -241
  216. package/stacks/blazor-azure/.morph/examples/api-nextjs/contracts.ts +0 -307
  217. package/stacks/blazor-azure/.morph/examples/api-nextjs/spec.md +0 -399
  218. package/stacks/blazor-azure/.morph/examples/api-nextjs/tasks.md +0 -168
  219. package/stacks/blazor-azure/.morph/examples/micro-saas/README.md +0 -125
  220. package/stacks/blazor-azure/.morph/examples/micro-saas/contracts.cs +0 -358
  221. package/stacks/blazor-azure/.morph/examples/micro-saas/decisions.md +0 -246
  222. package/stacks/blazor-azure/.morph/examples/micro-saas/spec.md +0 -236
  223. package/stacks/blazor-azure/.morph/examples/micro-saas/tasks.md +0 -150
  224. package/stacks/blazor-azure/.morph/examples/multi-agent/README.md +0 -309
  225. package/stacks/blazor-azure/.morph/examples/multi-agent/contracts.cs +0 -433
  226. package/stacks/blazor-azure/.morph/examples/multi-agent/spec.md +0 -479
  227. package/stacks/blazor-azure/.morph/examples/multi-agent/tasks.md +0 -185
  228. package/stacks/blazor-azure/.morph/examples/scheduled-reports/decisions.md +0 -158
  229. package/stacks/blazor-azure/.morph/examples/scheduled-reports/proposal.md +0 -95
  230. package/stacks/blazor-azure/.morph/examples/scheduled-reports/spec.md +0 -267
  231. package/stacks/blazor-azure/.morph/examples/state-v3.json +0 -188
  232. package/stacks/blazor-azure/.morph/hooks/README.md +0 -348
  233. package/stacks/blazor-azure/.morph/hooks/pre-commit-agents.sh +0 -24
  234. package/stacks/blazor-azure/.morph/hooks/pre-commit-all.sh +0 -48
  235. package/stacks/blazor-azure/.morph/hooks/pre-commit-specs.sh +0 -49
  236. package/stacks/blazor-azure/.morph/hooks/task-completed.js +0 -73
  237. package/stacks/blazor-azure/.morph/hooks/teammate-idle.js +0 -68
  238. package/stacks/blazor-azure/.morph/standards/agent-framework-blazor-ui.md +0 -359
  239. package/stacks/blazor-azure/.morph/standards/agent-framework-production.md +0 -410
  240. package/stacks/blazor-azure/.morph/standards/agent-framework-setup.md +0 -413
  241. package/stacks/blazor-azure/.morph/standards/agent-framework-workflows.md +0 -349
  242. package/stacks/blazor-azure/.morph/standards/agent-teams-workflow.md +0 -474
  243. package/stacks/blazor-azure/.morph/standards/architecture.md +0 -325
  244. package/stacks/blazor-azure/.morph/standards/azure.md +0 -605
  245. package/stacks/blazor-azure/.morph/standards/coding.md +0 -377
  246. package/stacks/blazor-azure/.morph/standards/dotnet10-migration.md +0 -520
  247. package/stacks/blazor-azure/.morph/standards/fluent-ui-setup.md +0 -590
  248. package/stacks/blazor-azure/.morph/standards/migration-guide.md +0 -514
  249. package/stacks/blazor-azure/.morph/standards/passkeys-auth.md +0 -423
  250. package/stacks/blazor-azure/.morph/standards/vector-search-rag.md +0 -536
  251. package/stacks/blazor-azure/.morph/templates/CONTEXT-FEATURE.md +0 -276
  252. package/stacks/blazor-azure/.morph/templates/CONTEXT.md +0 -170
  253. package/stacks/blazor-azure/.morph/templates/FluentDesignTheme.cs +0 -149
  254. package/stacks/blazor-azure/.morph/templates/MudTheme.cs +0 -281
  255. package/stacks/blazor-azure/.morph/templates/agent.cs +0 -163
  256. package/stacks/blazor-azure/.morph/templates/clarify-questions.md +0 -159
  257. package/stacks/blazor-azure/.morph/templates/component.razor +0 -239
  258. package/stacks/blazor-azure/.morph/templates/contracts/Commands.cs +0 -74
  259. package/stacks/blazor-azure/.morph/templates/contracts/Entities.cs +0 -25
  260. package/stacks/blazor-azure/.morph/templates/contracts/Queries.cs +0 -74
  261. package/stacks/blazor-azure/.morph/templates/contracts/README.md +0 -74
  262. package/stacks/blazor-azure/.morph/templates/contracts.cs +0 -217
  263. package/stacks/blazor-azure/.morph/templates/decisions.md +0 -123
  264. package/stacks/blazor-azure/.morph/templates/design-system.css +0 -226
  265. package/stacks/blazor-azure/.morph/templates/infra/.dockerignore.example +0 -89
  266. package/stacks/blazor-azure/.morph/templates/infra/Dockerfile.example +0 -82
  267. package/stacks/blazor-azure/.morph/templates/infra/README.md +0 -286
  268. package/stacks/blazor-azure/.morph/templates/infra/app-insights.bicep +0 -63
  269. package/stacks/blazor-azure/.morph/templates/infra/app-service.bicep +0 -164
  270. package/stacks/blazor-azure/.morph/templates/infra/azure-pipelines-deploy.yml +0 -480
  271. package/stacks/blazor-azure/.morph/templates/infra/container-app-env.bicep +0 -49
  272. package/stacks/blazor-azure/.morph/templates/infra/container-app.bicep +0 -156
  273. package/stacks/blazor-azure/.morph/templates/infra/deploy-checklist.md +0 -426
  274. package/stacks/blazor-azure/.morph/templates/infra/deploy.ps1 +0 -229
  275. package/stacks/blazor-azure/.morph/templates/infra/deploy.sh +0 -208
  276. package/stacks/blazor-azure/.morph/templates/infra/key-vault.bicep +0 -91
  277. package/stacks/blazor-azure/.morph/templates/infra/main.bicep +0 -189
  278. package/stacks/blazor-azure/.morph/templates/infra/parameters.dev.json +0 -29
  279. package/stacks/blazor-azure/.morph/templates/infra/parameters.prod.json +0 -29
  280. package/stacks/blazor-azure/.morph/templates/infra/parameters.staging.json +0 -29
  281. package/stacks/blazor-azure/.morph/templates/infra/sql-database.bicep +0 -103
  282. package/stacks/blazor-azure/.morph/templates/infra/storage.bicep +0 -106
  283. package/stacks/blazor-azure/.morph/templates/integrations/asaas-client.cs +0 -387
  284. package/stacks/blazor-azure/.morph/templates/integrations/asaas-webhook.cs +0 -351
  285. package/stacks/blazor-azure/.morph/templates/integrations/azure-identity-config.cs +0 -288
  286. package/stacks/blazor-azure/.morph/templates/integrations/clerk-config.cs +0 -258
  287. package/stacks/blazor-azure/.morph/templates/job.cs +0 -171
  288. package/stacks/blazor-azure/.morph/templates/migration.cs +0 -83
  289. package/stacks/blazor-azure/.morph/templates/proposal.md +0 -141
  290. package/stacks/blazor-azure/.morph/templates/recap.md +0 -94
  291. package/stacks/blazor-azure/.morph/templates/repository.cs +0 -141
  292. package/stacks/blazor-azure/.morph/templates/saas/subscription.cs +0 -347
  293. package/stacks/blazor-azure/.morph/templates/saas/tenant.cs +0 -338
  294. package/stacks/blazor-azure/.morph/templates/service.cs +0 -139
  295. package/stacks/blazor-azure/.morph/templates/simulation.md +0 -353
  296. package/stacks/blazor-azure/.morph/templates/spec.md +0 -149
  297. package/stacks/blazor-azure/.morph/templates/sprint-status.yaml +0 -68
  298. package/stacks/blazor-azure/.morph/templates/state.template.json +0 -222
  299. package/stacks/blazor-azure/.morph/templates/story.md +0 -143
  300. package/stacks/blazor-azure/.morph/templates/tasks.md +0 -257
  301. package/stacks/blazor-azure/.morph/templates/test.cs +0 -239
  302. package/stacks/blazor-azure/.morph/templates/ui-components.md +0 -362
  303. package/stacks/blazor-azure/.morph/templates/ui-design-system.md +0 -286
  304. package/stacks/blazor-azure/.morph/templates/ui-flows.md +0 -336
  305. package/stacks/blazor-azure/.morph/templates/ui-mockups.md +0 -133
  306. package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +0 -169
  307. package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +0 -247
  308. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +0 -697
  309. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +0 -85
  310. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +0 -86
  311. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +0 -498
  312. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +0 -121
  313. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +0 -138
  314. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +0 -162
  315. package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +0 -191
  316. package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +0 -193
  317. package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +0 -171
  318. package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +0 -164
  319. package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +0 -179
  320. package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +0 -148
  321. package/stacks/nextjs-supabase/.morph/templates/contracts.cs +0 -173
  322. package/stacks/nextjs-supabase/.morph/templates/contracts.ts +0 -168
  323. package/stacks/nextjs-supabase/.morph/templates/decisions.md +0 -115
  324. package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +0 -38
  325. package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +0 -48
  326. package/stacks/nextjs-supabase/.morph/templates/proposal.md +0 -145
  327. package/stacks/nextjs-supabase/.morph/templates/recap.md +0 -134
  328. package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +0 -57
  329. package/stacks/nextjs-supabase/.morph/templates/spec.md +0 -231
  330. package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +0 -100
  331. package/stacks/nextjs-supabase/.morph/templates/tasks.md +0 -257
  332. /package/src/lib/{design-system-generator.js → generators/design-system-generator.js} +0 -0
  333. /package/src/lib/{learning-system.js → learning/learning-system.js} +0 -0
@@ -0,0 +1,735 @@
1
+ # LLM Interaction Configuration Guide
2
+
3
+ **MORPH-SPEC v3.0** introduces a comprehensive configuration system for controlling LLM interaction features via `.morph/config/llm-interaction.json`.
4
+
5
+ ---
6
+
7
+ ## Quick Start
8
+
9
+ ### 1. Default Configuration
10
+
11
+ On `morph-spec init`, a default `llm-interaction.json` is created with recommended settings:
12
+
13
+ ```json
14
+ {
15
+ "$schema": "./llm-interaction-schema.json",
16
+ "version": "1.0.0",
17
+ "enabled": true,
18
+
19
+ "approvalGates": {
20
+ "enabled": true,
21
+ "required": ["design", "tasks"],
22
+ "optional": ["proposal", "uiux"],
23
+ "allowSkip": false
24
+ },
25
+
26
+ "checkpoints": {
27
+ "frequency": 3,
28
+ "autoValidate": true,
29
+ "validators": {
30
+ "enabled": ["architecture", "packages", "design-system", "security"]
31
+ },
32
+ "hooks": {
33
+ "runTests": false,
34
+ "runLinters": true,
35
+ "buildCheck": false
36
+ },
37
+ "onFailure": {
38
+ "blockProgress": true,
39
+ "maxRetries": 3
40
+ }
41
+ },
42
+
43
+ "phaseValidation": {
44
+ "strictTransitions": true,
45
+ "requireContentValidation": true,
46
+ "allowPhaseSkip": false,
47
+ "forceSequential": true
48
+ },
49
+
50
+ "agentSpawning": {
51
+ "enabled": true,
52
+ "autoDetect": true,
53
+ "spawnThreshold": {
54
+ "complexity": "high",
55
+ "fileCount": 15,
56
+ "multiDomain": true,
57
+ "agentCount": 5
58
+ },
59
+ "teamMode": "auto"
60
+ },
61
+
62
+ "metadata": {
63
+ "autoGenerate": true,
64
+ "updateFrequency": "on_task_done"
65
+ },
66
+
67
+ "patterns": {
68
+ "captureOnComplete": true,
69
+ "searchBeforeStart": true,
70
+ "location": ".morph/memory/patterns-learned.md"
71
+ },
72
+
73
+ "templates": {
74
+ "mcpDataInjection": true,
75
+ "dataSources": ["projectStructure", "complianceStatus", "recentActivity"]
76
+ },
77
+
78
+ "interactiveDecisions": {
79
+ "enabled": true,
80
+ "usePromptTemplates": true,
81
+ "requireUserInput": ["architecture-choice", "scope-change", "validator-override"]
82
+ }
83
+ }
84
+ ```
85
+
86
+ ---
87
+
88
+ ## Configuration Sections
89
+
90
+ ### 1. Approval Gates
91
+
92
+ **Controls:** Explicit approval tracking for phase transitions.
93
+
94
+ ```json
95
+ {
96
+ "approvalGates": {
97
+ "enabled": true, // Enable approval gate system
98
+ "required": ["design", "tasks"], // Required gates that block advancement
99
+ "optional": ["proposal", "uiux"], // Optional gates (tracked but don't block)
100
+ "allowSkip": false // Allow --skip-approval flag
101
+ }
102
+ }
103
+ ```
104
+
105
+ **Behavior:**
106
+ - When `enabled: true`, phase transitions check approval status
107
+ - `required` gates **block** `npx morph-spec phase advance` until approved
108
+ - `optional` gates are tracked but don't block
109
+ - `allowSkip: false` prevents `--skip-approval` override (strict mode)
110
+
111
+ **Commands:**
112
+ ```bash
113
+ # Approve a gate
114
+ npx morph-spec approve {feature} design
115
+
116
+ # Reject with reason
117
+ npx morph-spec reject {feature} design "Missing security considerations"
118
+
119
+ # Check status
120
+ npx morph-spec approval-status {feature}
121
+ ```
122
+
123
+ **Use Cases:**
124
+ - **Strict governance:** `required: ["proposal", "design", "tasks"]`, `allowSkip: false`
125
+ - **Lightweight:** `required: ["design"]`, `allowSkip: true`
126
+ - **No gates:** `enabled: false`
127
+
128
+ ---
129
+
130
+ ### 2. Checkpoints
131
+
132
+ **Controls:** Automated validation at regular task intervals.
133
+
134
+ ```json
135
+ {
136
+ "checkpoints": {
137
+ "frequency": 3, // Run checkpoint every N tasks
138
+ "autoValidate": true, // Auto-run validators
139
+ "validators": {
140
+ "enabled": ["architecture", "packages", "security"]
141
+ },
142
+ "hooks": {
143
+ "runTests": false, // Run test suite at checkpoints
144
+ "runLinters": true, // Run linters (eslint, dotnet format)
145
+ "buildCheck": false // Run build verification
146
+ },
147
+ "onFailure": {
148
+ "blockProgress": true, // Block task completion if checkpoint fails
149
+ "maxRetries": 3 // Max retries before escalation
150
+ }
151
+ }
152
+ }
153
+ ```
154
+
155
+ **Behavior:**
156
+ - Every `frequency` tasks (e.g., T003, T006, T009), runs checkpoint hooks
157
+ - If `autoValidate: true`, runs all `enabled` validators
158
+ - If `onFailure.blockProgress: true`, task NOT marked done until violations fixed
159
+ - After `maxRetries` failures, prompts LLM to escalate or simplify
160
+
161
+ **Validators:**
162
+ - `architecture`: DI patterns, Blazor lifecycle, async/await anti-patterns
163
+ - `packages`: NuGet/npm conflicts, outdated dependencies
164
+ - `design-system`: CSS compliance, color palette, spacing
165
+ - `security`: Secrets exposed, SQL injection, XSS
166
+
167
+ **Use Cases:**
168
+ - **Strict:** `autoValidate: true`, `blockProgress: true`, `frequency: 3`
169
+ - **Lightweight:** `autoValidate: false`, `blockProgress: false`, `frequency: 5`
170
+ - **Manual only:** `autoValidate: false`, `hooks: {runTests: false}`
171
+
172
+ ---
173
+
174
+ ### 3. Phase Validation
175
+
176
+ **Controls:** State machine enforcement for phase transitions.
177
+
178
+ ```json
179
+ {
180
+ "phaseValidation": {
181
+ "strictTransitions": true, // Enforce valid state machine transitions
182
+ "requireContentValidation": true, // Validate spec.md and tasks.json structure
183
+ "allowPhaseSkip": false, // Allow jumping phases (e.g., setup → tasks)
184
+ "forceSequential": true // Must go through all phases in order
185
+ }
186
+ }
187
+ ```
188
+
189
+ **Behavior:**
190
+ - `strictTransitions: true`: Only valid transitions allowed (e.g., `proposal → setup`, NOT `proposal → implement`)
191
+ - `requireContentValidation: true`: Checks spec.md has required sections, tasks.json has valid structure
192
+ - `allowPhaseSkip: false`: Cannot skip optional phases (uiux, sync) without explicit decision
193
+ - `forceSequential: true`: Must complete phases in order (proposal → setup → uiux/design → clarify → tasks → implement)
194
+
195
+ **Valid Transitions (State Machine):**
196
+ ```
197
+ proposal → setup
198
+ setup → uiux | design
199
+ uiux → design
200
+ design → clarify
201
+ clarify → tasks
202
+ tasks → implement
203
+ implement → sync | archived
204
+ sync → archived
205
+ ```
206
+
207
+ **Use Cases:**
208
+ - **Strict:** All true (recommended for teams)
209
+ - **Flexible:** `allowPhaseSkip: true`, `forceSequential: false`
210
+ - **No validation:** `strictTransitions: false`
211
+
212
+ ---
213
+
214
+ ### 4. Agent Spawning
215
+
216
+ **Controls:** When to suggest Task tool agent spawning.
217
+
218
+ ```json
219
+ {
220
+ "agentSpawning": {
221
+ "enabled": true, // Enable agent spawning suggestions
222
+ "autoDetect": true, // Auto-detect based on thresholds
223
+ "spawnThreshold": {
224
+ "complexity": "high", // Suggest if complexity >= high
225
+ "fileCount": 15, // Suggest if 15+ files to modify
226
+ "multiDomain": true, // Suggest if backend + frontend + infra
227
+ "agentCount": 5 // Suggest if 5+ agents activated
228
+ },
229
+ "teamMode": "auto" // auto | manual | always
230
+ }
231
+ }
232
+ ```
233
+
234
+ **Behavior:**
235
+ - When ALL thresholds met, LLM suggests spawning agents via Task tool
236
+ - `teamMode`:
237
+ - `auto`: Suggest based on thresholds
238
+ - `manual`: Never suggest, only if user requests
239
+ - `always`: Always spawn for multi-agent features
240
+
241
+ **Command:**
242
+ ```bash
243
+ # Get team configuration
244
+ npx morph-spec spawn-team {feature}
245
+
246
+ # Returns Task tool configs for:
247
+ # - Backend Squad (dotnet-senior, ef-modeler, api-designer)
248
+ # - Frontend Squad (blazor-senior, fluent-designer)
249
+ # - Infrastructure Squad (bicep-architect, azure-specialist)
250
+ ```
251
+
252
+ **Use Cases:**
253
+ - **Auto-spawn:** `autoDetect: true`, `teamMode: "auto"`
254
+ - **Manual only:** `autoDetect: false`, `teamMode: "manual"`
255
+ - **Always parallel:** `teamMode: "always"` (even for simple features)
256
+
257
+ ---
258
+
259
+ ### 5. Metadata
260
+
261
+ **Controls:** Auto-generation of metadata.json summaries.
262
+
263
+ ```json
264
+ {
265
+ "metadata": {
266
+ "autoGenerate": true, // Auto-generate metadata.json
267
+ "updateFrequency": "on_task_done" // When to update (on_task_done | on_checkpoint | on_phase_advance)
268
+ }
269
+ }
270
+ ```
271
+
272
+ **Behavior:**
273
+ - `autoGenerate: true`: After each task completion, regenerates `metadata.json`
274
+ - `updateFrequency`:
275
+ - `on_task_done`: Update after every task (most frequent, recommended)
276
+ - `on_checkpoint`: Update only at checkpoints (e.g., T003, T006)
277
+ - `on_phase_advance`: Update only when phase changes
278
+
279
+ **metadata.json Structure:**
280
+ ```json
281
+ {
282
+ "version": "1.0.0",
283
+ "feature": "user-authentication",
284
+ "status": "active",
285
+ "phase": "implement",
286
+ "spec": {
287
+ "id": "user-auth",
288
+ "summary": { "problem": "...", "solution": "...", "tags": [...] },
289
+ "requirements": [...],
290
+ "dataModel": [...]
291
+ },
292
+ "decisions": {
293
+ "decisions": [ { "id": "ADR-001", "title": "...", "fullPath": "..." } ]
294
+ },
295
+ "tasks": { "total": 12, "completed": 8, "progress": "67%" },
296
+ "agents": ["dotnet-senior", "ef-modeler"],
297
+ "checkpoints": [ { "num": 1, "passed": true } ]
298
+ }
299
+ ```
300
+
301
+ **Use Cases:**
302
+ - **Always up-to-date:** `autoGenerate: true`, `updateFrequency: "on_task_done"`
303
+ - **Checkpoint-based:** `updateFrequency: "on_checkpoint"`
304
+ - **Manual only:** `autoGenerate: false`
305
+
306
+ ---
307
+
308
+ ### 6. Patterns
309
+
310
+ **Controls:** Learning system and pattern library.
311
+
312
+ ```json
313
+ {
314
+ "patterns": {
315
+ "captureOnComplete": true, // Prompt to capture patterns on feature complete
316
+ "searchBeforeStart": true, // Search patterns before starting new feature
317
+ "location": ".morph/memory/patterns-learned.md"
318
+ }
319
+ }
320
+ ```
321
+
322
+ **Behavior:**
323
+ - `searchBeforeStart: true`: LLM runs `npx morph-spec search-patterns "{keywords}"` before PROPOSAL phase
324
+ - `captureOnComplete: true`: After feature archived, LLM prompts to capture lessons
325
+
326
+ **Commands:**
327
+ ```bash
328
+ # Search patterns
329
+ npx morph-spec search-patterns "blazor state"
330
+ npx morph-spec search-patterns "background job"
331
+
332
+ # Capture pattern
333
+ npx morph-spec capture-pattern {feature} success "Pattern description"
334
+ npx morph-spec capture-pattern {feature} avoid "Anti-pattern description"
335
+ npx morph-spec capture-pattern {feature} optimization "Performance improvement"
336
+
337
+ # Categories: success, avoid, optimization, security, convention, best-practice
338
+ ```
339
+
340
+ **Use Cases:**
341
+ - **Continuous learning:** Both true (recommended)
342
+ - **Search only:** `searchBeforeStart: true`, `captureOnComplete: false`
343
+ - **No learning:** Both false
344
+
345
+ ---
346
+
347
+ ### 7. Templates
348
+
349
+ **Controls:** MCP data injection in templates.
350
+
351
+ ```json
352
+ {
353
+ "templates": {
354
+ "mcpDataInjection": true, // Enable MCP data injection
355
+ "dataSources": [
356
+ "projectStructure", // File counts, language stats
357
+ "complianceStatus", // Validators, violations
358
+ "recentActivity" // Last feature, commits, branches
359
+ ]
360
+ }
361
+ }
362
+ ```
363
+
364
+ **Behavior:**
365
+ - When rendering templates with `--with-mcp-data`, injects live project metrics
366
+ - Available placeholders:
367
+ - `{{MCP_PROJECT_FILES}}`, `{{MCP_CS_FILES}}`, `{{MCP_TS_FILES}}`
368
+ - `{{MCP_TEST_COVERAGE}}`, `{{MCP_COMPLIANCE_SCORE}}`
369
+ - `{{MCP_ARCHITECTURE_VIOLATIONS}}`, `{{MCP_SECURITY_ISSUES}}`
370
+ - `{{MCP_LAST_FEATURE}}`, `{{MCP_LAST_COMMIT}}`
371
+ - [Full list in `.morph/templates/MCP-TEMPLATES-README.md`]
372
+
373
+ **Usage:**
374
+ ```bash
375
+ # Render with MCP data
376
+ node bin/render-template.js \
377
+ .morph/templates/proposal-with-mcp.md \
378
+ .morph/features/{feature}/proposal.md \
379
+ '{"FEATURE_NAME":"{feature}"}' \
380
+ --with-mcp-data --verbose
381
+ ```
382
+
383
+ **Use Cases:**
384
+ - **Context-aware docs:** `mcpDataInjection: true`, all data sources
385
+ - **No dynamic data:** `mcpDataInjection: false`
386
+
387
+ ---
388
+
389
+ ### 8. Interactive Decisions
390
+
391
+ **Controls:** When to use AskUserQuestion patterns.
392
+
393
+ ```json
394
+ {
395
+ "interactiveDecisions": {
396
+ "enabled": true, // Enable structured decision prompts
397
+ "usePromptTemplates": true, // Use templates from decision-prompts.md
398
+ "requireUserInput": [
399
+ "architecture-choice", // Multiple valid approaches
400
+ "scope-change", // Significant scope modifications
401
+ "validator-override" // Skipping failed validation
402
+ ]
403
+ }
404
+ }
405
+ ```
406
+
407
+ **Behavior:**
408
+ - When `enabled: true`, LLM uses AskUserQuestion for key decisions
409
+ - `usePromptTemplates: true`: Uses templates from `.morph/templates/decision-prompts.md`
410
+ - `requireUserInput`: Decisions that MUST use AskUserQuestion (not free-form text)
411
+
412
+ **Templates Available:**
413
+ - Scope clarification (proposal phase)
414
+ - Architecture choice (design phase)
415
+ - Task ordering conflict (tasks phase)
416
+ - Validation failure recovery (implement phase)
417
+ - Breaking change approval (implement phase)
418
+
419
+ **Use Cases:**
420
+ - **Interactive:** All enabled (recommended for team projects)
421
+ - **Autonomous:** `enabled: false` (LLM makes all decisions)
422
+
423
+ ---
424
+
425
+ ## Configuration Presets
426
+
427
+ ### Preset 1: Strict (Recommended for Teams)
428
+
429
+ ```json
430
+ {
431
+ "approvalGates": { "enabled": true, "required": ["design", "tasks"], "allowSkip": false },
432
+ "checkpoints": { "autoValidate": true, "onFailure": { "blockProgress": true } },
433
+ "phaseValidation": { "strictTransitions": true, "requireContentValidation": true },
434
+ "agentSpawning": { "enabled": true, "teamMode": "auto" },
435
+ "metadata": { "autoGenerate": true },
436
+ "patterns": { "searchBeforeStart": true, "captureOnComplete": true },
437
+ "interactiveDecisions": { "enabled": true }
438
+ }
439
+ ```
440
+
441
+ **Best for:**
442
+ - Team projects with governance
443
+ - Production features
444
+ - Learning from mistakes
445
+
446
+ ---
447
+
448
+ ### Preset 2: Lightweight (Solo Developers)
449
+
450
+ ```json
451
+ {
452
+ "approvalGates": { "enabled": true, "required": ["design"], "allowSkip": true },
453
+ "checkpoints": { "autoValidate": true, "onFailure": { "blockProgress": false } },
454
+ "phaseValidation": { "strictTransitions": true, "allowPhaseSkip": true },
455
+ "agentSpawning": { "enabled": false },
456
+ "metadata": { "autoGenerate": false },
457
+ "patterns": { "searchBeforeStart": true, "captureOnComplete": false },
458
+ "interactiveDecisions": { "enabled": true }
459
+ }
460
+ ```
461
+
462
+ **Best for:**
463
+ - Solo developers
464
+ - Rapid prototyping
465
+ - Experimental features
466
+
467
+ ---
468
+
469
+ ### Preset 3: No Guardrails (Fast Iteration)
470
+
471
+ ```json
472
+ {
473
+ "approvalGates": { "enabled": false },
474
+ "checkpoints": { "autoValidate": false },
475
+ "phaseValidation": { "strictTransitions": false, "allowPhaseSkip": true },
476
+ "agentSpawning": { "enabled": false },
477
+ "metadata": { "autoGenerate": false },
478
+ "patterns": { "searchBeforeStart": false, "captureOnComplete": false },
479
+ "interactiveDecisions": { "enabled": false }
480
+ }
481
+ ```
482
+
483
+ **Best for:**
484
+ - Spikes and experiments
485
+ - Throwaway code
486
+ - Learning the framework
487
+
488
+ **⚠️ Warning:** Not recommended for production features.
489
+
490
+ ---
491
+
492
+ ## Runtime Overrides
493
+
494
+ Most features can be overridden at runtime:
495
+
496
+ ```bash
497
+ # Skip approval gate (if allowSkip: true)
498
+ npx morph-spec phase advance {feature} --skip-approval
499
+
500
+ # Force invalid transition
501
+ npx morph-spec phase advance {feature} --force
502
+
503
+ # Skip validation
504
+ npx morph-spec task done {feature} T001 --skip-validation
505
+
506
+ # Disable checkpoints for one task
507
+ # (Not available - checkpoints run based on config only)
508
+ ```
509
+
510
+ ---
511
+
512
+ ## Migration & Upgrade
513
+
514
+ ### Migrating Existing Projects
515
+
516
+ ```bash
517
+ # Auto-migrate state.json to include approval gates
518
+ npx morph-spec migrate-state
519
+
520
+ # Creates llm-interaction.json if missing
521
+ npx morph-spec init --force
522
+ ```
523
+
524
+ **Migration Behavior:**
525
+ - Adds `approvalGates` to all features in `state.json`
526
+ - Past phases auto-approved (e.g., if currently in implement, design/tasks gates approved)
527
+ - Creates empty `.morph/memory/patterns-learned.md`
528
+ - Creates default `llm-interaction.json` with conservative settings
529
+
530
+ ### Upgrading Configuration
531
+
532
+ ```bash
533
+ # Upgrade to latest schema version
534
+ npx morph-spec upgrade --to-version=3.0.0
535
+
536
+ # Options:
537
+ # [1] Full upgrade (all breaking changes)
538
+ # [2] Conservative (keep old behavior, opt-in to new)
539
+ # [3] Custom (choose per-feature)
540
+ ```
541
+
542
+ ---
543
+
544
+ ## Troubleshooting
545
+
546
+ ### Checkpoint Always Failing
547
+
548
+ **Problem:** Checkpoint fails every 3 tasks despite fixing issues.
549
+
550
+ **Solutions:**
551
+ 1. Check which validator is failing:
552
+ ```bash
553
+ npx morph-spec validate architecture --verbose
554
+ npx morph-spec validate packages --verbose
555
+ npx morph-spec validate security --verbose
556
+ ```
557
+
558
+ 2. Disable problematic validator temporarily:
559
+ ```json
560
+ {
561
+ "checkpoints": {
562
+ "validators": {
563
+ "enabled": ["packages", "security"] // Removed "architecture"
564
+ }
565
+ }
566
+ }
567
+ ```
568
+
569
+ 3. Set `blockProgress: false` to continue despite failures:
570
+ ```json
571
+ {
572
+ "checkpoints": {
573
+ "onFailure": { "blockProgress": false }
574
+ }
575
+ }
576
+ ```
577
+
578
+ ---
579
+
580
+ ### Approval Gates Not Blocking
581
+
582
+ **Problem:** Can advance phase without approval.
583
+
584
+ **Solutions:**
585
+ 1. Check `allowSkip` setting:
586
+ ```json
587
+ { "approvalGates": { "allowSkip": false } }
588
+ ```
589
+
590
+ 2. Ensure gate is in `required` list:
591
+ ```json
592
+ { "approvalGates": { "required": ["design", "tasks"] } }
593
+ ```
594
+
595
+ 3. Verify no `--force` flag used:
596
+ ```bash
597
+ # DON'T use --force unless intentional
598
+ npx morph-spec phase advance {feature} # ✅ Correct
599
+ npx morph-spec phase advance {feature} --force # ❌ Bypasses gates
600
+ ```
601
+
602
+ ---
603
+
604
+ ### MCP Data Not Injecting
605
+
606
+ **Problem:** `{{MCP_PROJECT_FILES}}` appears in rendered template.
607
+
608
+ **Solutions:**
609
+ 1. Ensure `--with-mcp-data` flag used:
610
+ ```bash
611
+ node bin/render-template.js template.md output.md '{}' --with-mcp-data
612
+ ```
613
+
614
+ 2. Check config:
615
+ ```json
616
+ { "templates": { "mcpDataInjection": true } }
617
+ ```
618
+
619
+ 3. Verify data sources available:
620
+ - Git repo initialized (`git log` works)
621
+ - Coverage file exists (`coverage/coverage-summary.json`)
622
+ - `.morph/state.json` exists
623
+
624
+ ---
625
+
626
+ ## Best Practices
627
+
628
+ ### 1. Start Strict, Relax Later
629
+
630
+ Begin with **Preset 1: Strict** for first 2-3 features. Once comfortable, adjust:
631
+ - Reduce checkpoint frequency (3 → 5)
632
+ - Make some gates optional
633
+ - Disable MCP data if not useful
634
+
635
+ ### 2. Use Approval Gates for Critical Decisions
636
+
637
+ **ALWAYS require approval for:**
638
+ - Design phase (spec + contracts)
639
+ - Tasks phase (breakdown + estimates)
640
+
641
+ **Optional approval for:**
642
+ - Proposal (if quick iteration needed)
643
+ - UI/UX (if design-heavy feature)
644
+
645
+ ### 3. Checkpoint Frequency
646
+
647
+ - **High-risk features:** `frequency: 3` (every 3 tasks)
648
+ - **Standard features:** `frequency: 5`
649
+ - **Low-risk features:** `frequency: 10` or `autoValidate: false`
650
+
651
+ ### 4. Pattern Library
652
+
653
+ **Day 1-30:** Focus on `searchBeforeStart: true` (leverage pre-seeded patterns)
654
+ **Day 30+:** Enable `captureOnComplete: true` (build your own library)
655
+
656
+ ### 5. Metadata
657
+
658
+ **Always enable** `autoGenerate: true` for features with:
659
+ - 10+ tasks
660
+ - Multiple agents
661
+ - Complex decision history
662
+
663
+ **Skip for:**
664
+ - Spike/POC features
665
+ - 1-2 task features
666
+
667
+ ---
668
+
669
+ ## Schema Reference
670
+
671
+ Full JSON schema: `.morph/config/llm-interaction-schema.json`
672
+
673
+ Validate config:
674
+ ```bash
675
+ # Auto-validates on phase advance, checkpoint, etc.
676
+ # Manual validation:
677
+ node -e "require('ajv')().validate(require('.morph/config/llm-interaction-schema.json'), require('.morph/config/llm-interaction.json'))"
678
+ ```
679
+
680
+ ---
681
+
682
+ ## Examples
683
+
684
+ ### Example 1: Enable Strict Mode Mid-Project
685
+
686
+ ```bash
687
+ # Edit .morph/config/llm-interaction.json
688
+ {
689
+ "checkpoints": {
690
+ "onFailure": { "blockProgress": true } // Changed from false
691
+ }
692
+ }
693
+
694
+ # Next task will block on checkpoint failure
695
+ npx morph-spec task done my-feature T007
696
+ ```
697
+
698
+ ---
699
+
700
+ ### Example 2: Disable Agent Spawning Suggestions
701
+
702
+ ```bash
703
+ # Edit .morph/config/llm-interaction.json
704
+ {
705
+ "agentSpawning": { "enabled": false }
706
+ }
707
+
708
+ # LLM will never suggest spawning agents, even if thresholds met
709
+ ```
710
+
711
+ ---
712
+
713
+ ### Example 3: Custom Checkpoint Frequency
714
+
715
+ ```bash
716
+ # Edit .morph/config/llm-interaction.json
717
+ {
718
+ "checkpoints": { "frequency": 5 }
719
+ }
720
+
721
+ # Checkpoints now at T005, T010, T015 instead of T003, T006, T009
722
+ ```
723
+
724
+ ---
725
+
726
+ ## See Also
727
+
728
+ - [CLAUDE.md](../CLAUDE.md) - LLM instructions for using these features
729
+ - [.morph/templates/MCP-TEMPLATES-README.md](.morph/templates/MCP-TEMPLATES-README.md) - MCP data placeholders
730
+ - [.morph/templates/decision-prompts.md](.morph/templates/decision-prompts.md) - Decision templates
731
+ - [.morph/memory/patterns-learned.md](.morph/memory/patterns-learned.md) - Pattern library
732
+
733
+ ---
734
+
735
+ *MORPH-SPEC v3.0 - LLM Interaction Configuration Guide*