@polymorphism-tech/morph-spec 3.0.1 → 3.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 (316) hide show
  1. package/CLAUDE.md +561 -63
  2. package/LICENSE +72 -72
  3. package/README.md +275 -79
  4. package/bin/detect-agents.js +3 -1
  5. package/bin/morph-spec.js +60 -1
  6. package/bin/render-template.js +61 -14
  7. package/bin/semantic-detect-agents.js +2 -1
  8. package/bin/{task-manager.js → task-manager.cjs} +113 -8
  9. package/bin/validate-agents-skills.js +10 -4
  10. package/bin/validate-agents.js +4 -3
  11. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
  12. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
  13. package/docs/api/scripts/collapse.js +38 -38
  14. package/docs/api/scripts/commonNav.js +28 -28
  15. package/docs/api/scripts/linenumber.js +25 -25
  16. package/docs/api/scripts/nav.js +12 -12
  17. package/docs/api/scripts/polyfill.js +3 -3
  18. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
  19. package/docs/api/scripts/prettify/lang-css.js +2 -2
  20. package/docs/api/scripts/prettify/prettify.js +28 -28
  21. package/docs/api/scripts/search.js +98 -98
  22. package/docs/api/styles/jsdoc.css +776 -776
  23. package/docs/api/styles/prettify.css +80 -80
  24. package/docs/cli-auto-detection.md +219 -0
  25. package/docs/examples.md +328 -328
  26. package/docs/getting-started.md +3 -3
  27. package/docs/llm-interaction-config.md +735 -0
  28. package/docs/templates.md +418 -418
  29. package/docs/troubleshooting.md +269 -0
  30. package/package.json +7 -3
  31. package/scripts/postinstall.js +132 -132
  32. package/scripts/reorganize-skills.cjs +1 -1
  33. package/scripts/validate-agents-structure.cjs +1 -1
  34. package/scripts/validate-skills.cjs +2 -2
  35. package/src/commands/advance-phase.js +93 -2
  36. package/src/commands/analyze-blazor-concurrency.js +193 -193
  37. package/src/commands/approve.js +221 -0
  38. package/src/commands/capture-pattern.js +121 -0
  39. package/src/commands/create-story.js +5 -2
  40. package/src/commands/deploy.js +780 -780
  41. package/src/commands/detect-agents.js +4 -2
  42. package/src/commands/generate.js +276 -149
  43. package/src/commands/init.js +37 -0
  44. package/src/commands/lint-fluent.js +352 -352
  45. package/src/commands/migrate-state.js +158 -0
  46. package/src/commands/rollback-phase.js +185 -185
  47. package/src/commands/search-patterns.js +126 -0
  48. package/src/commands/session-summary.js +291 -291
  49. package/src/commands/shard-spec.js +224 -224
  50. package/src/commands/spawn-team.js +172 -0
  51. package/src/commands/sprint-status.js +250 -250
  52. package/src/commands/task.js +3 -3
  53. package/src/commands/troubleshoot.js +222 -222
  54. package/src/commands/update.js +36 -0
  55. package/src/commands/upgrade.js +346 -0
  56. package/src/commands/validate-blazor-state.js +210 -210
  57. package/src/commands/validate-blazor.js +156 -156
  58. package/src/commands/validate-css.js +84 -84
  59. package/src/commands/validate-phase.js +221 -221
  60. package/src/generator/.gitkeep +0 -0
  61. package/src/generator/config-generator.js +206 -0
  62. package/src/generator/templates/config.json.template +40 -0
  63. package/src/generator/templates/project.md.template +67 -0
  64. package/src/lib/blazor-concurrency-analyzer.js +288 -288
  65. package/src/lib/blazor-state-validator.js +291 -291
  66. package/src/lib/blazor-validator.js +374 -374
  67. package/src/lib/checkpoint-hooks.js +258 -0
  68. package/src/lib/context-generator.js +7 -4
  69. package/src/lib/css-validator.js +352 -352
  70. package/src/lib/design-system-generator.js +298 -298
  71. package/src/lib/hook-executor.js +2 -1
  72. package/src/lib/learning-system.js +520 -520
  73. package/src/lib/metadata-extractor.js +380 -0
  74. package/src/lib/mockup-generator.js +366 -366
  75. package/src/lib/phase-state-machine.js +214 -0
  76. package/src/lib/stack-resolver.js +148 -0
  77. package/src/lib/standards-context-injector.js +4 -3
  78. package/src/lib/state-manager.js +120 -0
  79. package/src/lib/team-orchestrator.js +2 -1
  80. package/src/lib/template-data-sources.js +325 -0
  81. package/src/lib/troubleshoot-grep.js +204 -194
  82. package/src/lib/troubleshoot-index.js +144 -144
  83. package/src/lib/ui-detector.js +350 -350
  84. package/src/lib/validation-runner.js +2 -1
  85. package/src/lib/validators/architecture-validator.js +387 -387
  86. package/src/lib/validators/content-validator.js +351 -0
  87. package/src/lib/validators/package-validator.js +360 -360
  88. package/src/lib/validators/ui-contrast-validator.js +422 -422
  89. package/src/llm/.gitkeep +0 -0
  90. package/src/llm/analyzer.js +215 -0
  91. package/src/llm/environment-detector.js +43 -0
  92. package/src/llm/few-shot-examples.js +216 -0
  93. package/src/llm/project-config-schema.json +188 -0
  94. package/src/llm/prompt-builder.js +96 -0
  95. package/src/llm/schema-validator.js +121 -0
  96. package/src/orchestrator.js +206 -0
  97. package/src/sanitizer/.gitkeep +0 -0
  98. package/src/sanitizer/context-sanitizer.js +221 -0
  99. package/src/sanitizer/patterns.js +163 -0
  100. package/src/scanner/.gitkeep +0 -0
  101. package/src/scanner/project-scanner.js +242 -0
  102. package/src/types/index.js +477 -0
  103. package/src/ui/.gitkeep +0 -0
  104. package/src/ui/diff-display.js +91 -0
  105. package/src/ui/interactive-wizard.js +96 -0
  106. package/src/ui/user-review.js +211 -0
  107. package/src/ui/wizard-questions.js +190 -0
  108. package/src/utils/file-copier.js +3 -1
  109. package/src/utils/logger.js +32 -32
  110. package/src/utils/version-checker.js +175 -175
  111. package/src/writer/.gitkeep +0 -0
  112. package/src/writer/file-writer.js +86 -0
  113. package/{content → stacks/blazor-azure}/.azure/README.md +2 -2
  114. package/{content → stacks/blazor-azure}/.azure/pipelines/pipeline-variables.yml +1 -1
  115. package/{content → stacks/blazor-azure}/.azure/pipelines/prod-pipeline.yml +1 -1
  116. package/{content → stacks/blazor-azure}/.azure/pipelines/staging-pipeline.yml +1 -1
  117. package/{content → stacks/blazor-azure}/.claude/commands/morph-preflight.md +227 -227
  118. package/{content → stacks/blazor-azure}/.claude/commands/morph-troubleshoot.md +122 -122
  119. package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-setup.md +1 -1
  120. package/{content → stacks/blazor-azure}/.morph/docs/workflows/enforcement-pipeline.md +3 -3
  121. package/{content → stacks/blazor-azure}/.morph/hooks/README.md +12 -12
  122. package/{content → stacks/blazor-azure}/.morph/standards/agent-teams-workflow.md +2 -2
  123. package/{content → stacks/blazor-azure}/.morph/standards/migration-guide.md +2 -2
  124. package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy-checklist.md +426 -426
  125. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/backend/dotnet-supabase.md +244 -0
  126. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/frontend/nextjs-supabase.md +335 -0
  127. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/infrastructure/easypanel-deployer.md +189 -0
  128. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +170 -0
  129. package/stacks/nextjs-supabase/.morph/config/agents.json +345 -0
  130. package/stacks/nextjs-supabase/.morph/config/config.template.json +92 -0
  131. package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +169 -0
  132. package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +247 -0
  133. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +697 -0
  134. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +85 -0
  135. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +86 -0
  136. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +498 -0
  137. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +121 -0
  138. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +138 -0
  139. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +162 -0
  140. package/stacks/nextjs-supabase/.morph/project.md +168 -0
  141. package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +191 -0
  142. package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +193 -0
  143. package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +171 -0
  144. package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +164 -0
  145. package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +179 -0
  146. package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +148 -0
  147. package/stacks/nextjs-supabase/.morph/templates/contracts.cs +173 -0
  148. package/stacks/nextjs-supabase/.morph/templates/contracts.ts +168 -0
  149. package/stacks/nextjs-supabase/.morph/templates/decisions.md +115 -0
  150. package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +38 -0
  151. package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +48 -0
  152. package/stacks/nextjs-supabase/.morph/templates/proposal.md +145 -0
  153. package/stacks/nextjs-supabase/.morph/templates/recap.md +134 -0
  154. package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +57 -0
  155. package/stacks/nextjs-supabase/.morph/templates/spec.md +231 -0
  156. package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +100 -0
  157. package/stacks/nextjs-supabase/.morph/templates/tasks.md +257 -0
  158. package/stacks/nextjs-supabase/CLAUDE.md +149 -0
  159. package/stacks/nextjs-supabase/README.md +112 -0
  160. /package/{content → stacks/blazor-azure}/.azure/docs/azure-devops-setup.md +0 -0
  161. /package/{content → stacks/blazor-azure}/.azure/docs/branch-strategy.md +0 -0
  162. /package/{content → stacks/blazor-azure}/.azure/docs/local-development.md +0 -0
  163. /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/build-dotnet.yml +0 -0
  164. /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/deploy-app-service.yml +0 -0
  165. /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/deploy-container-app.yml +0 -0
  166. /package/{content → stacks/blazor-azure}/.azure/pipelines/templates/infra-deploy.yml +0 -0
  167. /package/{content → stacks/blazor-azure}/.claude/commands/morph-apply.md +0 -0
  168. /package/{content → stacks/blazor-azure}/.claude/commands/morph-archive.md +0 -0
  169. /package/{content → stacks/blazor-azure}/.claude/commands/morph-deploy.md +0 -0
  170. /package/{content → stacks/blazor-azure}/.claude/commands/morph-infra.md +0 -0
  171. /package/{content → stacks/blazor-azure}/.claude/commands/morph-proposal.md +0 -0
  172. /package/{content → stacks/blazor-azure}/.claude/commands/morph-status.md +0 -0
  173. /package/{content → stacks/blazor-azure}/.claude/settings.local.json +0 -0
  174. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/README.md +0 -0
  175. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/code-review.md +0 -0
  176. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/morph-checklist.md +0 -0
  177. /package/{content → stacks/blazor-azure}/.claude/skills/level-0-meta/simulation-checklist.md +0 -0
  178. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/README.md +0 -0
  179. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/morph-replicate.md +0 -0
  180. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-clarify.md +0 -0
  181. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-design.md +0 -0
  182. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-tasks.md +0 -0
  183. /package/{content → stacks/blazor-azure}/.claude/skills/level-1-workflows/phase-uiux.md +0 -0
  184. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/README.md +0 -0
  185. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +0 -0
  186. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/po-pm-advisor.md +0 -0
  187. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/prompt-engineer.md +0 -0
  188. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/seo-growth-hacker.md +0 -0
  189. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/architecture/standards-architect.md +0 -0
  190. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/dotnet-senior.md +0 -0
  191. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/ef-modeler.md +0 -0
  192. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +0 -0
  193. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/backend/ms-agent-expert.md +0 -0
  194. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/blazor-builder.md +0 -0
  195. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/nextjs-expert.md +0 -0
  196. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +0 -0
  197. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/azure-architect.md +0 -0
  198. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/azure-deploy-specialist.md +0 -0
  199. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +0 -0
  200. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/container-specialist.md +0 -0
  201. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +0 -0
  202. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/asaas-financial.md +0 -0
  203. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/azure-identity.md +0 -0
  204. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/clerk-auth.md +0 -0
  205. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/integrations/resend-email.md +0 -0
  206. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/quality/code-analyzer.md +0 -0
  207. /package/{content → stacks/blazor-azure}/.claude/skills/level-2-domains/quality/testing-specialist.md +0 -0
  208. /package/{content → stacks/blazor-azure}/.claude/skills/level-3-technologies/README.md +0 -0
  209. /package/{content → stacks/blazor-azure}/.claude/skills/level-4-patterns/README.md +0 -0
  210. /package/{content → stacks/blazor-azure}/.morph/.morphversion +0 -0
  211. /package/{content → stacks/blazor-azure}/.morph/archive/.gitkeep +0 -0
  212. /package/{content → stacks/blazor-azure}/.morph/config/agents.json +0 -0
  213. /package/{content → stacks/blazor-azure}/.morph/config/config.template.json +0 -0
  214. /package/{content → stacks/blazor-azure}/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -0
  215. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/design-impl.md +0 -0
  216. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/fast-track.md +0 -0
  217. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/full-morph.md +0 -0
  218. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/standard.md +0 -0
  219. /package/{content → stacks/blazor-azure}/.morph/docs/workflows/ui-refresh.md +0 -0
  220. /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/README.md +0 -0
  221. /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/contracts.ts +0 -0
  222. /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/spec.md +0 -0
  223. /package/{content → stacks/blazor-azure}/.morph/examples/api-nextjs/tasks.md +0 -0
  224. /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/README.md +0 -0
  225. /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/contracts.cs +0 -0
  226. /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/decisions.md +0 -0
  227. /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/spec.md +0 -0
  228. /package/{content → stacks/blazor-azure}/.morph/examples/micro-saas/tasks.md +0 -0
  229. /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/README.md +0 -0
  230. /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/contracts.cs +0 -0
  231. /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/spec.md +0 -0
  232. /package/{content → stacks/blazor-azure}/.morph/examples/multi-agent/tasks.md +0 -0
  233. /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/decisions.md +0 -0
  234. /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/proposal.md +0 -0
  235. /package/{content → stacks/blazor-azure}/.morph/examples/scheduled-reports/spec.md +0 -0
  236. /package/{content → stacks/blazor-azure}/.morph/examples/state-v3.json +0 -0
  237. /package/{content → stacks/blazor-azure}/.morph/features/.gitkeep +0 -0
  238. /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-agents.sh +0 -0
  239. /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-all.sh +0 -0
  240. /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-specs.sh +0 -0
  241. /package/{content → stacks/blazor-azure}/.morph/hooks/pre-commit-tests.sh +0 -0
  242. /package/{content → stacks/blazor-azure}/.morph/hooks/task-completed.js +0 -0
  243. /package/{content → stacks/blazor-azure}/.morph/hooks/teammate-idle.js +0 -0
  244. /package/{content → stacks/blazor-azure}/.morph/project.md +0 -0
  245. /package/{content → stacks/blazor-azure}/.morph/schemas/agent.schema.json +0 -0
  246. /package/{content → stacks/blazor-azure}/.morph/schemas/tasks.schema.json +0 -0
  247. /package/{content → stacks/blazor-azure}/.morph/specs/.gitkeep +0 -0
  248. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-blazor-ui.md +0 -0
  249. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-production.md +0 -0
  250. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-setup.md +0 -0
  251. /package/{content → stacks/blazor-azure}/.morph/standards/agent-framework-workflows.md +0 -0
  252. /package/{content → stacks/blazor-azure}/.morph/standards/architecture.md +0 -0
  253. /package/{content → stacks/blazor-azure}/.morph/standards/azure.md +0 -0
  254. /package/{content → stacks/blazor-azure}/.morph/standards/coding.md +0 -0
  255. /package/{content → stacks/blazor-azure}/.morph/standards/dotnet10-migration.md +0 -0
  256. /package/{content → stacks/blazor-azure}/.morph/standards/fluent-ui-setup.md +0 -0
  257. /package/{content → stacks/blazor-azure}/.morph/standards/passkeys-auth.md +0 -0
  258. /package/{content → stacks/blazor-azure}/.morph/standards/vector-search-rag.md +0 -0
  259. /package/{content → stacks/blazor-azure}/.morph/state.json +0 -0
  260. /package/{content → stacks/blazor-azure}/.morph/templates/CONTEXT-FEATURE.md +0 -0
  261. /package/{content → stacks/blazor-azure}/.morph/templates/CONTEXT.md +0 -0
  262. /package/{content → stacks/blazor-azure}/.morph/templates/FluentDesignTheme.cs +0 -0
  263. /package/{content → stacks/blazor-azure}/.morph/templates/MudTheme.cs +0 -0
  264. /package/{content → stacks/blazor-azure}/.morph/templates/agent.cs +0 -0
  265. /package/{content → stacks/blazor-azure}/.morph/templates/clarify-questions.md +0 -0
  266. /package/{content → stacks/blazor-azure}/.morph/templates/component.razor +0 -0
  267. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Commands.cs +0 -0
  268. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Entities.cs +0 -0
  269. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/Queries.cs +0 -0
  270. /package/{content → stacks/blazor-azure}/.morph/templates/contracts/README.md +0 -0
  271. /package/{content → stacks/blazor-azure}/.morph/templates/contracts.cs +0 -0
  272. /package/{content → stacks/blazor-azure}/.morph/templates/decisions.md +0 -0
  273. /package/{content → stacks/blazor-azure}/.morph/templates/design-system.css +0 -0
  274. /package/{content → stacks/blazor-azure}/.morph/templates/infra/.dockerignore.example +0 -0
  275. /package/{content → stacks/blazor-azure}/.morph/templates/infra/Dockerfile.example +0 -0
  276. /package/{content → stacks/blazor-azure}/.morph/templates/infra/README.md +0 -0
  277. /package/{content → stacks/blazor-azure}/.morph/templates/infra/app-insights.bicep +0 -0
  278. /package/{content → stacks/blazor-azure}/.morph/templates/infra/app-service.bicep +0 -0
  279. /package/{content → stacks/blazor-azure}/.morph/templates/infra/azure-pipelines-deploy.yml +0 -0
  280. /package/{content → stacks/blazor-azure}/.morph/templates/infra/container-app-env.bicep +0 -0
  281. /package/{content → stacks/blazor-azure}/.morph/templates/infra/container-app.bicep +0 -0
  282. /package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy.ps1 +0 -0
  283. /package/{content → stacks/blazor-azure}/.morph/templates/infra/deploy.sh +0 -0
  284. /package/{content → stacks/blazor-azure}/.morph/templates/infra/key-vault.bicep +0 -0
  285. /package/{content → stacks/blazor-azure}/.morph/templates/infra/main.bicep +0 -0
  286. /package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.dev.json +0 -0
  287. /package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.prod.json +0 -0
  288. /package/{content → stacks/blazor-azure}/.morph/templates/infra/parameters.staging.json +0 -0
  289. /package/{content → stacks/blazor-azure}/.morph/templates/infra/sql-database.bicep +0 -0
  290. /package/{content → stacks/blazor-azure}/.morph/templates/infra/storage.bicep +0 -0
  291. /package/{content → stacks/blazor-azure}/.morph/templates/integrations/asaas-client.cs +0 -0
  292. /package/{content → stacks/blazor-azure}/.morph/templates/integrations/asaas-webhook.cs +0 -0
  293. /package/{content → stacks/blazor-azure}/.morph/templates/integrations/azure-identity-config.cs +0 -0
  294. /package/{content → stacks/blazor-azure}/.morph/templates/integrations/clerk-config.cs +0 -0
  295. /package/{content → stacks/blazor-azure}/.morph/templates/job.cs +0 -0
  296. /package/{content → stacks/blazor-azure}/.morph/templates/migration.cs +0 -0
  297. /package/{content → stacks/blazor-azure}/.morph/templates/proposal.md +0 -0
  298. /package/{content → stacks/blazor-azure}/.morph/templates/recap.md +0 -0
  299. /package/{content → stacks/blazor-azure}/.morph/templates/repository.cs +0 -0
  300. /package/{content → stacks/blazor-azure}/.morph/templates/saas/subscription.cs +0 -0
  301. /package/{content → stacks/blazor-azure}/.morph/templates/saas/tenant.cs +0 -0
  302. /package/{content → stacks/blazor-azure}/.morph/templates/service.cs +0 -0
  303. /package/{content → stacks/blazor-azure}/.morph/templates/simulation.md +0 -0
  304. /package/{content → stacks/blazor-azure}/.morph/templates/spec.md +0 -0
  305. /package/{content → stacks/blazor-azure}/.morph/templates/sprint-status.yaml +0 -0
  306. /package/{content → stacks/blazor-azure}/.morph/templates/state.template.json +0 -0
  307. /package/{content → stacks/blazor-azure}/.morph/templates/story.md +0 -0
  308. /package/{content → stacks/blazor-azure}/.morph/templates/tasks.md +0 -0
  309. /package/{content → stacks/blazor-azure}/.morph/templates/test.cs +0 -0
  310. /package/{content → stacks/blazor-azure}/.morph/templates/ui-components.md +0 -0
  311. /package/{content → stacks/blazor-azure}/.morph/templates/ui-design-system.md +0 -0
  312. /package/{content → stacks/blazor-azure}/.morph/templates/ui-flows.md +0 -0
  313. /package/{content → stacks/blazor-azure}/.morph/templates/ui-mockups.md +0 -0
  314. /package/{content → stacks/blazor-azure}/.morph/test-infra/example.bicep +0 -0
  315. /package/{content → stacks/blazor-azure}/CLAUDE.md +0 -0
  316. /package/{content → stacks/blazor-azure}/README.md +0 -0
