@polymorphism-tech/morph-spec 4.7.2 → 4.8.4

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 (342) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +379 -414
  3. package/bin/morph-spec.js +57 -394
  4. package/bin/validate.js +2 -26
  5. package/claude-plugin.json +2 -2
  6. package/docs/CHEATSHEET.md +203 -221
  7. package/docs/QUICKSTART.md +2 -8
  8. package/framework/CLAUDE.md +1 -1
  9. package/framework/commands/morph-proposal.md +3 -3
  10. package/framework/hooks/README.md +2 -5
  11. package/framework/hooks/claude-code/pre-tool-use/protect-readonly-files.js +4 -55
  12. package/framework/hooks/claude-code/session-start/inject-morph-context.js +20 -5
  13. package/framework/hooks/claude-code/statusline.py +6 -1
  14. package/framework/hooks/dev/check-sync-health.js +117 -0
  15. package/framework/hooks/dev/guard-version-numbers.js +57 -0
  16. package/framework/hooks/dev/sync-standards-registry.js +60 -0
  17. package/framework/hooks/dev/sync-template-registry.js +60 -0
  18. package/framework/hooks/dev/validate-skill-format.js +70 -0
  19. package/framework/hooks/dev/validate-standard-format.js +73 -0
  20. package/framework/hooks/shared/payload-utils.js +39 -0
  21. package/framework/hooks/shared/state-reader.js +25 -1
  22. package/framework/rules/morph-workflow.md +1 -1
  23. package/framework/skills/level-0-meta/morph-init/SKILL.md +216 -0
  24. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +4 -4
  25. package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +4 -4
  26. package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +1 -1
  27. package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +192 -191
  28. package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +181 -180
  29. package/framework/skills/level-1-workflows/phase-design/SKILL.md +339 -338
  30. package/framework/skills/level-1-workflows/phase-implement/SKILL.md +254 -253
  31. package/framework/skills/level-1-workflows/phase-setup/SKILL.md +168 -170
  32. package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +284 -283
  33. package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +246 -245
  34. package/framework/templates/examples/design-system-examples.md +1 -1
  35. package/framework/templates/ui/FluentDesignTheme.cs +1 -1
  36. package/framework/templates/ui/MudTheme.cs +1 -1
  37. package/framework/templates/ui/design-system.css +1 -1
  38. package/package.json +7 -5
  39. package/src/commands/agents/index.js +1 -2
  40. package/src/commands/index.js +13 -16
  41. package/src/commands/project/doctor.js +100 -14
  42. package/src/commands/project/index.js +7 -10
  43. package/src/commands/project/init.js +398 -528
  44. package/src/commands/project/install-plugin-cmd.js +28 -0
  45. package/src/commands/project/setup-infra-cmd.js +12 -0
  46. package/src/commands/project/tutorial.js +115 -0
  47. package/src/commands/state/approve.js +213 -221
  48. package/src/commands/state/index.js +0 -1
  49. package/src/commands/state/state.js +337 -365
  50. package/src/commands/templates/index.js +0 -4
  51. package/src/commands/trust/trust.js +1 -93
  52. package/src/commands/utils/index.js +1 -5
  53. package/src/commands/validation/index.js +1 -5
  54. package/src/core/registry/command-registry.js +11 -285
  55. package/src/core/state/state-manager.js +5 -2
  56. package/src/lib/detectors/index.js +81 -87
  57. package/src/lib/detectors/structure-detector.js +275 -273
  58. package/src/lib/generators/recap-generator.js +232 -225
  59. package/src/scripts/global-install.js +34 -0
  60. package/src/scripts/install-plugin.js +126 -0
  61. package/src/scripts/setup-infra.js +203 -0
  62. package/src/utils/agents-installer.js +10 -1
  63. package/src/utils/hooks-installer.js +66 -3
  64. package/.morph/.morphversion +0 -5
  65. package/.morph/analytics/threads-log.jsonl +0 -5
  66. package/.morph/config/config.json +0 -8
  67. package/.morph/framework/agents.json +0 -1815
  68. package/.morph/framework/hooks/README.md +0 -205
  69. package/.morph/framework/hooks/claude-code/notification/approval-reminder.js +0 -54
  70. package/.morph/framework/hooks/claude-code/post-tool-use/dispatch.js +0 -83
  71. package/.morph/framework/hooks/claude-code/post-tool-use/handle-tool-failure.js +0 -42
  72. package/.morph/framework/hooks/claude-code/pre-compact/save-morph-context.js +0 -61
  73. package/.morph/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +0 -71
  74. package/.morph/framework/hooks/claude-code/pre-tool-use/protect-readonly-files.js +0 -58
  75. package/.morph/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +0 -64
  76. package/.morph/framework/hooks/claude-code/session-start/inject-morph-context.js +0 -94
  77. package/.morph/framework/hooks/claude-code/statusline.py +0 -538
  78. package/.morph/framework/hooks/claude-code/statusline.sh +0 -7
  79. package/.morph/framework/hooks/claude-code/stop/validate-completion.js +0 -88
  80. package/.morph/framework/hooks/claude-code/user-prompt/enrich-prompt.js +0 -91
  81. package/.morph/framework/hooks/git/commit-msg/conventional-commits.sh +0 -33
  82. package/.morph/framework/hooks/git/pre-commit/agents.sh +0 -25
  83. package/.morph/framework/hooks/git/pre-commit/orchestrator.sh +0 -64
  84. package/.morph/framework/hooks/git/pre-commit/specs.sh +0 -50
  85. package/.morph/framework/hooks/git/pre-push/run-tests.sh +0 -44
  86. package/.morph/framework/hooks/shared/hook-response.js +0 -45
  87. package/.morph/framework/hooks/shared/phase-utils.js +0 -129
  88. package/.morph/framework/hooks/shared/state-reader.js +0 -138
  89. package/.morph/framework/hooks/shared/stdin-reader.js +0 -26
  90. package/.morph/framework/standards/STANDARDS.json +0 -933
  91. package/.morph/framework/standards/ai-agents/blazor-ui.md +0 -364
  92. package/.morph/framework/standards/ai-agents/production.md +0 -415
  93. package/.morph/framework/standards/ai-agents/setup.md +0 -418
  94. package/.morph/framework/standards/ai-agents/team-orchestration.md +0 -479
  95. package/.morph/framework/standards/ai-agents/workflows.md +0 -354
  96. package/.morph/framework/standards/architecture/ddd/aggregates.md +0 -120
  97. package/.morph/framework/standards/architecture/ddd/bounded-contexts.md +0 -105
  98. package/.morph/framework/standards/architecture/ddd/complexity-levels.md +0 -108
  99. package/.morph/framework/standards/architecture/ddd/entities.md +0 -99
  100. package/.morph/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
  101. package/.morph/framework/standards/architecture/ddd/value-objects.md +0 -124
  102. package/.morph/framework/standards/backend/api/minimal-api.md +0 -494
  103. package/.morph/framework/standards/backend/api/rest.md +0 -492
  104. package/.morph/framework/standards/backend/api/validation.md +0 -88
  105. package/.morph/framework/standards/backend/authentication/passkeys.md +0 -428
  106. package/.morph/framework/standards/backend/database/ef-core.md +0 -199
  107. package/.morph/framework/standards/backend/database/migrations.md +0 -393
  108. package/.morph/framework/standards/backend/database/postgresql/database.md +0 -352
  109. package/.morph/framework/standards/backend/database/repository-patterns.md +0 -528
  110. package/.morph/framework/standards/backend/database/vector-search-rag.md +0 -541
  111. package/.morph/framework/standards/backend/dotnet/async.md +0 -366
  112. package/.morph/framework/standards/backend/dotnet/core.md +0 -117
  113. package/.morph/framework/standards/backend/dotnet/di.md +0 -439
  114. package/.morph/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
  115. package/.morph/framework/standards/backend/integrations/asaas/asaas-api.md +0 -216
  116. package/.morph/framework/standards/backend/integrations/clerk/clerk-auth.md +0 -290
  117. package/.morph/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +0 -350
  118. package/.morph/framework/standards/backend/integrations/resend/resend-email.md +0 -385
  119. package/.morph/framework/standards/context/analytics.md +0 -96
  120. package/.morph/framework/standards/context/bundles.md +0 -110
  121. package/.morph/framework/standards/context/priming.md +0 -78
  122. package/.morph/framework/standards/core/architecture.md +0 -185
  123. package/.morph/framework/standards/core/coding.md +0 -214
  124. package/.morph/framework/standards/core/git-branching-strategy.md +0 -403
  125. package/.morph/framework/standards/core/git.md +0 -185
  126. package/.morph/framework/standards/core/testing.md +0 -295
  127. package/.morph/framework/standards/data/nosql/blob-storage.md +0 -102
  128. package/.morph/framework/standards/data/nosql/cache/redis.md +0 -97
  129. package/.morph/framework/standards/data/nosql/cosmos-db.md +0 -118
  130. package/.morph/framework/standards/data/vector-search/azure-ai-search.md +0 -121
  131. package/.morph/framework/standards/data/vector-search/rag-chunking.md +0 -104
  132. package/.morph/framework/standards/frontend/blazor/design-checklist.md +0 -222
  133. package/.morph/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
  134. package/.morph/framework/standards/frontend/blazor/fluent-ui.md +0 -137
  135. package/.morph/framework/standards/frontend/blazor/html-conversion.md +0 -184
  136. package/.morph/framework/standards/frontend/blazor/lifecycle.md +0 -195
  137. package/.morph/framework/standards/frontend/blazor/pitfalls.md +0 -198
  138. package/.morph/framework/standards/frontend/blazor/state.md +0 -191
  139. package/.morph/framework/standards/frontend/design-system/animations.md +0 -151
  140. package/.morph/framework/standards/frontend/design-system/naming.md +0 -64
  141. package/.morph/framework/standards/frontend/nextjs/app-router.md +0 -123
  142. package/.morph/framework/standards/frontend/nextjs/components.md +0 -132
  143. package/.morph/framework/standards/frontend/nextjs/data-fetching.md +0 -126
  144. package/.morph/framework/standards/frontend/nextjs/forms.md +0 -128
  145. package/.morph/framework/standards/frontend/nextjs/naming-conventions.md +0 -67
  146. package/.morph/framework/standards/frontend/nextjs/nextjs-patterns.md +0 -215
  147. package/.morph/framework/standards/frontend/nextjs/project-structure.md +0 -102
  148. package/.morph/framework/standards/frontend/nextjs/state-management.md +0 -72
  149. package/.morph/framework/standards/frontend/nextjs/testing.md +0 -111
  150. package/.morph/framework/standards/infrastructure/azure/azure.md +0 -624
  151. package/.morph/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
  152. package/.morph/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
  153. package/.morph/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
  154. package/.morph/framework/standards/infrastructure/azure/services/functions.md +0 -486
  155. package/.morph/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
  156. package/.morph/framework/standards/infrastructure/azure/services/storage.md +0 -407
  157. package/.morph/framework/standards/infrastructure/docker/easypanel-deploy.md +0 -196
  158. package/.morph/framework/standards/infrastructure/supabase/mcp-setup.md +0 -252
  159. package/.morph/framework/standards/infrastructure/supabase/supabase-auth.md +0 -176
  160. package/.morph/framework/standards/infrastructure/supabase/supabase-pgvector.md +0 -169
  161. package/.morph/framework/standards/infrastructure/supabase/supabase-rls.md +0 -184
  162. package/.morph/framework/standards/infrastructure/supabase/supabase-storage.md +0 -153
  163. package/.morph/framework/standards/integration/api/graphql.md +0 -91
  164. package/.morph/framework/standards/integration/api/grpc.md +0 -114
  165. package/.morph/framework/standards/integration/api/rest-design.md +0 -95
  166. package/.morph/framework/standards/integration/event-driven/cqrs.md +0 -101
  167. package/.morph/framework/standards/integration/event-driven/event-sourcing.md +0 -124
  168. package/.morph/framework/standards/integration/event-driven/service-bus.md +0 -95
  169. package/.morph/framework/standards/integration/mcp/mcp-tools.md +0 -384
  170. package/.morph/framework/standards/observability/logging.md +0 -131
  171. package/.morph/framework/standards/observability/metrics.md +0 -121
  172. package/.morph/framework/standards/observability/monitoring.md +0 -114
  173. package/.morph/framework/standards/observability/tracing.md +0 -132
  174. package/.morph/framework/standards/workflows/parallel-execution.md +0 -112
  175. package/.morph/framework/standards/workflows/thread-management.md +0 -113
  176. package/.morph/framework/templates/.idea/morph-templates.xml +0 -92
  177. package/.morph/framework/templates/.vscode/morph-templates.code-snippets +0 -186
  178. package/.morph/framework/templates/IDE-SNIPPETS.md +0 -266
  179. package/.morph/framework/templates/README.md +0 -814
  180. package/.morph/framework/templates/REGISTRY.json +0 -1888
  181. package/.morph/framework/templates/code/dotnet/backend/repository.cs +0 -141
  182. package/.morph/framework/templates/code/dotnet/backend/service.cs +0 -139
  183. package/.morph/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
  184. package/.morph/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
  185. package/.morph/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
  186. package/.morph/framework/templates/code/dotnet/contracts/README.md +0 -74
  187. package/.morph/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
  188. package/.morph/framework/templates/code/dotnet/contracts/contracts-level1.cs +0 -69
  189. package/.morph/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
  190. package/.morph/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
  191. package/.morph/framework/templates/code/dotnet/database/migration.cs +0 -83
  192. package/.morph/framework/templates/code/dotnet/frontend/component.razor +0 -239
  193. package/.morph/framework/templates/code/dotnet/jobs/agent.cs +0 -163
  194. package/.morph/framework/templates/code/dotnet/jobs/job.cs +0 -171
  195. package/.morph/framework/templates/code/dotnet/test.cs +0 -239
  196. package/.morph/framework/templates/code/sql/rls-policy.sql +0 -57
  197. package/.morph/framework/templates/code/sql/supabase-migration.sql +0 -100
  198. package/.morph/framework/templates/code/sql/supabase-migration.template.sql +0 -113
  199. package/.morph/framework/templates/code/typescript/contracts.ts +0 -168
  200. package/.morph/framework/templates/context/CONTEXT-FEATURE.md +0 -276
  201. package/.morph/framework/templates/context/CONTEXT.md +0 -181
  202. package/.morph/framework/templates/docs/clarifications.md +0 -253
  203. package/.morph/framework/templates/docs/onboarding.md +0 -123
  204. package/.morph/framework/templates/docs/proposal.md +0 -182
  205. package/.morph/framework/templates/docs/schema-analysis.md +0 -119
  206. package/.morph/framework/templates/docs/spec.md +0 -198
  207. package/.morph/framework/templates/docs/ui-components.md +0 -124
  208. package/.morph/framework/templates/docs/ui-design-system.md +0 -76
  209. package/.morph/framework/templates/docs/ui-flows.md +0 -167
  210. package/.morph/framework/templates/docs/ui-mockups.md +0 -98
  211. package/.morph/framework/templates/docs/user-stories.md +0 -34
  212. package/.morph/framework/templates/examples/design-system-examples.md +0 -357
  213. package/.morph/framework/templates/examples/spec-examples.md +0 -90
  214. package/.morph/framework/templates/feature/decisions.md +0 -187
  215. package/.morph/framework/templates/feature/recap.md +0 -146
  216. package/.morph/framework/templates/feature/tasks.md +0 -199
  217. package/.morph/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs +0 -43
  218. package/.morph/framework/templates/frontend/nextjs/client-component.tsx.hbs +0 -26
  219. package/.morph/framework/templates/frontend/nextjs/env.mjs.hbs +0 -32
  220. package/.morph/framework/templates/frontend/nextjs/feature-form.tsx.hbs +0 -56
  221. package/.morph/framework/templates/frontend/nextjs/page.tsx.hbs +0 -22
  222. package/.morph/framework/templates/frontend/nextjs/tsconfig.json.hbs +0 -26
  223. package/.morph/framework/templates/frontend/nextjs/use-feature.ts.hbs +0 -54
  224. package/.morph/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
  225. package/.morph/framework/templates/infrastructure/azure/README.md +0 -286
  226. package/.morph/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
  227. package/.morph/framework/templates/infrastructure/azure/app-service.bicep +0 -164
  228. package/.morph/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
  229. package/.morph/framework/templates/infrastructure/azure/container-app.bicep +0 -156
  230. package/.morph/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
  231. package/.morph/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
  232. package/.morph/framework/templates/infrastructure/azure/deploy.sh +0 -208
  233. package/.morph/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
  234. package/.morph/framework/templates/infrastructure/azure/main.bicep +0 -189
  235. package/.morph/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
  236. package/.morph/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
  237. package/.morph/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
  238. package/.morph/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
  239. package/.morph/framework/templates/infrastructure/azure/storage.bicep +0 -106
  240. package/.morph/framework/templates/infrastructure/docker/Dockerfile.template +0 -58
  241. package/.morph/framework/templates/infrastructure/docker/docker-compose.template.yml +0 -67
  242. package/.morph/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +0 -38
  243. package/.morph/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +0 -48
  244. package/.morph/framework/templates/infrastructure/docker/easypanel.template.json +0 -54
  245. package/.morph/framework/templates/infrastructure/github/README.md +0 -593
  246. package/.morph/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
  247. package/.morph/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +0 -45
  248. package/.morph/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +0 -27
  249. package/.morph/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
  250. package/.morph/framework/templates/infrastructure/github/workflows/deploy-easypanel.yml.hbs +0 -31
  251. package/.morph/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +0 -59
  252. package/.morph/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +0 -39
  253. package/.morph/framework/templates/integrations/asaas-client.cs +0 -387
  254. package/.morph/framework/templates/integrations/asaas-webhook.cs +0 -351
  255. package/.morph/framework/templates/integrations/azure-identity-config.cs +0 -288
  256. package/.morph/framework/templates/integrations/clerk-config.cs +0 -258
  257. package/.morph/framework/templates/meta-prompts/fusion/fusion-agent.md +0 -76
  258. package/.morph/framework/templates/meta-prompts/fusion/fusion-aggregator.md +0 -100
  259. package/.morph/framework/templates/meta-prompts/hops/hop-retry.md +0 -78
  260. package/.morph/framework/templates/meta-prompts/hops/hop-validation.md +0 -97
  261. package/.morph/framework/templates/meta-prompts/hops/hop-wrapper.md +0 -36
  262. package/.morph/framework/templates/meta-prompts/parallel-workers/parallel-coordinator.md +0 -113
  263. package/.morph/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +0 -80
  264. package/.morph/framework/templates/meta-prompts/squad-leaders/backend-squad.md +0 -90
  265. package/.morph/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +0 -126
  266. package/.morph/framework/templates/meta-prompts/squad-leaders/squad-leader.md +0 -43
  267. package/.morph/framework/templates/meta-prompts/validators/checkpoint-validator.md +0 -107
  268. package/.morph/framework/templates/meta-prompts/validators/pre-commit-validator.md +0 -95
  269. package/.morph/framework/templates/project-structure/dotnet-ddd.md +0 -70
  270. package/.morph/framework/templates/saas/subscription.cs +0 -347
  271. package/.morph/framework/templates/saas/tenant.cs +0 -338
  272. package/.morph/framework/templates/state.template.json +0 -17
  273. package/.morph/framework/templates/ui/FluentDesignTheme.cs +0 -149
  274. package/.morph/framework/templates/ui/MudTheme.cs +0 -281
  275. package/.morph/framework/templates/ui/design-system.css +0 -226
  276. package/.morph/logs/tool-failures.log +0 -17
  277. package/.morph/memory/pre-compact-2026-02-24T17-43-30-049Z.json +0 -16
  278. package/.morph/plans/eager-watching-bunny.md +0 -105
  279. package/.morph/plans/temporal-seeking-nebula.md +0 -45
  280. package/.morph/state.json +0 -48
  281. package/CLAUDE.md +0 -77
  282. package/docs/ARCHITECTURE.md +0 -331
  283. package/docs/COMMAND-FLOWS.md +0 -368
  284. package/docs/claude-alignment-report.md +0 -137
  285. package/docs/examples/order-management/contracts.cs +0 -84
  286. package/docs/examples/order-management/proposal.md +0 -24
  287. package/docs/examples/order-management/spec.md +0 -162
  288. package/docs/plans/2026-02-22-claude-docs-morph-alignment-analysis.md +0 -512
  289. package/docs/plans/2026-02-22-claude-settings.md +0 -515
  290. package/docs/plans/2026-02-22-morph-cc-alignment-impl.md +0 -728
  291. package/docs/plans/2026-02-22-morph-spec-next.md +0 -478
  292. package/docs/plans/2026-02-22-native-alignment-design.md +0 -199
  293. package/docs/plans/2026-02-22-native-alignment-impl.md +0 -925
  294. package/docs/plans/2026-02-22-native-enrichment-design.md +0 -244
  295. package/docs/plans/2026-02-22-native-enrichment.md +0 -735
  296. package/docs/plans/2026-02-23-ddd-architecture-refactor.md +0 -1153
  297. package/docs/plans/2026-02-23-ddd-nextsteps.md +0 -682
  298. package/docs/plans/2026-02-23-infra-architect-refactor.md +0 -437
  299. package/docs/plans/2026-02-23-nextjs-code-review-design.md +0 -156
  300. package/docs/plans/2026-02-23-nextjs-code-review-impl.md +0 -1254
  301. package/docs/plans/2026-02-23-nextjs-standards-design.md +0 -149
  302. package/docs/plans/2026-02-23-nextjs-standards-impl.md +0 -1846
  303. package/scripts/generate-refs.js +0 -336
  304. package/scripts/generate-standards-registry.js +0 -44
  305. package/scripts/scan-nextjs.mjs +0 -169
  306. package/scripts/validate-real.mjs +0 -255
  307. package/src/commands/feature/create-story.js +0 -362
  308. package/src/commands/feature/index.js +0 -6
  309. package/src/commands/feature/shard-spec.js +0 -225
  310. package/src/commands/feature/sprint-status.js +0 -250
  311. package/src/commands/generation/generate-onboarding.js +0 -169
  312. package/src/commands/generation/generate.js +0 -276
  313. package/src/commands/generation/index.js +0 -5
  314. package/src/commands/learning/capture-pattern.js +0 -121
  315. package/src/commands/learning/index.js +0 -5
  316. package/src/commands/learning/search-patterns.js +0 -126
  317. package/src/commands/mcp/mcp.js +0 -102
  318. package/src/commands/project/changes.js +0 -66
  319. package/src/commands/project/cost.js +0 -179
  320. package/src/commands/project/diff.js +0 -278
  321. package/src/commands/project/revert.js +0 -173
  322. package/src/commands/project/standards.js +0 -80
  323. package/src/commands/project/sync.js +0 -167
  324. package/src/commands/project/update-agents.js +0 -23
  325. package/src/commands/state/rollback-phase.js +0 -185
  326. package/src/commands/templates/template-customize.js +0 -87
  327. package/src/commands/templates/template-list.js +0 -114
  328. package/src/commands/templates/template-show.js +0 -129
  329. package/src/commands/templates/template-validate.js +0 -91
  330. package/src/commands/utils/troubleshoot.js +0 -222
  331. package/src/commands/validation/analyze-blazor-concurrency.js +0 -193
  332. package/src/commands/validation/lint-fluent.js +0 -352
  333. package/src/commands/validation/validate-blazor-state.js +0 -210
  334. package/src/commands/validation/validate-blazor.js +0 -156
  335. package/src/commands/validation/validate-css.js +0 -84
  336. package/src/lib/detectors/conversation-analyzer.js +0 -163
  337. package/src/lib/learning/index.js +0 -7
  338. package/src/lib/learning/learning-system.js +0 -520
  339. package/src/lib/troubleshooting/index.js +0 -8
  340. package/src/lib/troubleshooting/troubleshoot-grep.js +0 -198
  341. package/src/lib/troubleshooting/troubleshoot-index.js +0 -144
  342. package/src/llm/environment-detector.js +0 -43
