@polymorphism-tech/morph-spec 4.11.1 → 4.13.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/README.md +21 -29
- 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 +10 -11
- 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 +226 -1454
- package/framework/commands/morph-apply.md +4 -4
- package/framework/commands/morph-preflight.md +4 -26
- package/framework/commands/morph-proposal.md +19 -19
- package/framework/commands/morph-status.md +2 -2
- package/framework/commands/morph-troubleshoot.md +6 -13
- package/framework/hooks/README.md +1 -6
- package/framework/hooks/claude-code/post-tool-use/agent-complete.js +122 -0
- 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/dispatch-helpers.js +17 -0
- package/framework/hooks/shared/phase-utils.js +4 -8
- package/framework/hooks/shared/state-reader.js +34 -3
- package/framework/phases.json +7 -45
- 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 +58 -124
- 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/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 +0 -2
- 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 +275 -61
- 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 -2338
- 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 +342 -211
- 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/mcp/mcp-setup.js +28 -6
- package/src/commands/phase/phase-reset.js +1 -1
- package/src/commands/project/doctor.js +10 -32
- package/src/commands/project/init.js +32 -1
- 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 -298
- 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/design-system/design-system-validator.js +11 -5
- 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 +24 -3
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +21 -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 -213
- 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
|
@@ -28,31 +28,9 @@
|
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
-
## Phase 1 — Setup
|
|
32
|
-
|
|
33
|
-
**Goal:** Load context, detect stack, activate agents
|
|
34
|
-
|
|
35
|
-
| Action | Tool | Why |
|
|
36
|
-
|--------|------|-----|
|
|
37
|
-
| Verify feature state | **Bash** `morph-spec state get {feature}` | CLI command |
|
|
38
|
-
| Detect agents + standards | **Read** `.morph/framework/agents.json` → match keywords → **Bash** `morph-spec state add-agent {f} {id}` per match | Keyword matching is fast inline |
|
|
39
|
-
| Read project context | **Read** `.morph/context/README.md` | Single file |
|
|
40
|
-
| Read config | **Read** `.morph/config.json` | Single file |
|
|
41
|
-
| Scan project structure | **Glob** `src/**/*.{ts,tsx,cs}` | Understand codebase layout |
|
|
42
|
-
| Get repo metadata | **GitHub MCP** `get_repo()` | Structured repo info (if MCP available) |
|
|
43
|
-
| Get dispatch config for next phases | **Bash** `morph-spec dispatch-agents {feature} design` | Shows which agents will be dispatched in design phase |
|
|
44
|
-
| Update state | **Bash** `morph-spec state set ...` | CLI command |
|
|
45
|
-
|
|
46
|
-
**MCPs used:** GitHub (optional — for repo metadata).
|
|
47
|
-
|
|
48
|
-
**Anti-patterns:**
|
|
49
|
-
- ❌ Calling `detect-agents` CLI (it doesn't exist — read `.morph/framework/agents.json` directly)
|
|
50
|
-
- ❌ Task agent to detect project stack inline (keyword matching is fast enough directly)
|
|
51
|
-
- ❌ WebSearch for project info (it's local, use Read/Glob)
|
|
52
|
-
|
|
53
31
|
---
|
|
54
32
|
|
|
55
|
-
## Phase
|
|
33
|
+
## Phase 2 — UI/UX Design
|
|
56
34
|
|
|
57
35
|
**Goal:** Create UI mockups, design system, component specs, user flows
|
|
58
36
|
|
|
@@ -80,7 +58,7 @@
|
|
|
80
58
|
|
|
81
59
|
---
|
|
82
60
|
|
|
83
|
-
## Phase
|
|
61
|
+
## Phase 3 — Design (Technical Spec)
|
|
84
62
|
|
|
85
63
|
**Goal:** Analyze schema, create spec.md, contracts-level{N}.cs, decisions.md
|
|
86
64
|
|
|
@@ -88,11 +66,11 @@
|
|
|
88
66
|
|--------|------|-----|
|
|
89
67
|
| Read proposal + UI specs | **Read** output files | Single known files |
|
|
90
68
|
| **Get dispatch config** | **Bash** `morph-spec dispatch-agents {feature} design` | Which agents to spawn + their task prompts |
|
|
91
|
-
| **Dispatch
|
|
69
|
+
| **Dispatch architecture analyst** (parallel) | **Task** subagent with prompt from dispatch config | Analyze architecture complexity independently |
|
|
92
70
|
| **Dispatch tech leads** (parallel) | **Task** subagents (dotnet-senior, nextjs-expert, etc.) | Validate architecture independently |
|
|
93
|
-
| Get database schema | **
|
|
94
|
-
| Get table relationships | **
|
|
95
|
-
| Get RLS policies | **
|
|
71
|
+
| Get database schema | **Bash** `npx supabase db dump --local` or `psql <DB_URL>` | **PREFERRED** — real local schema |
|
|
72
|
+
| Get table relationships | **Bash** `psql <DB_URL>` FK queries | Real FK/constraint data |
|
|
73
|
+
| Get RLS policies | **Bash** `psql <DB_URL>` pg_policies query | Security analysis |
|
|
96
74
|
| **Fallback:** Find query files | **Grep** `\.from\(` or `\.select\(` in `*.ts,*.tsx,*.js,*.cs` | When no DB MCP available |
|
|
97
75
|
| **Fallback:** Find type definitions | **Glob** `src/**/types/**/*.ts` or `**/Entities/**/*.cs` | When no DB MCP available |
|
|
98
76
|
| **Fallback:** Read query/type files | **Read** each matched file | Extract field names manually |
|
|
@@ -105,45 +83,22 @@
|
|
|
105
83
|
| Create schema-analysis.md | **Write** to output directory | Document findings |
|
|
106
84
|
| Update state | **Bash** `morph-spec state mark-output {feature} schemaAnalysis && morph-spec state mark-output {feature} spec && morph-spec state mark-output {feature} contracts && morph-spec state mark-output {feature} decisions` | CLI command |
|
|
107
85
|
|
|
108
|
-
**
|
|
86
|
+
**Tools used:** Supabase CLI / psql (schema analysis — local Docker), Context7 (library research), GitHub (code search).
|
|
109
87
|
|
|
110
|
-
**Parallel dispatch opportunity:**
|
|
88
|
+
**Parallel dispatch opportunity:** Architecture complexity analysis and schema analysis (phase-codebase-analysis) are **independent** — run them as parallel Task subagents to cut design phase time.
|
|
111
89
|
|
|
112
90
|
**Anti-patterns:**
|
|
113
91
|
- ❌ Guessing field names without checking schema (use MCP or Grep first!)
|
|
114
92
|
- ❌ Task agent to read a single spec file (use Read directly)
|
|
115
|
-
- ❌ WebSearch for database schema (use Supabase
|
|
93
|
+
- ❌ WebSearch for database schema (use Supabase CLI/psql or code analysis)
|
|
116
94
|
- ❌ Manually writing contracts-level{N}.cs from scratch (use template render)
|
|
117
95
|
- ❌ Running domain analysis and schema analysis sequentially (they're independent — run in parallel)
|
|
118
96
|
|
|
119
97
|
---
|
|
120
98
|
|
|
121
|
-
## Phase 3 — Clarify
|
|
122
|
-
|
|
123
|
-
**Goal:** Identify ambiguities, ask clarification questions, update spec
|
|
124
|
-
|
|
125
|
-
| Action | Tool | Why |
|
|
126
|
-
|--------|------|-----|
|
|
127
|
-
| Read spec.md in detail | **Read** spec.md | Full content analysis |
|
|
128
|
-
| Read contracts.cs | **Read** contracts.cs | Check contract consistency |
|
|
129
|
-
| Read schema-analysis.md | **Read** schema-analysis.md | Cross-reference with spec |
|
|
130
|
-
| Verify library capabilities | **Context7 MCP** `query_docs()` | Confirm feasibility of spec requirements |
|
|
131
|
-
| Check known issues/limitations | **GitHub MCP** `search_issues()` | Library bugs affecting design |
|
|
132
|
-
| Research edge case behavior | **WebSearch** | External knowledge for edge cases |
|
|
133
|
-
| Update spec with clarifications | **Edit** spec.md | Preserve existing content, add sections |
|
|
134
|
-
| Create clarifications.md | **Bash** `morph-spec template render docs/clarifications ...` | Use template |
|
|
135
|
-
| Update state | **Bash** `morph-spec state mark-output {feature} clarifications` | CLI command |
|
|
136
|
-
|
|
137
|
-
**MCPs used:** Context7 (validate feasibility), GitHub (known issues).
|
|
138
|
-
|
|
139
|
-
**Anti-patterns:**
|
|
140
|
-
- ❌ Task agent to read spec (just Read it directly)
|
|
141
|
-
- ❌ Rewriting spec from scratch (use Edit to update sections)
|
|
142
|
-
- ❌ Skipping schema-analysis.md cross-reference (critical for accuracy)
|
|
143
|
-
|
|
144
99
|
---
|
|
145
100
|
|
|
146
|
-
## Phase
|
|
101
|
+
## Phase 6 — Tasks
|
|
147
102
|
|
|
148
103
|
**Goal:** Break spec into tasks, define dependencies, set checkpoints
|
|
149
104
|
|
|
@@ -171,7 +126,7 @@
|
|
|
171
126
|
|
|
172
127
|
---
|
|
173
128
|
|
|
174
|
-
## Phase
|
|
129
|
+
## Phase 7 — Implement
|
|
175
130
|
|
|
176
131
|
**Goal:** Implement tasks, checkpoint every 3, create recap
|
|
177
132
|
|
|
@@ -183,12 +138,13 @@
|
|
|
183
138
|
| Create new files | **Write** new source files | New entities, services, pages |
|
|
184
139
|
| Modify existing files | **Edit** existing source files | Add features to existing code |
|
|
185
140
|
| Look up API during coding | **Context7 MCP** `query_docs()` | Accurate library usage |
|
|
186
|
-
| Run database migrations | **
|
|
141
|
+
| Run database migrations | **Bash** `npx supabase migration up --local` | DDL via psql |
|
|
187
142
|
| **Fallback:** Run migrations | **Bash** `npx supabase migration ...` or `dotnet ef ...` | CLI tools |
|
|
188
143
|
| Build project | **Bash** `dotnet build` or `npm run build` | Verify compilation |
|
|
189
144
|
| Run tests | **Bash** `dotnet test` or `npm test` | Verify implementation |
|
|
190
145
|
| Checkpoint validation | **Bash** `morph-spec checkpoint ...` | Every 3 tasks |
|
|
191
|
-
| Create RLS policies | **
|
|
146
|
+
| Create RLS policies | **Bash** write SQL migration + `npx supabase migration up --local` | Security policies |
|
|
147
|
+
| Manage containers | **Bash** `docker ps`, `docker logs`, `docker compose` | Container health + debugging |
|
|
192
148
|
| Create infrastructure | **Bash** `az bicep ...` or Bicep files via Write | IaC |
|
|
193
149
|
| Create PR | **GitHub MCP** `create_pull_request()` or **Bash** `gh pr create` | Ship code |
|
|
194
150
|
| Mark task done | **Bash** `morph-spec task done T001` | State tracking |
|
|
@@ -197,7 +153,7 @@
|
|
|
197
153
|
| Screenshot para recap.md | **Playwright MCP** `browser_take_screenshot()` | Manual screenshot |
|
|
198
154
|
| Mark recap output | **Bash** `morph-spec state mark-output {feature} recap` | CLI command |
|
|
199
155
|
|
|
200
|
-
**
|
|
156
|
+
**Tools used:** Supabase CLI (migrations, RLS — local Docker), Context7 (API lookup), GitHub (PRs), Playwright (smoke test, verification).
|
|
201
157
|
|
|
202
158
|
**Parallel dispatch threshold:**
|
|
203
159
|
- `tasks.total ≥ 6` AND feature spans 2+ domains (e.g. `dotnet-senior` + `nextjs-expert`) → dispatch parallel implementers
|
|
@@ -30,16 +30,10 @@ allowed-tools: Read, Bash, Glob, Grep
|
|
|
30
30
|
- [ ] `morph-spec state get {feature}` shows `phase: proposal`
|
|
31
31
|
- [ ] `morph-spec state mark-output {feature} proposal` was called
|
|
32
32
|
|
|
33
|
-
### Phase 1 —
|
|
33
|
+
### Phase 1 — UI/UX (if applicable)
|
|
34
34
|
|
|
35
|
-
- [ ] `
|
|
36
|
-
- [ ]
|
|
37
|
-
- [ ] State updated to `phase: setup`
|
|
38
|
-
|
|
39
|
-
### Phase 1.5 — UI/UX (if applicable)
|
|
40
|
-
|
|
41
|
-
- [ ] `ui-design-system.md` exists with color tokens, typography, spacing
|
|
42
|
-
- [ ] `ui-mockups.md` exists with wireframes/ASCII mockups
|
|
35
|
+
- [ ] `design-system.md` exists with color tokens, typography, spacing
|
|
36
|
+
- [ ] `mockups.md` exists with wireframes/ASCII mockups
|
|
43
37
|
- [ ] `morph-spec validate-feature {feature} --phase uiux` passes
|
|
44
38
|
|
|
45
39
|
### Phase 2 — Design
|
|
@@ -47,16 +41,10 @@ allowed-tools: Read, Bash, Glob, Grep
|
|
|
47
41
|
- [ ] `spec.md` contains: Overview, Functional Requirements, Technical Architecture, Data Model
|
|
48
42
|
- [ ] `contracts.cs` exists with DTOs matching `schema-analysis.md`
|
|
49
43
|
- [ ] `decisions.md` contains at least 1 ADR
|
|
44
|
+
- [ ] Quality + satisfaction score ≥ 85 (or user finalized)
|
|
50
45
|
- [ ] `morph-spec validate-feature {feature} --phase design` passes
|
|
51
46
|
|
|
52
|
-
### Phase 3 —
|
|
53
|
-
|
|
54
|
-
- [ ] All clarification questions answered by user
|
|
55
|
-
- [ ] `spec.md` updated with Clarifications section
|
|
56
|
-
- [ ] `clarifications.md` exists in `1-design/`
|
|
57
|
-
- [ ] No unresolved ambiguities in spec
|
|
58
|
-
|
|
59
|
-
### Phase 4 — Plan
|
|
47
|
+
### Phase 3 — Plan
|
|
60
48
|
|
|
61
49
|
- [ ] `plan.md` exists in `.morph/features/{feature}/3-plan/`
|
|
62
50
|
- [ ] Plan contains: Goal, Architecture, Execution Strategy, Task Groups
|
|
@@ -65,14 +53,14 @@ allowed-tools: Read, Bash, Glob, Grep
|
|
|
65
53
|
- [ ] `morph-spec state mark-output {feature} plan` was called
|
|
66
54
|
- [ ] User approved plan via `morph-spec approve {feature} plan`
|
|
67
55
|
|
|
68
|
-
### Phase
|
|
56
|
+
### Phase 6 — Tasks
|
|
69
57
|
|
|
70
58
|
- [ ] `tasks.md` exists
|
|
71
59
|
- [ ] All tasks have: ID, title, description, dependencies
|
|
72
60
|
- [ ] Checkpoints defined (every 3 tasks)
|
|
73
61
|
- [ ] `morph-spec state set {feature} tasks.total N` called
|
|
74
62
|
|
|
75
|
-
### Phase
|
|
63
|
+
### Phase 7 — Implement
|
|
76
64
|
|
|
77
65
|
- [ ] All tasks marked as completed
|
|
78
66
|
- [ ] Build succeeds (`npm run build` or `dotnet build`)
|
|
@@ -23,16 +23,16 @@ const PHASE_OUTPUTS = {
|
|
|
23
23
|
{ file: '0-proposal/proposal.md', required: true },
|
|
24
24
|
],
|
|
25
25
|
design: [
|
|
26
|
-
{ file: '
|
|
27
|
-
{ file: '
|
|
28
|
-
{ file: '
|
|
29
|
-
{ file: '
|
|
26
|
+
{ file: '2-design/spec.md', required: true },
|
|
27
|
+
{ file: '2-design/contracts.cs', required: true },
|
|
28
|
+
{ file: '2-design/decisions.md', required: true },
|
|
29
|
+
{ file: '2-design/schema-analysis.md', required: false },
|
|
30
30
|
],
|
|
31
31
|
uiux: [
|
|
32
|
-
{ file: '
|
|
33
|
-
{ file: '
|
|
34
|
-
{ file: '
|
|
35
|
-
{ file: '
|
|
32
|
+
{ file: '1-ui/design-system.md', required: true },
|
|
33
|
+
{ file: '1-ui/mockups.md', required: true },
|
|
34
|
+
{ file: '1-ui/components.md', required: true },
|
|
35
|
+
{ file: '1-ui/flows.md', required: false },
|
|
36
36
|
],
|
|
37
37
|
tasks: [
|
|
38
38
|
{ file: '4-tasks/tasks.md', required: true },
|
|
@@ -3,7 +3,7 @@ name: morph-phase-codebase-analysis
|
|
|
3
3
|
description: MORPH-SPEC Design sub-phase that analyzes existing codebase and database schema, producing schema-analysis.md with real column names, types, relationships, and field mismatches. Use at the start of Design phase before generating contracts.cs to prevent incorrect field names or types.
|
|
4
4
|
user-invocable: false
|
|
5
5
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
6
|
-
cliVersion: "4.
|
|
6
|
+
cliVersion: "4.13.0"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# MORPH Codebase Analysis - Design Sub-phase
|
|
@@ -15,7 +15,7 @@ Automates existing code analysis to generate `schema-analysis.md` with real data
|
|
|
15
15
|
|
|
16
16
|
## Prerequisites
|
|
17
17
|
|
|
18
|
-
- [ ]
|
|
18
|
+
- [ ] Proposal phase completed
|
|
19
19
|
- [ ] Feature has approved `proposal.md`
|
|
20
20
|
- [ ] Project context loaded (stack, agents)
|
|
21
21
|
|
|
@@ -26,17 +26,17 @@ Automates existing code analysis to generate `schema-analysis.md` with real data
|
|
|
26
26
|
|
|
27
27
|
| Action | Tool | Alternative |
|
|
28
28
|
|------|------------|-------------|
|
|
29
|
-
| List database tables | **
|
|
30
|
-
| Get table schema | **
|
|
31
|
-
| Get FK relationships | **
|
|
32
|
-
| Get RLS policies | **
|
|
29
|
+
| List database tables | **Bash** `npx supabase db dump --local` or `psql <DB_URL>` | **Grep** `.from(` in code |
|
|
30
|
+
| Get table schema | **Bash** `psql <DB_URL> -c "SELECT ... FROM information_schema.columns"` | **Read** type definitions |
|
|
31
|
+
| Get FK relationships | **Bash** `psql <DB_URL> -c "SELECT ... FROM information_schema.table_constraints"` | **Grep** JOIN/FK patterns |
|
|
32
|
+
| Get RLS policies | **Bash** `psql <DB_URL> -c "SELECT ... FROM pg_policies"` | **Read** policy files |
|
|
33
33
|
| Find queries in code | **Grep** `\.from\(` in `*.ts,*.tsx,*.js,*.cs` | — |
|
|
34
34
|
| Find type definitions | **Glob** `src/**/types/**/*.ts` or `**/Entities/**/*.cs` | — |
|
|
35
35
|
| Read found files | **Read** each file | — |
|
|
36
36
|
| Complex multi-file analysis | **Task** (subagent Explore) | Read individual |
|
|
37
37
|
| Generate schema-analysis.md | **Write** using template | **Bash** template render |
|
|
38
38
|
|
|
39
|
-
**
|
|
39
|
+
**Tools for this phase:** Supabase CLI / psql (schema — **PRIORITY**, local Docker), Generic database CLIs.
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
@@ -48,57 +48,56 @@ Automates existing code analysis to generate `schema-analysis.md` with real data
|
|
|
48
48
|
Verify first with a test call before attempting to use it.
|
|
49
49
|
|
|
50
50
|
```
|
|
51
|
-
|
|
52
|
-
→
|
|
53
|
-
→
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
3. IF no MCP available:
|
|
51
|
+
0. **Docker health check:** Run `docker info --format '{{.ServerVersion}}'` to verify Docker is running.
|
|
52
|
+
→ IF Docker is not running → warn user: "Docker Desktop not running — Supabase local requires Docker."
|
|
53
|
+
→ Ask user via AskUserQuestion: start Docker or fall back to Method B.
|
|
54
|
+
|
|
55
|
+
1. IF Supabase project detected (supabase/ dir exists OR config.json stack includes supabase):
|
|
56
|
+
→ Run `npx supabase status` to verify local Docker is running
|
|
57
|
+
→ IF running (exit 0): extract DB URL from output → Use Method A (direct CLI/psql)
|
|
58
|
+
→ IF not running (exit non-zero):
|
|
59
|
+
→ Log: "Supabase local not running — run `npx supabase start`"
|
|
60
|
+
→ Ask user via AskUserQuestion: start it or fall back to Method B
|
|
61
|
+
|
|
62
|
+
2. IF no Supabase detected:
|
|
65
63
|
→ Use Method B (static code analysis)
|
|
66
64
|
```
|
|
67
65
|
|
|
68
|
-
**Signs of
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
- Returned schema doesn't match code (e.g., tables exist in code but not in MCP)
|
|
66
|
+
**Signs of unavailable local Supabase:**
|
|
67
|
+
- `npx supabase status` exits with non-zero code
|
|
68
|
+
- Docker not running or Supabase containers stopped
|
|
72
69
|
- Project uses database other than Supabase (CloudSQL, RDS, Azure SQL, etc.)
|
|
73
70
|
|
|
74
|
-
### Step 2A:
|
|
71
|
+
### Step 2A: CLI Method (Preferred — Local Docker)
|
|
75
72
|
|
|
76
|
-
**Tools:** Supabase
|
|
73
|
+
**Tools:** Bash (Supabase CLI + psql)
|
|
77
74
|
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
```bash
|
|
76
|
+
# 0. Get local DB URL (port may vary per instance)
|
|
77
|
+
npx supabase status
|
|
78
|
+
# → Extract "DB URL" line, e.g.: postgresql://postgres:postgres@127.0.0.1:54322/postgres
|
|
81
79
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
// 2a. Complete schema
|
|
85
|
-
const schema = await mcp__supabase__get_table_schema({ table: table.name });
|
|
86
|
-
// → column_name, data_type, is_nullable, column_default
|
|
80
|
+
# 1. List all tables
|
|
81
|
+
npx supabase db dump --local --schema public 2>/dev/null | grep "CREATE TABLE"
|
|
87
82
|
|
|
88
|
-
|
|
89
|
-
const rels = await mcp__supabase__get_relationships({ table: table.name });
|
|
90
|
-
// → foreign_table, foreign_column, constraint_type
|
|
83
|
+
# 2. For each feature-relevant table:
|
|
91
84
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
});
|
|
85
|
+
# 2a. Complete schema
|
|
86
|
+
psql $DB_URL -c "SELECT column_name, data_type, is_nullable, column_default \
|
|
87
|
+
FROM information_schema.columns WHERE table_name = 'TABLE_NAME' ORDER BY ordinal_position"
|
|
96
88
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
89
|
+
# 2b. Relationships (FK)
|
|
90
|
+
psql $DB_URL -c "SELECT tc.table_name, kcu.column_name, ccu.table_name AS foreign_table, \
|
|
91
|
+
ccu.column_name AS foreign_column FROM information_schema.table_constraints tc \
|
|
92
|
+
JOIN information_schema.key_column_usage kcu ON tc.constraint_name = kcu.constraint_name \
|
|
93
|
+
JOIN information_schema.constraint_column_usage ccu ON tc.constraint_name = ccu.constraint_name \
|
|
94
|
+
WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = 'TABLE_NAME'"
|
|
95
|
+
|
|
96
|
+
# 2c. Indexes
|
|
97
|
+
psql $DB_URL -c "SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'TABLE_NAME'"
|
|
98
|
+
|
|
99
|
+
# 2d. RLS policies (security)
|
|
100
|
+
psql $DB_URL -c "SELECT policyname, cmd, qual FROM pg_policies WHERE tablename = 'TABLE_NAME'"
|
|
102
101
|
```
|
|
103
102
|
|
|
104
103
|
### Step 2B: Static Analysis Method (Fallback)
|
|
@@ -155,7 +154,7 @@ The template is at `framework/templates/docs/schema-analysis.md`. Use it via:
|
|
|
155
154
|
|
|
156
155
|
```bash
|
|
157
156
|
morph-spec template render docs/schema-analysis \
|
|
158
|
-
.morph/features/{feature}/
|
|
157
|
+
.morph/features/{feature}/2-design/schema-analysis.md \
|
|
159
158
|
'{
|
|
160
159
|
"FEATURE_NAME": "{feature}",
|
|
161
160
|
"FEATURE_NAME_TITLE": "{Feature Display Name}",
|
|
@@ -214,7 +213,7 @@ Use the template at `framework/templates/docs/schema-analysis.md`:
|
|
|
214
213
|
|
|
215
214
|
```bash
|
|
216
215
|
morph-spec template render docs/schema-analysis \
|
|
217
|
-
.morph/features/{feature-name}/
|
|
216
|
+
.morph/features/{feature-name}/2-design/schema-analysis.md \
|
|
218
217
|
'{ "FEATURE_NAME": "{feature-name}", "DATE": "..." }'
|
|
219
218
|
```
|
|
220
219
|
|
|
@@ -230,7 +229,7 @@ morph-spec state mark-output {feature-name} schema-analysis
|
|
|
230
229
|
|
|
231
230
|
## Outputs
|
|
232
231
|
|
|
233
|
-
- `.morph/features/{feature}/
|
|
232
|
+
- `.morph/features/{feature}/2-design/schema-analysis.md`
|
|
234
233
|
- State updated with `schemaAnalysis` output
|
|
235
234
|
|
|
236
235
|
## CHECKPOINT
|