@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,494 +0,0 @@
1
- # Minimal API Standards - .NET
2
-
3
- > **Scope:** universal
4
- > **Layer:** 0 (always load)
5
- > **Keywords:** minimal api, dotnet, asp.net, endpoint, mapget, mappost
6
- > **Load When:** always
7
-
8
- Patterns and best practices for .NET Minimal API endpoints.
9
-
10
- ---
11
-
12
- ## Route Handler Structure
13
-
14
- ### File Organization
15
-
16
- ```
17
- app/api/
18
- auth/
19
- login/
20
- route.ts # POST /api/auth/login
21
- logout/
22
- route.ts # POST /api/auth/logout
23
- users/
24
- route.ts # GET /api/users, POST /api/users
25
- [id]/
26
- route.ts # GET /api/users/:id, PATCH /api/users/:id
27
- ```
28
-
29
- ### HTTP Methods
30
-
31
- ```typescript
32
- // app/api/users/route.ts
33
- import { NextRequest, NextResponse } from 'next/server'
34
-
35
- // GET /api/users
36
- export async function GET(request: NextRequest) {
37
- const searchParams = request.nextUrl.searchParams
38
- const limit = searchParams.get('limit') || '10'
39
-
40
- // Fetch users
41
- return NextResponse.json({ users: [] })
42
- }
43
-
44
- // POST /api/users
45
- export async function POST(request: NextRequest) {
46
- const body = await request.json()
47
-
48
- // Create user
49
- return NextResponse.json({ user: {} }, { status: 201 })
50
- }
51
- ```
52
-
53
- ### Dynamic Routes
54
-
55
- ```typescript
56
- // app/api/users/[id]/route.ts
57
- interface RouteParams {
58
- params: { id: string }
59
- }
60
-
61
- export async function GET(
62
- request: NextRequest,
63
- { params }: RouteParams
64
- ) {
65
- const userId = params.id
66
-
67
- // Fetch user by ID
68
- return NextResponse.json({ user: {} })
69
- }
70
-
71
- export async function PATCH(
72
- request: NextRequest,
73
- { params }: RouteParams
74
- ) {
75
- const userId = params.id
76
- const updates = await request.json()
77
-
78
- // Update user
79
- return NextResponse.json({ user: {} })
80
- }
81
-
82
- export async function DELETE(
83
- request: NextRequest,
84
- { params }: RouteParams
85
- ) {
86
- const userId = params.id
87
-
88
- // Delete user
89
- return NextResponse.json(null, { status: 204 })
90
- }
91
- ```
92
-
93
- ---
94
-
95
- ## Request Handling
96
-
97
- ### Query Parameters
98
-
99
- ```typescript
100
- export async function GET(request: NextRequest) {
101
- const searchParams = request.nextUrl.searchParams
102
- const page = parseInt(searchParams.get('page') || '1')
103
- const limit = parseInt(searchParams.get('limit') || '10')
104
- const sort = searchParams.get('sort') || 'created_at'
105
-
106
- // Use query params
107
- }
108
- ```
109
-
110
- ### Request Body Validation (Zod)
111
-
112
- ```typescript
113
- import { z } from 'zod'
114
-
115
- const createUserSchema = z.object({
116
- name: z.string().min(1, 'Name is required'),
117
- email: z.string().email('Invalid email'),
118
- age: z.number().int().positive().optional()
119
- })
120
-
121
- export async function POST(request: NextRequest) {
122
- try {
123
- const body = await request.json()
124
- const validatedData = createUserSchema.parse(body)
125
-
126
- // Proceed with validated data
127
- return NextResponse.json({ user: validatedData }, { status: 201 })
128
- } catch (error) {
129
- if (error instanceof z.ZodError) {
130
- return NextResponse.json(
131
- { error: 'Validation failed', details: error.errors },
132
- { status: 400 }
133
- )
134
- }
135
- throw error
136
- }
137
- }
138
- ```
139
-
140
- ### Headers
141
-
142
- ```typescript
143
- export async function GET(request: NextRequest) {
144
- const authHeader = request.headers.get('authorization')
145
- const contentType = request.headers.get('content-type')
146
-
147
- // Set response headers
148
- return NextResponse.json(
149
- { data: {} },
150
- {
151
- headers: {
152
- 'Cache-Control': 'max-age=3600',
153
- 'X-Custom-Header': 'value'
154
- }
155
- }
156
- )
157
- }
158
- ```
159
-
160
- ---
161
-
162
- ## Response Patterns
163
-
164
- ### Success Responses
165
-
166
- ```typescript
167
- // 200 OK - Successful GET
168
- return NextResponse.json({ users: [] })
169
-
170
- // 201 Created - Successful POST
171
- return NextResponse.json({ user: {} }, { status: 201 })
172
-
173
- // 204 No Content - Successful DELETE
174
- return new NextResponse(null, { status: 204 })
175
- ```
176
-
177
- ### Error Responses
178
-
179
- ```typescript
180
- // 400 Bad Request
181
- return NextResponse.json(
182
- { error: 'Invalid input', details: errors },
183
- { status: 400 }
184
- )
185
-
186
- // 401 Unauthorized
187
- return NextResponse.json(
188
- { error: 'Authentication required' },
189
- { status: 401 }
190
- )
191
-
192
- // 403 Forbidden
193
- return NextResponse.json(
194
- { error: 'Insufficient permissions' },
195
- { status: 403 }
196
- )
197
-
198
- // 404 Not Found
199
- return NextResponse.json(
200
- { error: 'Resource not found' },
201
- { status: 404 }
202
- )
203
-
204
- // 500 Internal Server Error
205
- return NextResponse.json(
206
- { error: 'Internal server error' },
207
- { status: 500 }
208
- )
209
- ```
210
-
211
- ---
212
-
213
- ## Authentication & Authorization
214
-
215
- ### Middleware-based Auth
216
-
217
- ```typescript
218
- // middleware.ts
219
- import { createMiddlewareClient } from '@/lib/supabase/middleware'
220
- import { NextResponse } from 'next/server'
221
-
222
- export async function middleware(request: NextRequest) {
223
- const res = NextResponse.next()
224
- const supabase = createMiddlewareClient(request, res)
225
-
226
- const { data: { session } } = await supabase.auth.getSession()
227
-
228
- // Protected API routes
229
- if (request.nextUrl.pathname.startsWith('/api/protected') && !session) {
230
- return NextResponse.json(
231
- { error: 'Unauthorized' },
232
- { status: 401 }
233
- )
234
- }
235
-
236
- return res
237
- }
238
- ```
239
-
240
- ### Route-level Auth
241
-
242
- ```typescript
243
- import { createRouteHandlerClient } from '@/lib/supabase/server'
244
-
245
- export async function GET(request: NextRequest) {
246
- const supabase = createRouteHandlerClient()
247
- const { data: { session } } = await supabase.auth.getSession()
248
-
249
- if (!session) {
250
- return NextResponse.json(
251
- { error: 'Unauthorized' },
252
- { status: 401 }
253
- )
254
- }
255
-
256
- // Proceed with authenticated request
257
- const { data: profile } = await supabase
258
- .from('profiles')
259
- .select('*')
260
- .eq('user_id', session.user.id)
261
- .single()
262
-
263
- return NextResponse.json({ profile })
264
- }
265
- ```
266
-
267
- ### Role-based Authorization
268
-
269
- ```typescript
270
- const ADMIN_ROLES = ['admin', 'super_admin']
271
-
272
- export async function DELETE(
273
- request: NextRequest,
274
- { params }: { params: { id: string } }
275
- ) {
276
- const supabase = createRouteHandlerClient()
277
- const { data: { session } } = await supabase.auth.getSession()
278
-
279
- if (!session) {
280
- return NextResponse.json({ error: 'Unauthorized' }, { status: 401 })
281
- }
282
-
283
- // Check user role
284
- const { data: profile } = await supabase
285
- .from('profiles')
286
- .select('role')
287
- .eq('user_id', session.user.id)
288
- .single()
289
-
290
- if (!profile || !ADMIN_ROLES.includes(profile.role)) {
291
- return NextResponse.json({ error: 'Forbidden' }, { status: 403 })
292
- }
293
-
294
- // Proceed with admin-only operation
295
- }
296
- ```
297
-
298
- ---
299
-
300
- ## Error Handling
301
-
302
- ### Centralized Error Handler
303
-
304
- ```typescript
305
- // lib/api/errorHandler.ts
306
- import { NextResponse } from 'next/server'
307
- import { PostgrestError } from '@supabase/supabase-js'
308
- import { z } from 'zod'
309
-
310
- export function handleApiError(error: unknown) {
311
- console.error('API Error:', error)
312
-
313
- // Zod validation errors
314
- if (error instanceof z.ZodError) {
315
- return NextResponse.json(
316
- { error: 'Validation failed', details: error.errors },
317
- { status: 400 }
318
- )
319
- }
320
-
321
- // Supabase errors
322
- if (isPostgrestError(error)) {
323
- return NextResponse.json(
324
- { error: error.message, code: error.code },
325
- { status: 400 }
326
- )
327
- }
328
-
329
- // Default error
330
- return NextResponse.json(
331
- { error: 'Internal server error' },
332
- { status: 500 }
333
- )
334
- }
335
-
336
- function isPostgrestError(error: unknown): error is PostgrestError {
337
- return (error as PostgrestError).code !== undefined
338
- }
339
- ```
340
-
341
- ### Usage
342
-
343
- ```typescript
344
- import { handleApiError } from '@/lib/api/errorHandler'
345
-
346
- export async function POST(request: NextRequest) {
347
- try {
348
- // API logic
349
- return NextResponse.json({ success: true })
350
- } catch (error) {
351
- return handleApiError(error)
352
- }
353
- }
354
- ```
355
-
356
- ---
357
-
358
- ## Supabase Integration
359
-
360
- ### Database Operations
361
-
362
- ```typescript
363
- import { createRouteHandlerClient } from '@/lib/supabase/server'
364
-
365
- export async function GET(request: NextRequest) {
366
- const supabase = createRouteHandlerClient()
367
-
368
- const { data: users, error } = await supabase
369
- .from('users')
370
- .select('id, name, email')
371
- .order('created_at', { ascending: false })
372
- .limit(10)
373
-
374
- if (error) {
375
- return NextResponse.json({ error: error.message }, { status: 500 })
376
- }
377
-
378
- return NextResponse.json({ users })
379
- }
380
- ```
381
-
382
- ### Row Level Security (RLS)
383
-
384
- ```typescript
385
- // Supabase automatically enforces RLS based on authenticated user
386
- export async function GET(request: NextRequest) {
387
- const supabase = createRouteHandlerClient()
388
-
389
- // Only returns rows the authenticated user can access
390
- const { data: documents } = await supabase
391
- .from('documents')
392
- .select('*')
393
-
394
- return NextResponse.json({ documents })
395
- }
396
- ```
397
-
398
- ---
399
-
400
- ## Caching
401
-
402
- ### Static Data (ISR)
403
-
404
- ```typescript
405
- export async function GET() {
406
- const data = await fetchStaticData()
407
-
408
- return NextResponse.json(
409
- { data },
410
- {
411
- headers: {
412
- 'Cache-Control': 'public, s-maxage=3600, stale-while-revalidate=86400'
413
- }
414
- }
415
- )
416
- }
417
- ```
418
-
419
- ### Opt-out of Caching
420
-
421
- ```typescript
422
- export const dynamic = 'force-dynamic' // Opt out of caching
423
- export const revalidate = 0 // Disable ISR
424
-
425
- export async function GET() {
426
- // Always fetch fresh data
427
- return NextResponse.json({ data: [] })
428
- }
429
- ```
430
-
431
- ---
432
-
433
- ## CORS Configuration
434
-
435
- ```typescript
436
- // app/api/public/route.ts
437
- export async function GET(request: NextRequest) {
438
- const response = NextResponse.json({ data: [] })
439
-
440
- // Allow CORS
441
- response.headers.set('Access-Control-Allow-Origin', '*')
442
- response.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
443
- response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization')
444
-
445
- return response
446
- }
447
-
448
- export async function OPTIONS() {
449
- return new NextResponse(null, {
450
- status: 204,
451
- headers: {
452
- 'Access-Control-Allow-Origin': '*',
453
- 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
454
- 'Access-Control-Allow-Headers': 'Content-Type, Authorization'
455
- }
456
- })
457
- }
458
- ```
459
-
460
- ---
461
-
462
- ## Testing API Routes
463
-
464
- ```typescript
465
- import { describe, it, expect } from 'vitest'
466
- import { GET, POST } from './route'
467
-
468
- describe('/api/users', () => {
469
- it('should return users list', async () => {
470
- const request = new Request('http://localhost:3000/api/users')
471
- const response = await GET(request)
472
- const data = await response.json()
473
-
474
- expect(response.status).toBe(200)
475
- expect(Array.isArray(data.users)).toBe(true)
476
- })
477
-
478
- it('should create a new user', async () => {
479
- const request = new Request('http://localhost:3000/api/users', {
480
- method: 'POST',
481
- body: JSON.stringify({ name: 'John', email: 'john@example.com' })
482
- })
483
- const response = await POST(request)
484
- const data = await response.json()
485
-
486
- expect(response.status).toBe(201)
487
- expect(data.user).toBeDefined()
488
- })
489
- })
490
- ```
491
-
492
- ---
493
-
494
- *API Routes Standards - MORPH-SPEC by Polymorphism Tech*