@@ -1,368 +0,0 @@
1
- # morph-spec — Command Flow Diagrams
2
-
3
- > Each diagram shows the sequence of CLI calls and internal function calls for each slash command.
4
-
5
- ---
6
-
7
- ## 1. /morph-proposal
8
-
9
- ```mermaid
10
- flowchart TD
11
- START(["/morph-proposal FEATURE"]) --> A
12
-
13
- A["state get FEATURE"] --> B{"Exists?"}
14
- B -->|yes| C["Identify current phase\nResume from where it stopped"]
15
- B -->|no| D["Start Phase 0 from scratch"]
16
- C --> D
17
-
18
- subgraph P0 ["PHASE 0 — PROPOSAL"]
19
- D --> E["detect-agents INPUT"]
20
- E --> E1["loadAgentsConfig() ← agents.json"]
21
- E1 --> E2["detectAgents() — keyword matching"]
22
- E2 --> E3["analyzeRequestComplexity()"]
23
- E3 --> E4["getStandardsListForAgent()\nloadStandardsForAgent()"]
24
- E4 --> F["Render proposal.md via template"]
25
- F --> G1["state set FEATURE status draft"]
26
- G1 --> G2["state set FEATURE phase proposal"]
27
- G2 --> G3["state mark-output FEATURE proposal"]
28
- G3 --> G4["state add-agent FEATURE agent-id × N"]
29
- G4 --> PAUSE0(["⏸ GATE — approve proposal"])
30
- end
31
-
32
- PAUSE0 -->|approved| H
33
-
34
- subgraph P1 ["PHASE 1 — SETUP (auto, no gate)"]
35
- H["Read .morph/context/"] --> I["Confirm detected stack"]
36
- I --> J["List active agents"]
37
- J --> J2["state set FEATURE phase setup"]
38
- end
39
-
40
- J2 --> UICHECK{"uiux-designer\nin activeAgents?"}
41
-
42
- subgraph P15 ["PHASE 1.5 — UI/UX (conditional)"]
43
- UICHECK -->|yes| L["Generate wireframes + design system\n(.claude/skills/phase-uiux/SKILL.md)"]
44
- L --> PAUSEUI(["⏸ GATE — approve UI/UX"])
45
- end
46
-
47
- UICHECK -->|no| M
48
- PAUSEUI -->|approved| M
49
-
50
- subgraph P2 ["PHASE 2 — DESIGN"]
51
- M["Generate spec.md\n(.claude/skills/phase-design/SKILL.md)"] --> N["Generate contracts.cs"]
52
- N --> O["Generate decisions.md with ADRs"]
53
- O --> P["Estimate costs per resource"]
54
- P --> Q1["state mark-output FEATURE spec"]
55
- Q1 --> Q2["state mark-output FEATURE contracts"]
56
- Q2 --> Q3["state mark-output FEATURE decisions"]
57
- Q3 --> PAUSE2(["⏸ GATE — approve design"])
58
- end
59
-
60
- PAUSE2 -->|approved| R
61
-
62
- subgraph P3 ["PHASE 3 — CLARIFY"]
63
- R["Identify ambiguities in spec\n(.claude/skills/phase-clarify/SKILL.md)"] --> S["Generate 3-7 questions"]
64
- S --> WAIT(["⏳ Waiting for user answers"])
65
- WAIT -->|answered| T["Update spec with clarifications\nand edge cases"]
66
- T --> T2["state set FEATURE phase clarify"]
67
- end
68
-
69
- T2 --> U
70
-
71
- subgraph P4 ["PHASE 4 — TASKS"]
72
- U["Break spec into tasks T001-TXXX\n(.claude/skills/phase-tasks/SKILL.md)"] --> V["Define order and dependencies"]
73
- V --> W["Checkpoints every 3 tasks"]
74
- W --> X1["state mark-output FEATURE tasks"]
75
- X1 --> X2["state set FEATURE tasks.total N"]
76
- X2 --> PAUSE4(["⏸ GATE — approve tasks"])
77
- end
78
-
79
- PAUSE4 -->|approved| END(["✅ Planning complete\nRun /morph-apply FEATURE"])
80
- ```
81
-
82
- ---
83
-
84
- ## 2. /morph-apply
85
-
86
- ```mermaid
87
- flowchart TD
88
- START(["/morph-apply FEATURE"]) --> A
89
-
90
- A["state get FEATURE"] --> B{"All phases\ncomplete?"}
91
- B -->|no| ERR(["❌ ERROR — phase X not complete\nRun /morph-proposal FEATURE"])
92
- B -->|yes| C
93
-
94
- subgraph PREP ["INITIALIZATION"]
95
- C["Read 1-design/spec.md + 3-tasks/tasks.md + 1-design/contracts.cs"] --> D
96
- D["Read framework/standards/\n.morph/context/"] --> E1
97
- E1["state set FEATURE phase implement"] --> E2
98
- E2["state set FEATURE status in_progress"] --> E3
99
- E3["state set FEATURE tasks.total N"]
100
- end
101
-
102
- E3 --> LOOP_START
103
-
104
- subgraph LOOP ["LOOP — For each task in order"]
105
- LOOP_START["Select next task"] --> F
106
- F["task start FEATURE task-id"] --> F1
107
- F1["spawn task-manager.cjs start"] --> G
108
- G["Implement code\nfollowing contracts.cs + standards"] --> H
109
- H["task done FEATURE task-id"] --> H1
110
- H1["spawn task-manager.cjs done"] --> VAL_START
111
-
112
- subgraph VAL ["Automatic validators (hooks)"]
113
- VAL_START["security-expert\nSQL injection, XSS, hardcoded secrets"] --> V2
114
- V2["architecture-expert\nIDbContextFactory, async/await, DI order"] --> V3
115
- V3["packages-validator\nNuGet conflicts, vulnerabilities"] --> V4
116
- V4["blazor-concurrency-validator\nLifecycle, thread safety"]
117
- end
118
-
119
- V4 --> VRESULT{"Validation\npassed?"}
120
- VRESULT -->|no| FIX["Fix violations\nDO NOT use --skip-validation"] --> H
121
- VRESULT -->|yes| CHK{"task_count\nmultiple of 3?"}
122
- CHK -->|yes| CP["state checkpoint FEATURE\nstate list"]
123
- CHK -->|no| NEXT
124
- CP --> NEXT{"Next task\nexists?"}
125
- NEXT -->|yes| LOOP_START
126
- end
127
-
128
- NEXT -->|no| FIN1
129
-
130
- subgraph FIN ["FINALIZATION"]
131
- FIN1["generate recap FEATURE"] --> FIN2
132
- FIN2["extractFeatureMetadata()\nWrites 4-implement/recap.md"] --> FIN3
133
- FIN3["state set FEATURE status done"] --> FIN4
134
- FIN4["state mark-output FEATURE recap"] --> FIN5
135
- FIN5["phase advance FEATURE"]
136
- end
137
-
138
- FIN5 --> END(["✅ Feature complete\nRun /morph-archive FEATURE"])
139
- ```
140
-
141
- ---
142
-
143
- ## 3. /morph-status
144
-
145
- ```mermaid
146
- flowchart TD
147
- START(["/morph-status"]) --> A
148
-
149
- A["state list"] --> B
150
- B["StateManager.getSummary()"] --> C
151
- C["StateManager.listFeatures()"] --> D
152
- D["Read .morph/state.json"] --> DASH
153
-
154
- DASH["Display dashboard\nfeatures | phases | tasks X/Y | agents | costs"] --> EXTRA
155
-
156
- EXTRA{"Specific feature\nrequested?"} -->|yes| G
157
- EXTRA -->|no| CHECK
158
-
159
- G["state get FEATURE"] --> G1["StateManager.getFeature()"] --> CHECK
160
-
161
- subgraph CHECK_BLOCK ["Additional checks"]
162
- CHECK["Check .morph/config/config.json"] --> CHECK2
163
- CHECK2["Check .morph/framework/standards/ present"] --> CHECK3
164
- CHECK3["Check .morph/archive/\ncompleted features"]
165
- end
166
-
167
- CHECK3 --> SUGEST["Suggest next actions\n/morph-proposal | /morph-apply | /morph-archive"]
168
-
169
- SUGEST --> END(["✅ Dashboard displayed"])
170
- ```
171
-
172
- ---
173
-
174
- ## 4. /morph-archive
175
-
176
- ```mermaid
177
- flowchart TD
178
- START(["/morph-archive FEATURE"]) --> A
179
-
180
- A["Read .morph/features/FEATURE/3-tasks/tasks.md"] --> B
181
- B{"All tasks\ncomplete?"} -->|no| ERR(["❌ Feature not ready\nFinish pending tasks first"])
182
- B -->|yes| C
183
-
184
- C(["Confirm with user\nthat archiving is OK"]) --> D
185
-
186
- subgraph RECAP ["RECAP"]
187
- D["Update 4-implement/recap.md"] --> D1
188
- D1["Fill in final metrics\n(tasks, time, actual vs estimated cost)"] --> D2
189
- D2["Document lessons learned"]
190
- end
191
-
192
- D2 --> E{"Does spec define permanent\nsystem behavior?"}
193
-
194
- E -->|yes| F["Extract spec → .morph/specs/DOMAIN/\nBecomes the 'current truth' of the system"]
195
- F --> G
196
- E -->|no| G
197
-
198
- subgraph MOVE ["MOVE"]
199
- G["Move full directory:\n.morph/features/FEATURE/\n→ .morph/archive/FEATURE/"]
200
- end
201
-
202
- G --> H
203
-
204
- subgraph METRICS ["METRICS UPDATE"]
205
- H["Increment completed features counter"] --> I
206
- I["Update total accumulated cost"] --> J
207
- J["Update total time spent"]
208
- end
209
-
210
- J --> END(["✅ Feature archived at\n.morph/archive/FEATURE/"])
211
- ```
212
-
213
- ---
214
-
215
- ## 5. /morph-infra
216
-
217
- ```mermaid
218
- flowchart TD
219
- START(["/morph-infra ACTION"]) --> ROUTE
220
-
221
- ROUTE{"Action?"}
222
-
223
- ROUTE -->|init| INIT_1
224
- ROUTE -->|validate| VAL_1
225
- ROUTE -->|plan| PLAN_1
226
- ROUTE -->|deploy| DEP_1
227
- ROUTE -->|destroy| DES_1
228
-
229
- subgraph INIT ["INIT — Initialize IaC"]
230
- INIT_1["Copy templates from\n.morph/framework/templates/infrastructure/"] --> INIT_2
231
- INIT_2["Create infra/ structure\nmain.bicep\nparameters.dev.json, parameters.prod.json\nmodules/*.bicep"] --> INIT_3
232
- INIT_3["Replace placeholders\nAPP_NAME, SUBSCRIPTION_ID\nRESOURCE_GROUP"] --> INIT_4
233
- INIT_4["Document structure in decisions.md"]
234
- INIT_4 --> INIT_END(["✅ Done — run /morph-infra validate"])
235
- end
236
-
237
- subgraph VALIDATE ["VALIDATE — Validate Templates"]
238
- VAL_1["az bicep build --file infra/main.bicep"] --> VAL_2
239
- VAL_2["Check required parameters"] --> VAL_3{"No errors?"}
240
- VAL_3 -->|yes| VAL_OK(["✅ Templates valid"])
241
- VAL_3 -->|no| VAL_ERR(["❌ Report syntax errors"])
242
- end
243
-
244
- subgraph PLAN ["PLAN — Preview Changes"]
245
- PLAN_1["az account show"] --> PLAN_2{"Authenticated\nto Azure?"}
246
- PLAN_2 -->|no| PLAN_ERR(["❌ Run az login"])
247
- PLAN_2 -->|yes| PLAN_3["az deployment group what-if\n--template-file infra/main.bicep\n--parameters parameters.ENV.json"]
248
- PLAN_3 --> PLAN_4["Display summary:\nCREATE / MODIFY / DELETE\n+ estimated costs"]
249
- PLAN_4 --> PLAN_PAUSE(["⏸ GATE — wait for approval\nbefore running deploy"])
250
- end
251
-
252
- subgraph DEPLOY ["DEPLOY — Execute Deploy"]
253
- DEP_1["Verify plan approval"] --> DEP_2
254
- DEP_2["az group create --name rg-APP-ENV\n--location brazilsouth"] --> DEP_3
255
- DEP_3["az deployment group create\n--template-file infra/main.bicep\n--parameters parameters.ENV.json"] --> DEP_4
256
- DEP_4["Capture outputs:\nContainer App URL\nSQL Connection String\nKey Vault URI"] --> DEP_5
257
- DEP_5["Update documentation\nwith deploy info"]
258
- DEP_5 --> DEP_END(["✅ Deploy complete"])
259
- end
260
-
261
- subgraph DESTROY ["DESTROY — Remove Resources"]
262
- DES_1(["⚠️ WARNING: irreversible action"]) --> DES_2
263
- DES_2["List all resources\nthat will be deleted"] --> DES_3
264
- DES_3(["⏸ GATE — require explicit confirmation\n'yes, delete'"]) --> DES_4
265
- DES_4["az group delete --name rg-APP-ENV\n--yes --no-wait"]
266
- DES_4 --> DES_END(["✅ Resources removed"])
267
- end
268
- ```
269
-
270
- ---
271
-
272
- ## 6. /morph-preflight
273
-
274
- ```mermaid
275
- flowchart TD
276
- START(["/morph-preflight azure"]) --> C1
277
-
278
- subgraph CHECKS ["7 SEQUENTIAL CHECKS"]
279
- C1["Check 1 — Package Conflicts\ndotnet restore --verbosity normal\ngrep NU1605 NU1608"] --> R1{"OK?"}
280
- R1 -->|✅| C2
281
- R1 -->|❌| FIX1["Fix: declare Azure.Identity\nwith explicit version in .csproj"] --> C2
282
-
283
- C2["Check 2 — EF Core Migrations\ndotnet ef migrations has-pending-model-changes\n--project src/Infrastructure --startup-project src/Web"] --> R2{"OK?"}
284
- R2 -->|✅| C3
285
- R2 -->|❌| FIX2["Fix: dotnet ef migrations add NAME"] --> C3
286
-
287
- C3["Check 3 — Dockerfile\ndocker build --check .\nVerify multi-stage, EXPOSE, ENTRYPOINT"] --> R3{"Applicable\nand OK?"}
288
- R3 -->|✅ or N/A| C4
289
- R3 -->|❌| FIX3["Fix: correct Dockerfile"] --> C4
290
-
291
- C4["Check 4 — Blazor .NET 10 Assets\ngrep RequiresAspNetWebAssets *.csproj"] --> R4{"OK?"}
292
- R4 -->|✅ or N/A| C5
293
- R4 -->|❌| FIX4["Fix: add RequiresAspNetWebAssets=true\nto .csproj"] --> C5
294
-
295
- C5["Check 5 — Bicep Syntax\naz bicep build --file infra/main.bicep --stdout"] --> R5{"OK?"}
296
- R5 -->|✅| C6
297
- R5 -->|❌| FIX5["Fix: correct Bicep syntax errors"] --> C6
298
-
299
- C6["Check 6 — Key Vault Config\ngrep KeyVaultUri appsettings*.json\ngrep IsDevelopment Program.cs"] --> R6{"OK?"}
300
- R6 -->|✅| C7
301
- R6 -->|❌| FIX6["Fix: add KeyVaultUri\nDO NOT gate on IsDevelopment"] --> C7
302
-
303
- C7["Check 7 — Connection Strings\ngrep 'Password= Pwd= Secret='\nappsettings*.json excluding Development"] --> R7{"OK?"}
304
- R7 -->|✅| SUM
305
- R7 -->|⚠️| WARN["Warning: move secrets to Key Vault"] --> SUM
306
- end
307
-
308
- SUM["Display summary\nN passed / N failed / N warnings"] --> RESULT
309
-
310
- RESULT{"Any\nfailures?"} -->|yes| BLOCK(["❌ BLOCKED\nDo not deploy until resolved!"])
311
- RESULT -->|no| PASS(["✅ Ready to deploy to Azure"])
312
- ```
313
-
314
- ---
315
-
316
- ## 7. /morph-troubleshoot
317
-
318
- ```mermaid
319
- flowchart TD
320
- START(["/morph-troubleshoot KEYWORDS"]) --> A
321
-
322
- A["troubleshootCommand(keywords, options)"] --> LISTCAT
323
-
324
- LISTCAT{"--list-categories?"} -->|yes| CATS["getCategories()\nList: blazor, efcore, azure, auth, deploy"]
325
- CATS --> END_CATS(["✅ Categories displayed"])
326
-
327
- LISTCAT -->|no| L1_START
328
-
329
- subgraph L1 ["Level 1 — Known Issues Index (Primary)"]
330
- L1_START["searchIndex(searchTerms, options)"] --> L1A
331
- L1A["Search JSON database\nof known issues"] --> L1B{"Filter\n--category?"}
332
- L1B -->|yes| L1C["Filter by category"]
333
- L1B -->|no| L1D["Match all keywords"]
334
- L1C --> L1RESULT
335
- L1D --> L1RESULT["Return matches with score"]
336
- end
337
-
338
- L1RESULT --> CHECK1{"Enough\nresults?"}
339
- CHECK1 -->|yes| FORMAT
340
-
341
- subgraph L2 ["Level 2 — Grep Standards (Automatic fallback)"]
342
- CHECK1 -->|no| L2_START["searchGrep(searchTerms, options)"]
343
- L2_START --> L2A["grep framework/standards/*.md"]
344
- L2A --> L2B["grep .morph/framework/standards/*.md"]
345
- L2B --> L2C["Deduplicate against Level 1 results"]
346
- L2C --> L2D["Merge and limit to 10 results"]
347
- end
348
-
349
- L2D --> CHECK2{"Enough\nresults?"}
350
- CHECK2 -->|yes| FORMAT
351
-
352
- subgraph L3 ["Level 3 — Web Search (If needed)"]
353
- CHECK2 -->|no| L3_START["WebSearch — external sources"]
354
- L3_START --> L3A["site:github.com/dotnet/aspnetcore ERROR\nsite:github.com/dotnet/efcore ERROR"]
355
- L3_START --> L3B["site:stackoverflow.com blazor ERROR\nsite:stackoverflow.com azure ERROR"]
356
- L3_START --> L3C["site:learn.microsoft.com ERROR\nsite:learn.microsoft.com/azure ERROR"]
357
- L3A & L3B & L3C --> L3MERGE["Consolidate relevant links"]
358
- end
359
-
360
- L3MERGE --> FORMAT
361
-
362
- subgraph FMT ["Output Formatting"]
363
- FORMAT["formatResult(result, verbose)\nRoot cause + Solution + Fix code"] --> FSUM
364
- FSUM["formatSummary(stats)\nTotal found per level (L1/L2/L3)"]
365
- end
366
-
367
- FSUM --> END(["✅ Results displayed\nin standard format"])
368
- ```
@@ -1,137 +0,0 @@
1
- # Claude Code Native Alignment Report — Round 2
2
-
3
- > **Date:** 2026-02-22
4
- > **Status:** Implemented
5
- > **Scope:** Memory/rules layer — building on Round 1 (commit 8c806c2)
6
-
7
- ---
8
-
9
- ## Summary
10
-
11
- Round 2 of Claude Code native alignment identifies and adopts two native patterns from the official Claude Code memory documentation that were missed in Round 1:
12
-
13
- 1. **`.claude/rules/*.md`** — Path-scoped, auto-loading instruction files
14
- 2. **`@import` in CLAUDE.md** — Auto-import external files into session context
15
-
16
- ---
17
-
18
- ## Native Patterns Now Adopted
19
-
20
- ### 1. Path-Scoped Rules (`.claude/rules/`)
21
-
22
- **What it is:** Claude Code natively supports modular instruction files placed in `.claude/rules/`. Files without `paths:` frontmatter apply globally; files with `paths:` frontmatter auto-load only when Claude is working with matching files.
23
-
24
- **What we implemented:**
25
-
26
- | File | Scope | Paths |
27
- |------|-------|-------|
28
- | `morph-workflow.md` | Always active | (none — global) |
29
- | `csharp-standards.md` | C# files | `**/*.cs`, `**/*.csproj` |
30
- | `frontend-standards.md` | Blazor/TS/CSS | `**/*.razor`, `**/*.tsx`, `**/*.ts`, `**/*.css` |
31
- | `testing-standards.md` | Test files | `tests/**`, `**/*.test.*`, `**/*.spec.*`, `**/*Tests.cs` |
32
- | `infrastructure-standards.md` | Infra files | `**/*.bicep`, `**/Dockerfile`, `**/pipelines/**` |
33
-
34
- **Source material:** Distilled from `framework/standards/` (core/coding.md, backend/dotnet/core.md, core/testing.md, frontend/blazor/pitfalls.md, infrastructure/azure/azure.md, frontend/nextjs/nextjs-patterns.md).
35
-
36
- **Why it matters:** Previously, standards were buried in `.morph/framework/standards/` — Claude had to navigate deep paths to access them, and they were never automatically loaded. Path-scoped rules ensure Claude sees the right standards *automatically* when working on the right files, without any manual intervention.
37
-
38
- **Installation:** `morph-spec init` copies `framework/rules/` → `.claude/rules/` (step 9a in `initCommand()`).
39
-
40
- ### 2. `@import` in CLAUDE.md
41
-
42
- **What it is:** Claude Code supports `@path/to/file` syntax inside CLAUDE.md to auto-import external files into the session context at startup.
43
-
44
- **What we implemented:** Added `@.morph/context/README.md` to `framework/CLAUDE.md`:
45
-
46
- ```markdown
47
- ## PROJECT CONTEXT
48
-
49
- @.morph/context/README.md
50
- ```
51
-
52
- **Why it matters:** Previously, `framework/CLAUDE.md` referenced `.morph/context/README.md` only in text (e.g., "run `morph-spec detect` to see your stack"). The file was never actually loaded. Now, every Claude Code session in a user project automatically starts with the project context (stack, architecture, technologies) pre-loaded — no manual reading required.
53
-
54
- ---
55
-
56
- ## What Remains Over-Engineered
57
-
58
- ### Partially Redundant: Session Context Injection vs Auto Memory
59
-
60
- The `UserPromptSubmit` hook injects context into every session. This overlaps with:
61
- - Auto memory (`~/.claude/projects/.../memory/`) — Claude Code's native persistent context layer
62
- - The new `@import` in CLAUDE.md — project context auto-loaded at startup
63
-
64
- **Verdict:** Keep the hook for now. It handles dynamic state (current feature, active phase) that auto memory doesn't cover. Revisit in Round 3 — the hook may be reducible to only inject feature-specific state, not static project context.
65
-
66
- ### Level 3–4 Skills Rarely Used
67
-
68
- `framework/skills/level-3-technologies/` and `level-4-patterns/` contain 30+ files that are rarely invoked. They're installed to `.claude/skills/` via symlinks/copies during init.
69
-
70
- **Verdict:** Keep for now — they're passive (loaded on-demand via `/skill-name`). Consider documenting them as "on-demand only" in the `morph-workflow.md` rule. Long-term, Level 3–4 could be removed from auto-install and accessed directly from `framework/skills/` when needed.
71
-
72
- ### 37 Agents in `agents.json`
73
-
74
- The agent system has 37 agents across 4 tiers. For most projects, only 5–8 agents are active at any given time.
75
-
76
- **Verdict:** Acceptable complexity. Agents drive spawn prompts and workflow orchestration — they can't be replaced by documentation. The activation-by-keyword system (Tier 3) already limits unnecessary activation.
77
-
78
- ---
79
-
80
- ## What Was Intentionally Kept (Justified)
81
-
82
- | Feature | Justification |
83
- |---------|--------------|
84
- | `state.json` + state machine | Claude Code has no native feature-tracking equivalent; phase enforcement requires runtime state |
85
- | `protect-spec-files.js` hook | Dynamically checks approval gate state before allowing spec file edits — cannot be replaced by static `permissions.deny` |
86
- | All 12 Claude Code hooks | Context injection (dynamic), output tracking (direct JSON I/O), tool failure logging all provide value beyond native capabilities |
87
- | `.morph/framework/standards/` | Deep reference library for agents; the rules layer distills it but doesn't replace it |
88
- | `permissions.deny` for state.json + framework | Already replaced `protect-readonly-files.js` hook in Round 1 — this is the right native approach |
89
- | Skills hierarchy (Level 0–2) | Level 0 (meta), Level 1 (phase workflows), Level 2 (domains) are actively invoked via `/skill-name` syntax |
90
-
91
- ---
92
-
93
- ## Roadmap: Round 3 Candidates
94
-
95
- In priority order:
96
-
97
- 1. **Session context hook reduction** — Trim `UserPromptSubmit` hook to inject only feature-specific dynamic state, relying on `@import` + rules for static context. Reduces hook complexity.
98
-
99
- 2. **Level 3–4 skill audit** — Measure actual usage frequency. If consistently low, move these to a "pull-on-demand" model (reference from framework, not installed to `.claude/skills/`).
100
-
101
- 3. **`morph-workflow.md` rule enhancement** — Add current workflow/phase detection so the always-active rule provides live feature status context (currently requires `morph-spec status` command).
102
-
103
- 4. **User-level rules layer (`~/.claude/rules/`)** — A potential personal workflow preferences file for Polymorphism Tech developers (e.g., preferred stack defaults, commit message style). Not currently used.
104
-
105
- 5. **Rules auto-update on `morph-spec update`** — Currently rules are only installed during `init`. The `update` command should sync `.claude/rules/` when framework rules change.
106
-
107
- ---
108
-
109
- ## Files Changed in Round 2
110
-
111
- | Action | File |
112
- |--------|------|
113
- | Created | `framework/rules/morph-workflow.md` |
114
- | Created | `framework/rules/csharp-standards.md` |
115
- | Created | `framework/rules/frontend-standards.md` |
116
- | Created | `framework/rules/testing-standards.md` |
117
- | Created | `framework/rules/infrastructure-standards.md` |
118
- | Updated | `framework/CLAUDE.md` — added `@.morph/context/README.md` import |
119
- | Updated | `src/commands/project/init.js` — added step 9a: rules copy to `.claude/rules/` |
120
- | Created | `docs/claude-alignment-report.md` (this file) |
121
-
122
- ---
123
-
124
- ## Round 1 Reference (commit 8c806c2)
125
-
126
- Round 1 implemented 7 tasks:
127
- 1. Fixed circular hook bug in `track-output-creation.js`
128
- 2. Native `permissions.deny` replaced `protect-readonly-files.js`
129
- 3. Skills installed to `.claude/skills/` (flat, with symlinks on non-Windows)
130
- 4. Global statusline installed to `~/.claude/`
131
- 5. `PostToolUseFailure` hook: `handle-tool-failure.js`
132
- 6. Standards registry: `framework/standards/STANDARDS.json` (74 entries)
133
- 7. `framework/phases.json` — canonical phase definitions
134
-
135
- ---
136
-
137
- *MORPH-SPEC by Polymorphism Tech*
@@ -1,84 +0,0 @@
1
- // ============================================================
2
- // CONTRACTS: Order Management — Level 2 (Business Logic)
3
- // Example of correctly filled contracts-level2.cs template
4
- // Feature: order-management | Date: 2026-02-23
5
- // ============================================================
6
-
7
- using System;
8
- using System.Collections.Generic;
9
- using System.Threading;
10
- using System.Threading.Tasks;
11
- using MediatR;
12
-
13
- // ===== AGGREGATE ROOT =====
14
- // Implementado em: Domain/Orders/Aggregates/Order.cs
15
- //
16
- // Invariants (do spec.md > Aggregate Blueprint):
17
- // - Confirm() só é válido se Status == Draft E Items.Any()
18
- // - AddItem() lança DomainException se Status != Draft
19
- // - Cancel() é válido de Draft ou Confirmed → Cancelled (terminal)
20
-
21
- namespace ExampleApp.Domain.Orders.Events;
22
-
23
- // ===== DOMAIN EVENTS =====
24
-
25
- public record OrderCreatedEvent(Guid OrderId, Guid UserId) : DomainEvent;
26
- public record OrderConfirmedEvent(Guid OrderId, Guid UserId, decimal Total) : DomainEvent; // Total as decimal for event serialization; Money value object lives inside the Aggregate
27
- public record OrderCancelledEvent(Guid OrderId, string Reason) : DomainEvent;
28
-
29
- namespace ExampleApp.Application.Orders.Commands;
30
-
31
- // ===== COMMANDS (CQRS) =====
32
-
33
- public record CreateOrderCommand(Guid UserId, List<CreateOrderItemRequest> Items)
34
- : IRequest<CreateOrderResult>;
35
- public record CreateOrderResult(Guid OrderId);
36
-
37
- public record ConfirmOrderCommand(Guid OrderId) : IRequest;
38
- public record CancelOrderCommand(Guid OrderId, string Reason) : IRequest;
39
-
40
- namespace ExampleApp.Application.Orders.Queries;
41
-
42
- // ===== QUERIES =====
43
-
44
- public record GetOrderQuery(Guid OrderId) : IRequest<OrderDto?>;
45
-
46
- // PagedResult<T> — defined in Shared/Common/PagedResult.cs (shared framework type)
47
- public record ListOrdersByUserQuery(Guid UserId, int Page = 1, int PageSize = 20)
48
- : IRequest<PagedResult<OrderDto>>;
49
-
50
- namespace ExampleApp.Application.Orders;
51
-
52
- // ===== DTOs (read models — nunca expõe o Aggregate diretamente) =====
53
-
54
- public record OrderDto(
55
- Guid Id,
56
- Guid UserId,
57
- string Status,
58
- decimal Total,
59
- List<OrderItemDto> Items,
60
- DateTime CreatedAt,
61
- DateTime? UpdatedAt
62
- );
63
-
64
- public record OrderItemDto(Guid ProductId, int Quantity, decimal UnitPrice, decimal Subtotal);
65
-
66
- public record CreateOrderItemRequest(Guid ProductId, int Quantity, decimal UnitPrice);
67
-
68
- namespace ExampleApp.Domain.Orders;
69
-
70
- // ===== REPOSITORY (um por Aggregate Root) =====
71
-
72
- public interface IOrderRepository
73
- {
74
- Task<Order?> GetAsync(Guid id, CancellationToken ct = default);
75
- Task<List<Order>> GetByUserAsync(Guid userId, CancellationToken ct = default);
76
- Task AddAsync(Order order, CancellationToken ct = default);
77
- Task UpdateAsync(Order order, CancellationToken ct = default);
78
- Task<bool> ExistsAsync(Guid id, CancellationToken ct = default);
79
- }
80
-
81
- // ===== EXCEPTIONS =====
82
-
83
- public class OrderNotFoundException(Guid id) : DomainException($"Order '{id}' not found.");
84
- public class OrderInvalidStateException(string message) : DomainException(message);
@@ -1,24 +0,0 @@
1
- # Proposal: Order Management
2
-
3
- **Feature:** order-management
4
- **Type:** Business Logic (Level 2)
5
- **Stack:** .NET 10 / C# 14, Blazor Server, EF Core, Azure SQL
6
-
7
- ## User Story
8
-
9
- Como usuário autenticado, quero criar e gerenciar pedidos de compra para que eu possa
10
- acompanhar o status dos meus pedidos e receber notificações de mudanças.
11
-
12
- ## Acceptance Criteria
13
-
14
- - [ ] Usuário pode criar um pedido com 1+ itens
15
- - [ ] Pedido começa no status Draft
16
- - [ ] Pedido só pode ser Confirmado se tiver pelo menos 1 item
17
- - [ ] Pedido Confirmado não pode receber mais itens
18
- - [ ] Total do pedido é calculado automaticamente
19
- - [ ] Sistema notifica quando pedido é Confirmado
20
-
21
- ## Out of Scope
22
-
23
- - Pagamento (feature separada)
24
- - Envio/logística