@polymorphism-tech/morph-spec 7.9.4 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +2 -2
- package/README.md +31 -2
- package/bin/morph-spec.js +50 -2
- package/bin/validate.js +379 -379
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +38 -1
- package/docs/QUICKSTART.md +60 -1
- package/framework/CLAUDE.md +13 -2
- package/framework/MORPH.md +38 -2
- package/framework/agents.json +22 -3
- package/framework/commands/commit.md +166 -166
- package/framework/commands/morph-hotfix.md +39 -0
- package/framework/commands/morph-infra.md +215 -215
- package/framework/commands/morph-preflight.md +205 -205
- package/framework/commands/morph-troubleshoot.md +124 -124
- package/framework/hooks/README.md +25 -10
- package/framework/hooks/claude-code/core/gate-guard.js +4 -2
- package/framework/hooks/claude-code/core/loop-detect.js +2 -1
- package/framework/hooks/claude-code/core/post-edit-typecheck.js +14 -5
- package/framework/hooks/claude-code/core/tasks-json-guard.js +4 -2
- package/framework/hooks/claude-code/core/validate-completion.js +1 -1
- package/framework/hooks/claude-code/core/worktree-context.js +160 -0
- package/framework/hooks/claude-code/statusline.py +679 -679
- package/framework/hooks/claude-code/statusline.sh +11 -11
- package/framework/hooks/git/commit-msg/conventional-commits.sh +33 -33
- package/framework/hooks/git/pre-commit/agents.sh +25 -25
- package/framework/hooks/git/pre-commit/orchestrator.sh +64 -64
- package/framework/hooks/git/pre-commit/specs.sh +50 -50
- package/framework/hooks/git/pre-push/run-tests.sh +44 -44
- package/framework/hooks/shared/activity-logger.js +160 -160
- package/framework/hooks/shared/build-check.js +2 -2
- package/framework/hooks/shared/hook-response.js +17 -5
- package/framework/hooks/shared/payload-utils.js +42 -0
- package/framework/hooks/shared/state-reader.js +22 -2
- package/framework/hooks/shared/stdin-reader.js +26 -26
- package/framework/rubrics/backend.json +41 -41
- package/framework/rules/ai-agents-standards.md +45 -45
- package/framework/rules/dotnet-templates.md +86 -86
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/infrastructure-standards.md +27 -27
- package/framework/rules/neon-standards.md +25 -25
- package/framework/rules/nextjs-standards.md +20 -20
- package/framework/rules/nextjs-templates.md +40 -40
- package/framework/schemas/feature.schema.json +95 -1
- package/framework/skills/core/create-umbraco-lp/SKILL.md +1 -1
- package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +1 -1
- package/framework/skills/core/morph-apply/SKILL.md +39 -8
- package/framework/skills/core/morph-brainstorming/SKILL.md +9 -1
- package/framework/skills/core/morph-eval/SKILL.md +6 -1
- package/framework/skills/core/morph-hotfix/SKILL.md +136 -0
- package/framework/skills/core/morph-implement/SKILL.md +8 -4
- package/framework/skills/core/morph-plan/SKILL.md +5 -1
- package/framework/skills/core/morph-proposal/SKILL.md +24 -1
- package/framework/skills/core/morph-review/SKILL.md +3 -2
- package/framework/skills/core/morph-stack-scan/SKILL.md +1 -1
- package/framework/skills/core/morph-standards/SKILL.md +1 -1
- package/framework/standards/ai-agents/agent-session.md +160 -160
- package/framework/standards/ai-agents/batching.md +193 -193
- package/framework/standards/ai-agents/context-providers.md +188 -188
- package/framework/standards/ai-agents/mcp-server.md +250 -250
- package/framework/standards/ai-agents/mcp-tools.md +197 -197
- package/framework/standards/ai-agents/middleware-patterns.md +207 -207
- package/framework/standards/ai-agents/modalities-image-gen.md +173 -173
- package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -171
- package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -181
- package/framework/standards/ai-agents/modalities-vision.md +201 -201
- package/framework/standards/ai-agents/multi-agent-patterns.md +155 -155
- package/framework/standards/ai-agents/production.md +275 -275
- package/framework/standards/ai-agents/prompts-in-db.md +214 -214
- package/framework/standards/ai-agents/providers/model-registry.md +158 -158
- package/framework/standards/ai-agents/service-tier-flex.md +135 -135
- package/framework/standards/ai-agents/structured-output.md +249 -249
- package/framework/standards/ai-agents/sweet-spot.md +109 -109
- package/framework/templates/.idea/morph-templates.xml +92 -0
- package/framework/templates/.vscode/morph-templates.code-snippets +186 -0
- package/framework/templates/IDE-SNIPPETS.md +262 -262
- package/framework/templates/REGISTRY.json +0 -62
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -7
- package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -39
- package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -68
- package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -117
- package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -95
- package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -61
- package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -107
- package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -58
- package/framework/templates/code/dotnet/contracts/contracts-vsa.cs +281 -281
- package/framework/templates/code/dotnet/database/migration.cs +83 -83
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -21
- package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -4
- package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -4
- package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -15
- package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -58
- package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -91
- package/framework/templates/code/typescript/contracts.ts +167 -167
- package/framework/templates/docs/clarifications.md +253 -253
- package/framework/templates/docs/schema-analysis.md +119 -119
- package/framework/templates/docs/ui-components.md +52 -52
- package/framework/templates/docs/ui-design-system.md +76 -76
- package/framework/templates/docs/ui-flows.md +167 -167
- package/framework/templates/docs/ui-mockups.md +98 -98
- package/framework/templates/feature/decisions.md +122 -122
- package/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs +43 -43
- package/framework/templates/frontend/nextjs/client-component.tsx.hbs +26 -26
- package/framework/templates/frontend/nextjs/env.mjs.hbs +32 -32
- package/framework/templates/frontend/nextjs/feature-form.tsx.hbs +56 -56
- package/framework/templates/frontend/nextjs/page.tsx.hbs +22 -22
- package/framework/templates/frontend/nextjs/tsconfig.json.hbs +26 -26
- package/framework/templates/frontend/nextjs/use-feature.ts.hbs +54 -54
- package/framework/templates/infrastructure/docker/Dockerfile.template +58 -58
- package/framework/templates/infrastructure/docker/docker-compose.template.yml +50 -50
- package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
- package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
- package/framework/templates/infrastructure/github/README.md +56 -56
- package/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -45
- package/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -27
- package/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -59
- package/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -39
- package/framework/templates/integrations/asaas-client.cs +387 -387
- package/framework/templates/integrations/asaas-webhook.cs +351 -351
- package/framework/templates/meta-prompts/fusion/fusion-agent.md +76 -76
- package/framework/templates/meta-prompts/fusion/fusion-aggregator.md +100 -100
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +95 -95
- package/framework/templates/project/validate.js +120 -120
- package/framework/templates/state.template.json +17 -17
- package/framework/templates/ui/design-system.css +226 -226
- package/package.json +1 -1
- package/src/commands/dashboard/dashboard.js +53 -53
- package/src/commands/index.js +13 -13
- package/src/commands/mcp/mcp-setup.js +519 -519
- package/src/commands/project/checkpoint.js +209 -209
- package/src/commands/project/doctor.js +4 -2
- package/src/commands/project/init.js +46 -2
- package/src/commands/project/update.js +5 -3
- package/src/commands/project/worktree.js +1005 -46
- package/src/commands/state/advance.js +17 -2
- package/src/commands/state/approve.js +18 -1
- package/src/commands/state/create.js +158 -14
- package/src/commands/state/retype.js +126 -0
- package/src/commands/state/score.js +4 -0
- package/src/commands/tasks/dag.js +32 -0
- package/src/commands/validation/index.js +1 -0
- package/src/commands/validation/validate-feature.js +33 -5
- package/src/commands/validation/verify.js +190 -0
- package/src/core/state/phase-state-machine.js +197 -197
- package/src/core/state/state-manager.js +35 -10
- package/src/core/templates/template-renderer.js +477 -477
- package/src/core/work-types.js +79 -0
- package/src/dashboard/app/components/DetailPanel.jsx +11 -11
- package/src/dashboard/app/components/FlowGraph.jsx +17 -17
- package/src/dashboard/app/components/SearchFilter.jsx +22 -22
- package/src/dashboard/app/hooks/useDetailPanel.js +15 -15
- package/src/dashboard/app/main.jsx +13 -13
- package/src/dashboard/app/pages/AgentMap.jsx +370 -370
- package/src/dashboard/app/pages/HookInspector.jsx +418 -418
- package/src/dashboard/app/pages/LiveState.jsx +11 -1
- package/src/dashboard/app/pages/PhasePipeline.jsx +408 -408
- package/src/dashboard/app/pages/RulesMap.jsx +273 -273
- package/src/dashboard/app/pages/SkillsLibrary.jsx +366 -366
- package/src/dashboard/app/pages/Standards.jsx +332 -332
- package/src/dashboard/app/styles/index.css +47 -47
- package/src/dashboard/index.html +12 -12
- package/src/dashboard/package.json +24 -24
- package/src/dashboard/scanner/hooks-scanner.js +41 -41
- package/src/dashboard/scanner/phases-scanner.js +15 -15
- package/src/dashboard/scanner/rubrics-scanner.js +12 -12
- package/src/dashboard/scanner/rules-scanner.js +37 -37
- package/src/dashboard/scanner/skills-scanner.js +43 -43
- package/src/dashboard/scanner/squads-scanner.js +13 -13
- package/src/dashboard/scanner/standards-scanner.js +26 -26
- package/src/dashboard/scanner/state-scanner.js +42 -0
- package/src/dashboard/vite-plugin-morph-data.js +17 -17
- package/src/dashboard/vite.config.js +24 -24
- package/src/lib/agents/metrics-aggregator.js +56 -56
- package/src/lib/agents/metrics-calculator.js +125 -125
- package/src/lib/agents/output-collector.js +73 -73
- package/src/lib/detectors/claude-config-detector.js +152 -152
- package/src/lib/detectors/design-system-detector.js +231 -231
- package/src/lib/detectors/index.js +217 -217
- package/src/lib/generators/architecture-scanner.js +639 -639
- package/src/lib/generators/design-system-generator.js +508 -508
- package/src/lib/generators/index.js +13 -13
- package/src/lib/generators/settings-generator.js +209 -209
- package/src/lib/hooks/hook-executor.js +167 -167
- package/src/lib/installers/mcp-installer.js +719 -719
- package/src/lib/installers/memory-installer.js +1 -1
- package/src/lib/risk-detector.js +16 -0
- package/src/lib/tasks/dispatch-planner.js +122 -4
- package/src/lib/tasks/mermaid-renderer.js +132 -0
- package/src/lib/tasks/task-classifier.js +30 -30
- package/src/lib/tasks/task-parser.js +209 -209
- package/src/lib/tasks/test-runner.js +27 -6
- package/src/lib/validators/architecture/architecture-validator.js +259 -259
- package/src/lib/validators/checkpoint-persistence.js +39 -39
- package/src/lib/validators/contracts/contract-compliance-validator.js +274 -274
- package/src/lib/validators/css/css-validator.js +340 -340
- package/src/lib/validators/packages/package-validator.js +347 -347
- package/src/lib/validators/shared/emit-validator-dispatch.js +14 -14
- package/src/lib/validators/shared/issue-counter.js +14 -14
- package/src/lib/validators/validation-runner.js +349 -349
- package/src/lib/validators/verify-runner.js +322 -0
- package/src/lib/work-type-detector.js +143 -0
- package/src/scripts/setup-infra.js +32 -5
- package/src/utils/agent-id-mapper.js +11 -11
- package/src/utils/agents-installer.js +10 -6
- package/src/utils/claude-settings-manager.js +300 -300
- package/src/utils/file-copier.js +43 -0
- package/src/utils/hooks-installer.js +41 -11
- package/src/utils/skills-installer.js +174 -174
- package/framework/templates/meta-prompts/parallel-workers/parallel-coordinator.md +0 -113
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +0 -80
- package/src/lib/tasks/wave-resolver.js +0 -353
|
@@ -1,119 +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*
|
|
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*
|
|
@@ -1,52 +1,52 @@
|
|
|
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 "nextjs-neon")}}
|
|
12
|
-
## Component Library: shadcn/ui
|
|
13
|
-
|
|
14
|
-
### C001: Button
|
|
15
|
-
|
|
16
|
-
```tsx
|
|
17
|
-
import { Button } from '@/components/ui/button';
|
|
18
|
-
|
|
19
|
-
<Button onClick={handleSave} disabled={!isValid}>
|
|
20
|
-
Save
|
|
21
|
-
</Button>
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### C002: Data Table
|
|
25
|
-
|
|
26
|
-
```tsx
|
|
27
|
-
import { DataTable } from '@/components/ui/data-table';
|
|
28
|
-
|
|
29
|
-
<DataTable columns={columns} data={items} />
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
{{/if}}
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Form Validation
|
|
37
|
-
|
|
38
|
-
| Field | Rule | Error Message |
|
|
39
|
-
|-------|------|---------------|
|
|
40
|
-
| **Name** | Required, max 100 | "Name is required" |
|
|
41
|
-
| **Email** | Valid email | "Invalid email" |
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Accessibility
|
|
46
|
-
- [ ] All inputs have labels
|
|
47
|
-
- [ ] Error messages announced
|
|
48
|
-
- [ ] Keyboard navigation works
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
*Generated with MORPH Framework*
|
|
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 "nextjs-neon")}}
|
|
12
|
+
## Component Library: shadcn/ui
|
|
13
|
+
|
|
14
|
+
### C001: Button
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { Button } from '@/components/ui/button';
|
|
18
|
+
|
|
19
|
+
<Button onClick={handleSave} disabled={!isValid}>
|
|
20
|
+
Save
|
|
21
|
+
</Button>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### C002: Data Table
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
import { DataTable } from '@/components/ui/data-table';
|
|
28
|
+
|
|
29
|
+
<DataTable columns={columns} data={items} />
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
{{/if}}
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Form Validation
|
|
37
|
+
|
|
38
|
+
| Field | Rule | Error Message |
|
|
39
|
+
|-------|------|---------------|
|
|
40
|
+
| **Name** | Required, max 100 | "Name is required" |
|
|
41
|
+
| **Email** | Valid email | "Invalid email" |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Accessibility
|
|
46
|
+
- [ ] All inputs have labels
|
|
47
|
+
- [ ] Error messages announced
|
|
48
|
+
- [ ] Keyboard navigation works
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
*Generated with MORPH Framework*
|
|
@@ -1,76 +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*
|
|
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*
|