@polymorphism-tech/morph-spec 4.12.0 → 4.14.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 +7 -7
- package/README.md +28 -34
- package/bin/morph-spec.js +41 -24
- package/bin/task-manager.js +962 -1341
- package/bin/validate.js +1 -1
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +14 -16
- package/docs/QUICKSTART.md +15 -15
- package/framework/CLAUDE.md +5 -2
- package/framework/agents/README.md +3 -4
- package/framework/agents/ai-agents/ai-system-architect.md +6 -10
- package/framework/agents/architecture/seo-growth-hacker.md +166 -326
- package/framework/agents/architecture/standards-architect.md +21 -31
- package/framework/agents/backend/dotnet-senior.md +160 -86
- package/framework/agents/backend/ef-modeler.md +2 -6
- package/framework/agents/backend/hangfire-orchestrator.md +8 -9
- package/framework/agents/backend/ms-agent-expert.md +1 -1
- package/framework/agents/frontend/nextjs-expert.md +198 -133
- package/framework/agents/frontend/ui-ux-designer.md +226 -267
- package/framework/agents/infrastructure/infra-architect.md +191 -27
- package/framework/agents/integrations/clerk-auth.md +19 -26
- package/framework/agents/integrations/hangfire-integration.md +1 -4
- package/framework/agents.json +1084 -2278
- package/framework/commands/morph-apply.md +4 -6
- package/framework/commands/morph-preflight.md +192 -269
- package/framework/commands/morph-proposal.md +210 -238
- package/framework/commands/morph-status.md +72 -92
- package/framework/commands/morph-troubleshoot.md +6 -13
- package/framework/hooks/README.md +1 -6
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +4 -6
- package/framework/hooks/claude-code/pre-compact/save-morph-context.js +12 -7
- package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +2 -2
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +2 -2
- package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +5 -10
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +63 -30
- package/framework/hooks/claude-code/session-start/resume-context.js +77 -0
- package/framework/hooks/claude-code/statusline.py +4 -5
- package/framework/hooks/claude-code/stop/validate-completion.js +4 -4
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +8 -8
- package/framework/hooks/shared/compact-restore.js +28 -5
- package/framework/hooks/shared/phase-utils.js +4 -8
- package/framework/hooks/shared/state-reader.js +34 -3
- package/framework/phases.json +162 -200
- package/framework/rules/ai-agents-standards.md +15 -0
- package/framework/rules/asaas-standards.md +13 -0
- package/framework/rules/clerk-standards.md +13 -0
- package/framework/rules/csharp-standards.md +8 -4
- package/framework/rules/data-standards.md +18 -0
- package/framework/rules/dotnet-templates.md +87 -0
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/hangfire-standards.md +13 -0
- package/framework/rules/infrastructure-standards.md +27 -16
- package/framework/rules/morph-workflow.md +73 -13
- package/framework/rules/nextjs-standards.md +1 -0
- package/framework/rules/nextjs-templates.md +40 -0
- package/framework/rules/resend-standards.md +12 -0
- package/framework/rules/supabase-standards.md +29 -0
- package/framework/skills/README.md +6 -8
- package/framework/skills/level-0-meta/mcp-registry.json +21 -99
- package/framework/{standards/ai-agents/team-orchestration.md → skills/level-0-meta/morph-agent-teams/SKILL.md} +472 -479
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +28 -1
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
- package/framework/skills/level-0-meta/morph-code-review/SKILL.md +1 -5
- package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +1 -1
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +23 -41
- package/framework/skills/level-0-meta/morph-init/SKILL.md +18 -14
- package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +225 -0
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +20 -0
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +4 -8
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +15 -59
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +7 -19
- package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +8 -8
- package/framework/skills/level-1-workflows/README.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +49 -50
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +57 -123
- package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +5 -50
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +127 -159
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +4 -3
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +2 -2
- package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +17 -13
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +22 -40
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +143 -172
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +5 -5
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +57 -77
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
- package/framework/squad-templates/backend-only.json +6 -6
- package/framework/squad-templates/frontend-only.json +17 -8
- package/framework/squad-templates/full-stack.json +29 -24
- package/framework/standards/STANDARDS.json +1021 -2369
- package/framework/standards/backend/dotnet/fluent-validation-vsa.md +200 -0
- package/framework/standards/backend/dotnet/result-pattern.md +213 -0
- package/framework/standards/backend/dotnet/scalar-ui.md +172 -0
- package/framework/standards/backend/dotnet/scrutor.md +158 -0
- package/framework/standards/backend/dotnet/vsa-handler-patterns.md +274 -0
- package/framework/standards/frontend/nextjs/motion-patterns.md +1 -1
- package/framework/standards/infrastructure/supabase/mcp-setup.md +83 -193
- package/framework/standards/integration/mcp/mcp-tools.md +91 -77
- package/framework/templates/IDE-SNIPPETS.md +2 -6
- package/framework/templates/README.md +709 -814
- package/framework/templates/REGISTRY.json +223 -762
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -0
- package/framework/templates/code/dotnet/abstractions/error.cs +60 -0
- package/framework/templates/code/dotnet/abstractions/handler.cs +12 -0
- package/framework/templates/code/dotnet/abstractions/result.cs +74 -0
- package/framework/templates/code/dotnet/backend/repository.cs +148 -141
- package/framework/templates/code/dotnet/constants/api-tags.cs +6 -0
- package/framework/templates/code/dotnet/exceptions/exception-handler.cs +32 -0
- package/framework/templates/code/dotnet/extensions/database-extensions.cs +20 -0
- package/framework/templates/code/dotnet/extensions/handler-registration.cs +38 -0
- package/framework/templates/code/dotnet/extensions/health-checks.cs +24 -0
- package/framework/templates/code/dotnet/extensions/map-endpoints.cs +35 -0
- package/framework/templates/code/dotnet/extensions/result-extensions.cs +29 -0
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -0
- package/framework/templates/code/dotnet/feature/entity.cs.hbs +8 -0
- package/framework/templates/code/dotnet/feature/errors.cs.hbs +8 -0
- package/framework/templates/code/dotnet/feature/handler.cs.hbs +24 -0
- package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -0
- package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -0
- package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -0
- package/framework/templates/code/dotnet/jobs/job.cs +21 -17
- package/framework/templates/code/dotnet/pipelines/logging-decorator.cs +31 -0
- package/framework/templates/code/dotnet/pipelines/validation-decorator.cs +97 -0
- package/framework/templates/code/dotnet/test.cs +192 -106
- package/framework/templates/context/ARCHITECTURE.md +89 -0
- package/framework/templates/context/CONTEXT-FEATURE.md +2 -2
- package/framework/templates/context/CONTEXT.md +180 -181
- package/framework/templates/context/design-system.md +1 -5
- package/framework/templates/docs/onboarding.md +2 -3
- package/framework/templates/docs/proposal.md +171 -182
- package/framework/templates/docs/spec.md +1 -3
- package/framework/templates/docs/ui-components.md +0 -72
- package/framework/templates/examples/design-system-examples.md +4 -4
- package/framework/templates/feature/decisions.md +0 -66
- package/framework/templates/feature/recap.md +1 -2
- package/framework/templates/infrastructure/github/README.md +56 -593
- package/framework/templates/integrations/clerk-config.cs +0 -41
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +2 -2
- package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +1 -2
- package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +83 -126
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +2 -2
- package/framework/templates/project/validate.js +2 -4
- package/framework/templates/ui/design-system.css +1 -1
- package/framework/workflows/README.md +8 -8
- package/framework/workflows/configs/fast-track.json +51 -0
- package/framework/workflows/configs/full.json +68 -0
- package/framework/workflows/configs/standard.json +7 -3
- package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +1 -1
- package/framework/workflows/docs/enforcement-pipeline.md +18 -19
- package/framework/workflows/docs/full-morph.md +69 -76
- package/framework/workflows/docs/standard.md +49 -44
- package/framework/workflows/docs/ui-refresh.md +1 -1
- package/package.json +3 -3
- package/src/commands/agents/dispatch-agents.js +55 -116
- package/src/commands/context/context-refresh.js +79 -0
- package/src/commands/phase/phase-reset.js +1 -1
- package/src/commands/project/doctor.js +10 -32
- package/src/commands/project/init.js +12 -0
- package/src/commands/project/status.js +6 -12
- package/src/commands/scaffold/scaffold.js +131 -0
- package/src/commands/scope/escalate.js +1 -1
- package/src/commands/state/advance-phase.js +15 -29
- package/src/commands/state/state.js +20 -5
- package/src/commands/tasks/task.js +0 -30
- package/src/commands/validation/validate-feature.js +3 -10
- package/src/core/paths/output-schema.js +12 -13
- package/src/core/state/phase-state-machine.js +211 -217
- package/src/core/state/state-manager.js +9 -9
- package/src/lib/agents/agents-manager.js +2 -2
- package/src/lib/agents/output-collector.js +1 -2
- package/src/lib/detectors/design-system-detector.js +4 -4
- package/src/lib/detectors/index.js +1 -11
- package/src/lib/generators/architecture-scanner.js +640 -0
- package/src/lib/generators/context-generator.js +3 -3
- package/src/lib/generators/design-system-generator.js +508 -587
- package/src/lib/generators/index.js +12 -10
- package/src/lib/generators/metadata-extractor.js +386 -387
- package/src/lib/generators/recap-generator.js +4 -4
- package/src/lib/generators/scaffold-generator.js +317 -0
- package/src/lib/generators/settings-generator.js +0 -1
- package/src/lib/phase-chain/phase-validator.js +64 -42
- package/src/lib/stack/stack-profile.js +2 -2
- package/src/lib/standards/digest-builder.js +72 -285
- package/src/lib/tasks/task-parser.js +11 -5
- package/src/lib/validators/architecture/architecture-validator.js +259 -387
- package/src/lib/validators/content/content-validator.js +287 -287
- package/src/lib/validators/css/css-validator.js +340 -352
- package/src/lib/validators/packages/package-validator.js +347 -360
- package/src/lib/validators/shared/issue-counter.js +14 -18
- package/src/lib/validators/validation-runner.js +3 -19
- package/src/scripts/setup-infra.js +1 -1
- package/src/utils/agents-installer.js +61 -10
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +11 -19
- package/src/utils/skills-installer.js +178 -178
- package/framework/agents/architecture/prompt-engineer.md +0 -195
- package/framework/agents/backend/api-designer.md +0 -106
- package/framework/agents/frontend/blazor-builder.md +0 -229
- package/framework/agents/frontend/nextjs-ui-specialist.md +0 -218
- package/framework/agents/infrastructure/azure-architect.md +0 -150
- package/framework/agents/infrastructure/azure-deploy-specialist.md +0 -707
- package/framework/agents/infrastructure/bicep-architect.md +0 -132
- package/framework/agents/infrastructure/container-specialist.md +0 -137
- package/framework/agents/infrastructure/devops-engineer.md +0 -126
- package/framework/agents/integrations/azure-identity.md +0 -148
- package/framework/agents/quality/code-analyzer.md +0 -239
- package/framework/agents/quality/testing-specialist.md +0 -130
- package/framework/hooks/claude-code/notification/approval-reminder.js +0 -57
- package/framework/hooks/claude-code/post-tool-use/context-refresh.js +0 -109
- package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +0 -78
- package/framework/index/troubleshooting-index.json +0 -184
- package/framework/rules/testing-standards.md +0 -14
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +0 -230
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +0 -70
- package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +0 -256
- package/framework/skills/level-1-workflows/morph-phase-clarify/references/clarifications-example.md +0 -117
- package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +0 -269
- package/framework/standards/ai-agents/blazor-ui.md +0 -364
- package/framework/standards/architecture/ddd/aggregates.md +0 -120
- package/framework/standards/architecture/ddd/bounded-contexts.md +0 -105
- package/framework/standards/architecture/ddd/complexity-levels.md +0 -108
- package/framework/standards/architecture/ddd/entities.md +0 -99
- package/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
- package/framework/standards/architecture/ddd/value-objects.md +0 -124
- package/framework/standards/backend/api/minimal-api.md +0 -494
- package/framework/standards/backend/api/rest.md +0 -492
- package/framework/standards/backend/authentication/passkeys.md +0 -428
- package/framework/standards/backend/database/ef-core.md +0 -199
- package/framework/standards/backend/database/migrations.md +0 -393
- package/framework/standards/backend/database/repository-patterns.md +0 -528
- package/framework/standards/backend/dotnet/async.md +0 -366
- package/framework/standards/backend/dotnet/core.md +0 -117
- package/framework/standards/backend/dotnet/di.md +0 -439
- package/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
- package/framework/standards/context/analytics.md +0 -96
- package/framework/standards/context/bundles.md +0 -110
- package/framework/standards/context/priming.md +0 -78
- package/framework/standards/core/architecture.md +0 -185
- package/framework/standards/core/coding.md +0 -214
- package/framework/standards/core/git-branching-strategy.md +0 -403
- package/framework/standards/core/git.md +0 -185
- package/framework/standards/core/testing.md +0 -295
- package/framework/standards/data/nosql/blob-storage.md +0 -102
- package/framework/standards/data/vector-search/azure-ai-search.md +0 -121
- package/framework/standards/frontend/blazor/design-checklist.md +0 -222
- package/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
- package/framework/standards/frontend/blazor/fluent-ui.md +0 -137
- package/framework/standards/frontend/blazor/html-conversion.md +0 -184
- package/framework/standards/frontend/blazor/lifecycle.md +0 -195
- package/framework/standards/frontend/blazor/pitfalls.md +0 -198
- package/framework/standards/frontend/blazor/state.md +0 -191
- package/framework/standards/frontend/design-system/aesthetic-direction.md +0 -266
- package/framework/standards/frontend/design-system/design-trends.md +0 -171
- package/framework/standards/infrastructure/azure/azure.md +0 -624
- package/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
- package/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
- package/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
- package/framework/standards/infrastructure/azure/services/functions.md +0 -486
- package/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
- package/framework/standards/infrastructure/azure/services/storage.md +0 -407
- package/framework/standards/infrastructure/vercel/vercel-database.md +0 -106
- package/framework/standards/integration/api/graphql.md +0 -91
- package/framework/standards/integration/api/grpc.md +0 -114
- package/framework/standards/integration/api/rest-design.md +0 -95
- package/framework/standards/integration/event-driven/cqrs.md +0 -101
- package/framework/standards/integration/event-driven/event-sourcing.md +0 -124
- package/framework/standards/integration/event-driven/service-bus.md +0 -95
- package/framework/standards/observability/logging.md +0 -131
- package/framework/standards/observability/metrics.md +0 -121
- package/framework/standards/observability/monitoring.md +0 -114
- package/framework/standards/observability/tracing.md +0 -132
- package/framework/standards/workflows/parallel-execution.md +0 -112
- package/framework/standards/workflows/thread-management.md +0 -113
- package/framework/templates/code/dotnet/backend/service.cs +0 -139
- package/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
- package/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
- package/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
- package/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
- package/framework/templates/code/dotnet/contracts/contracts-level1.cs +0 -69
- package/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
- package/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
- package/framework/templates/code/dotnet/frontend/component.razor +0 -239
- package/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
- package/framework/templates/infrastructure/azure/README.md +0 -286
- package/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
- package/framework/templates/infrastructure/azure/app-service.bicep +0 -164
- package/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
- package/framework/templates/infrastructure/azure/container-app.bicep +0 -156
- package/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
- package/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
- package/framework/templates/infrastructure/azure/deploy.sh +0 -208
- package/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
- package/framework/templates/infrastructure/azure/main.bicep +0 -189
- package/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
- package/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
- package/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
- package/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
- package/framework/templates/infrastructure/azure/storage.bicep +0 -106
- package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
- package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
- package/framework/templates/integrations/azure-identity-config.cs +0 -288
- package/framework/templates/project-structure/dotnet-ddd.md +0 -70
- package/framework/templates/saas/subscription.cs +0 -347
- package/framework/templates/saas/tenant.cs +0 -338
- package/framework/templates/ui/FluentDesignTheme.cs +0 -149
- package/framework/templates/ui/MudTheme.cs +0 -281
- package/framework/workflows/configs/nodejs-cli.json +0 -40
- package/src/commands/standards/context-budget.js +0 -89
- package/src/lib/standards/index.js +0 -7
- package/src/lib/standards/standards-context-injector.js +0 -302
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +0 -316
- package/src/lib/validators/blazor/blazor-state-validator.js +0 -279
- package/src/lib/validators/blazor/blazor-validator.js +0 -369
- package/src/lib/validators/blazor/index.js +0 -9
|
@@ -57,9 +57,9 @@ Do NOT proceed until all phases are complete and all gates approved.
|
|
|
57
57
|
Read all prerequisite files in a single parallel call — every file listed here matters for implementation quality:
|
|
58
58
|
|
|
59
59
|
```
|
|
60
|
-
Read: .morph/features/$ARGUMENTS/
|
|
61
|
-
+ Read: .morph/features/$ARGUMENTS/
|
|
62
|
-
+ Read: .morph/features/$ARGUMENTS/
|
|
60
|
+
Read: .morph/features/$ARGUMENTS/2-design/spec.md (→ functional requirements, API contracts)
|
|
61
|
+
+ Read: .morph/features/$ARGUMENTS/2-design/contracts.cs (or contracts.ts / contracts-vsa.cs → C# interfaces)
|
|
62
|
+
+ Read: .morph/features/$ARGUMENTS/2-design/decisions.md (→ ADRs, architectural choices)
|
|
63
63
|
+ Read: .morph/features/$ARGUMENTS/3-plan/plan.md (→ TDD structure, execution strategy)
|
|
64
64
|
+ Read: .morph/features/$ARGUMENTS/4-tasks/tasks.md (→ task breakdown with T### IDs)
|
|
65
65
|
+ Read: .morph/config/config.json (→ architecture.style for VSA routing)
|
|
@@ -82,7 +82,6 @@ cat .morph/config/config.json | grep -A3 '"architecture"'
|
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
- **`"vertical-slice"`** → follow VSA implementation patterns from `framework/standards/architecture/vertical-slice/vertical-slice.md`. Each task is a complete slice (Handler + Validator + Endpoint in one folder).
|
|
85
|
-
- **Otherwise** → follow DDD/Clean Architecture patterns. Tasks map to domain layers.
|
|
86
85
|
|
|
87
86
|
### 4. Get agent dispatch config
|
|
88
87
|
|
|
@@ -96,7 +95,7 @@ This shows which agents are active for implementation and how tasks can be group
|
|
|
96
95
|
morph-spec dispatch-agents $ARGUMENTS implement
|
|
97
96
|
```
|
|
98
97
|
|
|
99
|
-
The JSON output includes `shouldDispatch`, `agents
|
|
98
|
+
The JSON output includes `shouldDispatch`, `recommended` (agents by group), and `tasks` (task IDs by group) for multi-agent coordination.
|
|
100
99
|
|
|
101
100
|
---
|
|
102
101
|
|
|
@@ -142,7 +141,6 @@ morph-spec task start $ARGUMENTS {task-id}
|
|
|
142
141
|
# - Follow spec.md and contracts
|
|
143
142
|
# - Follow coding standards from framework/standards/ and .morph/context/
|
|
144
143
|
# - For VSA: create all slice files in one folder (Handler + Validator + Endpoint)
|
|
145
|
-
# - For DDD: implement in the correct domain layer
|
|
146
144
|
|
|
147
145
|
# 3. Verify before completing — run validate-feature or check your work
|
|
148
146
|
# matches the spec and contracts before marking done
|
|
@@ -1,269 +1,192 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Validate project readiness before
|
|
3
|
-
argument-hint: [feature-name]
|
|
4
|
-
allowed-tools: Read, Bash, Glob, Grep
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Pre-Flight Check for
|
|
8
|
-
|
|
9
|
-
Validates project readiness before deploying to
|
|
10
|
-
|
|
11
|
-
## Usage
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
/morph-preflight
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Purpose
|
|
18
|
-
|
|
19
|
-
Detect problems **before** deploy that would cause production failures. Saves time and avoids debugging in
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## MORPH-SPEC Validation (run before all other checks)
|
|
24
|
-
|
|
25
|
-
These checks verify that the morph-spec workflow is complete for the feature being deployed.
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# Verify implementation is complete
|
|
29
|
-
morph-spec state get {feature}
|
|
30
|
-
morph-spec approval-status {feature}
|
|
31
|
-
morph-spec validate-feature {feature}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
| Check | Command | Pass Criteria |
|
|
35
|
-
|-------|---------|---------------|
|
|
36
|
-
| Phase is implement or later | `state get` | phase derived as `implement` |
|
|
37
|
-
| All gates approved | `approval-status` | design, plan, tasks gates all approved |
|
|
38
|
-
| Feature validation passes | `validate-feature` | 100% pass rate |
|
|
39
|
-
| All tasks complete | `state get` → tasks
|
|
40
|
-
| Recap generated | Read `5-implement/recap.md` | File exists and is non-empty |
|
|
41
|
-
|
|
42
|
-
**If any MORPH check fails:** Show which check failed and recommend: `Run /morph-apply {feature} to complete implementation before deploying.`
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## Test Suite (run before infrastructure checks)
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
dotnet test --verbosity normal
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**Pass criteria:** 100% test pass rate. Zero tolerance — any failing test blocks deployment.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
**
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
**
|
|
88
|
-
```bash
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
- Dockerfile
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
**
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
**
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
```bash
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
## Example Output
|
|
194
|
-
|
|
195
|
-
```
|
|
196
|
-
🔍 MORPH Pre-Flight Check: Azure Deployment
|
|
197
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
198
|
-
|
|
199
|
-
✅ Packages: No version conflicts detected
|
|
200
|
-
✅ Migrations: No pending model changes
|
|
201
|
-
✅ Dockerfile: Valid multi-stage build
|
|
202
|
-
✅ Blazor Assets: RequiresAspNetWebAssets=true
|
|
203
|
-
✅ Bicep: Syntax valid
|
|
204
|
-
❌ Key Vault: URI not configured in appsettings.Production.json
|
|
205
|
-
⚠️ Connection Strings: Found password in appsettings.Staging.json
|
|
206
|
-
|
|
207
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
208
|
-
|
|
209
|
-
📋 Summary: 5 passed, 1 failed, 1 warning
|
|
210
|
-
|
|
211
|
-
❌ BLOCKED: Fix Key Vault configuration before deploy!
|
|
212
|
-
|
|
213
|
-
Recommended fixes:
|
|
214
|
-
1. Add KeyVaultUri to appsettings.Production.json
|
|
215
|
-
2. Move password from appsettings.Staging.json to Key Vault
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Usage Workflow
|
|
221
|
-
|
|
222
|
-
### Before creating PR for production
|
|
223
|
-
|
|
224
|
-
```bash
|
|
225
|
-
/morph-preflight azure
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
### In CI/CD pipeline
|
|
229
|
-
|
|
230
|
-
```yaml
|
|
231
|
-
- script: |
|
|
232
|
-
# Package check
|
|
233
|
-
dotnet restore 2>&1 | grep -E "NU1605|NU1608" && exit 1
|
|
234
|
-
|
|
235
|
-
# Migration check
|
|
236
|
-
dotnet ef migrations has-pending-model-changes \
|
|
237
|
-
--project src/Infrastructure \
|
|
238
|
-
--startup-project src/Web
|
|
239
|
-
if [ $? -ne 0 ]; then exit 1; fi
|
|
240
|
-
|
|
241
|
-
# Bicep check
|
|
242
|
-
az bicep build --file infra/main.bicep --stdout > /dev/null
|
|
243
|
-
if [ $? -ne 0 ]; then exit 1; fi
|
|
244
|
-
|
|
245
|
-
echo "Pre-flight checks passed!"
|
|
246
|
-
displayName: 'Pre-flight validation'
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
## Future Validations (Roadmap)
|
|
252
|
-
|
|
253
|
-
- [ ] Cost estimation validation (within budget)
|
|
254
|
-
- [ ] RBAC permissions check
|
|
255
|
-
- [ ] Network security rules validation
|
|
256
|
-
- [ ] Health probe endpoint exists
|
|
257
|
-
- [ ] Application Insights configured
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
## References
|
|
262
|
-
|
|
263
|
-
- [azure.md](../../standards/azure.md) - Azure Standards
|
|
264
|
-
- [dotnet10-migration.md](../../standards/dotnet10-migration.md) - Breaking changes .NET 10
|
|
265
|
-
- [blazor-efcore.md](../../../../framework/standards/blazor-efcore.md) - EF Core patterns
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
*MORPH-SPEC by Polymorphism Tech*
|
|
1
|
+
---
|
|
2
|
+
description: Validate project readiness before deploy — checks specs, contracts, tests, Docker, Supabase, and EasyPanel configuration
|
|
3
|
+
argument-hint: [feature-name]
|
|
4
|
+
allowed-tools: Read, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Pre-Flight Check for Deployment
|
|
8
|
+
|
|
9
|
+
Validates project readiness before deploying to Docker/EasyPanel + Supabase.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/morph-preflight
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Purpose
|
|
18
|
+
|
|
19
|
+
Detect problems **before** deploy that would cause production failures. Saves time and avoids debugging in production.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## MORPH-SPEC Validation (run before all other checks)
|
|
24
|
+
|
|
25
|
+
These checks verify that the morph-spec workflow is complete for the feature being deployed.
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Verify implementation is complete
|
|
29
|
+
morph-spec state get {feature}
|
|
30
|
+
morph-spec approval-status {feature}
|
|
31
|
+
morph-spec validate-feature {feature}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
| Check | Command | Pass Criteria |
|
|
35
|
+
|-------|---------|---------------|
|
|
36
|
+
| Phase is implement or later | `state get` | phase derived as `implement` |
|
|
37
|
+
| All gates approved | `approval-status` | design, plan, tasks gates all approved |
|
|
38
|
+
| Feature validation passes | `validate-feature` | 100% pass rate |
|
|
39
|
+
| All tasks complete | `state get` → tasks | 0 tasks in `pending` or `in_progress` |
|
|
40
|
+
| Recap generated | Read `5-implement/recap.md` | File exists and is non-empty |
|
|
41
|
+
|
|
42
|
+
**If any MORPH check fails:** Show which check failed and recommend: `Run /morph-apply {feature} to complete implementation before deploying.`
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Test Suite (run before infrastructure checks)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
dotnet test --verbosity normal
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Pass criteria:** 100% test pass rate. Zero tolerance — any failing test blocks deployment.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Validations Performed
|
|
57
|
+
|
|
58
|
+
### 1. Package Version Conflicts
|
|
59
|
+
|
|
60
|
+
**What it checks:**
|
|
61
|
+
- No version conflicts (NU1605, NU1608)
|
|
62
|
+
- Critical packages with compatible versions
|
|
63
|
+
|
|
64
|
+
**How to check:**
|
|
65
|
+
```bash
|
|
66
|
+
dotnet restore --verbosity normal 2>&1 | grep -E "(NU1605|NU1608|warning)"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### 2. Supabase Migrations
|
|
72
|
+
|
|
73
|
+
**What it checks:**
|
|
74
|
+
- No pending migrations
|
|
75
|
+
- RLS policies defined for all public tables
|
|
76
|
+
- Database schema matches expected state
|
|
77
|
+
|
|
78
|
+
**How to check:**
|
|
79
|
+
```bash
|
|
80
|
+
# Check for pending migrations
|
|
81
|
+
npx supabase db diff --local
|
|
82
|
+
|
|
83
|
+
# Verify RLS is enabled on all tables
|
|
84
|
+
npx supabase db lint --level warning
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Common fix:**
|
|
88
|
+
```bash
|
|
89
|
+
npx supabase migration new <migration-name>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### 3. Dockerfile Validation
|
|
95
|
+
|
|
96
|
+
**What it checks:**
|
|
97
|
+
- Dockerfile exists for each service (API, Web)
|
|
98
|
+
- Multi-stage build configured
|
|
99
|
+
- EXPOSE ports correct
|
|
100
|
+
- ENTRYPOINT defined
|
|
101
|
+
- .dockerignore present
|
|
102
|
+
|
|
103
|
+
**How to check:**
|
|
104
|
+
```bash
|
|
105
|
+
# Validate API Dockerfile
|
|
106
|
+
docker build --check -f Dockerfile.api .
|
|
107
|
+
|
|
108
|
+
# Validate Web Dockerfile
|
|
109
|
+
docker build --check -f Dockerfile.web .
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
### 4. Docker Compose
|
|
115
|
+
|
|
116
|
+
**What it checks:**
|
|
117
|
+
- `docker-compose.yml` exists and is valid
|
|
118
|
+
- All services have health checks
|
|
119
|
+
- Environment variables reference `.env` (not hardcoded)
|
|
120
|
+
- Volumes mapped correctly
|
|
121
|
+
|
|
122
|
+
**How to check:**
|
|
123
|
+
```bash
|
|
124
|
+
docker compose config --quiet
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
### 5. Environment Variables & Secrets
|
|
130
|
+
|
|
131
|
+
**What it checks:**
|
|
132
|
+
- Connection strings not hardcoded in code
|
|
133
|
+
- Secrets in environment variables (not in appsettings)
|
|
134
|
+
- `.env.example` exists with all required vars documented
|
|
135
|
+
- No credentials in source code
|
|
136
|
+
|
|
137
|
+
**How to check:**
|
|
138
|
+
```bash
|
|
139
|
+
# Detect passwords in appsettings
|
|
140
|
+
grep -rE "(Password=|Pwd=|Secret=|sk_live|pk_live)" appsettings*.json src/ --include="*.cs" --include="*.json" | grep -v Development
|
|
141
|
+
|
|
142
|
+
# Verify .env.example exists
|
|
143
|
+
test -f .env.example && echo "OK" || echo "MISSING .env.example"
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
### 6. EasyPanel Configuration
|
|
149
|
+
|
|
150
|
+
**What it checks:**
|
|
151
|
+
- Services correctly defined for EasyPanel
|
|
152
|
+
- Health check endpoints exist (`/health` or `/healthz`)
|
|
153
|
+
- Port mappings match Dockerfile EXPOSE
|
|
154
|
+
|
|
155
|
+
**How to check:**
|
|
156
|
+
```bash
|
|
157
|
+
# Verify health endpoint exists in code
|
|
158
|
+
grep -rn "MapGet.*health" src/ --include="*.cs"
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Example Output
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
MORPH Pre-Flight Check: Deployment
|
|
167
|
+
|
|
168
|
+
Packages: No version conflicts detected
|
|
169
|
+
Migrations: No pending changes
|
|
170
|
+
Dockerfile: Valid multi-stage build (API + Web)
|
|
171
|
+
Docker Compose: Valid configuration
|
|
172
|
+
Secrets: No hardcoded credentials found
|
|
173
|
+
EasyPanel: Health endpoint found at /healthz
|
|
174
|
+
|
|
175
|
+
Summary: 6 passed, 0 failed, 0 warnings
|
|
176
|
+
|
|
177
|
+
READY TO DEPLOY
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Usage Workflow
|
|
183
|
+
|
|
184
|
+
### Before creating PR for production
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
/morph-preflight
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
*MORPH-SPEC by Polymorphism Tech*
|