@polymorphism-tech/morph-spec 4.7.0 → 4.7.2

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 (232) hide show
  1. package/.morph/.morphversion +5 -0
  2. package/.morph/analytics/threads-log.jsonl +5 -0
  3. package/.morph/config/config.json +8 -0
  4. package/.morph/framework/agents.json +1815 -0
  5. package/.morph/framework/hooks/README.md +205 -0
  6. package/.morph/framework/hooks/claude-code/notification/approval-reminder.js +54 -0
  7. package/.morph/framework/hooks/claude-code/post-tool-use/dispatch.js +83 -0
  8. package/.morph/framework/hooks/claude-code/post-tool-use/handle-tool-failure.js +42 -0
  9. package/.morph/framework/hooks/claude-code/pre-compact/save-morph-context.js +61 -0
  10. package/.morph/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +71 -0
  11. package/.morph/framework/hooks/claude-code/pre-tool-use/protect-readonly-files.js +58 -0
  12. package/.morph/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +64 -0
  13. package/.morph/framework/hooks/claude-code/session-start/inject-morph-context.js +94 -0
  14. package/.morph/framework/hooks/claude-code/statusline.py +538 -0
  15. package/.morph/framework/hooks/claude-code/statusline.sh +7 -0
  16. package/.morph/framework/hooks/claude-code/stop/validate-completion.js +88 -0
  17. package/.morph/framework/hooks/claude-code/user-prompt/enrich-prompt.js +91 -0
  18. package/.morph/framework/hooks/git/commit-msg/conventional-commits.sh +33 -0
  19. package/.morph/framework/hooks/git/pre-commit/agents.sh +25 -0
  20. package/.morph/framework/hooks/git/pre-commit/orchestrator.sh +64 -0
  21. package/.morph/framework/hooks/git/pre-commit/specs.sh +50 -0
  22. package/.morph/framework/hooks/git/pre-push/run-tests.sh +44 -0
  23. package/.morph/framework/hooks/shared/hook-response.js +45 -0
  24. package/.morph/framework/hooks/shared/phase-utils.js +129 -0
  25. package/.morph/framework/hooks/shared/state-reader.js +138 -0
  26. package/.morph/framework/hooks/shared/stdin-reader.js +26 -0
  27. package/.morph/framework/standards/STANDARDS.json +933 -0
  28. package/.morph/framework/standards/ai-agents/blazor-ui.md +364 -0
  29. package/.morph/framework/standards/ai-agents/production.md +415 -0
  30. package/.morph/framework/standards/ai-agents/setup.md +418 -0
  31. package/.morph/framework/standards/ai-agents/team-orchestration.md +479 -0
  32. package/.morph/framework/standards/ai-agents/workflows.md +354 -0
  33. package/.morph/framework/standards/architecture/ddd/aggregates.md +120 -0
  34. package/.morph/framework/standards/architecture/ddd/bounded-contexts.md +105 -0
  35. package/.morph/framework/standards/architecture/ddd/complexity-levels.md +108 -0
  36. package/.morph/framework/standards/architecture/ddd/entities.md +99 -0
  37. package/.morph/framework/standards/architecture/ddd/ubiquitous-language.md +58 -0
  38. package/.morph/framework/standards/architecture/ddd/value-objects.md +124 -0
  39. package/.morph/framework/standards/backend/api/minimal-api.md +494 -0
  40. package/.morph/framework/standards/backend/api/rest.md +492 -0
  41. package/.morph/framework/standards/backend/api/validation.md +88 -0
  42. package/.morph/framework/standards/backend/authentication/passkeys.md +428 -0
  43. package/.morph/framework/standards/backend/database/ef-core.md +199 -0
  44. package/.morph/framework/standards/backend/database/migrations.md +393 -0
  45. package/.morph/framework/standards/backend/database/postgresql/database.md +352 -0
  46. package/.morph/framework/standards/backend/database/repository-patterns.md +528 -0
  47. package/.morph/framework/standards/backend/database/vector-search-rag.md +541 -0
  48. package/.morph/framework/standards/backend/dotnet/async.md +366 -0
  49. package/.morph/framework/standards/backend/dotnet/core.md +117 -0
  50. package/.morph/framework/standards/backend/dotnet/di.md +439 -0
  51. package/.morph/framework/standards/backend/dotnet/program-cs-checklist.md +92 -0
  52. package/.morph/framework/standards/backend/integrations/asaas/asaas-api.md +216 -0
  53. package/.morph/framework/standards/backend/integrations/clerk/clerk-auth.md +290 -0
  54. package/.morph/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +350 -0
  55. package/.morph/framework/standards/backend/integrations/resend/resend-email.md +385 -0
  56. package/.morph/framework/standards/context/analytics.md +96 -0
  57. package/.morph/framework/standards/context/bundles.md +110 -0
  58. package/.morph/framework/standards/context/priming.md +78 -0
  59. package/.morph/framework/standards/core/architecture.md +185 -0
  60. package/.morph/framework/standards/core/coding.md +214 -0
  61. package/.morph/framework/standards/core/git-branching-strategy.md +403 -0
  62. package/.morph/framework/standards/core/git.md +185 -0
  63. package/.morph/framework/standards/core/testing.md +295 -0
  64. package/.morph/framework/standards/data/nosql/blob-storage.md +102 -0
  65. package/.morph/framework/standards/data/nosql/cache/redis.md +97 -0
  66. package/.morph/framework/standards/data/nosql/cosmos-db.md +118 -0
  67. package/.morph/framework/standards/data/vector-search/azure-ai-search.md +121 -0
  68. package/.morph/framework/standards/data/vector-search/rag-chunking.md +104 -0
  69. package/.morph/framework/standards/frontend/blazor/design-checklist.md +222 -0
  70. package/.morph/framework/standards/frontend/blazor/fluent-ui-setup.md +595 -0
  71. package/.morph/framework/standards/frontend/blazor/fluent-ui.md +137 -0
  72. package/.morph/framework/standards/frontend/blazor/html-conversion.md +184 -0
  73. package/.morph/framework/standards/frontend/blazor/lifecycle.md +195 -0
  74. package/.morph/framework/standards/frontend/blazor/pitfalls.md +198 -0
  75. package/.morph/framework/standards/frontend/blazor/state.md +191 -0
  76. package/.morph/framework/standards/frontend/design-system/animations.md +151 -0
  77. package/.morph/framework/standards/frontend/design-system/naming.md +64 -0
  78. package/.morph/framework/standards/frontend/nextjs/app-router.md +123 -0
  79. package/.morph/framework/standards/frontend/nextjs/components.md +132 -0
  80. package/.morph/framework/standards/frontend/nextjs/data-fetching.md +126 -0
  81. package/.morph/framework/standards/frontend/nextjs/forms.md +128 -0
  82. package/.morph/framework/standards/frontend/nextjs/naming-conventions.md +67 -0
  83. package/.morph/framework/standards/frontend/nextjs/nextjs-patterns.md +215 -0
  84. package/.morph/framework/standards/frontend/nextjs/project-structure.md +102 -0
  85. package/.morph/framework/standards/frontend/nextjs/state-management.md +72 -0
  86. package/.morph/framework/standards/frontend/nextjs/testing.md +111 -0
  87. package/.morph/framework/standards/infrastructure/azure/azure.md +624 -0
  88. package/.morph/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +422 -0
  89. package/.morph/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +516 -0
  90. package/.morph/framework/standards/infrastructure/azure/devops/local-development.md +520 -0
  91. package/.morph/framework/standards/infrastructure/azure/services/functions.md +486 -0
  92. package/.morph/framework/standards/infrastructure/azure/services/service-bus.md +459 -0
  93. package/.morph/framework/standards/infrastructure/azure/services/storage.md +407 -0
  94. package/.morph/framework/standards/infrastructure/docker/easypanel-deploy.md +196 -0
  95. package/.morph/framework/standards/infrastructure/supabase/mcp-setup.md +252 -0
  96. package/.morph/framework/standards/infrastructure/supabase/supabase-auth.md +176 -0
  97. package/.morph/framework/standards/infrastructure/supabase/supabase-pgvector.md +169 -0
  98. package/.morph/framework/standards/infrastructure/supabase/supabase-rls.md +184 -0
  99. package/.morph/framework/standards/infrastructure/supabase/supabase-storage.md +153 -0
  100. package/.morph/framework/standards/integration/api/graphql.md +91 -0
  101. package/.morph/framework/standards/integration/api/grpc.md +114 -0
  102. package/.morph/framework/standards/integration/api/rest-design.md +95 -0
  103. package/.morph/framework/standards/integration/event-driven/cqrs.md +101 -0
  104. package/.morph/framework/standards/integration/event-driven/event-sourcing.md +124 -0
  105. package/.morph/framework/standards/integration/event-driven/service-bus.md +95 -0
  106. package/.morph/framework/standards/integration/mcp/mcp-tools.md +384 -0
  107. package/.morph/framework/standards/observability/logging.md +131 -0
  108. package/.morph/framework/standards/observability/metrics.md +121 -0
  109. package/.morph/framework/standards/observability/monitoring.md +114 -0
  110. package/.morph/framework/standards/observability/tracing.md +132 -0
  111. package/.morph/framework/standards/workflows/parallel-execution.md +112 -0
  112. package/.morph/framework/standards/workflows/thread-management.md +113 -0
  113. package/.morph/framework/templates/.idea/morph-templates.xml +92 -0
  114. package/.morph/framework/templates/.vscode/morph-templates.code-snippets +186 -0
  115. package/.morph/framework/templates/IDE-SNIPPETS.md +266 -0
  116. package/.morph/framework/templates/README.md +814 -0
  117. package/.morph/framework/templates/REGISTRY.json +1888 -0
  118. package/.morph/framework/templates/code/dotnet/backend/repository.cs +141 -0
  119. package/.morph/framework/templates/code/dotnet/backend/service.cs +139 -0
  120. package/.morph/framework/templates/code/dotnet/contracts/Commands.cs +74 -0
  121. package/.morph/framework/templates/code/dotnet/contracts/Entities.cs +25 -0
  122. package/.morph/framework/templates/code/dotnet/contracts/Queries.cs +74 -0
  123. package/.morph/framework/templates/code/dotnet/contracts/README.md +74 -0
  124. package/.morph/framework/templates/code/dotnet/contracts/api-contracts.cs +173 -0
  125. package/.morph/framework/templates/code/dotnet/contracts/contracts-level1.cs +69 -0
  126. package/.morph/framework/templates/code/dotnet/contracts/contracts-level2.cs +86 -0
  127. package/.morph/framework/templates/code/dotnet/contracts/contracts-level3.cs +41 -0
  128. package/.morph/framework/templates/code/dotnet/database/migration.cs +83 -0
  129. package/.morph/framework/templates/code/dotnet/frontend/component.razor +239 -0
  130. package/.morph/framework/templates/code/dotnet/jobs/agent.cs +163 -0
  131. package/.morph/framework/templates/code/dotnet/jobs/job.cs +171 -0
  132. package/.morph/framework/templates/code/dotnet/test.cs +239 -0
  133. package/.morph/framework/templates/code/sql/rls-policy.sql +57 -0
  134. package/.morph/framework/templates/code/sql/supabase-migration.sql +100 -0
  135. package/.morph/framework/templates/code/sql/supabase-migration.template.sql +113 -0
  136. package/.morph/framework/templates/code/typescript/contracts.ts +168 -0
  137. package/.morph/framework/templates/context/CONTEXT-FEATURE.md +276 -0
  138. package/.morph/framework/templates/context/CONTEXT.md +181 -0
  139. package/.morph/framework/templates/docs/clarifications.md +253 -0
  140. package/.morph/framework/templates/docs/onboarding.md +123 -0
  141. package/.morph/framework/templates/docs/proposal.md +182 -0
  142. package/.morph/framework/templates/docs/schema-analysis.md +119 -0
  143. package/.morph/framework/templates/docs/spec.md +198 -0
  144. package/.morph/framework/templates/docs/ui-components.md +124 -0
  145. package/.morph/framework/templates/docs/ui-design-system.md +76 -0
  146. package/.morph/framework/templates/docs/ui-flows.md +167 -0
  147. package/.morph/framework/templates/docs/ui-mockups.md +98 -0
  148. package/.morph/framework/templates/docs/user-stories.md +34 -0
  149. package/.morph/framework/templates/examples/design-system-examples.md +357 -0
  150. package/.morph/framework/templates/examples/spec-examples.md +90 -0
  151. package/.morph/framework/templates/feature/decisions.md +187 -0
  152. package/.morph/framework/templates/feature/recap.md +146 -0
  153. package/.morph/framework/templates/feature/tasks.md +199 -0
  154. package/.morph/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs +43 -0
  155. package/.morph/framework/templates/frontend/nextjs/client-component.tsx.hbs +26 -0
  156. package/.morph/framework/templates/frontend/nextjs/env.mjs.hbs +32 -0
  157. package/.morph/framework/templates/frontend/nextjs/feature-form.tsx.hbs +56 -0
  158. package/.morph/framework/templates/frontend/nextjs/page.tsx.hbs +22 -0
  159. package/.morph/framework/templates/frontend/nextjs/tsconfig.json.hbs +26 -0
  160. package/.morph/framework/templates/frontend/nextjs/use-feature.ts.hbs +54 -0
  161. package/.morph/framework/templates/infrastructure/azure/Dockerfile.example +82 -0
  162. package/.morph/framework/templates/infrastructure/azure/README.md +286 -0
  163. package/.morph/framework/templates/infrastructure/azure/app-insights.bicep +63 -0
  164. package/.morph/framework/templates/infrastructure/azure/app-service.bicep +164 -0
  165. package/.morph/framework/templates/infrastructure/azure/container-app-env.bicep +49 -0
  166. package/.morph/framework/templates/infrastructure/azure/container-app.bicep +156 -0
  167. package/.morph/framework/templates/infrastructure/azure/deploy-checklist.md +426 -0
  168. package/.morph/framework/templates/infrastructure/azure/deploy.ps1 +229 -0
  169. package/.morph/framework/templates/infrastructure/azure/deploy.sh +208 -0
  170. package/.morph/framework/templates/infrastructure/azure/key-vault.bicep +91 -0
  171. package/.morph/framework/templates/infrastructure/azure/main.bicep +189 -0
  172. package/.morph/framework/templates/infrastructure/azure/parameters.dev.json +29 -0
  173. package/.morph/framework/templates/infrastructure/azure/parameters.prod.json +29 -0
  174. package/.morph/framework/templates/infrastructure/azure/parameters.staging.json +29 -0
  175. package/.morph/framework/templates/infrastructure/azure/sql-database.bicep +103 -0
  176. package/.morph/framework/templates/infrastructure/azure/storage.bicep +106 -0
  177. package/.morph/framework/templates/infrastructure/docker/Dockerfile.template +58 -0
  178. package/.morph/framework/templates/infrastructure/docker/docker-compose.template.yml +67 -0
  179. package/.morph/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -0
  180. package/.morph/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -0
  181. package/.morph/framework/templates/infrastructure/docker/easypanel.template.json +54 -0
  182. package/.morph/framework/templates/infrastructure/github/README.md +593 -0
  183. package/.morph/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +22 -0
  184. package/.morph/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -0
  185. package/.morph/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -0
  186. package/.morph/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +61 -0
  187. package/.morph/framework/templates/infrastructure/github/workflows/deploy-easypanel.yml.hbs +31 -0
  188. package/.morph/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -0
  189. package/.morph/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -0
  190. package/.morph/framework/templates/integrations/asaas-client.cs +387 -0
  191. package/.morph/framework/templates/integrations/asaas-webhook.cs +351 -0
  192. package/.morph/framework/templates/integrations/azure-identity-config.cs +288 -0
  193. package/.morph/framework/templates/integrations/clerk-config.cs +258 -0
  194. package/.morph/framework/templates/meta-prompts/fusion/fusion-agent.md +76 -0
  195. package/.morph/framework/templates/meta-prompts/fusion/fusion-aggregator.md +100 -0
  196. package/.morph/framework/templates/meta-prompts/hops/hop-retry.md +78 -0
  197. package/.morph/framework/templates/meta-prompts/hops/hop-validation.md +97 -0
  198. package/.morph/framework/templates/meta-prompts/hops/hop-wrapper.md +36 -0
  199. package/.morph/framework/templates/meta-prompts/parallel-workers/parallel-coordinator.md +113 -0
  200. package/.morph/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +80 -0
  201. package/.morph/framework/templates/meta-prompts/squad-leaders/backend-squad.md +90 -0
  202. package/.morph/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +126 -0
  203. package/.morph/framework/templates/meta-prompts/squad-leaders/squad-leader.md +43 -0
  204. package/.morph/framework/templates/meta-prompts/validators/checkpoint-validator.md +107 -0
  205. package/.morph/framework/templates/meta-prompts/validators/pre-commit-validator.md +95 -0
  206. package/.morph/framework/templates/project-structure/dotnet-ddd.md +70 -0
  207. package/.morph/framework/templates/saas/subscription.cs +347 -0
  208. package/.morph/framework/templates/saas/tenant.cs +338 -0
  209. package/.morph/framework/templates/state.template.json +17 -0
  210. package/.morph/framework/templates/ui/FluentDesignTheme.cs +149 -0
  211. package/.morph/framework/templates/ui/MudTheme.cs +281 -0
  212. package/.morph/framework/templates/ui/design-system.css +226 -0
  213. package/.morph/logs/tool-failures.log +17 -0
  214. package/.morph/memory/pre-compact-2026-02-24T17-43-30-049Z.json +16 -0
  215. package/.morph/plans/eager-watching-bunny.md +105 -0
  216. package/.morph/plans/temporal-seeking-nebula.md +45 -0
  217. package/.morph/state.json +48 -0
  218. package/CLAUDE.md +1 -1
  219. package/README.md +119 -99
  220. package/bin/morph-spec.js +0 -9
  221. package/framework/CLAUDE.md +1 -1
  222. package/framework/hooks/README.md +10 -6
  223. package/framework/hooks/claude-code/notification/approval-reminder.js +2 -0
  224. package/framework/hooks/claude-code/post-tool-use/dispatch.js +1 -1
  225. package/framework/hooks/claude-code/stop/validate-completion.js +1 -1
  226. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +1 -1
  227. package/package.json +1 -1
  228. package/src/commands/project/init.js +15 -42
  229. package/src/commands/project/update.js +22 -37
  230. package/src/lib/installers/mcp-installer.js +18 -3
  231. package/src/utils/hooks-installer.js +5 -15
  232. package/src/commands/project/detect.js +0 -114
