@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
package/CLAUDE.md
CHANGED
|
@@ -51,16 +51,16 @@ No build step — pure ESM JavaScript, runs directly via Node.js 18+.
|
|
|
51
51
|
- `installers/` — Agents, skills, hooks installers for target projects
|
|
52
52
|
- **`src/utils/`** — Shared utilities (logger, banner, file-copier, claude-settings-manager, etc.)
|
|
53
53
|
- **`framework/`** — Metadata installed into target projects (READ-ONLY at runtime):
|
|
54
|
-
- `agents.json` (v4.0.0
|
|
55
|
-
- `phases.json` (
|
|
56
|
-
- `standards/STANDARDS.json`
|
|
57
|
-
- `hooks/claude-code/` — Hook scripts (
|
|
54
|
+
- `agents.json` (v4.0.0)
|
|
55
|
+
- `phases.json` (7 phases incl. sync)
|
|
56
|
+
- `standards/STANDARDS.json`
|
|
57
|
+
- `hooks/claude-code/` — Hook scripts (fail-open design)
|
|
58
58
|
- `skills/` — Morph skills (level-0-meta + level-1-workflows)
|
|
59
59
|
- `templates/` — Handlebars templates for code generation
|
|
60
60
|
|
|
61
61
|
### Key Architectural Patterns
|
|
62
62
|
|
|
63
|
-
**Dual-layer phase tracking:** Phase is derived from filesystem (`derivePhase()` scans for highest-numbered phase folder) — state.json only overrides for lightweight phases (
|
|
63
|
+
**Dual-layer phase tracking:** Phase is derived from filesystem (`derivePhase()` scans for highest-numbered phase folder) — state.json only overrides for lightweight phases (sync).
|
|
64
64
|
|
|
65
65
|
**Output schema as single source of truth:** `src/core/paths/output-schema.js` defines all output types. Run `npm run generate` after modifying it to update derived reference files.
|
|
66
66
|
|
|
@@ -70,12 +70,12 @@ No build step — pure ESM JavaScript, runs directly via Node.js 18+.
|
|
|
70
70
|
|
|
71
71
|
**Atomic state writes:** `state-manager.js` writes to a process-ID temp file then renames, preventing corruption from concurrent CLI invocations.
|
|
72
72
|
|
|
73
|
-
**Stack-aware filtering:** Assets declare `stacks: ['dotnet'
|
|
73
|
+
**Stack-aware filtering:** Assets declare `stacks: ['dotnet']` in YAML frontmatter. `setup-infra.js` reads `config.json → project.stack`, splits into tags, and installs only matching assets. `stacks: ['*']` = universal.
|
|
74
74
|
|
|
75
75
|
### Phase Sequence
|
|
76
76
|
|
|
77
77
|
```
|
|
78
|
-
proposal →
|
|
78
|
+
proposal → [uiux] → design → plan → tasks → implement → [sync]
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
Phases in brackets are optional. Approval gates exist at: proposal, design, plan, tasks, uiux.
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Spec-driven development framework for multi-stack projects. Turns feature requests into implementation-ready code through structured, AI-orchestrated phases.
|
|
4
4
|
|
|
5
5
|
**Package:** `@polymorphism-tech/morph-spec`
|
|
6
|
-
**Version:** 4.
|
|
6
|
+
**Version:** 4.14.0
|
|
7
7
|
**Requires:** Node.js 18+, Claude Code
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -61,22 +61,22 @@ your-project/
|
|
|
61
61
|
│ ├── config/
|
|
62
62
|
│ │ └── config.json # Project configuration
|
|
63
63
|
│ ├── framework/
|
|
64
|
-
│ │ ├── agents.json #
|
|
64
|
+
│ │ ├── agents.json # 22 agents in 4 tiers (READ-ONLY)
|
|
65
65
|
│ │ ├── standards/ # Coding and architecture standards (READ-ONLY)
|
|
66
66
|
│ │ └── templates/ # Code and IaC templates (READ-ONLY)
|
|
67
67
|
│ ├── context/ # Project context (README.md, standards.md)
|
|
68
68
|
│ ├── features/ # Active features
|
|
69
69
|
│ │ └── {feature}/
|
|
70
70
|
│ │ ├── 0-proposal/ # User story + acceptance criteria
|
|
71
|
-
│ │ ├── 1-
|
|
72
|
-
│ │ ├── 2-
|
|
71
|
+
│ │ ├── 1-ui/ # UI/UX design (optional, UI-heavy features)
|
|
72
|
+
│ │ ├── 2-design/ # Technical spec, contracts, decisions
|
|
73
73
|
│ │ ├── 3-tasks/ # Atomic task list
|
|
74
74
|
│ │ └── 4-implement/ # Recap and implementation notes
|
|
75
75
|
│ └── state.json # READ-ONLY — managed by CLI only
|
|
76
76
|
└── .claude/
|
|
77
77
|
├── commands/ # Slash commands
|
|
78
78
|
├── skills/ # Framework skills (flat .md files)
|
|
79
|
-
├── agents/ # Native subagents (
|
|
79
|
+
├── agents/ # Native subagents (22 agents)
|
|
80
80
|
├── rules/ # Path-scoped standards rules
|
|
81
81
|
└── settings.local.json # Hooks configuration (10 hooks)
|
|
82
82
|
```
|
|
@@ -88,7 +88,7 @@ your-project/
|
|
|
88
88
|
Features move through structured phases. Some are optional depending on feature type.
|
|
89
89
|
|
|
90
90
|
```
|
|
91
|
-
proposal →
|
|
91
|
+
proposal → [uiux] → design → plan → tasks → implement → [sync]
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
Phases in brackets are optional. `uiux` applies to UI-heavy features. `sync` is a post-implementation reconciliation step.
|
|
@@ -99,16 +99,18 @@ Phases in brackets are optional. `uiux` applies to UI-heavy features. `sync` is
|
|
|
99
99
|
| Phase | Directory | Key files |
|
|
100
100
|
| --------- | -------------- | ------------------------------------------------------------- |
|
|
101
101
|
| Proposal | `0-proposal/` | `proposal.md` |
|
|
102
|
-
|
|
|
103
|
-
|
|
|
104
|
-
|
|
|
105
|
-
|
|
|
102
|
+
| UI/UX | `1-ui/` | `design-system.md`, `mockups.md`, `components.md`, `flows.md` |
|
|
103
|
+
| Design | `2-design/` | `spec.md`, `contracts.cs`, `decisions.md` |
|
|
104
|
+
| Plan | `3-plan/` | `plan.md` |
|
|
105
|
+
| Tasks | `4-tasks/` | `tasks.md` |
|
|
106
|
+
| Implement | `5-implement/` | `recap.md` |
|
|
106
107
|
|
|
107
108
|
|
|
108
109
|
### Approval gates
|
|
109
110
|
|
|
110
|
-
- **Design gate** — Spec must be approved before moving to
|
|
111
|
-
- **
|
|
111
|
+
- **Design gate** — Spec must be approved before moving to Plan.
|
|
112
|
+
- **Plan gate** — Plan must be approved before moving to Tasks.
|
|
113
|
+
- **Tasks gate** — Task list must be approved before implementation starts.
|
|
112
114
|
|
|
113
115
|
Check gate status:
|
|
114
116
|
|
|
@@ -154,7 +156,6 @@ morph-spec state set {feature} {key} {value}
|
|
|
154
156
|
morph-spec phase advance {feature} # Advance to next phase
|
|
155
157
|
morph-spec task done {feature} # Mark current task complete
|
|
156
158
|
morph-spec task start {feature} # Start next task
|
|
157
|
-
morph-spec task next {feature} # Preview next task
|
|
158
159
|
morph-spec status {feature} # Feature status dashboard
|
|
159
160
|
```
|
|
160
161
|
|
|
@@ -170,51 +171,48 @@ morph-spec validate-feature {feature} # Content-aware feature validation
|
|
|
170
171
|
|
|
171
172
|
## Agent hierarchy
|
|
172
173
|
|
|
173
|
-
morph-spec includes
|
|
174
|
+
morph-spec includes 22 agents organized in 4 tiers (2+3+13+4). Tier 1-2 agents are installed as native Claude Code subagents in `.claude/agents/`. Tier 3 domain agents are installed as `.claude/agents/morph-domain-{name}.md`.
|
|
174
175
|
|
|
175
|
-
### Tier 1 — Orchestrators (
|
|
176
|
+
### Tier 1 — Orchestrators (2)
|
|
176
177
|
|
|
177
178
|
|
|
178
179
|
| Agent | Role | Active |
|
|
179
180
|
| --------------------- | ------------------------------------------------------ | --------- |
|
|
180
181
|
| `standards-architect` | Chief Architect — enforces standards across all phases | Always |
|
|
181
182
|
| `ai-system-architect` | AI/Agent system design and orchestration | On-demand |
|
|
182
|
-
| `po-pm-advisor` | Product and project advisory | On-demand |
|
|
183
183
|
|
|
184
184
|
|
|
185
|
-
### Tier 2 — Domain Leaders (
|
|
185
|
+
### Tier 2 — Domain Leaders (3)
|
|
186
186
|
|
|
187
187
|
|
|
188
188
|
| Agent | Squad | Active |
|
|
189
189
|
| ------------------ | ------------------------- | --------- |
|
|
190
190
|
| `dotnet-senior` | Backend squad lead | Always |
|
|
191
|
+
| `nextjs-expert` | Frontend squad lead | Always |
|
|
191
192
|
| `infra-architect` | Infrastructure squad lead | Always |
|
|
192
|
-
| `domain-architect` | DDD & domain modeling | On-demand |
|
|
193
|
-
| `ui-designer` | UI/UX squad lead | On-demand |
|
|
194
193
|
|
|
195
194
|
|
|
196
|
-
### Tier 3 — Specialists (
|
|
195
|
+
### Tier 3 — Specialists (13)
|
|
197
196
|
|
|
198
197
|
Organized into squads:
|
|
199
198
|
|
|
200
|
-
**Backend (
|
|
199
|
+
**Backend (6):** ef-modeler, hangfire-orchestrator, ms-agent-expert, supabase-expert, vector-search-expert, morph-spec-architect
|
|
201
200
|
|
|
202
|
-
**Frontend (3):**
|
|
201
|
+
**Frontend (3):** css-specialist, ui-designer, seo-growth-hacker
|
|
203
202
|
|
|
204
|
-
**
|
|
203
|
+
**Integrations (3):** asaas-financial, clerk-auth, resend-email
|
|
205
204
|
|
|
206
|
-
**
|
|
205
|
+
**Security (1):** security-expert
|
|
207
206
|
|
|
208
|
-
### Tier 4 — Validators (
|
|
207
|
+
### Tier 4 — Validators (4)
|
|
209
208
|
|
|
210
209
|
|
|
211
210
|
| Agent | Validates |
|
|
212
211
|
| ------------------------------ | --------------------------------------- |
|
|
213
|
-
| `security-expert` | Security vulnerabilities and compliance |
|
|
214
212
|
| `architecture-expert` | Architectural decisions and constraints |
|
|
215
213
|
| `packages-validator` | Package versions and compatibility |
|
|
216
214
|
| `design-system-validator` | Design system adherence |
|
|
217
|
-
| `
|
|
215
|
+
| `nextjs-component-validator` | Next.js component structure and naming |
|
|
218
216
|
|
|
219
217
|
|
|
220
218
|
---
|
|
@@ -235,7 +233,6 @@ Organized into squads:
|
|
|
235
233
|
| `PostToolUseFailure` | `handle-tool-failure.js` | Logs failures to `.morph/logs/tool-failures.log` |
|
|
236
234
|
| `Stop` | `validate-completion.js` | Warns about incomplete tasks/missing outputs/pending gates |
|
|
237
235
|
| `PreCompact` | `save-morph-context.js` | Snapshots state to `.morph/memory/` before compaction |
|
|
238
|
-
| `Notification` | `approval-reminder.js` | Reminds about pending approval gates |
|
|
239
236
|
|
|
240
237
|
|
|
241
238
|
Protected files (via `permissions.deny`):
|
|
@@ -268,11 +265,8 @@ Path-scoped rules are installed to `.claude/rules/` and activate automatically b
|
|
|
268
265
|
| Technology | Support |
|
|
269
266
|
| ------------------------------------------- | ------------------------------------------------ |
|
|
270
267
|
| .NET 10 / ASP.NET Core | Full — C# contracts, EF Core, CQRS, Minimal API |
|
|
271
|
-
| Blazor (WebAssembly / Server / MAUI Hybrid) | Full — components, concurrency, design system |
|
|
272
268
|
| Next.js / React / TypeScript | Full — components, routing, state management |
|
|
273
|
-
|
|
|
274
|
-
| GitHub Actions | Full — CI/CD workflow templates |
|
|
275
|
-
| Supabase | Supported via MCP integration |
|
|
269
|
+
| Supabase | Supported via CLI (local Docker) |
|
|
276
270
|
|
|
277
271
|
|
|
278
272
|
TypeScript strict mode is enforced by default. See `.morph/framework/standards/` for all coding standards.
|
|
@@ -302,7 +296,7 @@ After updating, run `morph-spec doctor` to confirm the installation is healthy.
|
|
|
302
296
|
- `.morph/state.json` — use `morph-spec state set`
|
|
303
297
|
- `.morph/framework/`** — read-only, updated by `morph-spec update`
|
|
304
298
|
|
|
305
|
-
**Always document decisions.** Each feature has a `
|
|
299
|
+
**Always document decisions.** Each feature has a `2-design/decisions.md`. Architectural choices go there, not in commit messages.
|
|
306
300
|
|
|
307
301
|
**Checkpoints every 3 tasks.** The framework auto-validates architecture compliance, package versions, and security after every third completed task.
|
|
308
302
|
|
|
@@ -370,4 +364,4 @@ Code generated by morph-spec (contracts, templates, implementation output) belon
|
|
|
370
364
|
|
|
371
365
|
---
|
|
372
366
|
|
|
373
|
-
*morph-spec v4.
|
|
367
|
+
*morph-spec v4.14.0 by [Polymorphism Tech](https://polymorphism.tech)*
|
package/bin/morph-spec.js
CHANGED
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
} from '../src/commands/agents/manage-agents.js';
|
|
39
39
|
|
|
40
40
|
// Task commands
|
|
41
|
-
import { taskDoneCommand, taskStartCommand,
|
|
41
|
+
import { taskDoneCommand, taskStartCommand, taskBulkDoneCommand, taskAnnotateCommand } from '../src/commands/tasks/task.js';
|
|
42
42
|
|
|
43
43
|
// Scope escalation commands
|
|
44
44
|
import { scopeEscalateCommand } from '../src/commands/scope/escalate.js';
|
|
@@ -50,6 +50,9 @@ import { validateFeatureCommand } from '../src/commands/validation/validate-feat
|
|
|
50
50
|
|
|
51
51
|
// Template commands
|
|
52
52
|
import { templateRenderCommand } from '../src/commands/templates/template-render.js';
|
|
53
|
+
|
|
54
|
+
// Scaffold commands
|
|
55
|
+
import { scaffoldDotnetCommand, scaffoldNextjsCommand } from '../src/commands/scaffold/scaffold.js';
|
|
53
56
|
// MCP commands
|
|
54
57
|
import { mcpSetupCommand } from '../src/commands/mcp/mcp-setup.js';
|
|
55
58
|
|
|
@@ -59,8 +62,8 @@ import { trustStatusCommand, trustSetCommand } from '../src/commands/trust/trust
|
|
|
59
62
|
// Project metrics
|
|
60
63
|
import { projectMetricsCommand } from '../src/commands/agents/project-metrics.js';
|
|
61
64
|
|
|
62
|
-
//
|
|
63
|
-
import {
|
|
65
|
+
// Context commands
|
|
66
|
+
import { contextRefreshCommand } from '../src/commands/context/context-refresh.js';
|
|
64
67
|
|
|
65
68
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
66
69
|
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf8'));
|
|
@@ -148,7 +151,7 @@ program
|
|
|
148
151
|
// Task management commands (MORPH-SPEC 3.0)
|
|
149
152
|
const taskCommand = program
|
|
150
153
|
.command('task')
|
|
151
|
-
.description('Manage feature tasks (done | start |
|
|
154
|
+
.description('Manage feature tasks (done | start | expand | annotate)');
|
|
152
155
|
|
|
153
156
|
taskCommand
|
|
154
157
|
.command('done <feature> <task-ids...>')
|
|
@@ -164,25 +167,12 @@ taskCommand
|
|
|
164
167
|
.description('Start a task (mark as in_progress)')
|
|
165
168
|
.action((feature, taskId, options) => taskStartCommand(feature, taskId, options));
|
|
166
169
|
|
|
167
|
-
taskCommand
|
|
168
|
-
.command('next <feature>')
|
|
169
|
-
.description('Show next suggested task')
|
|
170
|
-
.action((feature, options) => taskNextCommand(feature, options));
|
|
171
|
-
|
|
172
170
|
taskCommand
|
|
173
171
|
.command('expand <feature> <task-id>')
|
|
174
172
|
.description('Expand a task into sub-tasks (low-impact scope escalation)')
|
|
175
173
|
.option('--into <subtasks...>', 'Sub-task definitions ("T017a: Title")')
|
|
176
174
|
.action((feature, taskId, options) => taskExpandCommand(feature, taskId, options));
|
|
177
175
|
|
|
178
|
-
taskCommand
|
|
179
|
-
.command('bulk-start <feature> [range]')
|
|
180
|
-
.description('Start multiple tasks at once (mark as in_progress)')
|
|
181
|
-
.option('--all', 'Start all pending tasks with met dependencies')
|
|
182
|
-
.option('--from <id>', 'Start of task range (e.g. T007)')
|
|
183
|
-
.option('--to <id>', 'End of task range (e.g. T014)')
|
|
184
|
-
.action((feature, range, options) => taskBulkStartCommand(feature, range, options));
|
|
185
|
-
|
|
186
176
|
taskCommand
|
|
187
177
|
.command('bulk-done <feature> [range]')
|
|
188
178
|
.description('Complete multiple tasks with a single validation pass')
|
|
@@ -309,6 +299,28 @@ templateCommand
|
|
|
309
299
|
.option('-v, --verbose', 'Show detailed output')
|
|
310
300
|
.action(templateRenderCommand);
|
|
311
301
|
|
|
302
|
+
// Scaffold commands (code generation from templates)
|
|
303
|
+
const scaffoldCmd = program
|
|
304
|
+
.command('scaffold')
|
|
305
|
+
.description('Generate feature files from templates');
|
|
306
|
+
|
|
307
|
+
scaffoldCmd
|
|
308
|
+
.command('dotnet <feature> <slice-name>')
|
|
309
|
+
.description('Generate VSA feature slice (.NET)')
|
|
310
|
+
.option('--dry-run', 'Preview files without writing')
|
|
311
|
+
.option('--namespace <ns>', 'Root namespace (auto-detected from .csproj)')
|
|
312
|
+
.option('--output-dir <path>', 'Output directory (default: cwd)')
|
|
313
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
314
|
+
.action(scaffoldDotnetCommand);
|
|
315
|
+
|
|
316
|
+
scaffoldCmd
|
|
317
|
+
.command('nextjs <feature>')
|
|
318
|
+
.description('Generate feature page + components (Next.js)')
|
|
319
|
+
.option('--dry-run', 'Preview files without writing')
|
|
320
|
+
.option('--output-dir <path>', 'Output directory (default: cwd)')
|
|
321
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
322
|
+
.action(scaffoldNextjsCommand);
|
|
323
|
+
|
|
312
324
|
// Trust commands
|
|
313
325
|
const trustCommand = program
|
|
314
326
|
.command('trust')
|
|
@@ -448,12 +460,17 @@ program
|
|
|
448
460
|
.option('--save', 'Save metrics to .morph/metrics.json')
|
|
449
461
|
.action((options) => projectMetricsCommand(options));
|
|
450
462
|
|
|
451
|
-
//
|
|
452
|
-
program
|
|
453
|
-
.command('context
|
|
454
|
-
.description('
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
.
|
|
463
|
+
// Context management commands
|
|
464
|
+
const contextCommand = program
|
|
465
|
+
.command('context')
|
|
466
|
+
.description('Project context management (refresh)');
|
|
467
|
+
|
|
468
|
+
contextCommand
|
|
469
|
+
.command('refresh')
|
|
470
|
+
.description('Scan project architecture and generate .morph/context/README.md')
|
|
471
|
+
.option('-p, --path <path>', 'Target path (default: current directory)')
|
|
472
|
+
.option('-v, --verbose', 'Show detailed scan output')
|
|
473
|
+
.option('--json', 'Output scan result as JSON')
|
|
474
|
+
.action((options) => contextRefreshCommand(options));
|
|
458
475
|
|
|
459
476
|
program.parse();
|