@polymorphism-tech/morph-spec 4.3.3 → 4.3.5

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 (488) hide show
  1. package/.morph/.morphversion +5 -0
  2. package/.morph/analytics/threads-log.jsonl +9 -0
  3. package/{stacks/blazor-azure/.morph → .morph}/config/agents.json +948 -948
  4. package/.morph/config/config.json +9 -0
  5. package/{stacks/blazor-azure/.morph → .morph}/project/context/README.md +1 -1
  6. package/.morph/project/context/detection-log.md +16 -0
  7. package/.morph/project/standards/inferred.md +59 -0
  8. package/.morph/state.json +48 -0
  9. package/.morph/templates/.idea/morph-templates.xml +92 -0
  10. package/.morph/templates/.vscode/morph-templates.code-snippets +186 -0
  11. package/.morph/templates/IDE-SNIPPETS.md +266 -0
  12. package/.morph/templates/README.md +814 -0
  13. package/.morph/templates/REGISTRY.json +1677 -0
  14. package/.morph/templates/code/dotnet/backend/repository.cs +141 -0
  15. package/.morph/templates/code/dotnet/backend/service.cs +139 -0
  16. package/.morph/templates/code/dotnet/contracts/Commands.cs +74 -0
  17. package/.morph/templates/code/dotnet/contracts/Entities.cs +25 -0
  18. package/.morph/templates/code/dotnet/contracts/Queries.cs +74 -0
  19. package/.morph/templates/code/dotnet/contracts/README.md +74 -0
  20. package/.morph/templates/code/dotnet/contracts/api-contracts.cs +173 -0
  21. package/.morph/templates/code/dotnet/contracts/contracts.cs +217 -0
  22. package/.morph/templates/code/dotnet/database/migration.cs +83 -0
  23. package/.morph/templates/code/dotnet/frontend/component.razor +239 -0
  24. package/.morph/templates/code/dotnet/jobs/agent.cs +163 -0
  25. package/.morph/templates/code/dotnet/jobs/job.cs +171 -0
  26. package/.morph/templates/code/dotnet/test.cs +239 -0
  27. package/.morph/templates/code/sql/rls-policy.sql +57 -0
  28. package/.morph/templates/code/sql/supabase-migration.sql +100 -0
  29. package/.morph/templates/code/sql/supabase-migration.template.sql +113 -0
  30. package/.morph/templates/code/typescript/contracts.ts +168 -0
  31. package/.morph/templates/context/CONTEXT-FEATURE.md +276 -0
  32. package/.morph/templates/context/CONTEXT.md +181 -0
  33. package/.morph/templates/docs/proposal.md +182 -0
  34. package/.morph/templates/docs/spec.md +149 -0
  35. package/.morph/templates/examples/design-system-examples.md +357 -0
  36. package/.morph/templates/examples/spec-examples.md +90 -0
  37. package/.morph/templates/feature/decisions.md +187 -0
  38. package/.morph/templates/feature/recap.md +146 -0
  39. package/.morph/templates/feature/tasks.md +199 -0
  40. package/.morph/templates/infrastructure/azure/Dockerfile.example +82 -0
  41. package/.morph/templates/infrastructure/azure/README.md +286 -0
  42. package/.morph/templates/infrastructure/azure/app-insights.bicep +63 -0
  43. package/.morph/templates/infrastructure/azure/app-service.bicep +164 -0
  44. package/.morph/templates/infrastructure/azure/container-app-env.bicep +49 -0
  45. package/.morph/templates/infrastructure/azure/container-app.bicep +156 -0
  46. package/.morph/templates/infrastructure/azure/deploy-checklist.md +426 -0
  47. package/.morph/templates/infrastructure/azure/deploy.ps1 +229 -0
  48. package/.morph/templates/infrastructure/azure/deploy.sh +208 -0
  49. package/.morph/templates/infrastructure/azure/key-vault.bicep +91 -0
  50. package/.morph/templates/infrastructure/azure/main.bicep +189 -0
  51. package/.morph/templates/infrastructure/azure/parameters.dev.json +29 -0
  52. package/.morph/templates/infrastructure/azure/parameters.prod.json +29 -0
  53. package/.morph/templates/infrastructure/azure/parameters.staging.json +29 -0
  54. package/.morph/templates/infrastructure/azure/sql-database.bicep +103 -0
  55. package/.morph/templates/infrastructure/azure/storage.bicep +106 -0
  56. package/.morph/templates/infrastructure/docker/Dockerfile.template +58 -0
  57. package/.morph/templates/infrastructure/docker/docker-compose.template.yml +67 -0
  58. package/.morph/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -0
  59. package/.morph/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -0
  60. package/.morph/templates/infrastructure/docker/easypanel.template.json +54 -0
  61. package/.morph/templates/infrastructure/github/README.md +593 -0
  62. package/.morph/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +22 -0
  63. package/.morph/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -0
  64. package/.morph/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -0
  65. package/.morph/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +61 -0
  66. package/.morph/templates/infrastructure/github/workflows/deploy-easypanel.yml.hbs +31 -0
  67. package/.morph/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -0
  68. package/.morph/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -0
  69. package/.morph/templates/integrations/asaas-client.cs +387 -0
  70. package/.morph/templates/integrations/asaas-webhook.cs +351 -0
  71. package/.morph/templates/integrations/azure-identity-config.cs +288 -0
  72. package/.morph/templates/integrations/clerk-config.cs +258 -0
  73. package/.morph/templates/meta-prompts/fusion/fusion-agent.md +76 -0
  74. package/.morph/templates/meta-prompts/fusion/fusion-aggregator.md +100 -0
  75. package/.morph/templates/meta-prompts/hops/hop-retry.md +78 -0
  76. package/.morph/templates/meta-prompts/hops/hop-validation.md +97 -0
  77. package/.morph/templates/meta-prompts/hops/hop-wrapper.md +36 -0
  78. package/.morph/templates/meta-prompts/parallel-workers/parallel-coordinator.md +113 -0
  79. package/.morph/templates/meta-prompts/parallel-workers/parallel-worker.md +80 -0
  80. package/.morph/templates/meta-prompts/squad-leaders/backend-squad.md +90 -0
  81. package/.morph/templates/meta-prompts/squad-leaders/frontend-squad.md +126 -0
  82. package/.morph/templates/meta-prompts/squad-leaders/squad-leader.md +43 -0
  83. package/.morph/templates/meta-prompts/validators/checkpoint-validator.md +107 -0
  84. package/.morph/templates/meta-prompts/validators/pre-commit-validator.md +95 -0
  85. package/.morph/templates/saas/subscription.cs +347 -0
  86. package/.morph/templates/saas/tenant.cs +338 -0
  87. package/.morph/templates/state.template.json +17 -0
  88. package/.morph/templates/ui/FluentDesignTheme.cs +149 -0
  89. package/.morph/templates/ui/MudTheme.cs +281 -0
  90. package/.morph/templates/ui/design-system.css +226 -0
  91. package/bin/detect-agents.js +1 -2
  92. package/bin/morph-spec.js +1 -14
  93. package/framework/agents.json +948 -0
  94. package/{stacks/nextjs-supabase/.claude → framework}/commands/morph-infra.md +1 -1
  95. package/framework/hooks/README.md +282 -0
  96. package/framework/hooks/agent-stop/validate-and-continue.js +96 -0
  97. package/framework/hooks/agent-stop/validate-checkpoints.js +101 -0
  98. package/framework/hooks/agent-stop/validate-tests.js +109 -0
  99. package/framework/hooks/agent-teams/dispatch.js +67 -0
  100. package/framework/hooks/agent-teams/phase-advanced.js +80 -0
  101. package/framework/hooks/agent-teams/task-completed.js +76 -0
  102. package/framework/hooks/agent-teams/teammate-idle.js +70 -0
  103. package/framework/hooks/commit-msg/conventional-commits.sh +33 -0
  104. package/framework/hooks/pre-commit/agents.sh +25 -0
  105. package/framework/hooks/pre-commit/orchestrator.sh +64 -0
  106. package/framework/hooks/pre-commit/specs.sh +50 -0
  107. package/framework/hooks/pre-push/run-tests.sh +44 -0
  108. package/framework/index/troubleshooting-index.json +184 -0
  109. package/framework/memory/patterns-learned.md +766 -0
  110. package/framework/skills/level-0-meta/README.md +7 -0
  111. package/framework/skills/level-0-meta/code-review.md +226 -0
  112. package/framework/skills/level-0-meta/morph-checklist.md +117 -0
  113. package/framework/skills/level-0-meta/simulation-checklist.md +77 -0
  114. package/framework/skills/level-1-workflows/README.md +7 -0
  115. package/framework/skills/level-1-workflows/morph-replicate.md +213 -0
  116. package/framework/skills/level-1-workflows/phase-clarify.md +131 -0
  117. package/framework/skills/level-1-workflows/phase-design.md +213 -0
  118. package/framework/skills/level-1-workflows/phase-setup.md +106 -0
  119. package/framework/skills/level-1-workflows/phase-tasks.md +164 -0
  120. package/framework/skills/level-1-workflows/phase-uiux.md +169 -0
  121. package/framework/skills/level-2-domains/README.md +14 -0
  122. package/framework/skills/level-2-domains/ai-agents/ai-system-architect.md +192 -0
  123. package/framework/skills/level-2-domains/architecture/po-pm-advisor.md +197 -0
  124. package/framework/skills/level-2-domains/architecture/prompt-engineer.md +189 -0
  125. package/framework/skills/level-2-domains/architecture/seo-growth-hacker.md +320 -0
  126. package/framework/skills/level-2-domains/architecture/standards-architect.md +156 -0
  127. package/framework/skills/level-2-domains/backend/api-designer.md +59 -0
  128. package/framework/skills/level-2-domains/backend/dotnet-senior.md +77 -0
  129. package/framework/skills/level-2-domains/backend/ef-modeler.md +58 -0
  130. package/framework/skills/level-2-domains/backend/hangfire-orchestrator.md +126 -0
  131. package/framework/skills/level-2-domains/backend/ms-agent-expert.md +45 -0
  132. package/framework/skills/level-2-domains/frontend/blazor-builder.md +210 -0
  133. package/framework/skills/level-2-domains/frontend/nextjs-expert.md +154 -0
  134. package/framework/skills/level-2-domains/frontend/ui-ux-designer.md +191 -0
  135. package/framework/skills/level-2-domains/infrastructure/azure-architect.md +142 -0
  136. package/framework/skills/level-2-domains/infrastructure/azure-deploy-specialist.md +699 -0
  137. package/framework/skills/level-2-domains/infrastructure/bicep-architect.md +126 -0
  138. package/framework/skills/level-2-domains/infrastructure/container-specialist.md +131 -0
  139. package/framework/skills/level-2-domains/infrastructure/devops-engineer.md +119 -0
  140. package/framework/skills/level-2-domains/integrations/asaas-financial.md +130 -0
  141. package/framework/skills/level-2-domains/integrations/azure-identity.md +142 -0
  142. package/framework/skills/level-2-domains/integrations/clerk-auth.md +108 -0
  143. package/framework/skills/level-2-domains/integrations/hangfire-orchestrator.md +64 -0
  144. package/framework/skills/level-2-domains/integrations/resend-email.md +119 -0
  145. package/framework/skills/level-2-domains/quality/code-analyzer.md +235 -0
  146. package/framework/skills/level-2-domains/quality/testing-specialist.md +126 -0
  147. package/framework/skills/level-3-technologies/README.md +7 -0
  148. package/framework/skills/level-4-patterns/README.md +7 -0
  149. package/framework/squad-templates/backend-only.json +34 -0
  150. package/framework/squad-templates/frontend-only.json +34 -0
  151. package/framework/squad-templates/full-stack.json +52 -0
  152. package/framework/templates/.idea/morph-templates.xml +92 -0
  153. package/framework/templates/.vscode/morph-templates.code-snippets +186 -0
  154. package/framework/templates/IDE-SNIPPETS.md +266 -0
  155. package/framework/templates/README.md +814 -0
  156. package/framework/templates/REGISTRY.json +1677 -0
  157. package/framework/templates/code/dotnet/backend/repository.cs +141 -0
  158. package/framework/templates/code/dotnet/backend/service.cs +139 -0
  159. package/framework/templates/code/dotnet/contracts/Commands.cs +74 -0
  160. package/framework/templates/code/dotnet/contracts/Entities.cs +25 -0
  161. package/framework/templates/code/dotnet/contracts/Queries.cs +74 -0
  162. package/framework/templates/code/dotnet/contracts/README.md +74 -0
  163. package/framework/templates/code/dotnet/contracts/api-contracts.cs +173 -0
  164. package/framework/templates/code/dotnet/contracts/contracts.cs +217 -0
  165. package/framework/templates/code/dotnet/database/migration.cs +83 -0
  166. package/framework/templates/code/dotnet/frontend/component.razor +239 -0
  167. package/framework/templates/code/dotnet/jobs/agent.cs +163 -0
  168. package/framework/templates/code/dotnet/jobs/job.cs +171 -0
  169. package/framework/templates/code/dotnet/test.cs +239 -0
  170. package/framework/templates/code/sql/rls-policy.sql +57 -0
  171. package/framework/templates/code/sql/supabase-migration.sql +100 -0
  172. package/framework/templates/code/sql/supabase-migration.template.sql +113 -0
  173. package/framework/templates/code/typescript/contracts.ts +168 -0
  174. package/framework/templates/context/CONTEXT-FEATURE.md +276 -0
  175. package/framework/templates/context/CONTEXT.md +181 -0
  176. package/framework/templates/docs/proposal.md +182 -0
  177. package/framework/templates/docs/spec.md +149 -0
  178. package/framework/templates/examples/design-system-examples.md +357 -0
  179. package/framework/templates/examples/spec-examples.md +90 -0
  180. package/framework/templates/feature/decisions.md +187 -0
  181. package/framework/templates/feature/recap.md +146 -0
  182. package/framework/templates/feature/tasks.md +199 -0
  183. package/framework/templates/infrastructure/azure/Dockerfile.example +82 -0
  184. package/framework/templates/infrastructure/azure/README.md +286 -0
  185. package/framework/templates/infrastructure/azure/app-insights.bicep +63 -0
  186. package/framework/templates/infrastructure/azure/app-service.bicep +164 -0
  187. package/framework/templates/infrastructure/azure/container-app-env.bicep +49 -0
  188. package/framework/templates/infrastructure/azure/container-app.bicep +156 -0
  189. package/framework/templates/infrastructure/azure/deploy-checklist.md +426 -0
  190. package/framework/templates/infrastructure/azure/deploy.ps1 +229 -0
  191. package/framework/templates/infrastructure/azure/deploy.sh +208 -0
  192. package/framework/templates/infrastructure/azure/key-vault.bicep +91 -0
  193. package/framework/templates/infrastructure/azure/main.bicep +189 -0
  194. package/framework/templates/infrastructure/azure/parameters.dev.json +29 -0
  195. package/framework/templates/infrastructure/azure/parameters.prod.json +29 -0
  196. package/framework/templates/infrastructure/azure/parameters.staging.json +29 -0
  197. package/framework/templates/infrastructure/azure/sql-database.bicep +103 -0
  198. package/framework/templates/infrastructure/azure/storage.bicep +106 -0
  199. package/framework/templates/infrastructure/docker/Dockerfile.template +58 -0
  200. package/framework/templates/infrastructure/docker/docker-compose.template.yml +67 -0
  201. package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -0
  202. package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -0
  203. package/framework/templates/infrastructure/docker/easypanel.template.json +54 -0
  204. package/framework/templates/infrastructure/github/README.md +593 -0
  205. package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +22 -0
  206. package/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -0
  207. package/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -0
  208. package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +61 -0
  209. package/framework/templates/infrastructure/github/workflows/deploy-easypanel.yml.hbs +31 -0
  210. package/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -0
  211. package/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -0
  212. package/framework/templates/integrations/asaas-client.cs +387 -0
  213. package/framework/templates/integrations/asaas-webhook.cs +351 -0
  214. package/framework/templates/integrations/azure-identity-config.cs +288 -0
  215. package/framework/templates/integrations/clerk-config.cs +258 -0
  216. package/framework/templates/meta-prompts/fusion/fusion-agent.md +76 -0
  217. package/framework/templates/meta-prompts/fusion/fusion-aggregator.md +100 -0
  218. package/framework/templates/meta-prompts/hops/hop-retry.md +78 -0
  219. package/framework/templates/meta-prompts/hops/hop-validation.md +97 -0
  220. package/framework/templates/meta-prompts/hops/hop-wrapper.md +36 -0
  221. package/framework/templates/meta-prompts/parallel-workers/parallel-coordinator.md +113 -0
  222. package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +80 -0
  223. package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +90 -0
  224. package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +126 -0
  225. package/framework/templates/meta-prompts/squad-leaders/squad-leader.md +43 -0
  226. package/framework/templates/meta-prompts/validators/checkpoint-validator.md +107 -0
  227. package/framework/templates/meta-prompts/validators/pre-commit-validator.md +95 -0
  228. package/framework/templates/saas/subscription.cs +347 -0
  229. package/framework/templates/saas/tenant.cs +338 -0
  230. package/framework/templates/state.template.json +17 -0
  231. package/framework/templates/ui/FluentDesignTheme.cs +149 -0
  232. package/framework/templates/ui/MudTheme.cs +281 -0
  233. package/framework/templates/ui/design-system.css +226 -0
  234. package/framework/workflows/README.md +1041 -0
  235. package/framework/workflows/configs/design-impl.json +49 -0
  236. package/framework/workflows/configs/fast-track.json +42 -0
  237. package/framework/workflows/configs/full-morph.json +79 -0
  238. package/framework/workflows/configs/fusion.json +39 -0
  239. package/framework/workflows/configs/long-running.json +33 -0
  240. package/framework/workflows/configs/standard.json +60 -0
  241. package/framework/workflows/configs/ui-refresh.json +49 -0
  242. package/framework/workflows/configs/zero-touch.json +75 -0
  243. package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -0
  244. package/framework/workflows/docs/design-impl.md +37 -0
  245. package/framework/workflows/docs/enforcement-pipeline.md +668 -0
  246. package/framework/workflows/docs/fast-track.md +29 -0
  247. package/framework/workflows/docs/full-morph.md +76 -0
  248. package/framework/workflows/docs/standard.md +44 -0
  249. package/framework/workflows/docs/ui-refresh.md +39 -0
  250. package/package.json +3 -3
  251. package/src/commands/feature/create-story.js +11 -7
  252. package/src/commands/project/detect-agents.js +1 -2
  253. package/src/commands/project/init.js +69 -32
  254. package/src/commands/project/update.js +102 -15
  255. package/src/commands/templates/template-customize.js +3 -17
  256. package/src/commands/templates/template-list.js +1 -15
  257. package/src/commands/templates/template-render.js +2 -3
  258. package/src/commands/templates/template-show.js +3 -5
  259. package/src/core/templates/template-registry.js +9 -23
  260. package/src/lib/detectors/structure-detector.js +3 -3
  261. package/src/lib/generators/context-generator.js +18 -6
  262. package/src/lib/hooks/hook-executor.js +0 -2
  263. package/src/lib/orchestration/team-orchestrator.js +1 -2
  264. package/src/lib/standards/standards-context-injector.js +3 -4
  265. package/src/lib/troubleshooting/troubleshoot-grep.js +3 -9
  266. package/src/lib/validators/validation-runner.js +1 -2
  267. package/src/utils/file-copier.js +1 -2
  268. package/docs/README.md +0 -144
  269. package/docs/api/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  270. package/docs/api/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  271. package/docs/api/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  272. package/docs/api/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  273. package/docs/api/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  274. package/docs/api/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  275. package/docs/api/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  276. package/docs/api/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  277. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  278. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +0 -978
  279. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  280. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  281. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  282. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  283. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +0 -1049
  284. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  285. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  286. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  287. package/docs/api/scripts/collapse.js +0 -39
  288. package/docs/api/scripts/commonNav.js +0 -28
  289. package/docs/api/scripts/linenumber.js +0 -25
  290. package/docs/api/scripts/nav.js +0 -12
  291. package/docs/api/scripts/polyfill.js +0 -4
  292. package/docs/api/scripts/prettify/Apache-License-2.0.txt +0 -202
  293. package/docs/api/scripts/prettify/lang-css.js +0 -2
  294. package/docs/api/scripts/prettify/prettify.js +0 -28
  295. package/docs/api/scripts/search.js +0 -99
  296. package/docs/api/styles/jsdoc.css +0 -776
  297. package/docs/api/styles/prettify.css +0 -80
  298. package/docs/cli-auto-detection.md +0 -219
  299. package/docs/getting-started.md +0 -296
  300. package/docs/installation.md +0 -361
  301. package/docs/next-generation/AGENTS.md +0 -521
  302. package/docs/next-generation/ANALYSIS.md +0 -555
  303. package/docs/next-generation/ARCHITECTURE.md +0 -436
  304. package/docs/next-generation/CONTEXT-OPTIMIZATION.md +0 -267
  305. package/docs/next-generation/EXECUTION-FLOW.md +0 -274
  306. package/docs/next-generation/FEATURES.md +0 -688
  307. package/docs/next-generation/META-PROMPTS.md +0 -235
  308. package/docs/next-generation/MIGRATION-GUIDE.md +0 -253
  309. package/docs/next-generation/README.md +0 -231
  310. package/docs/next-generation/ROADMAP.md +0 -801
  311. package/docs/next-generation/THREAD-MANAGEMENT.md +0 -240
  312. package/docs/templates.md +0 -418
  313. package/docs/troubleshooting.md +0 -269
  314. package/docs/validation-checklist.md +0 -264
  315. package/scripts/postinstall.js +0 -132
  316. package/src/lib/stacks/index.js +0 -7
  317. package/src/lib/stacks/stack-resolver.js +0 -180
  318. package/stacks/blazor-azure/.claude/commands/morph-deploy.md +0 -529
  319. package/stacks/blazor-azure/.claude/commands/morph-infra.md +0 -209
  320. package/stacks/blazor-azure/.morph/.morphversion +0 -5
  321. package/stacks/blazor-azure/.morph/config/config.json +0 -9
  322. package/stacks/blazor-azure/CLAUDE.md +0 -155
  323. package/stacks/blazor-azure/README.md +0 -79
  324. package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +0 -221
  325. package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +0 -79
  326. package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +0 -529
  327. package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +0 -227
  328. package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +0 -122
  329. package/stacks/nextjs-supabase/.claude/commands/morph-status.md +0 -86
  330. package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +0 -122
  331. package/stacks/nextjs-supabase/.morph/.morphversion +0 -5
  332. package/stacks/nextjs-supabase/.morph/config/agents.json +0 -345
  333. package/stacks/nextjs-supabase/.morph/config/config.json +0 -9
  334. package/stacks/nextjs-supabase/.morph/project/context/README.md +0 -17
  335. package/stacks/nextjs-supabase/CLAUDE.md +0 -155
  336. package/stacks/nextjs-supabase/README.md +0 -103
  337. /package/{stacks/blazor-azure/.morph → .morph}/standards/ai-agents/blazor-ui.md +0 -0
  338. /package/{stacks/blazor-azure/.morph → .morph}/standards/ai-agents/production.md +0 -0
  339. /package/{stacks/blazor-azure/.morph → .morph}/standards/ai-agents/setup.md +0 -0
  340. /package/{stacks/blazor-azure/.morph → .morph}/standards/ai-agents/team-orchestration.md +0 -0
  341. /package/{stacks/blazor-azure/.morph → .morph}/standards/ai-agents/workflows.md +0 -0
  342. /package/{stacks/blazor-azure/.morph → .morph}/standards/architecture/ddd/aggregates.md +0 -0
  343. /package/{stacks/blazor-azure/.morph → .morph}/standards/architecture/ddd/entities.md +0 -0
  344. /package/{stacks/blazor-azure/.morph → .morph}/standards/architecture/ddd/value-objects.md +0 -0
  345. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/api/minimal-api.md +0 -0
  346. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/api/rest.md +0 -0
  347. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/api/validation.md +0 -0
  348. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/authentication/passkeys.md +0 -0
  349. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/database/ef-core.md +0 -0
  350. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/database/migrations.md +0 -0
  351. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/database/postgresql/database.md +0 -0
  352. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/database/repository-patterns.md +0 -0
  353. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/database/vector-search-rag.md +0 -0
  354. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/dotnet/async.md +0 -0
  355. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/dotnet/core.md +0 -0
  356. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/dotnet/di.md +0 -0
  357. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/dotnet/program-cs-checklist.md +0 -0
  358. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/integrations/asaas/asaas-api.md +0 -0
  359. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/integrations/clerk/clerk-auth.md +0 -0
  360. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/integrations/hangfire/hangfire-jobs.md +0 -0
  361. /package/{stacks/blazor-azure/.morph → .morph}/standards/backend/integrations/resend/resend-email.md +0 -0
  362. /package/{stacks/blazor-azure/.morph → .morph}/standards/context/analytics.md +0 -0
  363. /package/{stacks/blazor-azure/.morph → .morph}/standards/context/bundles.md +0 -0
  364. /package/{stacks/blazor-azure/.morph → .morph}/standards/context/priming.md +0 -0
  365. /package/{stacks/blazor-azure/.morph → .morph}/standards/core/architecture.md +0 -0
  366. /package/{stacks/blazor-azure/.morph → .morph}/standards/core/coding.md +0 -0
  367. /package/{stacks/blazor-azure/.morph → .morph}/standards/core/git-branching-strategy.md +0 -0
  368. /package/{stacks/blazor-azure/.morph → .morph}/standards/core/git.md +0 -0
  369. /package/{stacks/blazor-azure/.morph → .morph}/standards/core/testing.md +0 -0
  370. /package/{stacks/blazor-azure/.morph → .morph}/standards/data/nosql/blob-storage.md +0 -0
  371. /package/{stacks/blazor-azure/.morph → .morph}/standards/data/nosql/cache/redis.md +0 -0
  372. /package/{stacks/blazor-azure/.morph → .morph}/standards/data/nosql/cosmos-db.md +0 -0
  373. /package/{stacks/blazor-azure/.morph → .morph}/standards/data/vector-search/azure-ai-search.md +0 -0
  374. /package/{stacks/blazor-azure/.morph → .morph}/standards/data/vector-search/rag-chunking.md +0 -0
  375. /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/design-checklist.md +0 -0
  376. /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/fluent-ui-setup.md +0 -0
  377. /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/fluent-ui.md +0 -0
  378. /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/html-conversion.md +0 -0
  379. /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/lifecycle.md +0 -0
  380. /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/pitfalls.md +0 -0
  381. /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/blazor/state.md +0 -0
  382. /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/design-system/animations.md +0 -0
  383. /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/design-system/naming.md +0 -0
  384. /package/{stacks/blazor-azure/.morph → .morph}/standards/frontend/nextjs/nextjs-patterns.md +0 -0
  385. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/azure.md +0 -0
  386. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -0
  387. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -0
  388. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/devops/local-development.md +0 -0
  389. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/services/functions.md +0 -0
  390. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/services/service-bus.md +0 -0
  391. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/azure/services/storage.md +0 -0
  392. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/docker/easypanel-deploy.md +0 -0
  393. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/supabase/mcp-setup.md +0 -0
  394. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/supabase/supabase-auth.md +0 -0
  395. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/supabase/supabase-pgvector.md +0 -0
  396. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/supabase/supabase-rls.md +0 -0
  397. /package/{stacks/blazor-azure/.morph → .morph}/standards/infrastructure/supabase/supabase-storage.md +0 -0
  398. /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/api/graphql.md +0 -0
  399. /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/api/grpc.md +0 -0
  400. /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/api/rest-design.md +0 -0
  401. /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/event-driven/cqrs.md +0 -0
  402. /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/event-driven/event-sourcing.md +0 -0
  403. /package/{stacks/blazor-azure/.morph → .morph}/standards/integration/event-driven/service-bus.md +0 -0
  404. /package/{stacks/blazor-azure/.morph → .morph}/standards/observability/logging.md +0 -0
  405. /package/{stacks/blazor-azure/.morph → .morph}/standards/observability/metrics.md +0 -0
  406. /package/{stacks/blazor-azure/.morph → .morph}/standards/observability/monitoring.md +0 -0
  407. /package/{stacks/blazor-azure/.morph → .morph}/standards/observability/tracing.md +0 -0
  408. /package/{stacks/blazor-azure/.morph → .morph}/standards/workflows/parallel-execution.md +0 -0
  409. /package/{stacks/blazor-azure/.morph → .morph}/standards/workflows/thread-management.md +0 -0
  410. /package/{stacks/blazor-azure/.claude → framework}/commands/morph-apply.md +0 -0
  411. /package/{stacks/blazor-azure/.claude → framework}/commands/morph-archive.md +0 -0
  412. /package/{stacks/blazor-azure/.claude → framework}/commands/morph-preflight.md +0 -0
  413. /package/{stacks/blazor-azure/.claude → framework}/commands/morph-proposal.md +0 -0
  414. /package/{stacks/blazor-azure/.claude → framework}/commands/morph-status.md +0 -0
  415. /package/{stacks/blazor-azure/.claude → framework}/commands/morph-troubleshoot.md +0 -0
  416. /package/{stacks/nextjs-supabase/.morph → framework}/standards/ai-agents/blazor-ui.md +0 -0
  417. /package/{stacks/nextjs-supabase/.morph → framework}/standards/ai-agents/production.md +0 -0
  418. /package/{stacks/nextjs-supabase/.morph → framework}/standards/ai-agents/setup.md +0 -0
  419. /package/{stacks/nextjs-supabase/.morph → framework}/standards/ai-agents/team-orchestration.md +0 -0
  420. /package/{stacks/nextjs-supabase/.morph → framework}/standards/ai-agents/workflows.md +0 -0
  421. /package/{stacks/nextjs-supabase/.morph → framework}/standards/architecture/ddd/aggregates.md +0 -0
  422. /package/{stacks/nextjs-supabase/.morph → framework}/standards/architecture/ddd/entities.md +0 -0
  423. /package/{stacks/nextjs-supabase/.morph → framework}/standards/architecture/ddd/value-objects.md +0 -0
  424. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/api/minimal-api.md +0 -0
  425. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/api/rest.md +0 -0
  426. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/api/validation.md +0 -0
  427. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/authentication/passkeys.md +0 -0
  428. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/database/ef-core.md +0 -0
  429. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/database/migrations.md +0 -0
  430. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/database/postgresql/database.md +0 -0
  431. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/database/repository-patterns.md +0 -0
  432. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/database/vector-search-rag.md +0 -0
  433. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/dotnet/async.md +0 -0
  434. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/dotnet/core.md +0 -0
  435. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/dotnet/di.md +0 -0
  436. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/dotnet/program-cs-checklist.md +0 -0
  437. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/integrations/asaas/asaas-api.md +0 -0
  438. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/integrations/clerk/clerk-auth.md +0 -0
  439. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/integrations/hangfire/hangfire-jobs.md +0 -0
  440. /package/{stacks/nextjs-supabase/.morph → framework}/standards/backend/integrations/resend/resend-email.md +0 -0
  441. /package/{stacks/nextjs-supabase/.morph → framework}/standards/context/analytics.md +0 -0
  442. /package/{stacks/nextjs-supabase/.morph → framework}/standards/context/bundles.md +0 -0
  443. /package/{stacks/nextjs-supabase/.morph → framework}/standards/context/priming.md +0 -0
  444. /package/{stacks/nextjs-supabase/.morph → framework}/standards/core/architecture.md +0 -0
  445. /package/{stacks/nextjs-supabase/.morph → framework}/standards/core/coding.md +0 -0
  446. /package/{stacks/nextjs-supabase/.morph → framework}/standards/core/git-branching-strategy.md +0 -0
  447. /package/{stacks/nextjs-supabase/.morph → framework}/standards/core/git.md +0 -0
  448. /package/{stacks/nextjs-supabase/.morph → framework}/standards/core/testing.md +0 -0
  449. /package/{stacks/nextjs-supabase/.morph → framework}/standards/data/nosql/blob-storage.md +0 -0
  450. /package/{stacks/nextjs-supabase/.morph → framework}/standards/data/nosql/cache/redis.md +0 -0
  451. /package/{stacks/nextjs-supabase/.morph → framework}/standards/data/nosql/cosmos-db.md +0 -0
  452. /package/{stacks/nextjs-supabase/.morph → framework}/standards/data/vector-search/azure-ai-search.md +0 -0
  453. /package/{stacks/nextjs-supabase/.morph → framework}/standards/data/vector-search/rag-chunking.md +0 -0
  454. /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/design-checklist.md +0 -0
  455. /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/fluent-ui-setup.md +0 -0
  456. /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/fluent-ui.md +0 -0
  457. /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/html-conversion.md +0 -0
  458. /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/lifecycle.md +0 -0
  459. /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/pitfalls.md +0 -0
  460. /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/blazor/state.md +0 -0
  461. /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/design-system/animations.md +0 -0
  462. /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/design-system/naming.md +0 -0
  463. /package/{stacks/nextjs-supabase/.morph → framework}/standards/frontend/nextjs/nextjs-patterns.md +0 -0
  464. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/azure.md +0 -0
  465. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -0
  466. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -0
  467. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/devops/local-development.md +0 -0
  468. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/services/functions.md +0 -0
  469. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/services/service-bus.md +0 -0
  470. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/azure/services/storage.md +0 -0
  471. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/docker/easypanel-deploy.md +0 -0
  472. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/supabase/mcp-setup.md +0 -0
  473. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/supabase/supabase-auth.md +0 -0
  474. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/supabase/supabase-pgvector.md +0 -0
  475. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/supabase/supabase-rls.md +0 -0
  476. /package/{stacks/nextjs-supabase/.morph → framework}/standards/infrastructure/supabase/supabase-storage.md +0 -0
  477. /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/api/graphql.md +0 -0
  478. /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/api/grpc.md +0 -0
  479. /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/api/rest-design.md +0 -0
  480. /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/event-driven/cqrs.md +0 -0
  481. /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/event-driven/event-sourcing.md +0 -0
  482. /package/{stacks/nextjs-supabase/.morph → framework}/standards/integration/event-driven/service-bus.md +0 -0
  483. /package/{stacks/nextjs-supabase/.morph → framework}/standards/observability/logging.md +0 -0
  484. /package/{stacks/nextjs-supabase/.morph → framework}/standards/observability/metrics.md +0 -0
  485. /package/{stacks/nextjs-supabase/.morph → framework}/standards/observability/monitoring.md +0 -0
  486. /package/{stacks/nextjs-supabase/.morph → framework}/standards/observability/tracing.md +0 -0
  487. /package/{stacks/nextjs-supabase/.morph → framework}/standards/workflows/parallel-execution.md +0 -0
  488. /package/{stacks/nextjs-supabase/.morph → framework}/standards/workflows/thread-management.md +0 -0
