@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
|
@@ -5,7 +5,7 @@ argument-hint: "[feature-name]"
|
|
|
5
5
|
context: fork
|
|
6
6
|
agent: general-purpose
|
|
7
7
|
user-invocable: false
|
|
8
|
-
cliVersion: "4.
|
|
8
|
+
cliVersion: "4.14.0"
|
|
9
9
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Agent
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -73,33 +73,76 @@ If any check fails → **STOP**. Do not start any task. Report what's missing:
|
|
|
73
73
|
|
|
74
74
|
---
|
|
75
75
|
|
|
76
|
-
## Pre-flight
|
|
76
|
+
## Pre-flight — Tool Availability
|
|
77
77
|
|
|
78
|
-
Before starting tasks, verify that MCPs needed for
|
|
78
|
+
Before starting tasks, verify that CLIs and MCPs needed for this phase are available. The `inject-morph-context` hook reports both at session start.
|
|
79
79
|
|
|
80
|
-
**1.
|
|
81
|
-
- Read `framework/skills/level-0-meta/mcp-registry.json` → `phaseMatrix.implement`
|
|
82
|
-
- Read `.claude/settings.local.json` → identify configured MCPs
|
|
80
|
+
**1. Check CLIs (from session context `CLIs:` line):**
|
|
83
81
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
| CLI | Required for | If missing |
|
|
83
|
+
|-----|-------------|------------|
|
|
84
|
+
| `docker` | Container services (Supabase, Redis) | Start Docker Desktop |
|
|
85
|
+
| `supabase` | Migrations, schema, RLS | `npm install -g supabase` |
|
|
86
|
+
| `psql` | Direct DB queries | Included with Supabase CLI or install PostgreSQL client |
|
|
87
|
+
| `az` | Azure resource management | `winget install Microsoft.AzureCLI` |
|
|
88
|
+
| `gh` | GitHub PRs, issues | `winget install GitHub.cli` |
|
|
88
89
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
| **Error** | → **AskUserQuestion** (below) |
|
|
90
|
+
If a critical CLI shows `✗`, use `AskUserQuestion` to ask the user:
|
|
91
|
+
- **Install now** — provide the install command
|
|
92
|
+
- **Continue without it** — use fallback (e.g., WebSearch instead of `az`)
|
|
93
|
+
- **Stop implementation** — user must fix and re-run
|
|
94
94
|
|
|
95
|
-
**
|
|
95
|
+
**2. Check MCPs (from session context `MCPs:` line):**
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
- **Continue without {MCP}** — Show `fallback` from registry. Implementation will use the fallback automatically.
|
|
99
|
-
- **Reconfigure credentials** — Collect credentials and update `.claude/settings.local.json`. Re-test after reconfiguring.
|
|
100
|
-
- **Stop implementation** — Abort. User must fix the MCP and re-run `/morph-apply`.
|
|
97
|
+
For each MCP showing `✗ (recommended)`:
|
|
101
98
|
|
|
102
|
-
|
|
99
|
+
| MCP | Fallback |
|
|
100
|
+
|-----|----------|
|
|
101
|
+
| **Context7** | WebSearch + WebFetch |
|
|
102
|
+
| **Playwright** | `curl` / WebFetch (limited — no JS rendering) |
|
|
103
|
+
| **GitHub** | `gh` CLI |
|
|
104
|
+
| **Vercel** | `vercel` CLI |
|
|
105
|
+
|
|
106
|
+
> **Design:** This check is fail-open — consistent with morph-spec philosophy. Missing tools are warnings, not blockers (except `docker` for Supabase projects).
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Scaffold & Code Templates (MANDATORY before first task)
|
|
111
|
+
|
|
112
|
+
Before writing any implementation code, scaffold the feature structure using the CLI.
|
|
113
|
+
|
|
114
|
+
### For .NET backend tasks (VSA):
|
|
115
|
+
|
|
116
|
+
**Scaffold all CRUD slices for the feature:**
|
|
117
|
+
```bash
|
|
118
|
+
morph-spec scaffold dotnet $ENTITY create-$ENTITY
|
|
119
|
+
morph-spec scaffold dotnet $ENTITY get-${ENTITY}-by-id
|
|
120
|
+
morph-spec scaffold dotnet $ENTITY get-all-${ENTITY}s
|
|
121
|
+
morph-spec scaffold dotnet $ENTITY update-$ENTITY
|
|
122
|
+
morph-spec scaffold dotnet $ENTITY delete-$ENTITY
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
> Entity and errors are generated with the first slice and auto-skipped on subsequent ones.
|
|
126
|
+
> After scaffolding, customize: fill in request/response properties, validation rules, and handler logic per contracts.cs.
|
|
127
|
+
|
|
128
|
+
### For Next.js frontend tasks:
|
|
129
|
+
|
|
130
|
+
**Scaffold the feature page:**
|
|
131
|
+
```bash
|
|
132
|
+
morph-spec scaffold nextjs $FEATURE
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
> After scaffolding, customize: add columns to DataTable, form fields, and Zod schema.
|
|
136
|
+
|
|
137
|
+
### Template reference (for manual adjustments):
|
|
138
|
+
```bash
|
|
139
|
+
cat .morph/framework/templates/code/dotnet/feature/endpoint.cs.hbs
|
|
140
|
+
cat .morph/framework/templates/frontend/nextjs/page.tsx.hbs
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
> **Rule:** All code MUST follow the patterns in these templates. Scaffold guarantees this. Do not invent different patterns.
|
|
144
|
+
|
|
145
|
+
See `.morph/framework/templates/` for the full template index (abstractions, extensions, pipelines, jobs, tests).
|
|
103
146
|
|
|
104
147
|
---
|
|
105
148
|
|
|
@@ -111,14 +154,13 @@ Use `AskUserQuestion` with header `"{MCP}"` and options:
|
|
|
111
154
|
|
|
112
155
|
| Action | Tool | Alternative |
|
|
113
156
|
|--------|------|-------------|
|
|
114
|
-
|
|
|
115
|
-
| **Dispatch implementers by domain**
|
|
116
|
-
| **Create Agent Team** (critical multi-domain features) | Natural language — see Step 0.5b | — |
|
|
157
|
+
| Get dispatch recommendation | **Bash** `morph-spec dispatch-agents $ARGUMENTS implement` | Agent recommendations + task routing |
|
|
158
|
+
| **Dispatch implementers by domain** | **Agent** `subagent_type=<recommended[group][0]>` — agent .md file provides the prompt | Backend + frontend + infra in parallel |
|
|
117
159
|
| Read task details | **Read** tasks.md, spec.md, contracts.cs/.ts | — |
|
|
118
160
|
| Create new files | **Write** source files | — |
|
|
119
161
|
| Modify existing files | **Edit** source files | — |
|
|
120
162
|
| Look up library API | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
|
|
121
|
-
| Run migrations | **
|
|
163
|
+
| Run migrations | **Bash** `npx supabase migration up --local` | `psql <DB_URL>` for verification |
|
|
122
164
|
| Build project | **Bash** `dotnet build` or `npm run build` | — |
|
|
123
165
|
| Run tests | **Bash** `dotnet test` or `npm test` | — |
|
|
124
166
|
| Checkpoint validation | **Bash** `morph-spec validate-feature ...` | — |
|
|
@@ -130,12 +172,13 @@ Use `AskUserQuestion` with header `"{MCP}"` and options:
|
|
|
130
172
|
| Create PR | **Bash** `gh pr create ...` | **GitHub MCP** `create_pull_request()` |
|
|
131
173
|
| Update state | **Bash** `morph-spec state set ...` | — |
|
|
132
174
|
|
|
133
|
-
**Phase
|
|
175
|
+
**Phase tools:** Docker CLI (container health, logs), Supabase CLI (migrations, RLS — local Docker), Context7 (API lookup), Playwright (smoke test), GitHub (PRs), Vercel (deploy, logs, env vars).
|
|
176
|
+
|
|
177
|
+
> **Supabase CLI:** When creating or running database migrations, use `npx supabase migration new <name>` to create, then `npx supabase migration up --local` to apply against the local Docker instance. Verify with `npx supabase db dump --local --schema public` or `psql` against local instance (get DB URL from `npx supabase status`).
|
|
134
178
|
|
|
135
179
|
**Anti-patterns:**
|
|
136
180
|
- Task agent for editing a single file (use Edit directly)
|
|
137
|
-
-
|
|
138
|
-
- Agent Teams without plan approval (creates risk of divergent implementations)
|
|
181
|
+
- Subagents for single-domain features (sequential suffices)
|
|
139
182
|
- `Bash cat` to create files (use Write tool)
|
|
140
183
|
- `Bash sed` to modify code (use Edit tool)
|
|
141
184
|
- Implementing without reading contracts.cs/.ts first (contracts are the source of truth!)
|
|
@@ -146,57 +189,24 @@ Use `AskUserQuestion` with header `"{MCP}"` and options:
|
|
|
146
189
|
- **(VSA)** Using `Guid.NewGuid()` — use `Guid.CreateVersion7()`
|
|
147
190
|
- Trying to fix a bug without invoking `systematic-debugging` first
|
|
148
191
|
|
|
192
|
+
> **Docker CLI:** If a build or test fails with connection errors to local services (Supabase, Redis, etc.), check container health first: `docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"`. For debugging: `docker logs <container> --tail 50` to see recent logs. To restart a stuck container: `docker restart <container>`.
|
|
193
|
+
|
|
149
194
|
---
|
|
150
195
|
|
|
151
196
|
## Context Loading
|
|
152
197
|
|
|
153
|
-
## MANDATORY: Session Tasks
|
|
154
|
-
|
|
155
|
-
> **You MUST create one native task per T001-T00N from tasks.md BEFORE starting implementation.**
|
|
156
|
-
> After creating all tasks, wire dependencies using `addBlockedBy`.
|
|
157
|
-
> Update each to `in_progress` before starting and `completed` after `task done` succeeds.
|
|
158
|
-
|
|
159
198
|
### 1. Read full context in PARALLEL
|
|
160
199
|
|
|
161
200
|
```
|
|
162
201
|
# Single parallel call, not sequential:
|
|
163
202
|
Read: .morph/features/{feature}/4-tasks/tasks.md
|
|
164
|
-
+ Read: .morph/features/{feature}/
|
|
165
|
-
+ Read: .morph/features/{feature}/
|
|
203
|
+
+ Read: .morph/features/{feature}/2-design/spec.md
|
|
204
|
+
+ Read: .morph/features/{feature}/2-design/contracts.cs (or contracts.ts for TypeScript projects)
|
|
166
205
|
+ Read: .morph/config/config.json (→ architecture.style)
|
|
167
206
|
+ Read: .morph/features/{feature}/3-plan/plan.md
|
|
168
207
|
```
|
|
169
208
|
|
|
170
|
-
### 2.
|
|
171
|
-
|
|
172
|
-
Create one native task per task found in `tasks.md`, mirroring `tasks.md` exactly:
|
|
173
|
-
|
|
174
|
-
```
|
|
175
|
-
# one native task per task found — loop over every T001-T00N:
|
|
176
|
-
TaskCreate: "T001: {title}"
|
|
177
|
-
→ description: "{full task description from tasks.md}"
|
|
178
|
-
→ activeForm: "Implementing T001"
|
|
179
|
-
|
|
180
|
-
TaskCreate: "T002: {title}"
|
|
181
|
-
→ activeForm: "Implementing T002"
|
|
182
|
-
|
|
183
|
-
# ... repeat for each task ...
|
|
184
|
-
|
|
185
|
-
# Orchestral tasks (always at the end):
|
|
186
|
-
TaskCreate: "Checkpoints and validation" → activeForm: "Validating checkpoint"
|
|
187
|
-
TaskCreate: "Generate recap.md" → activeForm: "Generating recap"
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
**After creating all tasks, wire up dependencies using `addBlockedBy`**, mirroring `tasks.md` dependency fields:
|
|
191
|
-
|
|
192
|
-
```
|
|
193
|
-
# For each task with dependencies (e.g., T003 depends on T001, T002):
|
|
194
|
-
TaskUpdate: taskId="{T003 native id}" addBlockedBy=["{T001 native id}", "{T002 native id}"]
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
> Map T-codes to native task IDs as you create them (keep a local `{ T001: id, T002: id, ... }` map).
|
|
198
|
-
|
|
199
|
-
### 3. Detect architecture style
|
|
209
|
+
### 2. Detect architecture style
|
|
200
210
|
|
|
201
211
|
```bash
|
|
202
212
|
cat .morph/config/config.json | grep architecture
|
|
@@ -215,129 +225,85 @@ Structure: `Features/{Entity}Feature/{Op}/` with Handler (+ Request/Response rec
|
|
|
215
225
|
|
|
216
226
|
## Workflow
|
|
217
227
|
|
|
218
|
-
### Step 0.5:
|
|
228
|
+
### Step 0.5: Dispatch Recommendation
|
|
219
229
|
|
|
220
|
-
|
|
221
|
-
```
|
|
222
|
-
Read: .morph/features/{feature}/3-plan/plan.md → extract "Execution Strategy" field
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
The strategy was defined and approved in the Plan phase. Use it directly:
|
|
226
|
-
|
|
227
|
-
| Strategy | Action |
|
|
228
|
-
|----------|--------|
|
|
229
|
-
| `"single"` | → Continue to the sequential task loop (Step 2) |
|
|
230
|
-
| `"subagents"` | → Dispatch Task subagents in parallel (below) |
|
|
231
|
-
| `"agent-teams"` | → Create Agent Team with plan approval (Step 0.5b) |
|
|
232
|
-
|
|
233
|
-
If `plan.md` doesn't exist or the field is missing, auto-detect via dispatch-agents:
|
|
230
|
+
Get agent dispatch recommendation:
|
|
234
231
|
|
|
235
232
|
```bash
|
|
236
233
|
morph-spec dispatch-agents $ARGUMENTS implement
|
|
237
234
|
```
|
|
238
235
|
|
|
239
|
-
|
|
236
|
+
The output is a JSON advisor — it recommends which agents to use and which tasks they handle:
|
|
237
|
+
- `recommended`: `{ [group]: subagentType[] }` — maps groups to agent file names
|
|
238
|
+
- `tasks`: `{ [group]: taskId[] }` — maps groups to task IDs from tasks.md
|
|
239
|
+
- `shouldDispatch`: true if 2+ agents available (parallel dispatch beneficial)
|
|
240
240
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
#### Subagents Mode (if strategy is `"subagents"`):
|
|
241
|
+
**If `shouldDispatch` is true:**
|
|
244
242
|
|
|
245
|
-
|
|
243
|
+
1. Read `recommended` — maps groups (backend, frontend, etc.) to agent subagentTypes
|
|
244
|
+
2. Read `tasks` — maps groups to task IDs
|
|
245
|
+
3. For each agent, verify `.claude/agents/{subagentType}.md` exists. If missing → **STOP** with: `"Agent file not found. Run: morph-spec setup-infra"`. Do NOT fall back to general-purpose agents.
|
|
246
|
+
4. Dispatch each group in **parallel** using native Agent tool:
|
|
246
247
|
|
|
247
|
-
```bash
|
|
248
|
-
morph-spec dispatch-agents $ARGUMENTS implement
|
|
249
248
|
```
|
|
250
|
-
|
|
251
|
-
Parse the JSON output. Extract `taskGroups` and each group's `subagentType`.
|
|
252
|
-
|
|
253
|
-
**Step 0.5b: Verify agent files exist:**
|
|
254
|
-
|
|
255
|
-
For each group, verify `.claude/agents/{subagentType}.md` exists:
|
|
256
|
-
|
|
257
|
-
```bash
|
|
258
|
-
ls .claude/agents/{subagentType}.md
|
|
249
|
+
Agent(subagent_type="morph-dotnet-senior", prompt="Implement tasks T001, T002 for feature {feature}. Read .morph/features/{feature}/4-tasks/tasks.md for task details and .morph/features/{feature}/2-design/ for contracts and spec. Follow the task loop: start → implement → verify → done. Checkpoint every 3 tasks. Domain isolation: modify ONLY files in your domain.")
|
|
259
250
|
```
|
|
260
251
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
**Step 0.5c: Dispatch subagents:**
|
|
264
|
-
|
|
265
|
-
1. For each group with >= 3 tasks and no cross-group dependencies, use **Agent tool** with `subagent_type` from dispatch config:
|
|
266
|
-
|
|
267
|
-
> **Mapping:** `taskGroups[group].subagentType` = `subagent_type` in Agent tool.
|
|
268
|
-
> Example: `subagentType: "morph-dotnet-senior"` → `Agent(subagent_type="morph-dotnet-senior", prompt=taskPrompt)`.
|
|
252
|
+
> **MANDATORY:** Use the exact `subagentType` value from `recommended`. Do NOT use `general-purpose` agents when a `subagentType` is available.
|
|
269
253
|
>
|
|
270
|
-
>
|
|
254
|
+
> The agent `.md` file contains the full expertise prompt, task routing, and key standards. No additional prompt injection needed — just provide the task assignment.
|
|
271
255
|
|
|
272
|
-
|
|
273
|
-
- Full spec.md and contracts.cs/.ts content
|
|
274
|
-
- The group's task list
|
|
275
|
-
- Instructions to create native tasks, follow the task loop (start → implement → verify → done), checkpoint every 3 tasks
|
|
276
|
-
- Domain isolation: modify ONLY files in their domain
|
|
277
|
-
- **MANDATORY verification before every `task done`** (see Step 2, item 6b)
|
|
256
|
+
5. After all subagents complete, validate integration: `morph-spec validate-feature $ARGUMENTS --phase implement`
|
|
278
257
|
|
|
279
|
-
|
|
280
|
-
3. After all complete, validate integration: `morph-spec validate-feature $ARGUMENTS --phase implement`
|
|
258
|
+
**If `shouldDispatch` is false** → continue to sequential task loop (Step 2).
|
|
281
259
|
|
|
282
260
|
**Fallback:** If `dispatch-agents` fails (non-zero exit or invalid JSON), log a warning and fall back to sequential single-agent mode (Step 2).
|
|
283
261
|
|
|
284
|
-
**If strategy is `"single"`** → continue to sequential task loop below.
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
#### Step 0.5b: Agent Teams (critical multi-domain features)
|
|
289
|
-
|
|
290
|
-
**When:** strategy is `"agent-teams"`
|
|
291
|
-
**Requirement:** `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` in `.claude/settings.local.json`
|
|
292
|
-
|
|
293
|
-
**Why Agent Teams over subagents:**
|
|
294
|
-
Agent Teams have a shared TaskList, direct teammate messaging, and `TeammateIdle` hooks. Subagents are fire-and-forget. For features where backend and frontend need to coordinate API contracts, Agent Teams ensure frontend doesn't implement calls before backend stabilizes DTOs.
|
|
295
|
-
|
|
296
|
-
Create the team with natural language specifying:
|
|
297
|
-
- Backend teammate (dotnet-senior): backend/domain/application files only
|
|
298
|
-
- Frontend teammate (blazor-builder or nextjs-expert): UI/components/pages files only
|
|
299
|
-
- Quality teammate (standards-architect): review + validate-feature after each implementation
|
|
300
|
-
- Enable **plan approval**: teammates must get plans approved before implementing
|
|
301
|
-
- Gate: only approve plans matching contracts.cs/.ts and spec.md
|
|
302
|
-
|
|
303
|
-
After all teammates complete: `morph-spec validate-feature $ARGUMENTS --phase implement`
|
|
304
|
-
|
|
305
262
|
---
|
|
306
263
|
|
|
307
264
|
### Step 2: Task Loop
|
|
308
265
|
|
|
309
|
-
```bash
|
|
310
|
-
morph-spec task next $ARGUMENTS
|
|
311
|
-
```
|
|
312
|
-
|
|
313
266
|
For each task (T001 → T00N):
|
|
314
267
|
|
|
315
|
-
1. **
|
|
316
|
-
```
|
|
317
|
-
TaskUpdate(taskId="<native id>", status="in_progress")
|
|
318
|
-
```
|
|
319
|
-
2. **Start via CLI:**
|
|
268
|
+
1. **Start task:**
|
|
320
269
|
```bash
|
|
321
270
|
morph-spec task start $ARGUMENTS T001
|
|
322
271
|
```
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
272
|
+
2. **Read FR context** (MANDATORY — NON-NEGOTIABLE):
|
|
273
|
+
- Parse task's `[FR references]` from tasks.md (e.g., `### T001: Create user endpoint [FR001, FR003]`)
|
|
274
|
+
- **Read spec.md** → the sections for those specific FRs (functional requirements, acceptance criteria)
|
|
275
|
+
- **Read contracts.cs/.ts** → the DTOs/interfaces referenced by those FRs
|
|
276
|
+
- The spec is the source of truth. Code that doesn't match the spec is a bug.
|
|
277
|
+
> **MCP:** Before implementing, use **Context7 MCP** (`resolve-library-id` → `query-docs`) to verify the correct API of the libraries being used. If Context7 is not available, use **WebSearch** + **WebFetch** to check official docs.
|
|
278
|
+
3. **Implement** using Write (new) or Edit (existing)
|
|
279
|
+
4. **Verify** — build, lint, tests
|
|
280
|
+
5. **MANDATORY — Verification before `task done`:**
|
|
327
281
|
Run `validate-feature` before marking ANY task as done. This is non-negotiable — it catches broken code, missing files, and spec violations before they compound across tasks.
|
|
328
282
|
```bash
|
|
329
283
|
morph-spec validate-feature $ARGUMENTS --phase implement
|
|
330
284
|
```
|
|
331
|
-
Only proceed to step
|
|
332
|
-
|
|
285
|
+
Only proceed to step 6 if verification passes. If it fails → fix before marking `task done`.
|
|
286
|
+
6. **Mark as done via CLI:**
|
|
333
287
|
```bash
|
|
334
288
|
morph-spec task done $ARGUMENTS T001
|
|
335
289
|
```
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
290
|
+
|
|
291
|
+
### Step 2.5: Scope Escalation (when task is too complex)
|
|
292
|
+
|
|
293
|
+
If during implementation a task reveals significantly more complexity than estimated:
|
|
294
|
+
|
|
295
|
+
- **Low impact (1-3 subtasks):** Expand the task directly:
|
|
296
|
+
```bash
|
|
297
|
+
morph-spec task expand $ARGUMENTS T001 --into "T001a: First sub" "T001b: Second sub"
|
|
298
|
+
```
|
|
299
|
+
Then implement each subtask following the same loop above.
|
|
300
|
+
|
|
301
|
+
- **Medium/High impact (4+ tasks or spec is wrong):** Run the scope escalation workflow:
|
|
302
|
+
```bash
|
|
303
|
+
/morph-scope-escalation $ARGUMENTS
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Rule:** Never implement extra functionality within a task without registering it. If a task takes more than expected, expand it into subtasks — this ensures validation gates run for each piece and progress is tracked accurately.
|
|
341
307
|
|
|
342
308
|
### Step 3: Checkpoint Every 3 Tasks
|
|
343
309
|
|
|
@@ -377,6 +343,8 @@ npm test -- test/path/to/test.js
|
|
|
377
343
|
|
|
378
344
|
### Step 5: Smoke Test with Playwright (if UI)
|
|
379
345
|
|
|
346
|
+
> **MCP:** After implementing an API endpoint or page, if **Playwright MCP** is available, immediately do a quick smoke test: navigate to the endpoint/page URL, call `browser_snapshot()` to verify it loads, and check `browser_console_messages({ level: 'error' })` for errors. Catch issues while context is fresh rather than waiting for post-implementation. If Playwright is not available, verify manually via `curl` or browser.
|
|
347
|
+
|
|
380
348
|
After implementing visual components:
|
|
381
349
|
|
|
382
350
|
```javascript
|
|
@@ -444,17 +412,17 @@ morph-spec uses its own agents and validators for implementation, dispatch, and
|
|
|
444
412
|
|
|
445
413
|
### Implementation
|
|
446
414
|
|
|
447
|
-
|
|
415
|
+
Get dispatch recommendation and use native Agent tool:
|
|
448
416
|
```bash
|
|
449
417
|
morph-spec dispatch-agents $ARGUMENTS implement
|
|
450
418
|
```
|
|
451
419
|
|
|
452
|
-
Use
|
|
420
|
+
Use `recommended[group]` subagentTypes directly:
|
|
453
421
|
```
|
|
454
|
-
Agent(subagent_type
|
|
422
|
+
Agent(subagent_type="morph-dotnet-senior", prompt="Implement tasks T001, T002 for feature X...")
|
|
455
423
|
```
|
|
456
424
|
|
|
457
|
-
> The `subagentType` maps
|
|
425
|
+
> Agent `.md` files are self-contained — they include the expertise prompt, task routing, and key standards. The `subagentType` maps to `.claude/agents/` filenames:
|
|
458
426
|
> - Tier 1-3: `morph-{id}` (e.g., `morph-dotnet-senior`)
|
|
459
427
|
> - Tier 4: `morph-validator-{id}` (e.g., `morph-validator-architecture-expert`)
|
|
460
428
|
|
|
@@ -16,7 +16,7 @@ Read these before reviewing:
|
|
|
16
16
|
## Review Checklist
|
|
17
17
|
|
|
18
18
|
1. **Naming Conventions** — PascalCase for types, camelCase for variables, kebab-case for files (or as defined in standards)
|
|
19
|
-
2. **Architecture Compliance** — Code follows the project's architecture pattern (
|
|
19
|
+
2. **Architecture Compliance** — Code follows the project's VSA architecture pattern (Handler + Validator + Endpoint per feature folder)
|
|
20
20
|
3. **Async Patterns** — CancellationToken propagated, no fire-and-forget, proper await
|
|
21
21
|
4. **Error Handling** — Appropriate exceptions, no swallowed errors, consistent patterns
|
|
22
22
|
5. **Security** — No hardcoded secrets, SQL injection, XSS vectors, or OWASP top 10 issues
|
package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md
CHANGED
|
@@ -4,10 +4,11 @@ You are implementing tasks for the feature '{{FEATURE_NAME}}' as agent '{{AGENT_
|
|
|
4
4
|
|
|
5
5
|
## Context
|
|
6
6
|
|
|
7
|
-
**Spec:** Read `.morph/features/{{FEATURE_NAME}}/
|
|
8
|
-
**Contracts:** Read `.morph/features/{{FEATURE_NAME}}/
|
|
7
|
+
**Spec:** Read `.morph/features/{{FEATURE_NAME}}/2-design/spec.md`
|
|
8
|
+
**Contracts:** Read `.morph/features/{{FEATURE_NAME}}/2-design/contracts.cs`
|
|
9
9
|
**Plan:** Read `.morph/features/{{FEATURE_NAME}}/3-plan/plan.md`
|
|
10
|
-
**Standards:** Read
|
|
10
|
+
**Standards:** Read relevant files in `.morph/framework/standards/`
|
|
11
|
+
**Code Templates:** Read `.morph/framework/templates/code/dotnet/feature/` (endpoint, handler, validator) — follow these patterns exactly
|
|
11
12
|
|
|
12
13
|
## Agent Briefing
|
|
13
14
|
|
package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md
CHANGED
|
@@ -9,8 +9,8 @@ Review the implementation against the specification. Your job is to ensure the c
|
|
|
9
9
|
## Reference Documents
|
|
10
10
|
|
|
11
11
|
Read these before reviewing:
|
|
12
|
-
- `.morph/features/{{FEATURE_NAME}}/
|
|
13
|
-
- `.morph/features/{{FEATURE_NAME}}/
|
|
12
|
+
- `.morph/features/{{FEATURE_NAME}}/2-design/spec.md` — The specification
|
|
13
|
+
- `.morph/features/{{FEATURE_NAME}}/2-design/contracts.cs` — The contracts (source of truth)
|
|
14
14
|
- `.morph/features/{{FEATURE_NAME}}/3-plan/plan.md` — The implementation plan
|
|
15
15
|
|
|
16
16
|
## Review Checklist
|
package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
| **Completed** | 2025-01-22 |
|
|
11
11
|
| **Total Tasks** | 11 / 11 |
|
|
12
12
|
| **Time Spent** | ~9h |
|
|
13
|
-
| **Agents Used** | dotnet-senior,
|
|
13
|
+
| **Agents Used** | dotnet-senior, nextjs-expert, infra-architect |
|
|
14
14
|
| **Stack** | blazor-azure |
|
|
15
15
|
|
|
16
16
|
---
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: morph-phase-plan
|
|
3
|
-
description: MORPH-SPEC Phase
|
|
3
|
+
description: MORPH-SPEC Phase 3 (Plan). Generates a detailed implementation plan with exact file paths, TDD code blocks, and execution strategy analysis. Produces plan.md in 3-plan/. Use after design phase to create an actionable implementation plan before task breakdown.
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
7
|
-
cliVersion: "4.
|
|
7
|
+
cliVersion: "4.14.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# MORPH Plan — Phase
|
|
10
|
+
# MORPH Plan — Phase 3
|
|
11
11
|
|
|
12
12
|
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
13
13
|
|
|
@@ -15,8 +15,8 @@ Generate a detailed implementation plan with exact paths, TDD code, and executio
|
|
|
15
15
|
|
|
16
16
|
## Prerequisites
|
|
17
17
|
|
|
18
|
-
- [ ] Phase
|
|
19
|
-
- [ ] `spec.md`
|
|
18
|
+
- [ ] Phase 2 (Design) completed and approved
|
|
19
|
+
- [ ] `spec.md` defined
|
|
20
20
|
- [ ] `contracts.cs` or `contracts.ts` defined
|
|
21
21
|
|
|
22
22
|
## Recommended Tools
|
|
@@ -36,7 +36,7 @@ Generate a detailed implementation plan with exact paths, TDD code, and executio
|
|
|
36
36
|
- Generic paths ("add the file") — always use exact paths
|
|
37
37
|
- Incomplete code in plan ("add validation") — always include complete code
|
|
38
38
|
- Skipping existing codebase analysis (existing patterns guide the plan)
|
|
39
|
-
- Ignoring `config.architecture.style` — VSA and
|
|
39
|
+
- Ignoring `config.architecture.style` — VSA and standard architectures have different structures
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
@@ -65,11 +65,11 @@ Check the `"phase"` field:
|
|
|
65
65
|
### 1. Read all prerequisites in PARALLEL
|
|
66
66
|
|
|
67
67
|
```
|
|
68
|
-
Read: .morph/features/{feature}/
|
|
69
|
-
+ Read: .morph/features/{feature}/
|
|
70
|
-
+ Read: .morph/features/{feature}/
|
|
71
|
-
+ Read: .morph/features/{feature}/
|
|
72
|
-
+ Read: .morph/features/{feature}/
|
|
68
|
+
Read: .morph/features/{feature}/2-design/spec.md
|
|
69
|
+
+ Read: .morph/features/{feature}/2-design/contracts.cs (or contracts.ts)
|
|
70
|
+
+ Read: .morph/features/{feature}/2-design/decisions.md
|
|
71
|
+
+ Read: .morph/features/{feature}/2-design/decisions.md
|
|
72
|
+
+ Read: .morph/features/{feature}/2-design/schema-analysis.md (if exists)
|
|
73
73
|
+ Read: .morph/config/config.json
|
|
74
74
|
```
|
|
75
75
|
|
|
@@ -91,7 +91,7 @@ cat .morph/config/config.json | grep -A3 '"architecture"'
|
|
|
91
91
|
| `config.architecture.style` value | Path structure |
|
|
92
92
|
|------------------------------------|---------------|
|
|
93
93
|
| `"vertical-slice"` | VSA: `Features/{Entity}Feature/{Operation}/` |
|
|
94
|
-
| any other value |
|
|
94
|
+
| any other value | Standard layer-based |
|
|
95
95
|
|
|
96
96
|
### Step 2: Determine Execution Strategy
|
|
97
97
|
|
|
@@ -141,7 +141,10 @@ Create `.morph/features/$ARGUMENTS/3-plan/plan.md` with this structure:
|
|
|
141
141
|
|
|
142
142
|
{Pattern and context for the group}
|
|
143
143
|
|
|
144
|
-
### {A1} — {Task Name}
|
|
144
|
+
### {A1} — {Task Name} [FR001, FR003]
|
|
145
|
+
|
|
146
|
+
**Spec refs:** FR001 (description), FR003 (description)
|
|
147
|
+
**Contracts:** {RelevantRequest}, {RelevantResponse}, {ErrorType}
|
|
145
148
|
|
|
146
149
|
**Files:**
|
|
147
150
|
- Create: `exact/path/to/file.cs`
|
|
@@ -173,6 +176,7 @@ git commit -m "{message}"
|
|
|
173
176
|
```
|
|
174
177
|
|
|
175
178
|
**Mandatory rules:**
|
|
179
|
+
- **FR cross-references in EVERY task** — each task MUST reference the spec FRs it implements (e.g., `[FR001, FR003]`). Extract FR IDs from spec.md and map them to task groups. Include `Spec refs:` and `Contracts:` fields.
|
|
176
180
|
- Exact paths ALWAYS (never "add the file somewhere")
|
|
177
181
|
- COMPLETE code in each step (never "add validation later" or "implement here")
|
|
178
182
|
- Exact test commands with expected output (pass/fail message)
|