@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
package/CLAUDE.md CHANGED
@@ -52,6 +52,802 @@ cp stacks/{stack}/CLAUDE.md seu-projeto/CLAUDE.md
52
52
 
53
53
  ---
54
54
 
55
+ ## WORKFLOW DETECTION SYSTEM (Detecção Automática de Complexidade)
56
+
57
+ O framework agora detecta **AUTOMATICAMENTE** o workflow apropriado baseado na análise do pedido do usuário.
58
+
59
+ ### 5 Tipos de Workflow
60
+
61
+ | Workflow | Complexidade | Arquivos | Linhas | Keywords Exemplo |
62
+ |----------|--------------|----------|--------|------------------|
63
+ | **fast-track** | Trivial | ≤3 | ≤50 | bug, fix, corrigir, css, typo |
64
+ | **standard** | Média | 3-10 | 50-500 | paginação, filtro, refactor, export |
65
+ | **full-morph** | Alta | >10 | >500 | sistema, autenticação, integração, cqrs |
66
+ | **design-impl** | N/A | N/A | N/A | prototype, figma, html para, replicar |
67
+ | **ui-refresh** | N/A | N/A | N/A | redesign, modernizar, aesthetic, bonito |
68
+
69
+ ### Como Funciona
70
+
71
+ **1. Quando Criar Feature:**
72
+
73
+ ```bash
74
+ # Detecção automática
75
+ npx morph-spec feature create user-pagination \
76
+ --request "add pagination to users table"
77
+
78
+ # Output:
79
+ 🔍 Analyzing request...
80
+ ✓ Detected workflow: standard (85% confidence)
81
+ Matched keyword: "paginação"
82
+ Estimated: 5 files, ~200 lines
83
+
84
+ 📋 Created feature: user-pagination
85
+ Phase: proposal
86
+ Workflow: standard
87
+ ```
88
+
89
+ **2. Análise Manual (Opcional):**
90
+
91
+ ```bash
92
+ npx morph-spec detect-workflow "implement complete authentication system"
93
+
94
+ # Output:
95
+ Detected Workflow: full-morph (92% confidence)
96
+
97
+ Criteria Match:
98
+ ✓ Keywords: "authentication", "complete", "system"
99
+ ✓ Estimated: 15 files, ~800 lines
100
+ ✓ Infrastructure: detected
101
+
102
+ Phases to Run:
103
+ 1. CONTEXT
104
+ 2. PROPOSAL - ⏸️ Pause for approval
105
+ 3. SETUP
106
+ 4. UI/UX - ⏸️ Pause for approval
107
+ 5. DESIGN - ⏸️ Pause for approval
108
+ 6. CLARIFY
109
+ 7. TASKS - ⏸️ Pause for approval
110
+ 8. IMPLEMENT
111
+ 9. SYNC - ⏸️ Pause for approval
112
+
113
+ Phases Skipped: None (all mandatory for full-morph)
114
+
115
+ Alternative Workflows:
116
+ - standard (15%): If scope reduced to basic login only
117
+ ```
118
+
119
+ ### Workflow Behaviors
120
+
121
+ #### fast-track (Trivial)
122
+ - **Objetivo:** Correções rápidas, ajustes CSS, edge cases
123
+ - **Fases:** Quick Analysis (proposal+setup+design combinados) → Implement
124
+ - **Fases Puladas:** UIUX, CLARIFY, TASKS, SYNC
125
+ - **Outputs:** Apenas commit message (sem .md files)
126
+ - **Exemplo:** "fix typo in login button"
127
+
128
+ #### standard (Média Complexidade)
129
+ - **Objetivo:** Features simples, refatorações, otimizações
130
+ - **Fases:** PROPOSAL (simplificado) → DESIGN (conciso) → TASKS (se >5 tasks) → IMPLEMENT
131
+ - **Fases Puladas:** SETUP (contexto já carregado), UIUX (sem frontend significativo), CLARIFY (spec claro), SYNC (decisões táticas)
132
+ - **Outputs:** proposal.md, spec.md, recap.md (minimal)
133
+ - **Exemplo:** "add pagination to users table"
134
+
135
+ #### full-morph (Alta Complexidade)
136
+ - **Objetivo:** Sistemas completos, arquitetura, integrações
137
+ - **Fases:** TODAS (9 fases obrigatórias)
138
+ - **Fases Puladas:** Nenhuma
139
+ - **Outputs:** Completo (proposal, ui-*, spec, contracts, tasks, decisions, recap)
140
+ - **Exemplo:** "implement complete authentication system with OAuth"
141
+
142
+ #### design-impl (Prototipo → Código)
143
+ - **Objetivo:** Converter HTML, Figma, mockups para código funcional
144
+ - **Fases:** ANÁLISE DO PROTÓTIPO → TASKS (lista de telas) → IMPLEMENT (por tela)
145
+ - **Fases Puladas:** PROPOSAL, DESIGN técnico, CLARIFY, SYNC
146
+ - **Outputs:** recap.md, .razor code, CSS
147
+ - **Exemplo:** "convert HTML prototype to Blazor components"
148
+
149
+ #### ui-refresh (Redesign Visual)
150
+ - **Objetivo:** Mudanças apenas visuais, sem lógica de negócio
151
+ - **Fases:** ANÁLISE VISUAL → DESIGN SYSTEM (simplificado) → IMPLEMENT (por página)
152
+ - **Fases Puladas:** SETUP completo, CONTRACTS, TASKS detalhadas, INFRA, CLARIFY, SYNC
153
+ - **Outputs:** design-refresh-checklist.md, CSS, .razor pages, recap.md
154
+ - **Exemplo:** "redesign dashboard to look more modern"
155
+
156
+ ### Algoritmo de Detecção
157
+
158
+ O sistema usa 4 fatores ponderados:
159
+
160
+ 1. **Keywords (40%):** Matching de palavras-chave (PT + EN)
161
+ 2. **Complexity (30%):** Estimativa de arquivos/linhas/componentes
162
+ 3. **Priority (20%):** Workflows específicos > genéricos
163
+ 4. **Context (10%):** Condições especiais (has prototype? existing pages?)
164
+
165
+ **Penalties:**
166
+ - -50% para workflows sem keyword match (exceto full-morph)
167
+
168
+ **Boosts:**
169
+ - +20% para workflows com 3+ keywords matched
170
+
171
+ ### Override Manual
172
+
173
+ ```bash
174
+ # Forçar workflow específico
175
+ npx morph-spec state set user-auth workflow full-morph
176
+
177
+ # Re-detectar após mudanças no pedido
178
+ npx morph-spec state detect-workflow user-auth \
179
+ "implement basic login only (no OAuth)"
180
+
181
+ # Output:
182
+ 🔄 Re-analyzing request...
183
+ ✓ New workflow: standard (78% confidence)
184
+ Previous: full-morph
185
+ Reason: Scope reduced - no OAuth, no registration
186
+ ```
187
+
188
+ ### Configurações de Workflow
189
+
190
+ Workflows são definidos em `framework/workflows/configs/*.json`:
191
+
192
+ ```json
193
+ {
194
+ "id": "standard",
195
+ "criteria": {
196
+ "minFiles": 3,
197
+ "maxFiles": 10,
198
+ "minLines": 50,
199
+ "maxLines": 500
200
+ },
201
+ "keywords": ["paginação", "pagination", "filtro", "filter"],
202
+ "phases": {
203
+ "run": ["proposal", "design", "tasks", "implement"],
204
+ "skip": ["setup", "uiux", "clarify", "sync"]
205
+ },
206
+ "priority": 2
207
+ }
208
+ ```
209
+
210
+ ### Documentação Completa
211
+
212
+ Veja `framework/workflows/` para:
213
+ - **docs/STORY-DRIVEN-DEVELOPMENT.md:** Filosofia do sistema
214
+ - **docs/{workflow}.md:** Detalhes de cada workflow (5 arquivos)
215
+ - **configs/{workflow}.json:** Configurações executáveis (5 arquivos)
216
+ - **README.md:** Guia completo do sistema de workflows
217
+
218
+ **REGRA CRÍTICA:** Confie na detecção automática. Override manual apenas se houver contexto que o sistema não detectou (ex: "parece grande mas já temos 80% do código pronto").
219
+
220
+ ---
221
+
222
+ ## APPROVAL GATES (Portões de Aprovação)
223
+
224
+ O sistema agora rastreia aprovações explícitas para cada fase crítica em `state.json`.
225
+
226
+ ### Gates Obrigatórios
227
+
228
+ | Gate | Quando | Bloqueio | Comando |
229
+ |------|--------|----------|---------|
230
+ | **design** | Após DESIGN concluído | Impede `design → clarify` | `npx morph-spec approve {feature} design` |
231
+ | **tasks** | Após TASKS concluído | Impede `tasks → implement` | `npx morph-spec approve {feature} tasks` |
232
+
233
+ ### Workflow com Approval Gates
234
+
235
+ ```bash
236
+ # 1. Completar fase DESIGN
237
+ # Sistema gera: spec.md, contracts, decisions.md
238
+
239
+ # 2. PAUSAR e apresentar ao usuário
240
+ # Use AskUserQuestion: "Approve design to proceed to clarify phase?"
241
+
242
+ # 3. Se aprovado pelo usuário:
243
+ npx morph-spec approve {feature} design
244
+
245
+ # 4. Avançar fase (agora permitido)
246
+ npx morph-spec advance-phase {feature} clarify
247
+
248
+ # 5. Mesmo processo para TASKS → IMPLEMENT
249
+ ```
250
+
251
+ ### Comandos de Approval
252
+
253
+ ```bash
254
+ # Aprovar gate
255
+ npx morph-spec approve {feature} {gate}
256
+
257
+ # Rejeitar com motivo
258
+ npx morph-spec reject {feature} {gate} "Reason here"
259
+
260
+ # Ver status de todas as aprovações
261
+ npx morph-spec approval-status {feature}
262
+ ```
263
+
264
+ ### Overrides (Usar com Cuidado)
265
+
266
+ ```bash
267
+ # Pular verificação de aprovação (não recomendado)
268
+ npx morph-spec advance-phase {feature} {next-phase} --skip-approval
269
+
270
+ # Forçar transição inválida (emergências apenas)
271
+ npx morph-spec advance-phase {feature} {next-phase} --force
272
+ ```
273
+
274
+ **REGRA CRÍTICA:** SEMPRE apresente outputs ao usuário e obtenha aprovação explícita antes de avançar de DESIGN ou TASKS.
275
+
276
+ ---
277
+
278
+ ## AUTOMATIC CHECKPOINTS (Validação Automática)
279
+
280
+ A cada 3 tasks completadas, o sistema executa validação automática.
281
+
282
+ ### O Que é Validado
283
+
284
+ | Validator | O Que Verifica | Falha Bloqueia? |
285
+ |-----------|----------------|-----------------|
286
+ | **architecture** | DI patterns, Blazor lifecycle, async/await | ✅ Sim |
287
+ | **packages** | Conflitos NuGet, versões incompatíveis | ✅ Sim |
288
+ | **design-system** | CSS compliance, color palette, spacing | ⚠️ Warning |
289
+ | **security** | Secrets expostos, SQL injection, XSS | ✅ Sim |
290
+
291
+ ### Comportamento no Checkpoint
292
+
293
+ ```bash
294
+ # Task 3, 6, 9, 12... completadas
295
+ 🔍 Running CHECKPOINT 1...
296
+ ✅ Architecture: 0 violations
297
+ ✅ Packages: 0 conflicts
298
+ ⚠️ Design System: 2 warnings (non-blocking)
299
+ ✅ Security: 0 issues
300
+
301
+ ✅ Checkpoint 1 passed
302
+
303
+ # Se checkpoint FALHAR:
304
+ ❌ Checkpoint 2 failed!
305
+ - Architecture: DbContext injected directly in component
306
+ - Security: API key hardcoded in appsettings.json
307
+
308
+ ❌ Task NOT marked done. Fix violations before proceeding.
309
+ ```
310
+
311
+ ### Configuração
312
+
313
+ Edite `.morph/config/llm-interaction.json`:
314
+
315
+ ```json
316
+ {
317
+ "checkpoints": {
318
+ "frequency": 3,
319
+ "autoValidate": true,
320
+ "validators": {
321
+ "enabled": ["architecture", "packages", "security"]
322
+ },
323
+ "onFailure": {
324
+ "blockProgress": true,
325
+ "maxRetries": 3
326
+ }
327
+ }
328
+ }
329
+ ```
330
+
331
+ **IMPORTANTE:** Se checkpoint falha 3 vezes, use `AskUserQuestion` para decidir: simplificar implementação, pular validador (arriscado), ou escalar para troubleshooting-expert.
332
+
333
+ ---
334
+
335
+ ## PHASE VALIDATION RULES (Validação Estrita)
336
+
337
+ O sistema agora impede transições de fase inválidas com **state machine**.
338
+
339
+ ### Transições Válidas
340
+
341
+ ```
342
+ proposal → setup
343
+ setup → uiux | design
344
+ uiux → design
345
+ design → clarify
346
+ clarify → tasks
347
+ tasks → implement
348
+ implement → sync | archived
349
+ sync → archived
350
+ ```
351
+
352
+ ### 5 Gates de Validação
353
+
354
+ Ao avançar fase, o sistema verifica (em ordem):
355
+
356
+ 1. **State Machine:** Transição é válida? (`proposal → implement` ❌)
357
+ 2. **Approval Gates:** Gate foi aprovado? (`design` ou `tasks` gates)
358
+ 3. **Output Requirements:** Arquivos obrigatórios existem? (spec.md, tasks.json)
359
+ 4. **Spec Content:** `spec.md` tem todas as seções? (Overview, Requirements, Technical Design, Data Model, API Contracts)
360
+ 5. **Tasks Content:** `tasks.json` tem estrutura válida? (IDs, descriptions, dependencies válidas, sem ciclos)
361
+
362
+ ### Exemplo de Bloqueio
363
+
364
+ ```bash
365
+ npx morph-spec advance-phase user-auth implement
366
+
367
+ ❌ Invalid phase transition: design → implement
368
+ Valid next phases: clarify
369
+
370
+ ❌ Approval gate 'design' not approved
371
+ Run: npx morph-spec approve user-auth design
372
+
373
+ ❌ Spec validation failed:
374
+ - Missing section: ## Data Model
375
+ - Missing section: ## API Contracts
376
+
377
+ Fix these issues before proceeding.
378
+ ```
379
+
380
+ **REGRA:** Nunca pule fases. Se precisa pular (ex: feature simples sem UIUX), documente em `decisions.md` ADR e use `--force`.
381
+
382
+ ---
383
+
384
+ ## CLAUDE CODE HOOKS (Validação em Hooks)
385
+
386
+ O framework integra com o sistema de hooks do Claude Code para validação automática em eventos Git e Agent Teams.
387
+
388
+ ### Arquitetura de Hooks
389
+
390
+ **Universal (framework/hooks/):** Hooks compartilhados por todas as stacks
391
+ - **pre-commit/**: `agents.sh`, `specs.sh`, `orchestrator.sh`
392
+ - **commit-msg/**: `conventional-commits.sh` (Conventional Commits format)
393
+ - **pre-push/**: `run-tests.sh` (executa test suite completo)
394
+ - **agent-teams/**: `teammate-idle.js`, `task-completed.js`, `phase-advanced.js`
395
+
396
+ **Stack-Specific (stacks/{stack}/.morph/hooks/):** Hooks específicos de cada stack
397
+ - **pre-commit/**: `tests-csharp.sh` (blazor-azure), `tests-typescript.sh` (nextjs-supabase)
398
+
399
+ ### Instalação de Git Hooks
400
+
401
+ ```bash
402
+ # No diretório .git/hooks do projeto
403
+ cd .git/hooks
404
+
405
+ # Pre-commit (valida agents.json, spec.md, executa testes)
406
+ ln -sf ../../framework/hooks/pre-commit/orchestrator.sh pre-commit
407
+ chmod +x pre-commit
408
+
409
+ # Commit-msg (valida formato Conventional Commits)
410
+ ln -sf ../../framework/hooks/commit-msg/conventional-commits.sh commit-msg
411
+ chmod +x commit-msg
412
+
413
+ # Pre-push (executa suite de testes antes de push)
414
+ ln -sf ../../framework/hooks/pre-push/run-tests.sh pre-push
415
+ chmod +x pre-push
416
+ ```
417
+
418
+ ### Configuração de Agent Teams Hooks
419
+
420
+ Adicione em `.claude/settings.local.json`:
421
+
422
+ ```json
423
+ {
424
+ "hooks": {
425
+ "TeammateIdle": "node framework/hooks/agent-teams/teammate-idle.js {feature}",
426
+ "TaskCompleted": "node framework/hooks/agent-teams/task-completed.js {feature} {taskId}",
427
+ "PhaseAdvanced": "node framework/hooks/agent-teams/phase-advanced.js {feature} {fromPhase} {toPhase}"
428
+ }
429
+ }
430
+ ```
431
+
432
+ ### Validators com Hook Behavior
433
+
434
+ 5 validators tier-4 configurados em `agents.json` com `hook_behavior`:
435
+
436
+ | Validator | Hook Triggers | Valida | Bloqueia? |
437
+ |-----------|---------------|--------|-----------|
438
+ | **security-expert** | TeammateIdle, TaskCompleted | SQL injection, XSS, Secrets | ✅ Sim |
439
+ | **architecture-expert** | TeammateIdle, TaskCompleted | DbContext injection, async/await, DI order | ✅ Sim |
440
+ | **packages-validator** | TaskCompleted | NuGet conflicts, .NET 10 compatibility | ✅ Sim |
441
+ | **design-system-validator** | TeammateIdle | CSS palette, spacing, typography | ⚠️ Warning |
442
+ | **blazor-concurrency-validator** | TaskCompleted | DbContext lifecycle, async void, JSInterop | ✅ Sim |
443
+
444
+ ### Como Funciona
445
+
446
+ **Git Hooks:**
447
+ ```
448
+ git commit → pre-commit hook → orchestrator.sh
449
+ ├─ Executa framework/hooks/pre-commit/*.sh (universal)
450
+ └─ Executa .morph/hooks/pre-commit/*.sh (stack-specific)
451
+
452
+ commit-msg hook → valida formato Conventional Commits
453
+
454
+ git push → pre-push hook → executa test suite
455
+ ```
456
+
457
+ **Agent Teams Hooks:**
458
+ ```
459
+ Teammate idle → TeammateIdle hook
460
+ ├─ Carrega agents.json
461
+ ├─ Filtra validators com hook_triggers: ["TeammateIdle"]
462
+ ├─ Executa validators via hook-executor.js
463
+ └─ Bloqueia se errors > 0 e blocks_on_fail: true
464
+ ```
465
+
466
+ ### Bypass (Não Recomendado)
467
+
468
+ ```bash
469
+ # Pular hooks Git
470
+ git commit --no-verify
471
+ git push --no-verify
472
+
473
+ # Pular validação de task
474
+ npx morph-spec task done feature-name task-id --skip-validation
475
+ ```
476
+
477
+ **IMPORTANTE:** Veja `framework/hooks/README.md` para documentação completa de hooks.
478
+
479
+ ---
480
+
481
+ ## AGENT INVOCATION PATTERNS (Spawning de Agentes)
482
+
483
+ Use **Task tool** para spawnar subagentes quando apropriado.
484
+
485
+ ### Quando Spawnar Agentes
486
+
487
+ Spawnar subagentes quando:
488
+
489
+ - **5+ agentes ativos** (conforme state.activeAgents)
490
+ - **Multi-domínio** (backend + frontend + infra)
491
+ - **15+ arquivos** a modificar
492
+ - **Complexidade: high ou critical**
493
+
494
+ ### Pattern 1: Squad Leader Spawning
495
+
496
+ ```typescript
497
+ // Use Task tool
498
+ {
499
+ subagent_type: "general-purpose",
500
+ description: "Implement backend API layer",
501
+ prompt: `You are the Backend Squad Leader (dotnet-senior)...
502
+
503
+ Your Domain Leaders:
504
+ - ef-modeler: Database/EF Core layer
505
+ - api-designer: REST endpoints + DTOs
506
+ - event-architect: Domain events + Hangfire jobs
507
+
508
+ Your Mission: Implement user authentication API
509
+
510
+ Feature Spec: [Include spec.md summary]
511
+
512
+ Standards:
513
+ - .morph/standards/coding.md
514
+ - .morph/standards/architecture.md
515
+ - .morph/standards/dotnet10-compatibility.md
516
+
517
+ Your Tasks (from tasks.json):
518
+ - T001: Create User entity + DbContext
519
+ - T002: Implement UserService with password hashing
520
+ - T003: Create AuthController with login/register endpoints
521
+
522
+ Deliverables:
523
+ - Entities/User.cs
524
+ - Data/AppDbContext.cs
525
+ - Services/UserService.cs
526
+ - Controllers/AuthController.cs
527
+ - DTOs (LoginRequest, RegisterRequest, AuthResponse)
528
+ - Migrations
529
+
530
+ Constraints:
531
+ - Use IDbContextFactory (not direct DbContext injection)
532
+ - BCrypt for password hashing
533
+ - JWT tokens (not sessions)
534
+
535
+ Report back when complete with file list + any blockers.`
536
+ }
537
+ ```
538
+
539
+ ### Pattern 2: Get Team Hierarchy Helper
540
+
541
+ ```bash
542
+ # Gera configurações prontas para Task tool
543
+ npx morph-spec spawn-team {feature}
544
+
545
+ # Output: JSON configs para cada squadmate
546
+ {
547
+ "teammates": [
548
+ {
549
+ "agent": "dotnet-senior",
550
+ "role": "Backend Squad Leader",
551
+ "taskConfig": { ... }
552
+ },
553
+ {
554
+ "agent": "ef-modeler",
555
+ "role": "Database Layer",
556
+ "taskConfig": { ... }
557
+ }
558
+ ]
559
+ }
560
+ ```
561
+
562
+ ### Pattern 3: Sequential Handoff
563
+
564
+ ```typescript
565
+ // 1. Backend squad gera API contracts
566
+ Task tool → dotnet-senior → generates contracts.cs
567
+
568
+ // 2. AGUARDAR conclusão (não spawnar frontend ainda)
569
+
570
+ // 3. Frontend squad usa contracts no contexto
571
+ Task tool → nextjs-senior → uses contracts.cs for type generation
572
+ ```
573
+
574
+ ### Agent Context Template
575
+
576
+ Use `.morph/templates/agent-context.md` para gerar contexto consistente:
577
+
578
+ ```bash
579
+ node bin/render-template.js agent-context \
580
+ --feature=user-auth \
581
+ --agent=dotnet-senior \
582
+ --output=.morph/temp/agent-context.txt
583
+ ```
584
+
585
+ **REGRA:** Sempre inclua spec.md summary, standards relevantes, e tasks específicas no prompt do agente.
586
+
587
+ ---
588
+
589
+ ## METADATA & QUICK ACCESS (Acesso Rápido)
590
+
591
+ Para features grandes, use `metadata.json` para acesso rápido (reduz uso de tokens em 60-80%).
592
+
593
+ ### Quando Usar metadata.json
594
+
595
+ **USE metadata.json para:**
596
+ - Quick status (fase atual, progresso %)
597
+ - Lista de agentes ativos
598
+ - Resumo de decisões (ADRs com links)
599
+ - Histórico de checkpoints
600
+
601
+ **USE arquivos .md completos para:**
602
+ - Spec técnico detalhado
603
+ - User stories completas
604
+ - Diagramas e arquitetura
605
+
606
+ ### Estrutura do metadata.json
607
+
608
+ ```json
609
+ {
610
+ "version": "1.0.0",
611
+ "feature": "user-authentication",
612
+ "status": "active",
613
+ "phase": "implement",
614
+
615
+ "spec": {
616
+ "id": "user-auth",
617
+ "status": "Approved",
618
+ "complexity": "Medium",
619
+ "summary": {
620
+ "problem": "Users need secure login/register...",
621
+ "solution": "JWT-based auth with BCrypt...",
622
+ "tags": ["security", "authentication", "jwt"]
623
+ },
624
+ "requirements": ["REQ1: JWT tokens", "REQ2: BCrypt hashing"],
625
+ "dataModel": ["User entity", "RefreshToken entity"]
626
+ },
627
+
628
+ "decisions": {
629
+ "decisions": [
630
+ {
631
+ "id": "ADR-001",
632
+ "title": "JWT vs Sessions",
633
+ "summary": "Chose JWT for stateless auth...",
634
+ "fullPath": ".morph/features/user-auth/decisions.md#adr-001"
635
+ }
636
+ ]
637
+ },
638
+
639
+ "tasks": {
640
+ "total": 12,
641
+ "completed": 8,
642
+ "progress": "67%"
643
+ },
644
+
645
+ "agents": ["dotnet-senior", "ef-modeler", "api-designer"],
646
+
647
+ "checkpoints": [
648
+ { "num": 1, "passed": true, "timestamp": "2026-02-14T10:30:00Z" },
649
+ { "num": 2, "passed": true, "timestamp": "2026-02-14T11:45:00Z" }
650
+ ],
651
+
652
+ "quickLinks": {
653
+ "spec": ".morph/features/user-auth/spec.md",
654
+ "tasks": ".morph/features/user-auth/tasks.json",
655
+ "decisions": ".morph/features/user-auth/decisions.md"
656
+ }
657
+ }
658
+ ```
659
+
660
+ ### Workflow
661
+
662
+ ```bash
663
+ # 1. Antes de trabalhar na feature, leia metadata.json
664
+ cat .morph/project/outputs/user-auth/metadata.json
665
+
666
+ # 2. Metadata é auto-atualizado após cada task
667
+ # (Configurado em llm-interaction.json: "updateFrequency": "on_task_done")
668
+ # NOTA: Não há comando manual para gerar metadata - sempre auto-gerado
669
+ ```
670
+
671
+ ### Configuração
672
+
673
+ ```json
674
+ {
675
+ "metadata": {
676
+ "autoGenerate": true,
677
+ "updateFrequency": "on_task_done"
678
+ }
679
+ }
680
+ ```
681
+
682
+ ---
683
+
684
+ ## LEARNING SYSTEM (Biblioteca de Patterns)
685
+
686
+ Capture e reutilize patterns bem-sucedidos em `.morph/memory/patterns-learned.md`.
687
+
688
+ ### Antes de Começar Nova Feature
689
+
690
+ ```bash
691
+ # Buscar patterns relevantes
692
+ npx morph-spec search-patterns "blazor state"
693
+ npx morph-spec search-patterns "background job"
694
+ npx morph-spec search-patterns "bicep naming"
695
+
696
+ # Output:
697
+ 🔍 Found 3 pattern(s) for: "blazor state"
698
+
699
+ 1. Blazor DbContext Lifecycle
700
+ Category: Anti-Pattern to Avoid
701
+ Source: Framework standard
702
+
703
+ Problem: Directly injecting DbContext in Blazor components...
704
+
705
+ Correct Approach:
706
+ [Inject] IDbContextFactory<AppDbContext> DbFactory { get; set; }
707
+ ...
708
+ ```
709
+
710
+ ### Após Completar Feature
711
+
712
+ ```bash
713
+ # Capturar pattern bem-sucedido
714
+ npx morph-spec capture-pattern user-auth success "JWT refresh token rotation"
715
+
716
+ # Capturar anti-pattern (o que evitar)
717
+ npx morph-spec capture-pattern user-auth avoid "Storing tokens in localStorage"
718
+
719
+ # Capturar otimização
720
+ npx morph-spec capture-pattern user-auth optimization "EF Core query splitting for N+1"
721
+ ```
722
+
723
+ ### Categorias de Patterns
724
+
725
+ | Categoria | Quando Usar |
726
+ |-----------|-------------|
727
+ | `success` | Abordagens comprovadas para replicar |
728
+ | `avoid` | Anti-patterns e erros cometidos |
729
+ | `optimization` | Melhorias de performance |
730
+ | `security` | Best practices de segurança |
731
+ | `convention` | Convenções do projeto (naming, estrutura) |
732
+ | `best-practice` | Práticas gerais recomendadas |
733
+
734
+ ### Pattern Library Pré-Seeded
735
+
736
+ O framework já vem com 11 patterns em `.morph/memory/patterns-learned.md`:
737
+
738
+ - Blazor DbContext Lifecycle (anti-pattern)
739
+ - Background Job Retry Strategy (best practice)
740
+ - Azure Bicep Resource Naming (convention)
741
+ - API Versioning Strategy (architecture)
742
+ - EF Core Migration Naming (convention)
743
+ - Blazor DI Registration Order (best practice)
744
+ - Component Parameter Validation (best practice)
745
+ - Async Method Naming (convention)
746
+ - Error Handling Strategy (best practice)
747
+ - Bicep Output Exports (convention)
748
+ - Azure Key Vault Secrets (security)
749
+
750
+ **REGRA:** Sempre busque patterns antes de começar. Capture patterns após completar. Biblioteca cresce com o tempo.
751
+
752
+ ---
753
+
754
+ ## INTERACTIVE DECISIONS (Decisões Estruturadas)
755
+
756
+ Use **AskUserQuestion** com templates estruturados em `.morph/templates/decision-prompts.md`.
757
+
758
+ ### Quando Usar AskUserQuestion
759
+
760
+ **SEMPRE use para:**
761
+ - Escolhas arquiteturais (múltiplas abordagens válidas)
762
+ - Clarificação de escopo (requisitos ambíguos)
763
+ - Override de validators (checkpoint failures)
764
+ - Pular fases (features simples sem UIUX)
765
+ - Breaking changes (API versioning, migrations)
766
+
767
+ ### Pattern 1: Arquitetura Choice
768
+
769
+ ```markdown
770
+ I've designed two approaches for "user-authentication":
771
+
772
+ **Option A: JWT with HttpOnly Cookies**
773
+ - Pros: XSS protection, automatic CSRF with SameSite
774
+ - Cons: Harder CORS, mobile app compatibility
775
+ - Cost: +2 tasks (CSRF middleware)
776
+
777
+ **Option B: JWT in Authorization Header**
778
+ - Pros: Simpler CORS, better mobile support
779
+ - Cons: Requires manual XSS protection
780
+ - Cost: +1 task (XSS sanitization)
781
+
782
+ Recommendation: Option A (more secure for web apps)
783
+
784
+ Which approach do you prefer?
785
+ ```
786
+
787
+ ### Pattern 2: Scope Clarification
788
+
789
+ ```markdown
790
+ Analyzing "scheduled-reports" feature. Need clarification:
791
+
792
+ 1. **Scope:** Include email delivery or just generation?
793
+ 2. **Users:** For admins only or all authenticated users?
794
+ 3. **Priority:** Critical (deploy this week) or enhancement (iterate)?
795
+ 4. **Format:** PDF only or PDF + Excel + CSV?
796
+
797
+ Please clarify so I can generate accurate spec.
798
+ ```
799
+
800
+ ### Pattern 3: Validator Override
801
+
802
+ ```markdown
803
+ Checkpoint failed 3 times:
804
+
805
+ **Error:** Architecture validator - "DbContext injected directly in ReportsPage.razor"
806
+
807
+ **Attempts:**
808
+ 1. Tried refactoring to service layer - still triggered (service was scoped)
809
+ 2. Tried IDbContextFactory - validator didn't detect pattern
810
+ 3. Re-read architecture.md - our implementation is correct per standard
811
+
812
+ **Options:**
813
+ 1. Skip architecture validator for this checkpoint (risky)
814
+ 2. Simplify implementation (use in-memory data, no DB)
815
+ 3. Escalate to troubleshooting-expert agent
816
+ 4. Pause for your guidance
817
+
818
+ What should I do?
819
+ ```
820
+
821
+ ### Pattern 4: Task Ordering
822
+
823
+ ```markdown
824
+ Task dependency conflict detected in "user-auth":
825
+
826
+ **Circular dependency:**
827
+ - T003 (AuthController) depends on T005 (JWT service)
828
+ - T005 (JWT service) depends on T003 (AuthController contracts)
829
+
830
+ **Proposed resolution:**
831
+ 1. Split T003 into T003a (contracts/DTOs) and T003b (controller implementation)
832
+ 2. Order: T003a → T005 → T003b
833
+
834
+ Approve this task breakdown?
835
+ ```
836
+
837
+ ### Templates Disponíveis
838
+
839
+ Veja `.morph/templates/decision-prompts.md` para templates completos:
840
+ - Scope Clarification
841
+ - Architecture Choice
842
+ - Task Ordering Conflict
843
+ - Validation Failure Recovery
844
+ - Breaking Change Approval
845
+ - Phase Skip Justification
846
+
847
+ **REGRA:** Sempre forneça contexto, 2-3 opções específicas, trade-offs, e sua recomendação. Usuário decide.
848
+
849
+ ---
850
+
55
851
  ## ESTRUTURA DO FRAMEWORK
56
852
 
57
853
  ```
@@ -91,14 +887,97 @@ morph-spec-framework/
91
887
 
92
888
  ## TEMPLATES
93
889
 
94
- > SEMPRE use `bin/render-template.js` para renderizar. NUNCA preencha placeholders manualmente.
890
+ > **Template System v2.0** - Organizado por tecnologia, reutilizável entre stacks, powered by Handlebars
891
+
892
+ ### Overview
893
+
894
+ Templates estão em `framework/templates/` organizados por **tecnologia** (não por stack):
895
+ - `code/dotnet/` - Templates .NET (service, repository, component, etc.)
896
+ - `code/typescript/` - Templates TypeScript (contracts, etc.)
897
+ - `code/sql/` - Templates SQL (Supabase migrations, RLS policies)
898
+ - `infrastructure/azure/` - Bicep templates para Azure
899
+ - `infrastructure/docker/` - Dockerfiles e Docker Compose
900
+ - `integrations/` - Integrações (Asaas, Clerk, Azure Identity)
901
+ - `ui/` - Design systems (CSS, Fluent/Mud themes)
902
+ - `saas/` - Multi-tenant patterns
903
+
904
+ **Por quê tecnologia?** Permite reutilizar templates entre stacks (ex: service.cs funciona para blazor-azure E nextjs-supabase).
905
+
906
+ ### CLI Commands
907
+
908
+ ```bash
909
+ # Listar todos os templates
910
+ morph-spec template list
911
+
912
+ # Filtrar por categoria/tecnologia
913
+ morph-spec template list --category code
914
+ morph-spec template list --phase implement
915
+
916
+ # Ver detalhes de um template
917
+ morph-spec template show dotnet-backend-service --preview
918
+
919
+ # Renderizar template (usando Handlebars)
920
+ morph-spec template render dotnet-backend-service UserService.cs '{
921
+ "FEATURE_NAME": "user-auth",
922
+ "NAMESPACE": "MyApp.Services"
923
+ }'
924
+
925
+ # Customizar template (criar override stack-specific)
926
+ morph-spec template customize dotnet-backend-service --stack blazor-azure
927
+ ```
928
+
929
+ ### Handlebars Helpers (v2.0)
930
+
931
+ **✅ USE (novo):**
932
+
933
+ | Helper | Input | Output | Uso |
934
+ |--------|-------|--------|-----|
935
+ | `{{pascalCase str}}` | `user-auth` | `UserAuth` | Classes |
936
+ | `{{camelCase str}}` | `user-auth` | `userAuth` | Variables |
937
+ | `{{snakeCase str}}` | `user-auth` | `user_auth` | SQL |
938
+ | `{{titleCase str}}` | `user-auth` | `User Auth` | Titles |
939
+ | `{{pluralize str}}` | `user` | `users` | Collections |
940
+
941
+ **❌ DEPRECADO (v1.0):**
942
+
943
+ | Placeholder | Status | Use Instead |
944
+ |-------------|--------|-------------|
945
+ | `{{FEATURE_NAME_PASCAL}}` | ❌ Deprecated | `{{pascalCase FEATURE_NAME}}` |
946
+ | `{{FEATURE_NAME_CAMEL}}` | ❌ Deprecated | `{{camelCase FEATURE_NAME}}` |
947
+ | `{{FEATURE_NAME_SNAKE}}` | ❌ Deprecated | `{{snakeCase FEATURE_NAME}}` |
948
+
949
+ ### Variáveis Padrão (auto-injetadas)
95
950
 
96
951
  | Placeholder | Exemplo |
97
952
  |-------------|---------|
98
953
  | `{{FEATURE_NAME}}` | `scheduled-reports` |
99
- | `{{FEATURE_NAME_PASCAL}}` | `ScheduledReports` |
100
954
  | `{{STACK}}` | `Blazor` ou `NextjsSupabase` |
101
- | `{{DATE}}`, `{{AUTHOR}}`, `{{NAMESPACE}}` | Auto from config.json |
955
+ | `{{DATE}}` | `2026-02-17` |
956
+ | `{{YEAR}}` | `2026` |
957
+ | `{{TIMESTAMP}}` | `2026-02-17T19:38:00Z` |
958
+ | `{{NAMESPACE}}` | Auto from config.json |
959
+ | `{{AUTHOR}}` | Auto from config.json |
960
+
961
+ ### Stack Overrides
962
+
963
+ Templates são resolvidos com fallback automático:
964
+ 1. `stacks/{stack}/.morph/templates/` (override stack-specific)
965
+ 2. `.morph/templates/` (override project-local)
966
+ 3. `framework/templates/` (fallback padrão)
967
+
968
+ Para customizar um template:
969
+ ```bash
970
+ morph-spec template customize dotnet-backend-service --stack blazor-azure
971
+ # Edite: stacks/blazor-azure/.morph/templates/code/dotnet/backend/service.cs
972
+ ```
973
+
974
+ ### Documentação Completa
975
+
976
+ Veja `framework/templates/README.md` para:
977
+ - Estrutura completa de diretórios
978
+ - Todos os helpers Handlebars disponíveis
979
+ - Como criar novos templates
980
+ - Migração v1 → v2
102
981
 
103
982
  ---
104
983