@@ -0,0 +1,76 @@
1
+ # Workflow: FULL MORPH (Alta Complexidade)
2
+
3
+ > **Layer:** 1 | **Load:** on-keyword | **Keywords:** sistema, autenticação, integração, pattern, cqrs, subsistema
4
+
5
+ ## Critérios
6
+
7
+ - > 10 arquivos, > 500 linhas, múltiplos componentes novos
8
+ - Infraestrutura Azure (Bicep), decisões arquiteturais estratégicas
9
+
10
+ ## Fases (TODAS obrigatórias)
11
+
12
+ ### FASE 0.5: CONTEXT (automática)
13
+ 1. Detectar framework MORPH (`@polymorphism-tech/morph-spec`)
14
+ 2. Detectar/criar estrutura `.morph/project/`
15
+ 3. Análise automática: stack (glob patterns), arquitetura (pastas), configs, UI library
16
+ 4. Analisar histórico: decisions.md passados, preferências do usuário
17
+ 5. Gerar/atualizar `.morph/project/standards/inferred.md`
18
+ 6. Ativar agentes baseado em stack + keywords
19
+
20
+ ### FASE 0: PROPOSAL
21
+ 1. `npx morph-spec detect "{user-request}"`
22
+ 2. Analisar solicitação, identificar stack, estimar complexidade
23
+ 3. Gerar proposal.md, registrar agentes no state.json
24
+ - **⛔ PAUSA:** 3 itens (1 ação + 1 pergunta + 1 sugestão)
25
+
26
+ ### FASE 1: SETUP
27
+ 1. Ler `.morph/config.json`
28
+ 2. Confirmar stack, ativar agentes, criar pasta outputs
29
+ 3. Carregar padrões (framework/standards/ > project/standards/)
30
+
31
+ ### FASE 1.5: UI/UX (condicional - se keywords UI detectadas)
32
+ 1. **Perguntar ao usuário:** layout, referências visuais, fluxo, imagens
33
+ 2. Analisar referências fornecidas
34
+ 3. Gerar deliverables AGNÓSTICOS de biblioteca (ui-mockups, ui-components, ui-flows)
35
+ 4. Validar acessibilidade (WCAG 2.1) e responsividade
36
+ - **⛔ PAUSA:** Aprovar / Ajustar wireframes / Adicionar fluxos
37
+
38
+ ### FASE 2: DESIGN
39
+ 1. Gerar spec.md com requisitos completos
40
+ 2. **DECISION POINTS** (cada um requer aprovação):
41
+ - Biblioteca UI (Fluent UI vs MudBlazor)
42
+ - Padrões Arquiteturais (CQRS vs simples, Repository vs EF direto)
43
+ - Estrutura de Dados (entidades, relacionamentos)
44
+ - Infraestrutura Azure (recursos, SKUs, custos)
45
+ - Bibliotecas/SDKs (NuGet packages)
46
+ 3. Gerar contracts.cs, documentar decisões em decisions.md
47
+ - **⛔ PAUSA:** Aprovar / Ajustar escopo / Modificar contracts
48
+
49
+ ### FASE 3: CLARIFY
50
+ 1. Identificar ambiguidades, fazer perguntas, documentar em spec.md, validar edge cases
51
+
52
+ ### FASE 4: TASKS
53
+ 1. Quebrar spec em tasks T001-TXXX, definir ordem, checkpoints, dependências
54
+ - **⛔ PAUSA:** Aprovar / Repriorizar / Adicionar-remover tasks
55
+
56
+ ### FASE 5: IMPLEMENT
57
+ 1. Implementar task por task
58
+ 2. `npx morph-spec task done {feature} {task-id}` após cada task
59
+ 3. Framework gerencia checkpoints automaticamente (a cada 3 tasks)
60
+ 4. Gerar recap.md ao final
61
+
62
+ ### FASE 6: SYNC (condicional - se complexidade média/alta)
63
+ 1. Revisar decisions.md, categorizar (coding, architecture, azure, integrations, ui-ux)
64
+ 2. Promover para `.morph/project/standards/{category}.md`
65
+ 3. Gerar commit dedicado de sync
66
+ - **⛔ PAUSA:** Aprovar promoção de decisões para standards
67
+
68
+ ## Outputs Completos
69
+ proposal.md, ui-design-system.md, ui-mockups.md, ui-components.md, ui-flows.md, spec.md, contracts.cs, tasks.json, decisions.md, recap.md
70
+
71
+ ## Exemplos
72
+ - "Sistema de relatórios com jobs agendados Hangfire"
73
+ - "Autenticação completa com Clerk (login, signup, OAuth)"
74
+ - "Dashboard com gráficos, tabelas e filtros complexos"
75
+ - "RAG pipeline com Azure AI Search e embeddings"
76
+ - "Infraestrutura Azure completa com Bicep"
@@ -0,0 +1,44 @@
1
+ # Workflow: STANDARD (Média Complexidade)
2
+
3
+ > **Layer:** 1 | **Load:** on-keyword | **Keywords:** paginação, filtro, refatorar, performance, exportar
4
+
5
+ ## Critérios
6
+
7
+ - 3-10 arquivos, 50-500 linhas, 1-2 componentes simples
8
+ - Sem infraestrutura complexa, decisões táticas (não estratégicas)
9
+
10
+ ## Fases
11
+
12
+ ### 1. FASE 0: PROPOSAL (simplificada)
13
+ - Análise inicial em 1 parágrafo
14
+ - Detecta agentes relevantes
15
+ - **PAUSA:** Aprovar?
16
+
17
+ ### 2. FASE 2: DESIGN (apenas spec.md)
18
+ - Spec técnico conciso (1-2 páginas)
19
+ - Sem contracts.cs se trivial
20
+ - Decisões táticas em decisions.md
21
+ - **PAUSA:** Aprovar?
22
+
23
+ ### 3. FASE 4: TASKS (se > 5 tasks)
24
+ - Breakdown em tasks
25
+ - **PAUSA:** Aprovar?
26
+
27
+ ### 4. FASE 5: IMPLEMENT
28
+ - Implementa task por task
29
+ - Gera recap.md ao final
30
+
31
+ ## Outputs
32
+ proposal.md, spec.md, recap.md (mínimo necessário)
33
+
34
+ ## Fases Puladas
35
+ - FASE 1 (SETUP) - contexto já carregado
36
+ - FASE 1.5 (UI/UX) - se não tiver front-end significativo
37
+ - FASE 3 (CLARIFY) - se spec for claro
38
+ - FASE 6 (SYNC) - decisões não são estratégicas
39
+
40
+ ## Exemplos
41
+ - "Adicionar paginação na tabela de usuários"
42
+ - "Criar filtro por data no relatório"
43
+ - "Refatorar serviço de email para async"
44
+ - "Adicionar botão de exportar CSV"
@@ -0,0 +1,39 @@
1
+ # Workflow: UI REFRESH (Redesign Visual)
2
+
3
+ > **Layer:** 1 | **Load:** on-keyword | **Keywords:** redesign, redesenhar, bonito, visual, estetica, modernizar
4
+
5
+ ## Critérios
6
+
7
+ - Páginas existentes com código funcional
8
+ - Apenas mudanças visuais (CSS, HTML, layout)
9
+ - Sem mudanças em lógica de negócio, sem infraestrutura
10
+
11
+ ## Fases
12
+
13
+ ### 1. ANÁLISE VISUAL (FASE 0+1 combinadas)
14
+ - Listar páginas a redesenhar
15
+ - Identificar componentes compartilhados e design system existente
16
+ - Se protótipo existir: ler e extrair padrões
17
+ - **PAUSA:** Escolher direção estética
18
+
19
+ ### 2. DESIGN SYSTEM (FASE 1.5 simplificada)
20
+ - Definir variáveis CSS novas
21
+ - Listar componentes CSS a criar (checklist)
22
+ - Gerar/atualizar design-system.css
23
+ - **PAUSA:** Aprovar componentes
24
+
25
+ ### 3. IMPLEMENT (por página)
26
+ - Atualizar CSS primeiro, depois cada página .razor
27
+ - Build incremental a cada 2-3 páginas
28
+ - Validar com `morph-spec validate-css`
29
+
30
+ ## Outputs
31
+ design-refresh-checklist.md, CSS atualizado, páginas .razor, recap.md
32
+
33
+ ## Fases Puladas
34
+ Setup completo, Contracts, Tasks detalhadas, Infra, Clarify, Sync
35
+
36
+ ## Exemplos
37
+ - "Redesenhar as páginas do checkout para ficar mais bonito"
38
+ - "Modernizar visual do dashboard"
39
+ - "Aplicar novo design system nas telas existentes"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polymorphism-tech/morph-spec",
3
- "version": "4.3.3",
3
+ "version": "4.3.5",
4
4
  "description": "MORPH-SPEC: AI-First development framework with validation pipeline and multi-stack support",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -26,8 +26,9 @@