@@ -0,0 +1,269 @@
1
+ # Troubleshooting - CLI Auto Context Detection
2
+
3
+ Common issues and solutions for MORPH-SPEC auto-detection.
4
+
5
+ ## Claude Code Issues
6
+
7
+ ### Issue: "Claude Code environment not detected"
8
+
9
+ **Cause**: Auto-detection requires Claude Code CLI to be installed and active.
10
+
11
+ **Solutions**:
12
+
13
+ 1. **Use wizard mode** (recommended for first-time setup):
14
+ ```bash
15
+ morph-spec init --wizard
16
+ ```
17
+
18
+ 2. **Install Claude Code** and retry:
19
+ - Download from https://claude.ai/claude-code
20
+ - Ensure `claude` command is in PATH
21
+ - Retry `morph-spec init`
22
+
23
+ 3. **Skip auto-detection** and configure manually later:
24
+ ```bash
25
+ morph-spec init --skip-detection
26
+ # Later: morph-spec update --wizard
27
+ ```
28
+
29
+ ### Issue: "LLM analysis timeout"
30
+
31
+ **Cause**: Analysis taking longer than 60 seconds (default timeout for interactive mode).
32
+
33
+ **Solutions**:
34
+
35
+ 1. **Clean project before analysis**:
36
+ ```bash
37
+ rm -rf node_modules dist build .next
38
+ morph-spec init
39
+ ```
40
+
41
+ 2. **Use wizard mode** (instant):
42
+ ```bash
43
+ morph-spec init --wizard
44
+ ```
45
+
46
+ 3. **Check Claude Code performance**:
47
+ - Restart Claude Code
48
+ - Check system resources (CPU, memory)
49
+
50
+ ## LLM Analysis Errors
51
+
52
+ ### Issue: "Schema validation failed"
53
+
54
+ **Cause**: LLM returned JSON that doesn't match the expected schema.
55
+
56
+ **Diagnosis**:
57
+ ```bash
58
+ # Enable debug mode to see LLM response
59
+ DEBUG=1 morph-spec init
60
+ ```
61
+
62
+ **Solutions**:
63
+
64
+ 1. **Use wizard mode** to provide manual input:
65
+ ```bash
66
+ morph-spec init --wizard
67
+ ```
68
+
69
+ 2. **Report issue** if recurring:
70
+ - Include project type in issue report
71
+ - Share anonymized `package.json` or `.csproj` structure
72
+
73
+ ### Issue: "LLM response is not valid JSON"
74
+
75
+ **Cause**: LLM returned malformed JSON (rare).
76
+
77
+ **Solutions**:
78
+
79
+ 1. **Retry** - may be a one-time error:
80
+ ```bash
81
+ morph-spec init
82
+ ```
83
+
84
+ 2. **Use wizard mode**:
85
+ ```bash
86
+ morph-spec init --wizard
87
+ ```
88
+
89
+ ## File System Issues
90
+
91
+ ### Issue: "Permission denied" when creating .morph/
92
+
93
+ **Cause**: Insufficient permissions in project directory.
94
+
95
+ **Solutions**:
96
+
97
+ 1. **Run with correct permissions**:
98
+ ```bash
99
+ sudo morph-spec init # Unix/Mac
100
+ # Or run as administrator on Windows
101
+ ```
102
+
103
+ 2. **Check directory ownership**:
104
+ ```bash
105
+ ls -la . # Should show your user as owner
106
+ ```
107
+
108
+ ### Issue: Config files getting overwritten
109
+
110
+ **Cause**: Running `morph-spec update` without reviewing changes.
111
+
112
+ **Protection**: Auto-detection creates backups:
113
+ - `.morph/project.md.YYYY-MM-DDTHH-MM-SS.backup`
114
+ - `.morph/config/config.json.YYYY-MM-DDTHH-MM-SS.backup`
115
+
116
+ **Solutions**:
117
+
118
+ 1. **Review diff before approving**:
119
+ - Auto-detection shows diff when updating
120
+ - Choose "Edit" to modify before saving
121
+
122
+ 2. **Restore from backup** if needed:
123
+ ```bash
124
+ cp .morph/project.md.2026-02-14T10-30-00.backup .morph/project.md
125
+ ```
126
+
127
+ 3. **Skip auto-detection** during update:
128
+ ```bash
129
+ morph-spec update --skip-detection
130
+ ```
131
+
132
+ ## Detection Accuracy Issues
133
+
134
+ ### Issue: Wrong project type detected
135
+
136
+ **Example**: Monorepo detected as `nextjs` instead of `monorepo`.
137
+
138
+ **Solutions**:
139
+
140
+ 1. **Use wizard mode** for accurate manual input:
141
+ ```bash
142
+ morph-spec init --wizard
143
+ ```
144
+
145
+ 2. **Edit config after generation**:
146
+ - Choose "Edit" during review
147
+ - Manually correct `type` field in config.json
148
+
149
+ 3. **Report detection issue**:
150
+ - Helps improve LLM prompt and examples
151
+
152
+ ### Issue: Missing dependencies detected
153
+
154
+ **Cause**: Auto-detection only reads whitelisted files (package.json, .csproj).
155
+
156
+ **Solution**:
157
+
158
+ - This is by design (privacy/security)
159
+ - If critical dependency is missed, manually edit `.morph/project.md`
160
+
161
+ ### Issue: Low confidence score (<70%)
162
+
163
+ **Cause**: Project structure is unclear or non-standard.
164
+
165
+ **Solutions**:
166
+
167
+ 1. **Add README.md or CLAUDE.md** with project description
168
+ 2. **Use wizard mode** for manual configuration
169
+ 3. **Accept low confidence** - configs can be edited later
170
+
171
+ ## Edge Case Handling
172
+
173
+ ### Empty Project (no package.json or .csproj)
174
+
175
+ **Behavior**: Auto-fallback to wizard mode.
176
+
177
+ **Solution**: Answer 7 wizard questions to configure manually.
178
+
179
+ ### Monorepo with Multiple Stacks
180
+
181
+ **Behavior**: Detects all stacks, sets `type: "monorepo"`.
182
+
183
+ **Example Output**:
184
+ ```json
185
+ {
186
+ "type": "monorepo",
187
+ "stack": {
188
+ "frontend": { "tech": "Next.js", "version": "15" },
189
+ "backend": { "tech": ".NET", "version": "10" }
190
+ }
191
+ }
192
+ ```
193
+
194
+ ### Project with No Database
195
+
196
+ **Behavior**: `stack.database` set to `null`.
197
+
198
+ **Warning**: May show "Database technology not detected" in warnings.
199
+
200
+ ### Git Repo Without Remote
201
+
202
+ **Behavior**: `gitRemote` set to `null`.
203
+
204
+ **Not an error** - local repos are valid.
205
+
206
+ ## Privacy & Security Concerns
207
+
208
+ ### Question: What data is sent to LLM?
209
+
210
+ **Answer**: Only sanitized, whitelisted data:
211
+ - package.json (dependencies only, secrets removed)
212
+ - .csproj filenames (not contents)
213
+ - First 500 chars of README.md and CLAUDE.md
214
+ - Directory structure (folder names only)
215
+ - Infrastructure file counts (not contents)
216
+
217
+ **Never sent**:
218
+ - `.env` files
219
+ - Secrets/passwords/API keys
220
+ - File contents (except whitelisted files)
221
+ - node_modules/
222
+ - Source code
223
+
224
+ ### Question: Is data sent to Anthropic servers?
225
+
226
+ **Answer**: No. LLM analysis runs locally in Claude Code. No external API calls.
227
+
228
+ ### Question: What if sensitive data is detected?
229
+
230
+ **Behavior**: Secret redaction removes:
231
+ - API keys (10+ patterns detected)
232
+ - Passwords in connection strings
233
+ - Bearer tokens
234
+ - Private keys (PEM format)
235
+ - GitHub/NPM tokens
236
+
237
+ **Verification**: Review sanitized context in debug mode:
238
+ ```bash
239
+ DEBUG=1 morph-spec init
240
+ ```
241
+
242
+ ## Getting Help
243
+
244
+ ### Enable Debug Mode
245
+
246
+ ```bash
247
+ DEBUG=1 morph-spec init
248
+ ```
249
+
250
+ Shows:
251
+ - Full LLM prompts
252
+ - Raw LLM responses
253
+ - Schema validation errors
254
+ - File read operations
255
+
256
+ ### Report Issues
257
+
258
+ GitHub: https://github.com/polymorphism-tech/morph-spec-framework/issues
259
+
260
+ Include:
261
+ - MORPH-SPEC version (`morph-spec --version`)
262
+ - Claude Code version
263
+ - Project type (Next.js, Blazor, etc.)
264
+ - Error message (with DEBUG=1 output if possible)
265
+ - Anonymized `package.json` or `.csproj` structure
266
+
267
+ ---
268
+
269
+ **Need more help?** Check the [CLI Auto Detection Guide](./cli-auto-detection.md).
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@polymorphism-tech/morph-spec",
3
- "version": "3.0.1",
4
- "description": "MORPH-SPEC v2.0: AI-First development framework with .NET 10, Microsoft Agent Framework, and Fluent UI Blazor",
3
+ "version": "3.2.0",
4
+ "description": "MORPH-SPEC v3: AI-First development framework with validation pipeline, .NET 10, Microsoft Agent Framework, and Fluent UI Blazor",
5
5
  "keywords": [
6
6
  "claude-code",
7
7
  "claude",
@@ -27,7 +27,7 @@
27
27
  "bin/",
28
28
  "src/",
29
29
  "scripts/",
30
- "content/",
30
+ "stacks/",
31
31
  "docs/",
32
32
  "README.md",
33
33
  "LICENSE",
@@ -52,8 +52,12 @@
52
52
  "ajv-formats": "^3.0.1",
53
53
  "chalk": "^5.3.0",
54
54
  "commander": "^12.0.0",
55
+ "diff": "^5.2.0",
55
56
  "fs-extra": "^11.2.0",
56
57
  "glob": "^10.3.0",
58
+ "handlebars": "^4.7.8",
59
+ "inquirer": "^9.2.0",
60
+ "minimatch": "^9.0.5",
57
61
  "ora": "^8.0.0",
58
62
  "yaml": "^2.3.4"
59
63
  },
