@polymorphism-tech/morph-spec 4.10.9 → 4.11.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 +3 -3
- package/LICENSE +71 -71
- package/README.md +5 -11
- package/bin/morph-spec.js +23 -1
- package/bin/task-manager.js +5 -5
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +2 -8
- package/framework/agents/README.md +14 -14
- package/framework/agents/architecture/standards-architect.md +159 -159
- package/framework/agents/frontend/css-specialist.md +1 -1
- package/framework/agents/infrastructure/azure-architect.md +149 -149
- package/framework/agents/infrastructure/azure-deploy-specialist.md +4 -4
- package/framework/agents/infrastructure/infra-architect.md +48 -48
- package/framework/commands/morph-apply.md +18 -18
- package/framework/commands/morph-preflight.md +3 -3
- package/framework/commands/morph-proposal.md +15 -15
- package/framework/commands/morph-status.md +3 -3
- package/framework/commands/morph-troubleshoot.md +1 -1
- package/framework/hooks/README.md +204 -204
- package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +2 -2
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +1 -1
- package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +3 -3
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +2 -2
- package/framework/hooks/git/pre-commit/agents.sh +1 -1
- package/framework/hooks/shared/phase-utils.js +139 -139
- package/framework/rules/csharp-standards.md +13 -13
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/infrastructure-standards.md +16 -16
- package/framework/rules/testing-standards.md +14 -14
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +8 -8
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +3 -3
- package/framework/skills/level-0-meta/morph-code-review-nextjs/references/review-example-nextjs.md +254 -254
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +1 -1
- package/framework/skills/level-0-meta/morph-init/SKILL.md +11 -11
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +3 -3
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +1 -1
- package/framework/skills/level-0-meta/morph-simulation-checklist/SKILL.md +4 -4
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +25 -25
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +8 -8
- package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +7 -7
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +4 -4
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +23 -23
- package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/.morph/logs/activity.json +38 -0
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +29 -29
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +4 -4
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +9 -9
- package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +17 -17
- package/framework/skills/level-1-workflows/morph-phase-tasks/.morph/logs/activity.json +14 -0
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +12 -12
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +16 -16
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +5 -5
- package/framework/standards/STANDARDS.json +2338 -2041
- package/framework/standards/frontend/nextjs/nextjs-patterns.md +17 -17
- package/framework/standards/infrastructure/supabase/supabase-custom-jwt.md +206 -0
- package/framework/templates/.idea/morph-templates.xml +92 -0
- package/framework/templates/.vscode/morph-templates.code-snippets +186 -0
- package/framework/templates/README.md +814 -814
- package/framework/templates/code/dotnet/contracts/Commands.cs +74 -74
- package/framework/templates/code/dotnet/contracts/Entities.cs +25 -25
- package/framework/templates/code/dotnet/contracts/Queries.cs +74 -74
- package/framework/templates/code/dotnet/contracts/README.md +74 -74
- package/framework/templates/code/dotnet/contracts/api-contracts.cs +173 -173
- package/framework/templates/code/dotnet/frontend/component.razor +239 -239
- package/framework/templates/code/dotnet/jobs/agent.cs +163 -163
- package/framework/templates/code/dotnet/jobs/job.cs +171 -171
- package/framework/templates/code/dotnet/test.cs +239 -239
- package/framework/templates/code/sql/rls-policy.sql +57 -57
- package/framework/templates/code/sql/supabase-migration.sql +100 -100
- package/framework/templates/code/sql/supabase-migration.template.sql +113 -113
- package/framework/templates/code/typescript/contracts.ts +168 -168
- package/framework/templates/context/CONTEXT.md +181 -181
- package/framework/templates/docs/proposal.md +182 -182
- package/framework/templates/docs/user-stories.md +34 -34
- package/framework/templates/examples/design-system-examples.md +357 -357
- package/framework/templates/examples/spec-examples.md +90 -90
- package/framework/templates/feature/decisions.md +187 -187
- package/framework/templates/feature/recap.md +146 -146
- package/framework/templates/feature/tasks.md +199 -199
- package/framework/templates/infrastructure/azure/README.md +286 -286
- package/framework/templates/infrastructure/azure/deploy-checklist.md +426 -426
- package/framework/templates/infrastructure/azure/parameters.dev.json +29 -29
- package/framework/templates/infrastructure/azure/parameters.prod.json +29 -29
- package/framework/templates/infrastructure/azure/parameters.staging.json +29 -29
- package/framework/templates/infrastructure/docker/docker-compose.template.yml +67 -67
- package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
- package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
- package/framework/templates/infrastructure/docker/easypanel.template.json +54 -54
- package/framework/workflows/README.md +18 -18
- package/framework/workflows/docs/enforcement-pipeline.md +1 -1
- package/framework/workflows/docs/full-morph.md +2 -2
- package/package.json +1 -1
- package/src/commands/agents/dispatch-agents.js +17 -0
- package/src/commands/agents/index.js +13 -13
- package/src/commands/agents/project-metrics.js +74 -0
- package/src/commands/project/doctor.js +3 -4
- package/src/commands/project/install-plugin-cmd.js +28 -28
- package/src/commands/project/setup-infra-cmd.js +12 -12
- package/src/commands/project/status.js +8 -1
- package/src/commands/scope/escalate.js +5 -3
- package/src/commands/standards/context-budget.js +89 -0
- package/src/commands/tasks/index.js +4 -4
- package/src/commands/templates/index.js +5 -5
- package/src/commands/utils/index.js +3 -3
- package/src/commands/validation/index.js +4 -4
- package/src/commands/validation/validate-feature.js +32 -3
- package/src/core/state/phase-state-machine.js +217 -217
- package/src/lib/agents/metrics-aggregator.js +56 -0
- package/src/lib/generators/design-system-generator.js +298 -298
- package/src/lib/generators/index.js +10 -10
- package/src/lib/generators/metadata-extractor.js +387 -387
- package/src/lib/stack-filter.js +65 -65
- package/src/lib/standards/digest-builder.js +57 -3
- package/src/lib/standards/index.js +7 -7
- package/src/lib/standards/standards-context-injector.js +302 -302
- package/src/lib/validators/architecture/architecture-validator.js +387 -387
- package/src/lib/validators/architecture/index.js +7 -7
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +316 -316
- package/src/lib/validators/blazor/blazor-state-validator.js +279 -279
- package/src/lib/validators/blazor/blazor-validator.js +369 -369
- package/src/lib/validators/blazor/index.js +9 -9
- package/src/lib/validators/content/content-validator.js +287 -287
- package/src/lib/validators/content/index.js +7 -7
- package/src/lib/validators/contracts/index.js +7 -7
- package/src/lib/validators/css/css-validator.js +352 -352
- package/src/lib/validators/css/index.js +7 -7
- package/src/lib/validators/design-system/design-system-validator.js +231 -231
- package/src/lib/validators/design-system/index.js +7 -7
- package/src/lib/validators/nextjs/index.js +6 -6
- package/src/lib/validators/nextjs/next-component-validator.js +183 -183
- package/src/lib/validators/packages/index.js +7 -7
- package/src/lib/validators/packages/package-validator.js +360 -360
- package/src/lib/validators/shared/index.js +12 -12
- package/src/lib/validators/shared/issue-counter.js +18 -18
- package/src/lib/validators/shared/result-formatter.js +124 -124
- package/src/lib/validators/ui/index.js +7 -7
- package/src/lib/validators/ui/ui-contrast-validator.js +422 -422
- package/src/scripts/global-install.js +112 -58
- package/src/scripts/install-plugin.js +126 -126
- package/src/utils/claude-md-injector.js +90 -90
- package/src/utils/file-copier.js +200 -200
- package/src/utils/logger.js +32 -32
- package/src/utils/skills-installer.js +178 -178
- package/src/utils/version-checker.js +169 -175
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
| Read project context | **Read** `.morph/context/README.md` | Single known file |
|
|
15
15
|
| Read config | **Read** `.morph/config.json` | Single known file |
|
|
16
16
|
| Find existing features | **Glob** `.morph/features/*/0-proposal/proposal.md` | Pattern search |
|
|
17
|
-
| Detect project stack | **Read** `.morph/framework/agents.json` → match keywords → **Bash** `
|
|
17
|
+
| Detect project stack | **Read** `.morph/framework/agents.json` → match keywords → **Bash** `morph-spec state add-agent` | agents.json is the source of truth |
|
|
18
18
|
| Research external requirement | **WebSearch** | Current information needed |
|
|
19
|
-
| Render proposal template | **Bash** `
|
|
20
|
-
| Update state | **Bash** `
|
|
19
|
+
| Render proposal template | **Bash** `morph-spec template render docs/proposal ...` | CLI command |
|
|
20
|
+
| Update state | **Bash** `morph-spec state mark-output {feature} proposal` | CLI command |
|
|
21
21
|
|
|
22
22
|
**MCPs used:** None typically. GitHub MCP if feature comes from an issue.
|
|
23
23
|
|
|
@@ -34,14 +34,14 @@
|
|
|
34
34
|
|
|
35
35
|
| Action | Tool | Why |
|
|
36
36
|
|--------|------|-----|
|
|
37
|
-
| Verify feature state | **Bash** `
|
|
38
|
-
| Detect agents + standards | **Read** `.morph/framework/agents.json` → match keywords → **Bash** `
|
|
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
39
|
| Read project context | **Read** `.morph/context/README.md` | Single file |
|
|
40
40
|
| Read config | **Read** `.morph/config.json` | Single file |
|
|
41
41
|
| Scan project structure | **Glob** `src/**/*.{ts,tsx,cs}` | Understand codebase layout |
|
|
42
42
|
| Get repo metadata | **GitHub MCP** `get_repo()` | Structured repo info (if MCP available) |
|
|
43
|
-
| Get dispatch config for next phases | **Bash** `
|
|
44
|
-
| Update state | **Bash** `
|
|
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
45
|
|
|
46
46
|
**MCPs used:** GitHub (optional — for repo metadata).
|
|
47
47
|
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
| Inspecionar estrutura da página | **Playwright MCP** `browser_snapshot()` | **WebFetch** + parse manual |
|
|
68
68
|
| Testar layout responsivo | **Playwright MCP** `browser_resize()` + `browser_take_screenshot()` | Manual testing |
|
|
69
69
|
| Search for design references | **WebSearch** + **WebFetch** | External inspiration |
|
|
70
|
-
| Render UI templates | **Bash** `
|
|
71
|
-
| Generate design system from CSS | **Bash** `
|
|
72
|
-
| Update state | **Bash** `
|
|
70
|
+
| Render UI templates | **Bash** `morph-spec template render docs/ui-mockups ...` | CLI command |
|
|
71
|
+
| Generate design system from CSS | **Bash** `morph-spec generate design-system --scan` | CLI command |
|
|
72
|
+
| Update state | **Bash** `morph-spec state mark-output {feature} uiDesignSystem && morph-spec state mark-output {feature} uiMockups && morph-spec state mark-output {feature} uiComponents && morph-spec state mark-output {feature} uiFlows` | CLI command |
|
|
73
73
|
|
|
74
74
|
**MCPs used:** Playwright (live preview, page inspection), Context7 (component docs).
|
|
75
75
|
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
| Action | Tool | Why |
|
|
88
88
|
|--------|------|-----|
|
|
89
89
|
| Read proposal + UI specs | **Read** output files | Single known files |
|
|
90
|
-
| **Get dispatch config** | **Bash** `
|
|
90
|
+
| **Get dispatch config** | **Bash** `morph-spec dispatch-agents {feature} design` | Which agents to spawn + their task prompts |
|
|
91
91
|
| **Dispatch domain-architect** (parallel) | **Task** subagent with prompt from dispatch config | Analyze DDD complexity independently |
|
|
92
92
|
| **Dispatch tech leads** (parallel) | **Task** subagents (dotnet-senior, nextjs-expert, etc.) | Validate architecture independently |
|
|
93
93
|
| Get database schema | **Supabase MCP** `list_tables()`, `get_table_schema()` | **PREFERRED** — real schema data |
|
|
@@ -99,11 +99,11 @@
|
|
|
99
99
|
| Look up library for ADR | **Context7 MCP** `query_docs()` | Compare library capabilities |
|
|
100
100
|
| Check existing code patterns | **GitHub MCP** `search_code()` | Find patterns in large repos |
|
|
101
101
|
| **Fallback:** Search codebase | **Grep** patterns across project | When no GitHub MCP |
|
|
102
|
-
| Render contracts template (detected level) | **Bash** `
|
|
103
|
-
| Render spec template | **Bash** `
|
|
104
|
-
| Render decisions template | **Bash** `
|
|
102
|
+
| Render contracts template (detected level) | **Bash** `morph-spec template render code/dotnet/contracts/contracts-level{N}.cs ...` where N = level detected | CLI command |
|
|
103
|
+
| Render spec template | **Bash** `morph-spec template render docs/spec ...` | CLI command |
|
|
104
|
+
| Render decisions template | **Bash** `morph-spec template render docs/decisions ...` | CLI command |
|
|
105
105
|
| Create schema-analysis.md | **Write** to output directory | Document findings |
|
|
106
|
-
| Update state | **Bash** `
|
|
106
|
+
| 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
107
|
|
|
108
108
|
**MCPs used:** Supabase (schema analysis), Context7 (library research), GitHub (code search).
|
|
109
109
|
|
|
@@ -131,8 +131,8 @@
|
|
|
131
131
|
| Check known issues/limitations | **GitHub MCP** `search_issues()` | Library bugs affecting design |
|
|
132
132
|
| Research edge case behavior | **WebSearch** | External knowledge for edge cases |
|
|
133
133
|
| Update spec with clarifications | **Edit** spec.md | Preserve existing content, add sections |
|
|
134
|
-
| Create clarifications.md | **Bash** `
|
|
135
|
-
| Update state | **Bash** `
|
|
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
136
|
|
|
137
137
|
**MCPs used:** Context7 (validate feasibility), GitHub (known issues).
|
|
138
138
|
|
|
@@ -150,16 +150,16 @@
|
|
|
150
150
|
| Action | Tool | Why |
|
|
151
151
|
|--------|------|-----|
|
|
152
152
|
| Read spec + contracts + decisions | **Read** all output files | Full context needed |
|
|
153
|
-
| **Get dispatch config** | **Bash** `
|
|
153
|
+
| **Get dispatch config** | **Bash** `morph-spec dispatch-agents {feature} tasks` | Which domain experts to consult |
|
|
154
154
|
| Analyze implementation complexity | **Grep** patterns in existing code | Estimate effort from codebase size |
|
|
155
155
|
| Count existing similar patterns | **Glob** `**/Services/**/*.cs` | Understand scope |
|
|
156
156
|
| **Dispatch domain experts** (when spec is complex) | **Task** subagents per domain | Parallel per-domain task planning |
|
|
157
157
|
| Look up implementation patterns | **Context7 MCP** `query_docs()` | Estimate task complexity accurately |
|
|
158
158
|
| Create GitHub issues from tasks | **GitHub MCP** `create_issue()` | Sync tasks to project management |
|
|
159
159
|
| **Fallback:** Create issues via CLI | **Bash** `gh issue create ...` | When no GitHub MCP |
|
|
160
|
-
| Render tasks template | **Bash** `
|
|
161
|
-
| Mark tasks output | **Bash** `
|
|
162
|
-
| Update state with task count | **Bash** `
|
|
160
|
+
| Render tasks template | **Bash** `morph-spec template render docs/tasks ...` | CLI command |
|
|
161
|
+
| Mark tasks output | **Bash** `morph-spec state mark-output {feature} tasks` | CLI command |
|
|
162
|
+
| Update state with task count | **Bash** `morph-spec state set ... tasks.total N` | CLI command |
|
|
163
163
|
|
|
164
164
|
**MCPs used:** Context7 (complexity estimation), GitHub (issue creation).
|
|
165
165
|
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
| Action | Tool | Why |
|
|
179
179
|
|--------|------|-----|
|
|
180
180
|
| Read task details | **Read** tasks.json, spec.md, contracts.cs | Implementation reference |
|
|
181
|
-
| **Check parallelization viability** | **Bash** `
|
|
181
|
+
| **Check parallelization viability** | **Bash** `morph-spec dispatch-agents {feature} implement` | Whether to dispatch parallel implementers |
|
|
182
182
|
| **Dispatch per-domain implementers** (when viable) | **Task** subagents — one per domain group | Backend tasks + frontend tasks run in parallel |
|
|
183
183
|
| Create new files | **Write** new source files | New entities, services, pages |
|
|
184
184
|
| Modify existing files | **Edit** existing source files | Add features to existing code |
|
|
@@ -187,15 +187,15 @@
|
|
|
187
187
|
| **Fallback:** Run migrations | **Bash** `npx supabase migration ...` or `dotnet ef ...` | CLI tools |
|
|
188
188
|
| Build project | **Bash** `dotnet build` or `npm run build` | Verify compilation |
|
|
189
189
|
| Run tests | **Bash** `dotnet test` or `npm test` | Verify implementation |
|
|
190
|
-
| Checkpoint validation | **Bash** `
|
|
190
|
+
| Checkpoint validation | **Bash** `morph-spec checkpoint ...` | Every 3 tasks |
|
|
191
191
|
| Create RLS policies | **Supabase MCP** `query()` | Security policies |
|
|
192
192
|
| Create infrastructure | **Bash** `az bicep ...` or Bicep files via Write | IaC |
|
|
193
193
|
| Create PR | **GitHub MCP** `create_pull_request()` or **Bash** `gh pr create` | Ship code |
|
|
194
|
-
| Mark task done | **Bash** `
|
|
194
|
+
| Mark task done | **Bash** `morph-spec task done T001` | State tracking |
|
|
195
195
|
| Smoke test feature no browser | **Playwright MCP** `browser_navigate()` + `browser_snapshot()` | Manual testing |
|
|
196
196
|
| Verificar erros de console | **Playwright MCP** `browser_console_messages()` | Browser DevTools |
|
|
197
197
|
| Screenshot para recap.md | **Playwright MCP** `browser_take_screenshot()` | Manual screenshot |
|
|
198
|
-
| Mark recap output | **Bash** `
|
|
198
|
+
| Mark recap output | **Bash** `morph-spec state mark-output {feature} recap` | CLI command |
|
|
199
199
|
|
|
200
200
|
**MCPs used:** Supabase (migrations, RLS), Context7 (API lookup), GitHub (PRs), Playwright (smoke test, verification).
|
|
201
201
|
|
|
@@ -86,16 +86,16 @@ allowed-tools: Read, Bash, Glob, Grep
|
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
88
|
# Run full feature validation
|
|
89
|
-
|
|
89
|
+
morph-spec validate-feature {feature-name}
|
|
90
90
|
|
|
91
91
|
# Check feature state and phase
|
|
92
|
-
|
|
92
|
+
morph-spec state get {feature-name}
|
|
93
93
|
|
|
94
94
|
# Check approval gates
|
|
95
|
-
|
|
95
|
+
morph-spec approval-status {feature-name}
|
|
96
96
|
|
|
97
97
|
# Check overall project status
|
|
98
|
-
|
|
98
|
+
morph-spec status
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
---
|
|
@@ -111,8 +111,8 @@ Before running `morph-spec task done`:
|
|
|
111
111
|
|
|
112
112
|
```bash
|
|
113
113
|
# Verify before marking done
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
morph-spec validate-feature {feature}
|
|
115
|
+
morph-spec task done {feature} T001
|
|
116
116
|
```
|
|
117
117
|
|
|
118
118
|
---
|
|
@@ -122,8 +122,8 @@ npx morph-spec task done {feature} T001
|
|
|
122
122
|
Every 3 tasks, run full checkpoint validation:
|
|
123
123
|
|
|
124
124
|
```bash
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
morph-spec checkpoint-save {feature}
|
|
126
|
+
morph-spec validate-feature {feature}
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
If validation fails:
|
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 3 (Clarify). Iterative clarification loop driven b
|
|
|
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.11.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Clarify — Phase 3
|
|
@@ -32,7 +32,7 @@ Eliminate spec ambiguities through an iterative question loop until the spec has
|
|
|
32
32
|
| Ask clarifying questions | **AskUserQuestion** (never plain text) | — |
|
|
33
33
|
| Update spec with clarifications | **Edit** spec.md | — |
|
|
34
34
|
| Create clarifications.md | **Write** | — |
|
|
35
|
-
| Update state | **Bash** `
|
|
35
|
+
| Update state | **Bash** `morph-spec state mark-output $ARGUMENTS clarifications` | — |
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
@@ -67,7 +67,7 @@ Before each round, calculate the **Satisfaction Score (0-100)** by evaluating th
|
|
|
67
67
|
**Step 0 (BEFORE any writing) — Ensure clarify phase:**
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
|
|
70
|
+
morph-spec state get $ARGUMENTS
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
Check the `"phase"` field in the output:
|
|
@@ -75,8 +75,8 @@ Check the `"phase"` field in the output:
|
|
|
75
75
|
**If `"phase": "clarify"`** → correct phase, proceed.
|
|
76
76
|
|
|
77
77
|
**If `"phase": "design"`** → run in sequence:
|
|
78
|
-
1. `
|
|
79
|
-
2. `
|
|
78
|
+
1. `morph-spec approve $ARGUMENTS design`
|
|
79
|
+
2. `morph-spec phase advance $ARGUMENTS` (→ clarify)
|
|
80
80
|
|
|
81
81
|
**Any other value** → STOP — inconsistent state, report to user.
|
|
82
82
|
|
|
@@ -217,7 +217,7 @@ Write to `.morph/features/$ARGUMENTS/1-design/clarifications.md`:
|
|
|
217
217
|
**Step 2: Update State**
|
|
218
218
|
|
|
219
219
|
```bash
|
|
220
|
-
|
|
220
|
+
morph-spec state mark-output $ARGUMENTS clarifications
|
|
221
221
|
```
|
|
222
222
|
|
|
223
223
|
---
|
|
@@ -241,7 +241,7 @@ npx morph-spec state mark-output $ARGUMENTS clarifications
|
|
|
241
241
|
---
|
|
242
242
|
|
|
243
243
|
```bash
|
|
244
|
-
|
|
244
|
+
morph-spec phase advance $ARGUMENTS
|
|
245
245
|
```
|
|
246
246
|
|
|
247
247
|
Continue automatically to Phase 4 (Plan) after clarifications.md is generated.
|
|
@@ -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.11.0"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# MORPH Codebase Analysis - Design Sub-phase
|
|
@@ -154,7 +154,7 @@ This ensures `contracts.cs` can be generated mechanically, without manual interp
|
|
|
154
154
|
The template is at `framework/templates/docs/schema-analysis.md`. Use it via:
|
|
155
155
|
|
|
156
156
|
```bash
|
|
157
|
-
|
|
157
|
+
morph-spec template render docs/schema-analysis \
|
|
158
158
|
.morph/features/{feature}/1-design/schema-analysis.md \
|
|
159
159
|
'{
|
|
160
160
|
"FEATURE_NAME": "{feature}",
|
|
@@ -213,7 +213,7 @@ Create a map of:
|
|
|
213
213
|
Use the template at `framework/templates/docs/schema-analysis.md`:
|
|
214
214
|
|
|
215
215
|
```bash
|
|
216
|
-
|
|
216
|
+
morph-spec template render docs/schema-analysis \
|
|
217
217
|
.morph/features/{feature-name}/1-design/schema-analysis.md \
|
|
218
218
|
'{ "FEATURE_NAME": "{feature-name}", "DATE": "..." }'
|
|
219
219
|
```
|
|
@@ -223,7 +223,7 @@ OR use **Write** tool to create directly with collected data.
|
|
|
223
223
|
### Step 5: Update State
|
|
224
224
|
|
|
225
225
|
```bash
|
|
226
|
-
|
|
226
|
+
morph-spec state mark-output {feature-name} schema-analysis
|
|
227
227
|
```
|
|
228
228
|
|
|
229
229
|
---
|
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 2 (Design). Schema-first interactive design: reads
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Agent
|
|
7
|
-
cliVersion: "4.
|
|
7
|
+
cliVersion: "4.11.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Design — Phase 2
|
|
@@ -37,11 +37,11 @@ Schema-first interactive design: read the real schema, validate with user, gener
|
|
|
37
37
|
| Dispatch domain-architect | **Agent** `subagent_type=domain-architect` + `prompt=agent.taskPrompt` | — |
|
|
38
38
|
| Dispatch tech leads | **Agent** for each active agent from dispatch config | — |
|
|
39
39
|
| Research library | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
|
|
40
|
-
| Render contracts VSA | **Bash** `
|
|
41
|
-
| Render contracts DDD | **Bash** `
|
|
42
|
-
| Render spec.md | **Bash** `
|
|
43
|
-
| Render decisions.md | **Bash** `
|
|
44
|
-
| Update state | **Bash** `
|
|
40
|
+
| Render contracts VSA | **Bash** `morph-spec template render dotnet-contracts-vsa ...` | — |
|
|
41
|
+
| Render contracts DDD | **Bash** `morph-spec template render dotnet-contracts-level{N} ...` | — |
|
|
42
|
+
| Render spec.md | **Bash** `morph-spec template render docs/spec ...` | — |
|
|
43
|
+
| Render decisions.md | **Bash** `morph-spec template render docs/decisions ...` | — |
|
|
44
|
+
| Update state | **Bash** `morph-spec state mark-output $ARGUMENTS <type>` | — |
|
|
45
45
|
|
|
46
46
|
**Anti-patterns:**
|
|
47
47
|
- Do not generate contracts before reading the real schema — guessed field names corrupt the entire design
|
|
@@ -72,7 +72,7 @@ Update each to `in_progress` before starting and `completed` after finishing.
|
|
|
72
72
|
**STEP 0 (BEFORE any reads or writes) — Ensure phase is design:**
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
|
|
75
|
+
morph-spec state get $ARGUMENTS
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
Check the `"phase"` field in the output:
|
|
@@ -80,12 +80,12 @@ Check the `"phase"` field in the output:
|
|
|
80
80
|
**If `"phase": "design"`** → phase is correct, proceed.
|
|
81
81
|
|
|
82
82
|
**If `"phase": "proposal"`** → execute in sequence:
|
|
83
|
-
1. `
|
|
84
|
-
2. `
|
|
85
|
-
3. `
|
|
83
|
+
1. `morph-spec state mark-output $ARGUMENTS proposal`
|
|
84
|
+
2. `morph-spec phase advance $ARGUMENTS` (→ setup)
|
|
85
|
+
3. `morph-spec phase advance $ARGUMENTS` (→ design)
|
|
86
86
|
|
|
87
87
|
**If `"phase": "setup"`** → execute:
|
|
88
|
-
1. `
|
|
88
|
+
1. `morph-spec phase advance $ARGUMENTS` (→ design)
|
|
89
89
|
|
|
90
90
|
**Any other value** → do not proceed — inconsistent state, report to user.
|
|
91
91
|
|
|
@@ -197,7 +197,7 @@ Use `AskUserQuestion`:
|
|
|
197
197
|
#### 2-VSA.1 Dispatch vsa-architect
|
|
198
198
|
|
|
199
199
|
```bash
|
|
200
|
-
|
|
200
|
+
morph-spec dispatch-agents $ARGUMENTS design
|
|
201
201
|
```
|
|
202
202
|
|
|
203
203
|
Use the `taskPrompt` from the `vsa-architect` agent in the result. Call:
|
|
@@ -255,7 +255,7 @@ Read the proposal and evaluate using the 5 detection questions in `framework/sta
|
|
|
255
255
|
#### 2-DDD.2 Dispatch domain-architect
|
|
256
256
|
|
|
257
257
|
```bash
|
|
258
|
-
|
|
258
|
+
morph-spec dispatch-agents $ARGUMENTS design
|
|
259
259
|
```
|
|
260
260
|
|
|
261
261
|
Use the `taskPrompt` from the `domain-architect` agent in the result. Call:
|
|
@@ -314,7 +314,7 @@ Read the spec-authoring-guide first, then create `.morph/features/$ARGUMENTS/1-d
|
|
|
314
314
|
**Mandatory source:** fields from `schema-analysis.md` + operations from the VSA Blueprint.
|
|
315
315
|
|
|
316
316
|
```bash
|
|
317
|
-
|
|
317
|
+
morph-spec template render \
|
|
318
318
|
dotnet-contracts-vsa \
|
|
319
319
|
.morph/features/$ARGUMENTS/1-design/contracts.cs \
|
|
320
320
|
'{
|
|
@@ -340,7 +340,7 @@ After rendering, fill in the `// placeholder:` sections with real fields from sc
|
|
|
340
340
|
|
|
341
341
|
```bash
|
|
342
342
|
# Replace {N} with the detected level (1, 2, or 3):
|
|
343
|
-
|
|
343
|
+
morph-spec template render \
|
|
344
344
|
dotnet-contracts-level{N} \
|
|
345
345
|
.morph/features/$ARGUMENTS/1-design/contracts.cs \
|
|
346
346
|
'{
|
|
@@ -364,7 +364,7 @@ For TypeScript/Next.js projects, generate `contracts.ts` instead of `contracts.c
|
|
|
364
364
|
### Generate decisions.md
|
|
365
365
|
|
|
366
366
|
```bash
|
|
367
|
-
|
|
367
|
+
morph-spec template render docs/decisions \
|
|
368
368
|
.morph/features/$ARGUMENTS/1-design/decisions.md \
|
|
369
369
|
'{"FEATURE_NAME": "$ARGUMENTS", "DATE": "{{TODAY}}", "decisions": []}'
|
|
370
370
|
```
|
|
@@ -448,15 +448,15 @@ Update spec.md, contracts, and decisions.md with the answers received. Recalcula
|
|
|
448
448
|
## Post-Loop: Update State
|
|
449
449
|
|
|
450
450
|
```bash
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
451
|
+
morph-spec state mark-output $ARGUMENTS schema-analysis
|
|
452
|
+
morph-spec state mark-output $ARGUMENTS spec
|
|
453
|
+
morph-spec state mark-output $ARGUMENTS contracts
|
|
454
|
+
morph-spec state mark-output $ARGUMENTS decisions
|
|
455
455
|
```
|
|
456
456
|
|
|
457
457
|
If Azure costs were estimated:
|
|
458
458
|
```bash
|
|
459
|
-
|
|
459
|
+
morph-spec state set $ARGUMENTS costs.estimated {X.XX}
|
|
460
460
|
```
|
|
461
461
|
|
|
462
462
|
## MANDATORY PAUSE
|
|
@@ -477,8 +477,8 @@ npx morph-spec state set $ARGUMENTS costs.estimated {X.XX}
|
|
|
477
477
|
|
|
478
478
|
- **"Approve and continue"** →
|
|
479
479
|
```bash
|
|
480
|
-
|
|
481
|
-
|
|
480
|
+
morph-spec approve $ARGUMENTS design
|
|
481
|
+
morph-spec phase advance $ARGUMENTS
|
|
482
482
|
```
|
|
483
483
|
- **"I have feedback" / Other** → apply feedback and repeat PAUSE
|
|
484
484
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
**Ref:** `framework/standards/architecture/ddd/complexity-levels.md`
|
|
13
13
|
|
|
14
|
-
**Obtenha o taskPrompt do dispatch config** (`
|
|
14
|
+
**Obtenha o taskPrompt do dispatch config** (`morph-spec dispatch-agents $ARGUMENTS design`) e use o Task tool:
|
|
15
15
|
|
|
16
16
|
```
|
|
17
17
|
[Task tool — domain-architect]
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"sessionId": "",
|
|
3
|
+
"feature": "",
|
|
4
|
+
"phase": "",
|
|
5
|
+
"hooks": [
|
|
6
|
+
{
|
|
7
|
+
"name": "set-terminal-title",
|
|
8
|
+
"event": "UserPromptSubmit",
|
|
9
|
+
"result": "failed",
|
|
10
|
+
"ts": "16:06:20"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "set-terminal-title",
|
|
14
|
+
"event": "UserPromptSubmit",
|
|
15
|
+
"result": "failed",
|
|
16
|
+
"ts": "16:12:07"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "set-terminal-title",
|
|
20
|
+
"event": "UserPromptSubmit",
|
|
21
|
+
"result": "failed",
|
|
22
|
+
"ts": "16:12:15"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "set-terminal-title",
|
|
26
|
+
"event": "UserPromptSubmit",
|
|
27
|
+
"result": "failed",
|
|
28
|
+
"ts": "16:12:15"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "set-terminal-title",
|
|
32
|
+
"event": "UserPromptSubmit",
|
|
33
|
+
"result": "failed",
|
|
34
|
+
"ts": "16:12:40"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"skills": []
|
|
38
|
+
}
|
|
@@ -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.11.0"
|
|
9
9
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Agent
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -27,7 +27,7 @@ Implement the tasks defined in Phase 4, with checkpoints every 3 tasks and a fin
|
|
|
27
27
|
**Before any reads or writes — verify the current phase:**
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
|
|
30
|
+
morph-spec state get $ARGUMENTS
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
Check the `"phase"` field:
|
|
@@ -35,9 +35,9 @@ Check the `"phase"` field:
|
|
|
35
35
|
**If `"phase": "implement"`** → correct phase, proceed.
|
|
36
36
|
|
|
37
37
|
**If `"phase": "tasks"`** → run in sequence:
|
|
38
|
-
1. `
|
|
39
|
-
2. `
|
|
40
|
-
3. `
|
|
38
|
+
1. `morph-spec state mark-output $ARGUMENTS tasks`
|
|
39
|
+
2. `morph-spec approve $ARGUMENTS tasks`
|
|
40
|
+
3. `morph-spec phase advance $ARGUMENTS` (→ implement)
|
|
41
41
|
|
|
42
42
|
**Any other value** → STOP — inconsistent state, report to user.
|
|
43
43
|
|
|
@@ -51,13 +51,13 @@ Before any task work, validate that prior phases are truly complete. `state.json
|
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
53
|
# 1. Verify mandatory outputs from all prior phases
|
|
54
|
-
|
|
54
|
+
morph-spec validate-feature $ARGUMENTS
|
|
55
55
|
|
|
56
56
|
# 2. Confirm all approval gates passed
|
|
57
|
-
|
|
57
|
+
morph-spec approval-status $ARGUMENTS
|
|
58
58
|
|
|
59
59
|
# 3. Verify activeAgents are populated
|
|
60
|
-
|
|
60
|
+
morph-spec state get $ARGUMENTS | grep -A5 activeAgents
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
If any check fails → **STOP**. Do not start any task. Report what's missing:
|
|
@@ -65,8 +65,8 @@ If any check fails → **STOP**. Do not start any task. Report what's missing:
|
|
|
65
65
|
| Problem | Resolution |
|
|
66
66
|
|---------|-----------|
|
|
67
67
|
| Missing output (spec.md, contracts, etc.) | Return to corresponding phase and generate it |
|
|
68
|
-
| Gate not approved (design, plan, tasks) | `
|
|
69
|
-
| Invalid phase | `
|
|
68
|
+
| Gate not approved (design, plan, tasks) | `morph-spec approve $ARGUMENTS <gate>` |
|
|
69
|
+
| Invalid phase | `morph-spec phase advance $ARGUMENTS` |
|
|
70
70
|
| Empty activeAgents | Run `/phase-setup $ARGUMENTS` first |
|
|
71
71
|
|
|
72
72
|
**This step is not optional.** Only proceed when all commands return without errors.
|
|
@@ -111,7 +111,7 @@ Use `AskUserQuestion` with header `"{MCP}"` and options:
|
|
|
111
111
|
|
|
112
112
|
| Action | Tool | Alternative |
|
|
113
113
|
|--------|------|-------------|
|
|
114
|
-
| Check execution mode (single/subagents/agent-teams) | **Bash** `
|
|
114
|
+
| Check execution mode (single/subagents/agent-teams) | **Bash** `morph-spec dispatch-agents $ARGUMENTS implement` | Task groups + subagent prompts |
|
|
115
115
|
| **Dispatch implementers by domain** (subagents) | **Agent** `subagent_type=<taskGroups[group].subagentType>` + `prompt=taskPrompt` from dispatch config | Backend + frontend + infra in parallel |
|
|
116
116
|
| **Create Agent Team** (critical multi-domain features) | Natural language — see Step 0.5b | — |
|
|
117
117
|
| Read task details | **Read** tasks.md, spec.md, contracts.cs/.ts | — |
|
|
@@ -121,14 +121,14 @@ Use `AskUserQuestion` with header `"{MCP}"` and options:
|
|
|
121
121
|
| Run migrations | **Supabase MCP** `query()` | **Bash** `npx supabase migration ...` |
|
|
122
122
|
| Build project | **Bash** `dotnet build` or `npm run build` | — |
|
|
123
123
|
| Run tests | **Bash** `dotnet test` or `npm test` | — |
|
|
124
|
-
| Checkpoint validation | **Bash** `
|
|
125
|
-
| Mark task complete | **Bash** `
|
|
124
|
+
| Checkpoint validation | **Bash** `morph-spec validate-feature ...` | — |
|
|
125
|
+
| Mark task complete | **Bash** `morph-spec task done $ARGUMENTS T001` | — |
|
|
126
126
|
| Smoke test in browser | **Playwright MCP** `browser_navigate()` + `browser_snapshot()` | Manual |
|
|
127
127
|
| Check console errors | **Playwright MCP** `browser_console_messages()` | — |
|
|
128
128
|
| Screenshot for recap | **Playwright MCP** `browser_take_screenshot()` | — |
|
|
129
129
|
| Deploy and logs Vercel | **Vercel MCP** `list_projects()`, `get_deployments()`, `manage_env_vars()` | **Bash** `vercel deploy` |
|
|
130
130
|
| Create PR | **Bash** `gh pr create ...` | **GitHub MCP** `create_pull_request()` |
|
|
131
|
-
| Update state | **Bash** `
|
|
131
|
+
| Update state | **Bash** `morph-spec state set ...` | — |
|
|
132
132
|
|
|
133
133
|
**Phase MCPs:** Supabase (migrations, RLS), Context7 (API lookup), Playwright (smoke test), GitHub (PRs), Vercel (deploy, logs, env vars).
|
|
134
134
|
|
|
@@ -227,7 +227,7 @@ The strategy was defined and approved in the Plan phase. Use it directly:
|
|
|
227
227
|
If `plan.md` doesn't exist or the field is missing, auto-detect via dispatch-agents:
|
|
228
228
|
|
|
229
229
|
```bash
|
|
230
|
-
|
|
230
|
+
morph-spec dispatch-agents $ARGUMENTS implement
|
|
231
231
|
```
|
|
232
232
|
|
|
233
233
|
Check the `mode` field in the JSON output to determine the execution strategy.
|
|
@@ -239,7 +239,7 @@ Check the `mode` field in the JSON output to determine the execution strategy.
|
|
|
239
239
|
**Step 0.5a: Get dispatch config:**
|
|
240
240
|
|
|
241
241
|
```bash
|
|
242
|
-
|
|
242
|
+
morph-spec dispatch-agents $ARGUMENTS implement
|
|
243
243
|
```
|
|
244
244
|
|
|
245
245
|
Parse the JSON output. Extract `taskGroups` and each group's `subagentType`.
|
|
@@ -252,7 +252,7 @@ For each group, verify `.claude/agents/{subagentType}.md` exists:
|
|
|
252
252
|
ls .claude/agents/{subagentType}.md
|
|
253
253
|
```
|
|
254
254
|
|
|
255
|
-
If missing → **STOP** with: `"Agent file .claude/agents/{subagentType}.md not found. Run:
|
|
255
|
+
If missing → **STOP** with: `"Agent file .claude/agents/{subagentType}.md not found. Run: morph-spec setup-infra"`. Do NOT fall back to general-purpose agents for missing files.
|
|
256
256
|
|
|
257
257
|
**Step 0.5c: Dispatch subagents:**
|
|
258
258
|
|
|
@@ -271,7 +271,7 @@ Each subagent receives a prompt with:
|
|
|
271
271
|
- **MANDATORY verification before every `task done`** (see Step 2, item 6b)
|
|
272
272
|
|
|
273
273
|
2. Dispatch subagents for groups in **parallel** (when no cross-group dependencies)
|
|
274
|
-
3. After all complete, validate integration: `
|
|
274
|
+
3. After all complete, validate integration: `morph-spec validate-feature $ARGUMENTS --phase implement`
|
|
275
275
|
|
|
276
276
|
**Fallback:** If `dispatch-agents` fails (non-zero exit or invalid JSON), log a warning and fall back to sequential single-agent mode (Step 2).
|
|
277
277
|
|
|
@@ -294,14 +294,14 @@ Create the team with natural language specifying:
|
|
|
294
294
|
- Enable **plan approval**: teammates must get plans approved before implementing
|
|
295
295
|
- Gate: only approve plans matching contracts.cs/.ts and spec.md
|
|
296
296
|
|
|
297
|
-
After all teammates complete: `
|
|
297
|
+
After all teammates complete: `morph-spec validate-feature $ARGUMENTS --phase implement`
|
|
298
298
|
|
|
299
299
|
---
|
|
300
300
|
|
|
301
301
|
### Step 2: Task Loop
|
|
302
302
|
|
|
303
303
|
```bash
|
|
304
|
-
|
|
304
|
+
morph-spec task next $ARGUMENTS
|
|
305
305
|
```
|
|
306
306
|
|
|
307
307
|
For each task (T001 → T00N):
|
|
@@ -312,7 +312,7 @@ For each task (T001 → T00N):
|
|
|
312
312
|
```
|
|
313
313
|
2. **Start via CLI:**
|
|
314
314
|
```bash
|
|
315
|
-
|
|
315
|
+
morph-spec task start $ARGUMENTS T001
|
|
316
316
|
```
|
|
317
317
|
3. **Read the task description** + contracts.cs/.ts for relevant DTOs/interfaces
|
|
318
318
|
4. **Implement** using Write (new) or Edit (existing)
|
|
@@ -320,12 +320,12 @@ For each task (T001 → T00N):
|
|
|
320
320
|
6. **MANDATORY — Verification before `task done`:**
|
|
321
321
|
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.
|
|
322
322
|
```bash
|
|
323
|
-
|
|
323
|
+
morph-spec validate-feature $ARGUMENTS --phase implement
|
|
324
324
|
```
|
|
325
325
|
Only proceed to step 7 if verification passes. If it fails → fix before marking `task done`.
|
|
326
326
|
7. **Mark as done via CLI:**
|
|
327
327
|
```bash
|
|
328
|
-
|
|
328
|
+
morph-spec task done $ARGUMENTS T001
|
|
329
329
|
```
|
|
330
330
|
8. **If `task done` returns without error, update group task progress:**
|
|
331
331
|
- Increment completed count for the task's group
|
|
@@ -339,10 +339,10 @@ For each task (T001 → T00N):
|
|
|
339
339
|
|
|
340
340
|
```bash
|
|
341
341
|
# Save checkpoint
|
|
342
|
-
|
|
342
|
+
morph-spec checkpoint-save $ARGUMENTS
|
|
343
343
|
|
|
344
344
|
# Run validation
|
|
345
|
-
|
|
345
|
+
morph-spec validate-feature $ARGUMENTS --phase implement
|
|
346
346
|
```
|
|
347
347
|
|
|
348
348
|
**If validation fails:**
|
|
@@ -392,7 +392,7 @@ await mcp__playwright__browser_take_screenshot({ type: 'png' });
|
|
|
392
392
|
After ALL tasks completed:
|
|
393
393
|
|
|
394
394
|
```bash
|
|
395
|
-
|
|
395
|
+
morph-spec generate recap $ARGUMENTS
|
|
396
396
|
```
|
|
397
397
|
|
|
398
398
|
> For the full recap format, see `references/recap-example.md`
|
|
@@ -400,8 +400,8 @@ npx morph-spec generate recap $ARGUMENTS
|
|
|
400
400
|
### Step 7: Update State
|
|
401
401
|
|
|
402
402
|
```bash
|
|
403
|
-
|
|
404
|
-
|
|
403
|
+
morph-spec state set $ARGUMENTS status done
|
|
404
|
+
morph-spec state mark-output $ARGUMENTS recap
|
|
405
405
|
```
|
|
406
406
|
|
|
407
407
|
### Step 8: Post-Implementation Review (mandatory before PR)
|
|
@@ -440,7 +440,7 @@ morph-spec uses its own agents and validators for implementation, dispatch, and
|
|
|
440
440
|
|
|
441
441
|
Implementers are dispatched via `dispatch-agents`:
|
|
442
442
|
```bash
|
|
443
|
-
|
|
443
|
+
morph-spec dispatch-agents $ARGUMENTS implement
|
|
444
444
|
```
|
|
445
445
|
|
|
446
446
|
Use the `subagentType` from each group in the Agent tool:
|