26
26
  "files": [
27
27
  "bin/",
28
28
  "src/",
29
+ ".morph/",
30
+ "framework/",
29
31
  "scripts/",
30
- "stacks/",
31
32
  "docs/",
32
33
  "README.md",
33
34
  "LICENSE",
@@ -38,7 +39,6 @@
38
39
  "node": ">=18.0.0"
39
40
  },
40
41
  "scripts": {
41
- "postinstall": "node scripts/postinstall.js",
42
42
  "start": "node bin/morph-spec.js",
43
43
  "test": "node --test --test-concurrency=1",
44
44
  "test:coverage": "c8 --reporter=text --reporter=html --reporter=lcov node --test --test-concurrency=1",
@@ -11,22 +11,26 @@ import ora from 'ora';
11
11
  import chalk from 'chalk';
12
12
  import { logger } from '../../utils/logger.js';
13
13
  import { ensureDir, writeFile } from '../../utils/file-copier.js';
14
- import { resolveTemplatesDir } from '../../lib/stacks/stack-resolver.js';
15
14
 
16
15
  // ============================================================================
17
16
  // Helper Functions
18
17
  // ============================================================================
19
18
 
19
+ function resolveTemplatesDir(basePath) {
20
+ return path.join(basePath, '.morph', 'templates');
21
+ }
22
+
20
23
  function readTemplate(templateName) {
21
- // Try npm-installed package path first
22
- const pkgTemplatesDir = resolveTemplatesDir(path.join(process.cwd(), 'node_modules/@polymorphism-tech/morph-spec'));
23
- const templatePath = path.join(pkgTemplatesDir, templateName);
24
+ // Try npm-installed package path first (framework templates)
25
+ const pkgFrameworkDir = path.join(process.cwd(), 'node_modules/@polymorphism-tech/morph-spec', 'framework', 'templates');
26
+ const templatePath = path.join(pkgFrameworkDir, templateName);
24
27
 
25
28
  // Fallback to local if in development
26
29
  if (!fs.existsSync(templatePath)) {
27
- const localPath = path.join(resolveTemplatesDir(process.cwd()), templateName);
28
- if (fs.existsSync(localPath)) {
29
- return fs.readFileSync(localPath, 'utf-8');
30
+ // Check project-local override first, then framework
31
+ const localMorphPath = path.join(resolveTemplatesDir(process.cwd()), templateName);
32
+ if (fs.existsSync(localMorphPath)) {
33
+ return fs.readFileSync(localMorphPath, 'utf-8');
30
34
  }
31
35
  throw new Error(`Template not found: ${templateName}`);
32
36
  }
@@ -6,14 +6,13 @@ import { logger } from '../../utils/logger.js';
6
6
  import { analyzeRequestComplexity } from '../../lib/analysis/complexity-analyzer.js';
7
7
  import { LearningSystem } from '../../lib/learning/learning-system.js';
8
8
  import { loadStandardsForAgent, getStandardsListForAgent } from '../../lib/standards/standards-context-injector.js';
9
- import { resolveAgentsConfigPath } from '../../lib/stacks/stack-resolver.js';
10
9
 
11
10
  const __dirname = dirname(fileURLToPath(import.meta.url));
12
11
  const frameworkRoot = join(__dirname, '..', '..', '..');
13
12
 
14
13
  function loadAgentsConfig() {
15
14
  try {
16
- const configPath = resolveAgentsConfigPath(frameworkRoot);
15
+ const configPath = join(frameworkRoot, '.morph/config/agents.json');
17
16
  const content = readFileSync(configPath, 'utf8');
18
17
  return JSON.parse(content);
19
18
  } catch (err) {
@@ -21,6 +21,8 @@ import { saveProjectMorphVersion, getInstalledCLIVersion } from '../../utils/ver
21
21
  import { installClaudeHooks } from '../../utils/hooks-installer.js';
22
22
  import { AutoContextOrchestrator } from '../../core/orchestrator.js';
23
23
  import { detectClaudeCode } from '../../llm/environment-detector.js';
24
+ import inquirer from 'inquirer';
25
+ import { detectProject } from '../../lib/detectors/index.js';
24
26
 
25
27
  export async function initCommand(options) {
26
28
  const targetPath = options.path || process.cwd();
@@ -77,7 +79,6 @@ export async function initCommand(options) {
77
79
  frameworkVersion: getInstalledCLIVersion(),
78
80
  project: {
79
81
  name: dirName,
80
- stack: 'unknown',
81
82
  architecture: 'unknown'
82
83
  }
83
84
  };
@@ -107,23 +108,16 @@ Run \`morph-spec detect\` to analyze your project.
107
108
  `;
108
109
  await writeFile(contextReadme, readmeContent);
109
110
 
110
- // 5. Copy templates from content
111
- spinner.text = 'Copying templates...';
111
+ // 5. Copy framework templates (project-local overrides start from framework defaults)
112
112
  const contentDir = getContentDir();
113
- const templatesSrc = join(contentDir, '.morph', 'templates');
113
+ const frameworkTemplatesSrc = join(import.meta.dirname, '..', '..', '..', 'framework', 'templates');
114
114
  const templatesDest = join(morphPath, 'templates');
115
115
  let templatesCopied = false;
116
- if (await pathExists(templatesSrc)) {
117
- await copyDirectory(templatesSrc, templatesDest);
116
+ if (await pathExists(frameworkTemplatesSrc)) {
117
+ await copyDirectory(frameworkTemplatesSrc, templatesDest);
118
118
  templatesCopied = true;
119
- }
120
-
121
- // 6. Copy standards from content (stack-specific)
122
- spinner.text = 'Copying stack-specific standards...';
123
- const standardsSrc = join(contentDir, '.morph', 'standards');
124
- const standardsDest = join(morphPath, 'standards');
125
- if (await pathExists(standardsSrc)) {
126
- await copyDirectory(standardsSrc, standardsDest);
119
+ } else {
120
+ await ensureDir(templatesDest);
127
121
  }
128
122
 
129
123
  // 6b. Copy framework standards hierarchy (universal standards)
@@ -136,9 +130,9 @@ Run \`morph-spec detect\` to analyze your project.
136
130
  logger.dim(' ✓ Copied framework standards: core/, backend/, frontend/, infrastructure/');
137
131
  }
138
132
 
139
- // 7. Copy agents.json (sourced from framework root .morph/config/ — canonical single source of truth)
133
+ // 7. Copy agents.json (sourced from framework/ — canonical single source of truth)
140
134
  spinner.text = 'Copying agents configuration...';
141
- const agentsSrc = join(import.meta.dirname, '..', '..', '..', '.morph', 'config', 'agents.json');
135
+ const agentsSrc = join(import.meta.dirname, '..', '..', '..', 'framework', 'agents.json');
142
136
  const agentsDest = join(configDir, 'agents.json');
143
137
  if (await pathExists(agentsSrc)) {
144
138
  await copyFile(agentsSrc, agentsDest);
@@ -158,28 +152,29 @@ Run \`morph-spec detect\` to analyze your project.
158
152
  }
159
153
 
160
154
  // 9. Copy .claude commands and create symlinks for skills
161
- // Source: framework root .claude/ (canonical for all stacks)
155
+ // Source: framework/ (canonical for all stacks)
162
156
  spinner.text = 'Setting up Claude Code integration...';
163
- const claudeSrc = join(import.meta.dirname, '..', '..', '..', '.claude');
157
+ const frameworkDir = join(import.meta.dirname, '..', '..', '..', 'framework');
164
158
  const claudeDest = join(targetPath, '.claude');
165
159
 
166
160
  let symlinkCount = 0;
167
161
  let copyCount = 0;
168
162
  let commandsCopied = false;
169
163
 
170
- if (await pathExists(claudeSrc)) {
171
- // Copy commands directory (slash commands)
172
- const commandsSrc = join(claudeSrc, 'commands');
173
- const commandsDest = join(claudeDest, 'commands');
174
- if (await pathExists(commandsSrc)) {
175
- await copyDirectory(commandsSrc, commandsDest);
176
- commandsCopied = true;
177
- } else {
178
- logger.warn(' ⚠ .claude/commands/ source missing — commands not installed');
179
- }
164
+ // Copy commands directory (slash commands): framework/commands/ → .claude/commands/
165
+ const commandsSrc = join(frameworkDir, 'commands');
166
+ const commandsDest = join(claudeDest, 'commands');
167
+ if (await pathExists(commandsSrc)) {
168
+ await copyDirectory(commandsSrc, commandsDest);
169
+ commandsCopied = true;
170
+ } else {
171
+ logger.warn(' ⚠ framework/commands/ source missing — commands not installed');
172
+ }
180
173
 
181
- // Create directory links for skill categories (or copy if linking fails)
182
- const skillsSrc = join(claudeSrc, 'skills');
174
+ // Create directory links for skill categories (or copy if linking fails)
175
+ // Source: framework/skills/ .claude/skills/
176
+ {
177
+ const skillsSrc = join(frameworkDir, 'skills');
183
178
  const skillsDest = join(claudeDest, 'skills');
184
179
 
185
180
  if (await pathExists(skillsSrc)) {
@@ -261,7 +256,7 @@ Run \`morph-spec detect\` to analyze your project.
261
256
  logger.dim(` ✓ .morph/config/ (config.json, agents.json, azure-pricing.json)`);
262
257
  logger.dim(` ✓ .morph/standards/ (coding.md, architecture.md, azure.md, ...)`);
263
258
  if (templatesCopied) {
264
- logger.dim(` ✓ .morph/templates/ (Bicep, integrations, saas, ...)`);
259
+ logger.dim(` ✓ .morph/templates/ (project-local overrides for framework templates)`);
265
260
  }
266
261
  logger.dim(` ✓ .morph/project/ (context, standards, outputs)`);
267
262
  if (commandsCopied) {
@@ -279,7 +274,49 @@ Run \`morph-spec detect\` to analyze your project.
279
274
 
280
275
  logger.blank();
281
276
 
282
- // 12. Auto-detect project context (if Claude Code is available and not --skip-detection)
277
+ // 12. Interactive stack/standards detection for existing projects
278
+ const hasProjectFiles = await pathExists(join(targetPath, 'package.json'))
279
+ || await pathExists(join(targetPath, 'src'))
280
+ || (await fs.readdir(targetPath)).some(f => f.endsWith('.csproj'));
281
+
282
+ if (hasProjectFiles) {
283
+ logger.blank();
284
+ logger.header('Existing Project Detected');
285
+
286
+ try {
287
+ const quickResults = await detectProject(targetPath, { conversation: false, generateStandards: false });
288
+ const structure = quickResults.structure;
289
+
290
+ if (structure?.stack && structure.stack !== 'unknown') {
291
+ logger.info(`Stack detected: ${structure.stack}`);
292
+ if (structure?.architecture) logger.dim(`Architecture: ${structure.architecture}`);
293
+ if (structure?.uiLibrary) logger.dim(`UI Library: ${structure.uiLibrary}`);
294
+ }
295
+
296
+ const { standardsChoice } = await inquirer.prompt([{
297
+ type: 'list',
298
+ name: 'standardsChoice',
299
+ message: 'How should morph-spec handle your project standards?',
300
+ choices: [
301
+ { name: 'Keep morph-spec defaults (recommended)', value: 'morph-spec' },
302
+ { name: 'Detect project-specific standards', value: 'detect' }
303
+ ]
304
+ }]);
305
+
306
+ if (standardsChoice === 'detect') {
307
+ spinner.start('Generating project-specific standards...');
308
+ const fullResults = await detectProject(targetPath, { conversation: false });
309
+ const inferredPath = join(morphPath, 'project', 'standards', 'inferred.md');
310
+ await writeFile(inferredPath, fullResults.inferred.markdown);
311
+ spinner.succeed('Generated .morph/project/standards/inferred.md');
312
+ logger.dim('Review and edit .morph/project/standards/inferred.md as needed.');
313
+ }
314
+ } catch (error) {
315
+ logger.warn(`Stack detection failed: ${error.message}`);
316
+ }
317
+ }
318
+
319
+ // 13. LLM-based auto-detect project context (if Claude Code is available and not --skip-detection)
283
320
  if (!options.skipDetection && detectClaudeCode()) {
284
321
  logger.blank();
285
322
  logger.header('Auto-Detecting Project Context');
@@ -26,6 +26,79 @@ import { installClaudeHooks } from '../../utils/hooks-installer.js';
26
26
  import { AutoContextOrchestrator } from '../../core/orchestrator.js';
27
27
  import { detectClaudeCode } from '../../llm/environment-detector.js';
28
28
 
29
+ /**
30
+ * Backup user's config.json before cleaning
31
+ * @param {string} morphPath - Path to .morph directory
32
+ * @returns {Promise<object|null>} Backup of config.json or null
33
+ */
34
+ async function backupUserConfig(morphPath) {
35
+ try {
36
+ const configPath = join(morphPath, 'config', 'config.json');
37
+ if (await pathExists(configPath)) {
38
+ const config = await readJson(configPath);
39
+ return config;
40
+ }
41
+ } catch (error) {
42
+ // If backup fails, return null and continue
43
+ }
44
+ return null;
45
+ }
46
+
47
+ /**
48
+ * Clean framework directories but preserve .morph/project/
49
+ * @param {string} morphPath - Path to .morph directory
50
+ * @param {string} targetPath - Project root path
51
+ */
52
+ async function cleanFrameworkDirs(morphPath, targetPath) {
53
+ const dirsToClean = [
54
+ join(morphPath, 'templates'),
55
+ join(morphPath, 'standards'),
56
+ join(morphPath, 'config'),
57
+ join(targetPath, '.claude')
58
+ ];
59
+
60
+ for (const dir of dirsToClean) {
61
+ try {
62
+ if (await pathExists(dir)) {
63
+ await fs.remove(dir);
64
+ }
65
+ } catch (error) {
66
+ // Continue even if cleanup fails for one directory
67
+ }
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Restore user's config.json after reinstallation
73
+ * @param {string} morphPath - Path to .morph directory
74
+ * @param {string} targetPath - Project root path
75
+ * @param {object|null} configBackup - Backup of config.json
76
+ * @param {string} currentVersion - Current CLI version
77
+ */
78
+ async function restoreUserConfig(morphPath, targetPath, configBackup, currentVersion) {
79
+ const configDir = join(morphPath, 'config');
80
+ await ensureDir(configDir);
81
+ const configPath = join(configDir, 'config.json');
82
+
83
+ if (configBackup) {
84
+ // Preserve user data but update framework version
85
+ configBackup.frameworkVersion = currentVersion;
86
+ await writeJson(configPath, configBackup);
87
+ } else {
88
+ // Create basic config if none existed
89
+ const dirName = targetPath.split(/[\\/]/).pop();
90
+ const defaultConfig = {
91
+ framework: 'global',
92
+ frameworkVersion: currentVersion,
93
+ project: {
94
+ name: dirName,
95
+ architecture: 'unknown'
96
+ }
97
+ };
98
+ await writeJson(configPath, defaultConfig);
99
+ }
100
+ }
101
+
29
102
  export async function updateCommand(options) {
30
103
  const targetPath = process.cwd();
31
104
  const contentDir = getContentDir();
@@ -34,10 +107,17 @@ export async function updateCommand(options) {
34
107
  logger.header('MORPH-SPEC Update');
35
108
 
36
109
  // Check if MORPH is initialized
110
+ let needsInitialization = false;
37
111
  if (!(await pathExists(morphPath))) {
38
- logger.error('MORPH not initialized in this directory.');
39
- logger.dim('Run "morph-spec init" first.');
40
- process.exit(1);
112
+ logger.warn('MORPH not fully initialized. Creating basic structure...');
113
+ needsInitialization = true;
114
+
115
+ // Create basic .morph structure
116
+ await ensureDir(join(morphPath, 'project', 'context'));
117
+ await ensureDir(join(morphPath, 'project', 'standards'));
118
+ await ensureDir(join(morphPath, 'project', 'outputs'));
119
+ await ensureDir(join(morphPath, 'config'));
120
+ logger.dim(' ✓ Created .morph directory structure');
41
121
  }
42
122
 
43
123
  // Check CLI version
@@ -93,13 +173,25 @@ export async function updateCommand(options) {
93
173
  const updateSpinner = ora('Updating MORPH-SPEC...').start();
94
174
 
95
175
  try {
176
+ // Backup user config before cleaning
177
+ updateSpinner.text = 'Backing up user configuration...';
178
+ const configBackup = await backupUserConfig(morphPath);
179
+ if (configBackup) {
180
+ logger.dim(' ✓ User config backed up');
181
+ }
182
+
183
+ // Clean framework directories (preserve .morph/project/)
184
+ updateSpinner.text = 'Cleaning old framework files...';
185
+ await cleanFrameworkDirs(morphPath, targetPath);
186
+ logger.dim(' ✓ Old framework files removed');
187
+
96
188
  const updateTemplates = !options.standards || options.templates;
97
189
  const updateStandards = !options.templates || options.standards;
98
190
 
99
191
  // Update templates
100
192
  if (updateTemplates) {
101
193
  updateSpinner.text = 'Updating templates...';
102
- const templatesSrc = join(contentDir, '.morph', 'templates');
194
+ const templatesSrc = join(contentDir, 'framework', 'templates');
103
195
  const templatesDest = join(morphPath, 'templates');
104
196
  await copyDirectory(templatesSrc, templatesDest);
105
197
  }
@@ -107,7 +199,7 @@ export async function updateCommand(options) {
107
199
  // Update standards
108
200
  if (updateStandards) {
109
201
  updateSpinner.text = 'Updating standards...';
110
- const standardsSrc = join(contentDir, '.morph', 'standards');
202
+ const standardsSrc = join(contentDir, 'framework', 'standards');
111
203
  const standardsDest = join(morphPath, 'standards');
112
204
  await copyDirectory(standardsSrc, standardsDest);
113
205
  }
@@ -173,20 +265,15 @@ export async function updateCommand(options) {
173
265
  const claudeMdDest = join(targetPath, 'CLAUDE.md');
174
266
  await copyDirectory(claudeMdSrc, claudeMdDest);
175
267
 
268
+ // Restore user config after framework reinstallation
269
+ updateSpinner.text = 'Restoring user configuration...';
270
+ await restoreUserConfig(morphPath, targetPath, configBackup, cliCheck.current);
271
+ logger.dim(' ✓ User config restored with updated framework version');
272
+
176
273
  // Update .morphversion
177
274
  updateSpinner.text = 'Saving version info...';
178
275
  await saveProjectMorphVersion(targetPath, cliCheck.current);
179
276
 
180
- // Update config.json frameworkVersion (BUG #9 fix)
181
- const configPath = join(morphPath, 'config', 'config.json');
182
- if (await pathExists(configPath)) {
183
- try {
184
- const config = await readJson(configPath);
185
- config.frameworkVersion = cliCheck.current;
186
- await writeJson(configPath, config);
187
- } catch { /* preserve existing config if read/write fails */ }
188
- }
189
-
190
277
  updateSpinner.succeed('MORPH-SPEC updated successfully!');
191
278
  logger.blank();
192
279
 
@@ -25,14 +25,6 @@ export async function templateCustomizeCommand(templateId, options) {
25
25
  process.exit(1);
26
26
  }
27
27
 
28
- // 2. Check if template is framework (universal)
29
- if (template.location !== 'framework') {
30
- logger.warn(`Template "${templateId}" is already stack-specific`);
31
- logger.dim(` Located at: stacks/${template.stacks?.[0]}/.morph/templates/${template.path}`);
32
- logger.dim('\n You can edit it directly or copy to another stack.');
33
- process.exit(0);
34
- }
35
-
36
28
  // 3. Resolve source path (framework template)
37
29
  const projectPath = options.projectPath || process.cwd();
38
30
  const sourcePath = resolveTemplatePathById(templateId, projectPath);
@@ -42,15 +34,9 @@ export async function templateCustomizeCommand(templateId, options) {
42
34
  process.exit(1);
43
35
  }
44
36
 
45
- // 4. Determine destination (stack-specific or project-local)
46
- const stackId = options.stack || 'blazor-azure';
47
- const destDir = options.local
48
- ? join(projectPath, '.morph/templates', dirname(template.path))
49
- : join(projectPath, 'stacks', stackId, '.morph/templates', dirname(template.path));
50
-
51
- const destPath = options.local
52
- ? join(projectPath, '.morph/templates', template.path)
53
- : join(projectPath, 'stacks', stackId, '.morph/templates', template.path);
37
+ // 4. Destination is always project-local .morph/templates/
38
+ const destDir = join(projectPath, '.morph/templates', dirname(template.path));
39
+ const destPath = join(projectPath, '.morph/templates', template.path);
54
40
 
55
41
  // 5. Check if already exists
56
42
  if (existsSync(destPath) && !options.force) {
@@ -8,7 +8,6 @@ import {
8
8
  getAllTemplates,
9
9
  getTemplatesByCategory,
10
10
  getTemplatesByPhase,
11
- getTemplatesByStack,
12
11
  getRequiredTemplates,
13
12
  getRegistryStats
14
13
  } from '../../core/templates/template-registry.js';
@@ -55,11 +54,8 @@ export async function templateListCommand(options) {
55
54
  } else if (options.phase) {
56
55
  templates = getTemplatesByPhase(options.phase);
57
56
  logger.dim(`Phase: ${options.phase}`);
58
- } else if (options.stack) {
59
- templates = getTemplatesByStack(options.stack);
60
- logger.dim(`Stack: ${options.stack}`);
61
57
  } else if (options.required) {
62
- templates = getRequiredTemplates(options.stack);
58
+ templates = getRequiredTemplates();
63
59
  logger.dim('Required templates only');
64
60
  } else {
65
61
  templates = getAllTemplates();
@@ -86,14 +82,6 @@ export async function templateListCommand(options) {
86
82
  });
87
83
  }
88
84
 
89
- if (stackTemplates.length > 0) {
90
- logger.info(chalk.bold.yellow(`\n📦 Stack-Specific Templates (${stackTemplates.length})`));
91
- stackTemplates.forEach(t => {
92
- const formatted = formatTemplate(t);
93
- const stacks = t.stacks ? chalk.dim(`(${t.stacks.join(', ')})`) : '';
94
- console.log(` ${formatted.id.padEnd(30)} ${formatted.name.padEnd(40)} ${stacks} ${formatted.badges}`);
95
- });
96
- }
97
85
  } else {
98
86
  // Flat list
99
87
  templates.forEach(t => {
@@ -109,8 +97,6 @@ export async function templateListCommand(options) {
109
97
  logger.info(chalk.bold('\n📊 Statistics'));
110
98
  console.log(` Total Templates: ${chalk.green(stats.total)}`);
111
99
  console.log(` Framework: ${chalk.cyan(stats.framework)}`);
112
- console.log(` Blazor-Azure: ${chalk.yellow(stats.blazorAzure)}`);
113
- console.log(` Next.js-Supabase: ${chalk.yellow(stats.nextjsSupabase)}`);
114
100
  console.log(` Required: ${chalk.green(stats.required)}`);
115
101
  console.log(` Optional: ${chalk.dim(stats.optional)}`);
116
102
  }
@@ -107,12 +107,11 @@ export async function templateRenderCommand(templateId, outputPath, variablesJso
107
107
 
108
108
  // 2. Resolve template path
109
109
  const projectPath = options.projectPath || process.cwd();
110
- const stackId = options.stack || 'blazor-azure';
111
- const templatePath = resolveTemplatePathById(templateId, projectPath, stackId);
110
+ const templatePath = resolveTemplatePathById(templateId, projectPath);
112
111
 
113
112
  if (!templatePath) {
114
113
  logger.error(`Template file not found for ${templateId}`);
115
- logger.dim(' Searched in: framework/templates/ and stack templates');
114
+ logger.dim(' Searched in: .morph/templates/ and framework/templates/');
116
115
  process.exit(1);
117
116
  }
118
117