@@ -0,0 +1,182 @@
1
+ # Feature Proposal: {{titleCase FEATURE_NAME}}
2
+
3
+ > Proposal for a new feature. This document describes WHAT and WHY.
4
+ > For technical details, see `spec.md`.
5
+
6
+ ## Metadata
7
+
8
+ | Field | Value |
9
+ |-------|-------|
10
+ | **Proposed** | {{DATE}} |
11
+ | **Author** | {{AUTHOR}} |
12
+ | **Status** | Draft / Under Review / Approved / Rejected |
13
+ | **Priority** | High / Medium / Low |
14
+ {{#if STACK}}| **Stack** | {{STACK}} |{{/if}}
15
+
16
+ ---
17
+
18
+ ## Overview
19
+
20
+ {Brief 2-3 sentence summary of the feature}
21
+
22
+ ---
23
+
24
+ ## Problem Statement
25
+
26
+ ### What is the problem?
27
+
28
+ {Describe the problem this feature solves. Be specific.}
29
+
30
+ ### Who is affected?
31
+
32
+ {Who suffers from this problem? End users? Developers? Operations?}
33
+
34
+ ### What is the impact?
35
+
36
+ {What is the impact of NOT solving this problem?}
37
+ - User productivity loss: {X}
38
+ - Revenue/Cost impact: {X}
39
+ - User satisfaction: {X}
40
+
41
+ ---
42
+
43
+ ## Proposed Solution
44
+
45
+ ### Overview
46
+
47
+ {Describe the proposed solution in 2-3 paragraphs}
48
+
49
+ ### Key Features
50
+
51
+ 1. **{Feature 1}** - {brief description}
52
+ 2. **{Feature 2}** - {brief description}
53
+ 3. **{Feature 3}** - {brief description}
54
+
55
+ {{#if (eq STACK "nextjs-supabase")}}
56
+ ### Technical Approach
57
+
58
+ | Layer | Technology | Role |
59
+ |-------|-----------|------|
60
+ | **Database** | Supabase (PostgreSQL + RLS) | {tables, policies, storage} |
61
+ | **Backend API** | .NET 10 Minimal API | {endpoints, business logic} |
62
+ | **Frontend** | Next.js 15 (App Router) | {pages, components, auth} |
63
+ | **Infra** | EasyPanel + Docker | {deployment, SSL} |
64
+ {{/if}}
65
+
66
+ ### User Journey
67
+
68
+ ```
69
+ 1. User {initial action}
70
+ 2. System {response}
71
+ 3. User {next action}
72
+ 4. System {final result}
73
+ ```
74
+
75
+ ---
76
+
77
+ {{#if (eq STACK "nextjs-supabase")}}
78
+ ## Cost Estimate
79
+
80
+ | Resource | Provider | Monthly Cost | Notes |
81
+ |----------|----------|-------------|-------|
82
+ | Supabase | Free / Pro | $0 - $25 | {DB, Auth, Storage, Realtime} |
83
+ | VPS (EasyPanel) | {provider} | ${X} | {API + Web containers} |
84
+ | External APIs | {provider} | ${X} | {if applicable} |
85
+ | **Total** | | **${X}/month** | |
86
+
87
+ ---
88
+
89
+ {{/if}}
90
+ ## Success Metrics
91
+
92
+ How will we know this feature is successful?
93
+
94
+ | Metric | Current | Target |
95
+ |--------|---------|--------|
96
+ | {Metric 1} | {X} | {Y} |
97
+ | {Metric 2} | {X} | {Y} |
98
+
99
+ ---
100
+
101
+ ## Scope
102
+
103
+ ### In Scope
104
+
105
+ - {Item 1 that is included}
106
+ - {Item 2 that is included}
107
+ - {Item 3 that is included}
108
+
109
+ ### Out of Scope
110
+
111
+ - {Item 1 that is NOT included}
112
+ - {Item 2 that is NOT included}
113
+
114
+ ### Future Considerations
115
+
116
+ - {Item that could be added later}
117
+
118
+ ---
119
+
120
+ ## Risks & Concerns
121
+
122
+ | Risk | Likelihood | Impact | Mitigation |
123
+ |------|------------|--------|------------|
124
+ | {Risk 1} | High/Med/Low | High/Med/Low | {mitigation strategy} |
125
+ | {Risk 2} | High/Med/Low | High/Med/Low | {mitigation strategy} |
126
+
127
+ ---
128
+
129
+ ## Dependencies
130
+
131
+ - [ ] {Dependency 1} - {status}
132
+ - [ ] {Dependency 2} - {status}
133
+
134
+ ---
135
+
136
+ ## Estimated Effort
137
+
138
+ | Phase | Estimate |
139
+ |-------|----------|
140
+ | Design & Spec | {X}h |
141
+ {{#if (eq STACK "nextjs-supabase")}}| Database & Migrations | {X}h |
142
+ | Backend API | {X}h |
143
+ | Frontend | {X}h |
144
+ {{else}}| Implementation | {X}h |
145
+ {{/if}}| Testing | {X}h |
146
+ | **Total** | **{X}h** |
147
+
148
+ ---
149
+
150
+ ## Questions & Clarifications
151
+
152
+ 1. {Question 1 that needs answering}
153
+ 2. {Question 2 that needs answering}
154
+
155
+ ---
156
+
157
+ {{#if (eq STACK "blazor-azure")}}
158
+ ## Approval
159
+
160
+ | Role | Name | Decision | Date |
161
+ |------|------|----------|------|
162
+ | Product Owner | | Pending | |
163
+ | Tech Lead | | Pending | |
164
+
165
+ ---
166
+
167
+ {{/if}}
168
+ ## Next Steps
169
+
170
+ Once approved:
171
+ 1. Create detailed `spec.md` with technical design
172
+ {{#if (eq STACK "nextjs-supabase")}}2. Define contracts (`contracts.cs` + `contracts.ts`)
173
+ 3. Record decisions in `decisions.md`
174
+ 4. Break down into `tasks.md`
175
+ 5. Begin implementation
176
+ {{else}}2. Break down into `tasks.md`
177
+ 3. Begin implementation
178
+ {{/if}}
179
+
180
+ ---
181
+
182
+ *Created with MORPH Framework*
@@ -0,0 +1,119 @@
1
+ # Schema Analysis - {{FEATURE_NAME_TITLE}}
2
+
3
+ **Feature**: {{FEATURE_NAME}}
4
+ **Date**: {{DATE}}
5
+ **Method**: {{#if method}}{{method}}{{else}}Manual Code Analysis{{/if}}
6
+ **Analyzed By**: {{AUTHOR}}
7
+
8
+ ---
9
+
10
+ ## Summary
11
+
12
+ **Tables Analyzed**: {{#if tableCount}}{{tableCount}}{{else}}0{{/if}}
13
+ **Code Files Scanned**: {{#if fileCount}}{{fileCount}}{{else}}0{{/if}}
14
+ **MCP Tools Used**: {{#if mcpUsed}}{{mcpUsed}}{{else}}No (manual analysis){{/if}}
15
+
16
+ ---
17
+
18
+ ## Tables Analyzed
19
+
20
+ {{#each tables}}
21
+ ### Table: {{this.name}}
22
+
23
+ **Source:**
24
+ {{#if this.mcpSource}}- MCP: {{this.mcpSource}}{{/if}}
25
+ {{#if this.codeSource}}- Code: {{this.codeSource}}{{/if}}
26
+
27
+ **Columns:**
28
+ | Column Name | Type | Nullable | Default | Notes |
29
+ |------------|------|----------|---------|-------|
30
+ {{#each this.columns}}
31
+ | {{this.name}} | {{this.type}} | {{#if this.nullable}}YES{{else}}NO{{/if}} | {{#if this.default}}{{this.default}}{{else}}-{{/if}} | {{#if this.notes}}{{this.notes}}{{else}}-{{/if}} |
32
+ {{/each}}
33
+
34
+ **Relationships:**
35
+ {{#each this.relationships}}
36
+ - {{this.description}}
37
+ {{/each}}
38
+
39
+ **Indexes:**
40
+ {{#each this.indexes}}
41
+ - {{this.description}}
42
+ {{/each}}
43
+
44
+ ---
45
+ {{/each}}
46
+
47
+ ## ⚠️ CRITICAL FINDINGS
48
+
49
+ ### Field Name Mismatches (MUST FIX)
50
+
51
+ {{#if fieldMismatches}}
52
+ {{#each fieldMismatches}}
53
+ - ❌ {{this.description}}
54
+ {{/each}}
55
+ {{else}}
56
+ ✅ No field name mismatches found
57
+ {{/if}}
58
+
59
+ ### Type Mismatches
60
+
61
+ {{#if typeMismatches}}
62
+ {{#each typeMismatches}}
63
+ - ⚠️ {{this.description}}
64
+ {{/each}}
65
+ {{else}}
66
+ ✅ No type mismatches found
67
+ {{/if}}
68
+
69
+ ### Relationship Corrections
70
+
71
+ {{#if relationshipIssues}}
72
+ {{#each relationshipIssues}}
73
+ - ⚠️ {{this.description}}
74
+ {{/each}}
75
+ {{else}}
76
+ ✅ All relationships correctly identified
77
+ {{/if}}
78
+
79
+ ---
80
+
81
+ ## Recommendations for contracts.cs
82
+
83
+ Based on real schema analysis:
84
+
85
+ \`\`\`csharp
86
+ {{#each dtoRecommendations}}
87
+ // {{this.tableName}} → {{this.dtoName}}
88
+ public record {{this.dtoName}}(
89
+ {{#each this.fields}}
90
+ {{this.type}} {{this.name}}{{#if this.nullable}}?{{/if}}{{#unless @last}},{{/unless}} // {{#if this.comment}}{{this.comment}}{{/if}}
91
+ {{/each}}
92
+ );
93
+
94
+ {{/each}}
95
+ \`\`\`
96
+
97
+ ---
98
+
99
+ ## Analysis Notes
100
+
101
+ {{#if notes}}
102
+ {{notes}}
103
+ {{else}}
104
+ _No additional notes._
105
+ {{/if}}
106
+
107
+ ---
108
+
109
+ ## Next Steps
110
+
111
+ - [ ] Verify schema analysis with stakeholders
112
+ - [ ] Generate `contracts.cs` using real field names
113
+ - [ ] Update `spec.md` data model section with findings
114
+ - [ ] Document any schema migrations needed in `decisions.md`
115
+
116
+ ---
117
+
118
+ *Generated by MORPH-SPEC v{{FRAMEWORK_VERSION}}*
119
+ *Schema analysis helps prevent DTO field name mismatches and ensures contracts match real database schema*
@@ -0,0 +1,198 @@
1
+ # Feature Specification: {{titleCase FEATURE_NAME}}
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | **ID** | {{FEATURE_NAME}} |
6
+ | **Status** | Draft / In Review / Approved / In Progress / Done |
7
+ | **Created** | {{DATE}} |
8
+ | **Stack** | {{STACK}} |
9
+ | **Complexity** | Low / Medium / High |
10
+ | **Estimated Cost** | $X/month |
11
+ | **Agents** | Core: All / Specialists: {list} |
12
+
13
+ ---
14
+
15
+ ## Overview
16
+
17
+ **Problem:** {What problem this feature solves}
18
+
19
+ **Solution:** {High-level solution}
20
+
21
+ **Success Criteria:**
22
+ - [ ] {Criterion 1}
23
+ - [ ] {Criterion 2}
24
+
25
+ ---
26
+
27
+ ## Requirements
28
+
29
+ **Functional:** FR1: {desc} | FR2: {desc} | FR3: {desc}
30
+
31
+ **Non-Functional:** NFR1: Performance - {target} | NFR2: Reliability - {target}
32
+
33
+ ---
34
+
35
+ ## User Stories
36
+
37
+ ### US001: {Title}
38
+ **As** {user type} **I want** {feature} **so that** {benefit}
39
+
40
+ **Acceptance Criteria:** 1. {criterion} 2. {criterion}
41
+
42
+ **Edge Cases:** {edge case}: {handling}
43
+
44
+ ---
45
+
46
+ ## Technical Design
47
+
48
+ ### Stack
49
+ | Component | Technology |
50
+ |-----------|------------|
51
+ | Frontend | {Blazor Server / Next.js} |
52
+ | Backend | .NET 10 / C# 14 |
53
+ | Database | {Azure SQL / Cosmos DB} |
54
+
55
+ ### Data Model
56
+
57
+ #### {EntityName}
58
+ | Column | Type | Constraints |
59
+ |--------|------|-------------|
60
+ | Id | Guid | PK |
61
+ | {Property} | {Type} | {Constraints} |
62
+ | CreatedAt | datetime2 | Default: GETUTCDATE() |
63
+
64
+ ### Contracts
65
+
66
+ > **Ref:** `framework/standards/backend/database/ef-core.md` for background operations
67
+
68
+ ```csharp
69
+ public interface I{{pascalCase FEATURE_NAME}}Service
70
+ {
71
+ Task<{{pascalCase FEATURE_NAME}}Dto> GetByIdAsync(int id);
72
+ Task<{{pascalCase FEATURE_NAME}}Dto> CreateAsync(Create{{pascalCase FEATURE_NAME}}Request request);
73
+ }
74
+ ```
75
+
76
+ **Contracts Workflow:** Generate `contracts.cs` FIRST → validate names → reference in spec → approve with user.
77
+
78
+ **Validation Checklist:**
79
+ - [ ] Property names are descriptive (not generic "Data", "Value")
80
+ - [ ] Records use correct types (Stream vs byte[], Guid vs string)
81
+ - [ ] Response DTOs have all properties needed for UI
82
+ - [ ] Request DTOs have implicit validations (required, nullable)
83
+
84
+ ---
85
+
86
+ ## Domain Complexity
87
+
88
+ **Nível:** {1 — CRUD / 2 — Business Logic / 3 — Bounded Context}
89
+
90
+ **Justificativa:** {Por que este nível foi escolhido — mencionar invariants, eventos ou BCs se Nível 2+}
91
+
92
+ **Padrões Aplicados:**
93
+ - {Nível 1: Entity simples, Service CRUD, DTOs}
94
+ - {Nível 2: AggregateRoot, Value Objects, Domain Events, CQRS}
95
+ - {Nível 3: Bounded Context isolation, cross-BC events, Linguagem Ubíqua}
96
+
97
+ **Padrões Omitidos:**
98
+ - {ex: Bounded Contexts — sistema single-domain}
99
+
100
+ ---
101
+
102
+ ## Aggregate Blueprint (Nível 2+ apenas)
103
+
104
+ > Omitir esta seção se Nível 1 (CRUD).
105
+
106
+ ### Aggregate Root: {EntityName}
107
+
108
+ **Invariants:**
109
+ - {Invariant 1 em linguagem natural}
110
+ - {Invariant 2}
111
+
112
+ **Estados e Transições:**
113
+ ```
114
+ {Status.Draft} → Confirm() → {Status.Confirmed} → Cancel() → {Status.Cancelled}
115
+ ```
116
+
117
+ **Domain Events:**
118
+ - `{EntityName}CreatedEvent` — publicado ao criar
119
+ - `{EntityName}StatusChangedEvent` — publicado em mudança de estado
120
+
121
+ **Value Objects:**
122
+ - `{ValueObjectName}` — {por que não é primitivo simples}
123
+
124
+ **Referências Cross-Aggregate (por ID):**
125
+ - `{OtherEntity}Id: Guid`
126
+
127
+ ### Linguagem Ubíqua
128
+
129
+ | Termo | Definição | Código |
130
+ |-------|-----------|--------|
131
+ | {Termo} | {Definição do negócio} | `{ClassName.MethodName()}` |
132
+
133
+ ---
134
+
135
+ ## UI/UX Design (if front-end)
136
+
137
+ ### Wireframes
138
+ ```
139
+ {ASCII wireframe per screen - include states: loading, error, empty}
140
+ ```
141
+
142
+ ### User Flow
143
+ 1. {Step} → {System response}
144
+
145
+ ---
146
+
147
+ ## Flows
148
+
149
+ ### {Flow Name}
150
+ **Trigger:** {what starts this flow}
151
+ 1. {Actor} {action} → {system response}
152
+ 2. If {condition}: Path A / Else: Path B
153
+ **End State:** {final state}
154
+
155
+ ---
156
+
157
+ ## Cost Estimate
158
+
159
+ | Resource | SKU | Monthly Cost | Justification |
160
+ |----------|-----|--------------|---------------|
161
+ | {Resource} | {SKU} | ${X} | {Why} |
162
+ | **Total** | | **${X}/month** | |
163
+
164
+ ---
165
+
166
+ ## ADRs (Architectural Decision Records)
167
+
168
+ ### ADR-001: {Decision Title}
169
+ **Status:** Proposed / Accepted
170
+ **Context:** {Why decide now}
171
+ **Decision:** {What we chose}
172
+ **Alternatives:** 1. {Alt} (pros/cons) 2. {Alt} (pros/cons)
173
+ **Trade-offs:** {key trade-offs}
174
+
175
+ ---
176
+
177
+ ## Security
178
+
179
+ | Action | Required Policy |
180
+ |--------|-----------------|
181
+ | View | CanView{Feature} |
182
+ | Create | CanManage{Feature} |
183
+
184
+ ## Risks
185
+
186
+ | Risk | Impact | Mitigation |
187
+ |------|--------|------------|
188
+ | {Risk} | {H/M/L} | {Mitigation} |
189
+
190
+ ## Out of Scope
191
+ - {Item}
192
+
193
+ ## Definition of Done
194
+ - [ ] Code implemented
195
+ - [ ] Tests >80% coverage
196
+ - [ ] Code review approved
197
+ - [ ] Deploy to staging
198
+ - [ ] Recap.md generated
@@ -0,0 +1,124 @@
1
+ # UI Components: {{titleCase FEATURE_NAME}}
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | **Feature** | {{FEATURE_NAME}} |
6
+ | **Created** | {{DATE}} |
7
+ | **Stack** | {{STACK}} |
8
+
9
+ ---
10
+
11
+ {{#if (eq STACK "blazor-azure")}}
12
+ ## Component Library: FluentUI Blazor / MudBlazor
13
+
14
+ **NuGet Package:**
15
+ ```xml
16
+ <PackageReference Include="Microsoft.FluentUI.AspNetCore.Components" Version="4.x.x" />
17
+ ```
18
+
19
+ ---
20
+
21
+ ### C001: Header Navigation
22
+
23
+ **Component:** `<FluentHeader>`
24
+
25
+ ```razor
26
+ <FluentHeader>
27
+ <FluentLabel>{{FEATURE_NAME}}</FluentLabel>
28
+ <FluentSpacer />
29
+ <FluentPersona Name="@userName" OnClick="@ShowUserMenu" />
30
+ </FluentHeader>
31
+ ```
32
+
33
+ ---
34
+
35
+ ### C002: Primary Button
36
+
37
+ **Component:** `<FluentButton>`
38
+
39
+ ```razor
40
+ <FluentButton Appearance="Appearance.Accent"
41
+ OnClick="@HandleSave"
42
+ Disabled="@(!isValid)">
43
+ Save
44
+ </FluentButton>
45
+ ```
46
+
47
+ ---
48
+
49
+ ### C003: Data Table
50
+
51
+ **Component:** `<FluentDataGrid>`
52
+
53
+ ```razor
54
+ <FluentDataGrid Items="@items" Pagination="@pagination">
55
+ <PropertyColumn Property="@(i => i.Name)" Sortable="true" />
56
+ <PropertyColumn Property="@(i => i.Status)" Sortable="true" />
57
+ <TemplateColumn Title="Actions">
58
+ <FluentMenu>
59
+ <FluentMenuItem OnClick="@(() => EditItem(context))">Edit</FluentMenuItem>
60
+ <FluentMenuItem OnClick="@(() => DeleteItem(context))">Delete</FluentMenuItem>
61
+ </FluentMenu>
62
+ </TemplateColumn>
63
+ </FluentDataGrid>
64
+ ```
65
+
66
+ ---
67
+
68
+ ### C004: Form Input
69
+
70
+ **Component:** `<FluentTextField>`
71
+
72
+ ```razor
73
+ <FluentTextField @bind-Value="model.Name"
74
+ Label="Name"
75
+ Required="true"
76
+ MaxLength="100"
77
+ ErrorMessage="@GetValidationError(nameof(model.Name))">
78
+ </FluentTextField>
79
+ ```
80
+
81
+ {{/if}}
82
+
83
+ {{#if (eq STACK "nextjs-supabase")}}
84
+ ## Component Library: shadcn/ui
85
+
86
+ ### C001: Button
87
+
88
+ ```tsx
89
+ import { Button } from '@/components/ui/button';
90
+
91
+ <Button onClick={handleSave} disabled={!isValid}>
92
+ Save
93
+ </Button>
94
+ ```
95
+
96
+ ### C002: Data Table
97
+
98
+ ```tsx
99
+ import { DataTable } from '@/components/ui/data-table';
100
+
101
+ <DataTable columns={columns} data={items} />
102
+ ```
103
+
104
+ {{/if}}
105
+
106
+ ---
107
+
108
+ ## Form Validation
109
+
110
+ | Field | Rule | Error Message |
111
+ |-------|------|---------------|
112
+ | **Name** | Required, max 100 | "Name is required" |
113
+ | **Email** | Valid email | "Invalid email" |
114
+
115
+ ---
116
+
117
+ ## Accessibility
118
+ - [ ] All inputs have labels
119
+ - [ ] Error messages announced
120
+ - [ ] Keyboard navigation works
121
+
122
+ ---
123
+
124
+ *Generated with MORPH Framework*
@@ -0,0 +1,76 @@
1
+ # UI Design System: {{titleCase FEATURE_NAME}}
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | **Feature** | {{FEATURE_NAME}} |
6
+ | **Created** | {{DATE}} |
7
+ | **Project** | {{PROJECT_NAME}} |
8
+
9
+ ---
10
+
11
+ ## Color Palette
12
+
13
+ ### Primary Colors
14
+ | Token | Value | Usage |
15
+ |-------|-------|-------|
16
+ | `--color-primary` | #0078D4 | Primary actions, links |
17
+ | `--color-primary-hover` | #106EBE | Hover states |
18
+
19
+ ### Semantic Colors
20
+ | Token | Value | Usage |
21
+ |-------|-------|-------|
22
+ | `--color-success` | #107C10 | Success states |
23
+ | `--color-warning` | #F7630C | Warnings |
24
+ | `--color-error` | #D13438 | Errors |
25
+
26
+ ---
27
+
28
+ ## Typography
29
+
30
+ | Token | Size | Weight | Usage |
31
+ |-------|------|--------|-------|
32
+ | `--text-h1` | 24px | 600 | Section headers |
33
+ | `--text-body` | 14px | 400 | Body text |
34
+ | `--text-caption` | 12px | 400 | Labels |
35
+
36
+ ---
37
+
38
+ ## Spacing
39
+
40
+ | Token | Value | Usage |
41
+ |-------|-------|-------|
42
+ | `--space-sm` | 8px | Compact spacing |
43
+ | `--space-md` | 16px | Standard spacing |
44
+ | `--space-lg` | 24px | Wide spacing |
45
+
46
+ ---
47
+
48
+ ## Components
49
+
50
+ ### Buttons
51
+ - **Primary**: `--color-primary` background, white text
52
+ - **Secondary**: Transparent, `--color-primary` border
53
+ - **Sizes**: Small (24px), Medium (32px), Large (40px)
54
+
55
+ ### Forms
56
+ - **Input height**: 32px
57
+ - **Focus**: 2px solid `--color-primary`
58
+ - **Error**: 1px solid `--color-error`
59
+
60
+ ---
61
+
62
+ ## Accessibility
63
+ - [ ] 4.5:1 contrast ratio (WCAG AA)
64
+ - [ ] Touch targets minimum 44x44px
65
+ - [ ] Keyboard navigation supported
66
+
67
+ ---
68
+
69
+ ## Responsive Breakpoints
70
+ - **Mobile**: < 768px
71
+ - **Tablet**: 768px - 1199px
72
+ - **Desktop**: ≥ 1200px
73
+
74
+ ---
75
+
76
+ *Generated with MORPH Framework*