@@ -1,132 +1,132 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * Postinstall script for @polymorphism-tech/morph-spec
5
- *
6
- * Checks if morph-spec is accessible in PATH and warns users
7
- * if it's not (common issue with nvm-windows).
8
- */
9
-
10
- import { execSync } from 'child_process';
11
- import { platform } from 'os';
12
- import chalk from 'chalk';
13
-
14
- const isWindows = platform() === 'win32';
15
-
16
- /**
17
- * Check if morph-spec command is in PATH
18
- */
19
- function isMorphSpecInPath() {
20
- try {
21
- const command = isWindows ? 'where morph-spec' : 'which morph-spec';
22
- execSync(command, { stdio: 'ignore' });
23
- return true;
24
- } catch {
25
- return false;
26
- }
27
- }
28
-
29
- /**
30
- * Detect if nvm-windows is installed
31
- */
32
- function isUsingNvmWindows() {
33
- if (!isWindows) return false;
34
-
35
- try {
36
- const path = process.env.PATH || '';
37
- return path.includes('nvm4w') || path.includes('\\nvm\\');
38
- } catch {
39
- return false;
40
- }
41
- }
42
-
43
- /**
44
- * Get npm global prefix
45
- */
46
- function getNpmGlobalPrefix() {
47
- try {
48
- const prefix = execSync('npm config get prefix', { encoding: 'utf8' }).trim();
49
- return prefix;
50
- } catch {
51
- return null;
52
- }
53
- }
54
-
55
- /**
56
- * Show installation success message
57
- */
58
- function showSuccessMessage() {
59
- console.log('');
60
- console.log(chalk.green('✓ @polymorphism-tech/morph-spec installed successfully!'));
61
- console.log('');
62
- console.log(chalk.cyan('Quick start:'));
63
- console.log(chalk.white(' morph-spec init'));
64
- console.log(chalk.white(' morph-spec --help'));
65
- console.log('');
66
- }
67
-
68
- /**
69
- * Show PATH warning for nvm-windows users
70
- */
71
- function showPathWarning() {
72
- console.log('');
73
- console.log(chalk.yellow('⚠ Warning: morph-spec command not found in PATH'));
74
- console.log('');
75
-
76
- if (isUsingNvmWindows()) {
77
- console.log(chalk.white('You are using nvm-windows, which does not automatically add'));
78
- console.log(chalk.white('npm global packages to your PATH.'));
79
- console.log('');
80
- console.log(chalk.cyan('Solution 1: Add npm global directory to PATH'));
81
-
82
- const prefix = getNpmGlobalPrefix();
83
- if (prefix) {
84
- console.log(chalk.white(` Add this to your PATH: ${chalk.yellow(prefix)}`));
85
- console.log('');
86
- console.log(chalk.gray(' PowerShell (as Administrator):'));
87
- console.log(chalk.white(` [Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "User") + ";${prefix}", "User")`));
88
- console.log('');
89
- console.log(chalk.gray(' Or manually via System Properties > Environment Variables'));
90
- }
91
-
92
- console.log('');
93
- console.log(chalk.cyan('Solution 2: Use npx (recommended)'));
94
- console.log(chalk.white(' npx @polymorphism-tech/morph-spec init'));
95
- console.log(chalk.white(' npx @polymorphism-tech/morph-spec --help'));
96
- } else {
97
- console.log(chalk.white('The morph-spec command was not found in your PATH.'));
98
- console.log('');
99
- console.log(chalk.cyan('Solution: Use npx instead'));
100
- console.log(chalk.white(' npx @polymorphism-tech/morph-spec init'));
101
- console.log(chalk.white(' npx @polymorphism-tech/morph-spec --help'));
102
- }
103
-
104
- console.log('');
105
- console.log(chalk.gray('For more help, see: https://github.com/lucasPolymorphism/morph-spec-framework#troubleshooting'));
106
- console.log('');
107
- }
108
-
109
- /**
110
- * Main postinstall check
111
- */
112
- function main() {
113
- // Only show messages for global installs
114
- // Skip for local installs (when used as dependency)
115
- const isGlobalInstall = process.env.npm_config_global === 'true';
116
-
117
- if (!isGlobalInstall) {
118
- // Silent exit for local installs
119
- return;
120
- }
121
-
122
- // Give npm a moment to set up the symlinks
123
- setTimeout(() => {
124
- if (isMorphSpecInPath()) {
125
- showSuccessMessage();
126
- } else {
127
- showPathWarning();
128
- }
129
- }, 100);
130
- }
131
-
132
- main();
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Postinstall script for @polymorphism-tech/morph-spec
5
+ *
6
+ * Checks if morph-spec is accessible in PATH and warns users
7
+ * if it's not (common issue with nvm-windows).
8
+ */
9
+
10
+ import { execSync } from 'child_process';
11
+ import { platform } from 'os';
12
+ import chalk from 'chalk';
13
+
14
+ const isWindows = platform() === 'win32';
15
+
16
+ /**
17
+ * Check if morph-spec command is in PATH
18
+ */
19
+ function isMorphSpecInPath() {
20
+ try {
21
+ const command = isWindows ? 'where morph-spec' : 'which morph-spec';
22
+ execSync(command, { stdio: 'ignore' });
23
+ return true;
24
+ } catch {
25
+ return false;
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Detect if nvm-windows is installed
31
+ */
32
+ function isUsingNvmWindows() {
33
+ if (!isWindows) return false;
34
+
35
+ try {
36
+ const path = process.env.PATH || '';
37
+ return path.includes('nvm4w') || path.includes('\\nvm\\');
38
+ } catch {
39
+ return false;
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Get npm global prefix
45
+ */
46
+ function getNpmGlobalPrefix() {
47
+ try {
48
+ const prefix = execSync('npm config get prefix', { encoding: 'utf8' }).trim();
49
+ return prefix;
50
+ } catch {
51
+ return null;
52
+ }
53
+ }
54
+
55
+ /**
56
+ * Show installation success message
57
+ */
58
+ function showSuccessMessage() {
59
+ console.log('');
60
+ console.log(chalk.green('✓ @polymorphism-tech/morph-spec installed successfully!'));
61
+ console.log('');
62
+ console.log(chalk.cyan('Quick start:'));
63
+ console.log(chalk.white(' morph-spec init'));
64
+ console.log(chalk.white(' morph-spec --help'));
65
+ console.log('');
66
+ }
67
+
68
+ /**
69
+ * Show PATH warning for nvm-windows users
70
+ */
71
+ function showPathWarning() {
72
+ console.log('');
73
+ console.log(chalk.yellow('⚠ Warning: morph-spec command not found in PATH'));
74
+ console.log('');
75
+
76
+ if (isUsingNvmWindows()) {
77
+ console.log(chalk.white('You are using nvm-windows, which does not automatically add'));
78
+ console.log(chalk.white('npm global packages to your PATH.'));
79
+ console.log('');
80
+ console.log(chalk.cyan('Solution 1: Add npm global directory to PATH'));
81
+
82
+ const prefix = getNpmGlobalPrefix();
83
+ if (prefix) {
84
+ console.log(chalk.white(` Add this to your PATH: ${chalk.yellow(prefix)}`));
85
+ console.log('');
86
+ console.log(chalk.gray(' PowerShell (as Administrator):'));
87
+ console.log(chalk.white(` [Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "User") + ";${prefix}", "User")`));
88
+ console.log('');
89
+ console.log(chalk.gray(' Or manually via System Properties > Environment Variables'));
90
+ }
91
+
92
+ console.log('');
93
+ console.log(chalk.cyan('Solution 2: Use npx (recommended)'));
94
+ console.log(chalk.white(' npx @polymorphism-tech/morph-spec init'));
95
+ console.log(chalk.white(' npx @polymorphism-tech/morph-spec --help'));
96
+ } else {
97
+ console.log(chalk.white('The morph-spec command was not found in your PATH.'));
98
+ console.log('');
99
+ console.log(chalk.cyan('Solution: Use npx instead'));
100
+ console.log(chalk.white(' npx @polymorphism-tech/morph-spec init'));
101
+ console.log(chalk.white(' npx @polymorphism-tech/morph-spec --help'));
102
+ }
103
+
104
+ console.log('');
105
+ console.log(chalk.gray('For more help, see: https://github.com/lucasPolymorphism/morph-spec-framework#troubleshooting'));
106
+ console.log('');
107
+ }
108
+
109
+ /**
110
+ * Main postinstall check
111
+ */
112
+ function main() {
113
+ // Only show messages for global installs
114
+ // Skip for local installs (when used as dependency)
115
+ const isGlobalInstall = process.env.npm_config_global === 'true';
116
+
117
+ if (!isGlobalInstall) {
118
+ // Silent exit for local installs
119
+ return;
120
+ }
121
+
122
+ // Give npm a moment to set up the symlinks
123
+ setTimeout(() => {
124
+ if (isMorphSpecInPath()) {
125
+ showSuccessMessage();
126
+ } else {
127
+ showPathWarning();
128
+ }
129
+ }, 100);
130
+ }
131
+
132
+ main();
@@ -63,7 +63,7 @@ const skillMapping = {
63
63
  'level-4-patterns': []
64
64
  };
65
65
 
66
- const baseDir = 'content/.claude/skills';
66
+ const baseDir = 'stacks/blazor-azure/.claude/skills';
67
67
 
68
68
  // Create new directory structure
69
69
  console.log('📁 Creating new 5-level directory structure...\n');
@@ -1,6 +1,6 @@
1
1
  const fs = require('fs');
2
2
 
3
- const agents = JSON.parse(fs.readFileSync('content/.morph/config/agents.json', 'utf8'));
3
+ const agents = JSON.parse(fs.readFileSync('stacks/blazor-azure/.morph/config/agents.json', 'utf8'));
4
4
 
5
5
  console.log('✅ Version:', agents.version);
6
6
  console.log('✅ Total agents:', Object.keys(agents.agents || {}).length);
@@ -1,8 +1,8 @@
1
1
  const fs = require('fs');
2
2
  const path = require('path');
3
3
 
4
- const skillsBase = 'content/.claude/skills';
5
- const agentsPath = 'content/.morph/config/agents.json';
4
+ const skillsBase = 'stacks/blazor-azure/.claude/skills';
5
+ const agentsPath = 'stacks/blazor-azure/.morph/config/agents.json';
6
6
 
7
7
  console.log('🧪 Validating MORPH 3.0 Skills Structure\n');
8
8