@polymorphism-tech/morph-spec 4.10.10 → 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/README.md +5 -11
- package/bin/morph-spec.js +1 -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/frontend/css-specialist.md +1 -1
- package/framework/agents/infrastructure/azure-deploy-specialist.md +4 -4
- 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/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/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-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/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/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/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/project/doctor.js +3 -4
- package/src/commands/project/status.js +8 -1
- package/src/commands/scope/escalate.js +5 -3
- package/src/commands/validation/validate-feature.js +32 -3
- package/src/scripts/global-install.js +57 -3
- package/src/utils/version-checker.js +1 -7
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Spec-driven development framework for multi-stack projects. Turns feature requests into implementation-ready code through structured, AI-orchestrated phases.
|
|
4
4
|
|
|
5
5
|
**Package:** `@polymorphism-tech/morph-spec`
|
|
6
|
-
**Version:** 4.
|
|
6
|
+
**Version:** 4.11.0
|
|
7
7
|
**Requires:** Node.js 18+, Claude Code
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -312,17 +312,11 @@ After updating, run `morph-spec doctor` to confirm the installation is healthy.
|
|
|
312
312
|
|
|
313
313
|
### `morph-spec: command not found`
|
|
314
314
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
```bash
|
|
318
|
-
npx @polymorphism-tech/morph-spec init
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
Or add the npm global bin to your PATH:
|
|
315
|
+
The installer automatically adds the npm global directory to your PowerShell `$PROFILE`. Open a **new terminal** after installing. If it still doesn't work, add it manually:
|
|
322
316
|
|
|
323
317
|
```bash
|
|
324
318
|
npm config get prefix
|
|
325
|
-
# Add {prefix}
|
|
319
|
+
# Add {prefix} to your PATH
|
|
326
320
|
```
|
|
327
321
|
|
|
328
322
|
### `morph-spec doctor` reports issues
|
|
@@ -354,7 +348,7 @@ npm config set prefix %APPDATA%\npm-global
|
|
|
354
348
|
npm install -g @polymorphism-tech/morph-spec
|
|
355
349
|
```
|
|
356
350
|
|
|
357
|
-
1.
|
|
351
|
+
1. Open a new terminal (the installer adds npm to your PATH automatically)
|
|
358
352
|
|
|
359
353
|
### Hook not triggering on SessionStart
|
|
360
354
|
|
|
@@ -376,4 +370,4 @@ Code generated by morph-spec (contracts, templates, implementation output) belon
|
|
|
376
370
|
|
|
377
371
|
---
|
|
378
372
|
|
|
379
|
-
*morph-spec v4.
|
|
373
|
+
*morph-spec v4.11.0 by [Polymorphism Tech](https://polymorphism.tech)*
|
package/bin/morph-spec.js
CHANGED
package/bin/task-manager.js
CHANGED
|
@@ -408,7 +408,7 @@ class TaskManager {
|
|
|
408
408
|
// This is fail-open by design: a broken validator shouldn't block commits.
|
|
409
409
|
// Common cause: missing optional deps.
|
|
410
410
|
console.log(chalk.yellow(`\n⚠️ Validation skipped (${error.message})`));
|
|
411
|
-
console.log(chalk.gray(` Run manually:
|
|
411
|
+
console.log(chalk.gray(` Run manually: morph-spec validate-feature ${featureName}`));
|
|
412
412
|
return { passed: true, validators: {}, passRate: 1.0 };
|
|
413
413
|
}
|
|
414
414
|
}
|
|
@@ -850,7 +850,7 @@ async function main() {
|
|
|
850
850
|
const taskIds = filteredArgs.slice(2);
|
|
851
851
|
|
|
852
852
|
if (!featureName || taskIds.length === 0) {
|
|
853
|
-
console.error(chalk.red('Usage:
|
|
853
|
+
console.error(chalk.red('Usage: morph-spec task done <feature> <task-id> [task-id...] [--skip-validation] [--dry-run]'));
|
|
854
854
|
process.exit(1);
|
|
855
855
|
}
|
|
856
856
|
|
|
@@ -870,7 +870,7 @@ async function main() {
|
|
|
870
870
|
const rangeArg = filteredArgs[2]; // e.g. T001..T082
|
|
871
871
|
|
|
872
872
|
if (!featureName) {
|
|
873
|
-
console.error(chalk.red('Usage:
|
|
873
|
+
console.error(chalk.red('Usage: morph-spec task bulk-done <feature> [--all | --from T001 --to T053 | T001..T082] [--skip-validation] [--dry-run]'));
|
|
874
874
|
process.exit(1);
|
|
875
875
|
}
|
|
876
876
|
|
|
@@ -886,7 +886,7 @@ async function main() {
|
|
|
886
886
|
const taskId = args[2];
|
|
887
887
|
|
|
888
888
|
if (!featureName || !taskId) {
|
|
889
|
-
console.error(chalk.red('Usage:
|
|
889
|
+
console.error(chalk.red('Usage: morph-spec task start <feature> <task-id>'));
|
|
890
890
|
process.exit(1);
|
|
891
891
|
}
|
|
892
892
|
|
|
@@ -898,7 +898,7 @@ async function main() {
|
|
|
898
898
|
const featureName = args[1];
|
|
899
899
|
|
|
900
900
|
if (!featureName) {
|
|
901
|
-
console.error(chalk.red('Usage:
|
|
901
|
+
console.error(chalk.red('Usage: morph-spec task next <feature>'));
|
|
902
902
|
process.exit(1);
|
|
903
903
|
}
|
|
904
904
|
|
package/claude-plugin.json
CHANGED
package/docs/CHEATSHEET.md
CHANGED
package/docs/QUICKSTART.md
CHANGED
|
@@ -6,13 +6,7 @@
|
|
|
6
6
|
npm install -g @polymorphism-tech/morph-spec
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npx @polymorphism-tech/morph-spec init
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
> **Windows / nvm-windows:** Global installs may not appear on PATH. Use `npx` or add the npm prefix to PATH manually: `npm config get prefix`, then add `{prefix}` to your PATH.
|
|
9
|
+
> The installer automatically configures your PowerShell PATH on Windows. If `morph-spec` is not found, open a new terminal window.
|
|
16
10
|
|
|
17
11
|
---
|
|
18
12
|
|
|
@@ -203,4 +197,4 @@ morph-spec doctor
|
|
|
203
197
|
|
|
204
198
|
---
|
|
205
199
|
|
|
206
|
-
*morph-spec v4.
|
|
200
|
+
*morph-spec v4.11.0 by Polymorphism Tech*
|
|
@@ -67,7 +67,7 @@ When reviewing CSS:
|
|
|
67
67
|
|
|
68
68
|
If project already has CSS variables, scan them:
|
|
69
69
|
```bash
|
|
70
|
-
|
|
70
|
+
morph-spec generate design-system --scan
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
This extracts existing `:root { --var: value }` declarations and populates design-system.md.
|
|
@@ -220,7 +220,7 @@ Por favor, forneca os valores abaixo. Serao armazenados de forma segura.
|
|
|
220
220
|
|
|
221
221
|
```bash
|
|
222
222
|
# Validar custos antes de deploy
|
|
223
|
-
|
|
223
|
+
morph-spec cost infra/main.bicep --verbose
|
|
224
224
|
|
|
225
225
|
# Se custo > limite configurado:
|
|
226
226
|
# 1. PARAR deployment
|
|
@@ -563,7 +563,7 @@ Para uso em pipelines Azure DevOps:
|
|
|
563
563
|
|
|
564
564
|
```bash
|
|
565
565
|
# Uso automatico (sem pausas interativas)
|
|
566
|
-
|
|
566
|
+
morph-spec deploy prod --auto \
|
|
567
567
|
--sql-password "$(SQL_PASSWORD)" \
|
|
568
568
|
--tenant-id "$(TENANT_ID)" \
|
|
569
569
|
--client-secret "$(CLIENT_SECRET)" \
|
|
@@ -622,7 +622,7 @@ stages:
|
|
|
622
622
|
deploy:
|
|
623
623
|
steps:
|
|
624
624
|
- script: |
|
|
625
|
-
|
|
625
|
+
morph-spec deploy dev --auto \
|
|
626
626
|
--sql-password "$(SqlPassword)" \
|
|
627
627
|
--skip-confirmation
|
|
628
628
|
displayName: 'Deploy to Dev'
|
|
@@ -638,7 +638,7 @@ stages:
|
|
|
638
638
|
deploy:
|
|
639
639
|
steps:
|
|
640
640
|
- script: |
|
|
641
|
-
|
|
641
|
+
morph-spec deploy prod --auto \
|
|
642
642
|
--sql-password "$(SqlPasswordProd)" \
|
|
643
643
|
--skip-confirmation
|
|
644
644
|
displayName: 'Deploy to Prod'
|
|
@@ -23,10 +23,10 @@ Implement the feature by executing its task breakdown, tracking progress through
|
|
|
23
23
|
|--------|------|-------------|
|
|
24
24
|
| Read spec, tasks, contracts | **Read** all outputs | — |
|
|
25
25
|
| Detect architecture style | **Bash** `cat .morph/config/config.json \| grep architecture` | — |
|
|
26
|
-
| Agent dispatch config | **Bash** `
|
|
26
|
+
| Agent dispatch config | **Bash** `morph-spec dispatch-agents $ARGUMENTS implement` | — |
|
|
27
27
|
| Parallel task execution | **Agent** subagent per task group | Sequential fallback |
|
|
28
28
|
| Look up implementation patterns | **Context7 MCP** `query_docs()` | **WebSearch** |
|
|
29
|
-
| Track progress | **Bash** `
|
|
29
|
+
| Track progress | **Bash** `morph-spec state get $ARGUMENTS` | — |
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
@@ -37,9 +37,9 @@ Before writing any code, verify all prior phases are complete. This gate prevent
|
|
|
37
37
|
### 1. Check state and approvals
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
morph-spec state get $ARGUMENTS
|
|
41
|
+
morph-spec approval-status $ARGUMENTS
|
|
42
|
+
morph-spec validate-feature $ARGUMENTS
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
**All three must pass.** If any fails:
|
|
@@ -87,13 +87,13 @@ cat .morph/config/config.json | grep -A3 '"architecture"'
|
|
|
87
87
|
### 4. Get agent dispatch config
|
|
88
88
|
|
|
89
89
|
```bash
|
|
90
|
-
|
|
90
|
+
morph-spec dispatch-agents $ARGUMENTS implement --table
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
This shows which agents are active for implementation and how tasks can be grouped. If agent teams are enabled and tasks have no dependencies between groups, consider dispatching parallel agents:
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
|
-
|
|
96
|
+
morph-spec dispatch-agents $ARGUMENTS implement
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
The JSON output includes `shouldDispatch`, `agents[]`, and `taskGroups` for multi-agent coordination.
|
|
@@ -105,7 +105,7 @@ The JSON output includes `shouldDispatch`, `agents[]`, and `taskGroups` for mult
|
|
|
105
105
|
### Step 1: Advance to implement phase
|
|
106
106
|
|
|
107
107
|
```bash
|
|
108
|
-
|
|
108
|
+
morph-spec phase advance $ARGUMENTS
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
This validates phase eligibility and emits a SKILL DISPATCH block listing required skills for implementation (verification-before-completion, morph-checklist, etc.).
|
|
@@ -113,7 +113,7 @@ This validates phase eligibility and emits a SKILL DISPATCH block listing requir
|
|
|
113
113
|
### Step 2: Initialize state tracking
|
|
114
114
|
|
|
115
115
|
```bash
|
|
116
|
-
|
|
116
|
+
morph-spec state set $ARGUMENTS tasks.total {N}
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
Where `{N}` is the number of tasks in tasks.md (e.g., 6 for T001-T006).
|
|
@@ -124,7 +124,7 @@ For each task in the breakdown, follow this cycle:
|
|
|
124
124
|
|
|
125
125
|
```bash
|
|
126
126
|
# 1. Start the task (activates task-tracking guard)
|
|
127
|
-
|
|
127
|
+
morph-spec task start $ARGUMENTS {task-id}
|
|
128
128
|
|
|
129
129
|
# 2. Implement the task
|
|
130
130
|
# - Follow spec.md and contracts
|
|
@@ -136,7 +136,7 @@ npx morph-spec task start $ARGUMENTS {task-id}
|
|
|
136
136
|
# matches the spec and contracts before marking done
|
|
137
137
|
|
|
138
138
|
# 4. Complete the task (triggers Tier-4 validators automatically)
|
|
139
|
-
|
|
139
|
+
morph-spec task done $ARGUMENTS {task-id}
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
**If validation fails on `task done`:**
|
|
@@ -153,8 +153,8 @@ If `dispatch-agents` identified parallelizable task groups and agent teams are e
|
|
|
153
153
|
After every 3 completed tasks, save a checkpoint:
|
|
154
154
|
|
|
155
155
|
```bash
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
morph-spec checkpoint-save $ARGUMENTS "after-T003"
|
|
157
|
+
morph-spec state get $ARGUMENTS
|
|
158
158
|
```
|
|
159
159
|
|
|
160
160
|
Checkpoints validate architecture compliance, check package versions, scan for security issues, and save a restorable snapshot. The cadence is every 3 tasks — for 6 tasks: checkpoint after T003 and T006. For 10 tasks: after T003, T006, T009, and at completion.
|
|
@@ -162,7 +162,7 @@ Checkpoints validate architecture compliance, check package versions, scan for s
|
|
|
162
162
|
After each checkpoint, check progress:
|
|
163
163
|
|
|
164
164
|
```bash
|
|
165
|
-
|
|
165
|
+
morph-spec state list
|
|
166
166
|
```
|
|
167
167
|
|
|
168
168
|
### Step 5: Finalize implementation
|
|
@@ -171,16 +171,16 @@ After all tasks are complete:
|
|
|
171
171
|
|
|
172
172
|
```bash
|
|
173
173
|
# Final validation
|
|
174
|
-
|
|
174
|
+
morph-spec validate-feature $ARGUMENTS
|
|
175
175
|
|
|
176
176
|
# Generate recap (auto-marks 'recap' output in state)
|
|
177
|
-
|
|
177
|
+
morph-spec generate recap $ARGUMENTS
|
|
178
178
|
|
|
179
179
|
# Verify final state
|
|
180
|
-
|
|
180
|
+
morph-spec state get $ARGUMENTS
|
|
181
181
|
|
|
182
182
|
# Advance to next phase
|
|
183
|
-
|
|
183
|
+
morph-spec phase advance $ARGUMENTS
|
|
184
184
|
```
|
|
185
185
|
|
|
186
186
|
### Step 6: Post-implementation review
|
|
@@ -26,9 +26,9 @@ These checks verify that the morph-spec workflow is complete for the feature bei
|
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
28
|
# Verify implementation is complete
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
morph-spec state get {feature}
|
|
30
|
+
morph-spec approval-status {feature}
|
|
31
|
+
morph-spec validate-feature {feature}
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
| Check | Command | Pass Criteria |
|
|
@@ -15,7 +15,7 @@ Guide a feature through the full planning pipeline (proposal through tasks) with
|
|
|
15
15
|
Check if the feature already has state:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
|
|
18
|
+
morph-spec state get {feature-name}
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
- **Exists:** Read the current phase and resume from where it stopped (skip completed phases)
|
|
@@ -40,7 +40,7 @@ Read `framework/agents.json` (or `.morph/framework/agents.json` in client projec
|
|
|
40
40
|
|
|
41
41
|
Register each selected agent:
|
|
42
42
|
```bash
|
|
43
|
-
|
|
43
|
+
morph-spec state add-agent {feature-name} {agent-id}
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
### Step 3: Determine if UI/UX phase is needed
|
|
@@ -70,9 +70,9 @@ Fill every section of the template. In particular:
|
|
|
70
70
|
### Step 5: Register state
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
morph-spec state init {feature-name}
|
|
74
|
+
morph-spec state set {feature-name} status draft
|
|
75
|
+
morph-spec state mark-output {feature-name} proposal
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
### MANDATORY PAUSE
|
|
@@ -88,8 +88,8 @@ Options: Approve proposal / Request changes / Reject
|
|
|
88
88
|
|
|
89
89
|
After approval:
|
|
90
90
|
```bash
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
morph-spec approve {feature-name} proposal
|
|
92
|
+
morph-spec phase advance {feature-name}
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
---
|
|
@@ -112,8 +112,8 @@ Check if `ui-designer` is in `activeAgents`:
|
|
|
112
112
|
|
|
113
113
|
After approval:
|
|
114
114
|
```bash
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
morph-spec approve {feature-name} uiux
|
|
116
|
+
morph-spec phase advance {feature-name}
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
---
|
|
@@ -130,8 +130,8 @@ Present: spec, contracts, decisions, effort estimate. Use `AskUserQuestion` with
|
|
|
130
130
|
|
|
131
131
|
After approval:
|
|
132
132
|
```bash
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
morph-spec approve {feature-name} design
|
|
134
|
+
morph-spec phase advance {feature-name}
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
---
|
|
@@ -158,8 +158,8 @@ Present: implementation plan with recommended strategy. Use `AskUserQuestion` wi
|
|
|
158
158
|
|
|
159
159
|
After approval:
|
|
160
160
|
```bash
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
morph-spec approve {feature-name} plan
|
|
162
|
+
morph-spec phase advance {feature-name}
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
---
|
|
@@ -176,8 +176,8 @@ Present: task breakdown, execution order, total estimate. Use `AskUserQuestion`
|
|
|
176
176
|
|
|
177
177
|
After approval:
|
|
178
178
|
```bash
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
morph-spec approve {feature-name} tasks
|
|
180
|
+
morph-spec phase advance {feature-name}
|
|
181
181
|
```
|
|
182
182
|
|
|
183
183
|
---
|
|
@@ -13,7 +13,7 @@ Show the current MORPH project status and features in development.
|
|
|
13
13
|
**ALWAYS** use the state-manager CLI to get status:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
|
|
16
|
+
morph-spec state list
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
This command automatically shows:
|
|
@@ -35,7 +35,7 @@ This command automatically shows:
|
|
|
35
35
|
To get detailed JSON for a feature:
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
|
|
38
|
+
morph-spec state get {feature-name}
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
### 3. Archived Features
|
|
@@ -51,7 +51,7 @@ Check `.morph/specs/` for consolidated specs.
|
|
|
51
51
|
|
|
52
52
|
## Output
|
|
53
53
|
|
|
54
|
-
The `
|
|
54
|
+
The `morph-spec state list` command automatically generates a formatted dashboard:
|
|
55
55
|
|
|
56
56
|
```
|
|
57
57
|
╔════════════════════════════════════════════════════════════════╗
|
|
@@ -72,7 +72,7 @@ site:learn.microsoft.com/azure {error}
|
|
|
72
72
|
**WebSearch usage example:**
|
|
73
73
|
|
|
74
74
|
If the user asks about a SignalR error:
|
|
75
|
-
1. First: `
|
|
75
|
+
1. First: `morph-spec troubleshoot SignalR connection`
|
|
76
76
|
2. If not found: WebSearch with `site:github.com/dotnet/aspnetcore SignalR connection closed`
|
|
77
77
|
3. Return formatted relevant links
|
|
78
78
|
|
|
@@ -50,8 +50,8 @@ try {
|
|
|
50
50
|
approve(
|
|
51
51
|
`[morph-spec] WARNING: No active task tracking detected during implement phase.\n` +
|
|
52
52
|
`Before writing code, start a task:\n` +
|
|
53
|
-
`
|
|
54
|
-
`
|
|
53
|
+
` morph-spec task next ${name} # see what's next\n` +
|
|
54
|
+
` morph-spec task start ${name} <id> # mark it in progress\n` +
|
|
55
55
|
`Task tracking ensures validators run, checkpoints fire, and progress is recorded.`
|
|
56
56
|
);
|
|
57
57
|
} catch {
|
|
@@ -140,7 +140,7 @@ try {
|
|
|
140
140
|
if (trustLevel !== 'high' && trustLevel !== 'maximum') {
|
|
141
141
|
lines.push('');
|
|
142
142
|
lines.push(`⚠ Trust level: ${trustLevel} — approval gates require manual approval`);
|
|
143
|
-
lines.push(` To auto-approve:
|
|
143
|
+
lines.push(` To auto-approve: morph-spec trust set ${name} high`);
|
|
144
144
|
}
|
|
145
145
|
if (!workflow && config?.workflowDetection?.confidence === 0) {
|
|
146
146
|
lines.push('');
|
|
@@ -51,7 +51,7 @@ try {
|
|
|
51
51
|
|
|
52
52
|
try {
|
|
53
53
|
output = execSync(
|
|
54
|
-
`
|
|
54
|
+
`morph-spec validate-feature "${featureName}" --phase implement --quiet`,
|
|
55
55
|
{
|
|
56
56
|
cwd: process.cwd(),
|
|
57
57
|
encoding: 'utf-8',
|
|
@@ -71,9 +71,9 @@ try {
|
|
|
71
71
|
const feedback = [
|
|
72
72
|
'MORPH-SPEC validation found issues — please fix before going idle:',
|
|
73
73
|
'',
|
|
74
|
-
output.trim() || 'Run `
|
|
74
|
+
output.trim() || 'Run `morph-spec validate-feature to see details.',
|
|
75
75
|
'',
|
|
76
|
-
`Run:
|
|
76
|
+
`Run: morph-spec validate-feature ${featureName} --phase implement`,
|
|
77
77
|
].join('\n');
|
|
78
78
|
|
|
79
79
|
// Claude Code reads additionalContext from stdout for exit code 2
|
|
@@ -72,8 +72,8 @@ try {
|
|
|
72
72
|
context.push(
|
|
73
73
|
`[morph-spec] REMINDER: No task is currently in_progress for '${name}'.` +
|
|
74
74
|
` Start a task before coding:\n` +
|
|
75
|
-
`
|
|
76
|
-
`
|
|
75
|
+
` morph-spec task next ${name} # see what's next\n` +
|
|
76
|
+
` morph-spec task start ${name} <id> # mark it in progress`
|
|
77
77
|
);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -10,7 +10,7 @@ if git diff --cached --name-only | grep -q 'agents\.json$'; then
|
|
|
10
10
|
echo "Detected changes to agents.json"
|
|
11
11
|
|
|
12
12
|
# Run validator
|
|
13
|
-
if !
|
|
13
|
+
if ! morph-spec validate-agents-skills; then
|
|
14
14
|
echo ""
|
|
15
15
|
echo "❌ COMMIT BLOCKED: agents.json validation failed"
|
|
16
16
|
echo " Fix errors above before committing"
|
|
@@ -22,12 +22,12 @@ allowed-tools: Read, Bash, Glob, Grep, AskUserQuestion
|
|
|
22
22
|
|
|
23
23
|
| Action | Tool | Alternative |
|
|
24
24
|
|--------|------|-------------|
|
|
25
|
-
| Load feature state | **Bash** `
|
|
25
|
+
| Load feature state | **Bash** `morph-spec state get $ARGUMENTS` | — |
|
|
26
26
|
| Read project config | **Read** `.morph/config/config.json` | — |
|
|
27
27
|
| Scan existing code | **Glob** / **Grep** | — |
|
|
28
28
|
| Research libraries | **Context7 MCP** `query_docs()` | **WebSearch** |
|
|
29
29
|
| Ask clarifying questions | **AskUserQuestion** (never plain text) | — |
|
|
30
|
-
| Render proposal template | **Bash** `
|
|
30
|
+
| Render proposal template | **Bash** `morph-spec template render docs/proposal ...` | — |
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
@@ -49,11 +49,11 @@ Update each to `in_progress` before its step and `completed` after.
|
|
|
49
49
|
|
|
50
50
|
Gather information before generating ideas. This step is what makes morph-aware brainstorming different from generic brainstorming — it grounds your thinking in the actual project state and constraints.
|
|
51
51
|
|
|
52
|
-
1. **Read state** — `
|
|
52
|
+
1. **Read state** — `morph-spec state get $ARGUMENTS` → current phase, active agents, existing outputs, task history
|
|
53
53
|
2. **Read config** — `.morph/config/config.json` → stack, architecture style (VSA vs standard), project name, integrations
|
|
54
54
|
3. **Check architecture** — `cat .morph/config/config.json | grep -A3 architecture` → determines which agents and patterns apply
|
|
55
55
|
4. **Read existing outputs** — proposal.md, spec.md, decisions.md (if they exist from prior work)
|
|
56
|
-
5. **Check active agents** — `
|
|
56
|
+
5. **Check active agents** — `morph-spec dispatch-agents $ARGUMENTS design --table` → which specialists are available
|
|
57
57
|
6. **Scan codebase** — use Glob/Grep to understand existing patterns, domain models, and service boundaries relevant to the feature
|
|
58
58
|
7. **Check MCP tools** — if Context7, GitHub, or other MCPs are available, use them for research
|
|
59
59
|
|
|
@@ -106,7 +106,7 @@ For each approach, document:
|
|
|
106
106
|
|
|
107
107
|
**Phase 0 (Proposal):**
|
|
108
108
|
```bash
|
|
109
|
-
|
|
109
|
+
morph-spec template render docs/proposal ".morph/features/$ARGUMENTS/0-proposal/proposal.md" '{"FEATURE_NAME":"...", "DATE":"..."}'
|
|
110
110
|
```
|
|
111
111
|
Then edit the rendered file to add the brainstorming results.
|
|
112
112
|
|
|
@@ -115,12 +115,12 @@ For each approach, document:
|
|
|
115
115
|
|
|
116
116
|
3. **Update state** (mandatory — do not skip):
|
|
117
117
|
```bash
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
morph-spec state mark-output $ARGUMENTS proposal # Phase 0
|
|
119
|
+
morph-spec state mark-output $ARGUMENTS decisions # Phase 2
|
|
120
120
|
```
|
|
121
121
|
Then verify the output was recorded:
|
|
122
122
|
```bash
|
|
123
|
-
|
|
123
|
+
morph-spec state get $ARGUMENTS
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
---
|
|
@@ -14,9 +14,9 @@ Types: `deploy`, `security`, `seo`, `performance`, `accessibility`, `legal-brazi
|
|
|
14
14
|
## Deploy
|
|
15
15
|
|
|
16
16
|
### MORPH-SPEC Validation (run first)
|
|
17
|
-
- [ ] `
|
|
18
|
-
- [ ] `
|
|
19
|
-
- [ ] `
|
|
17
|
+
- [ ] `morph-spec validate-feature {feature}` — passes with 100% pass rate
|
|
18
|
+
- [ ] `morph-spec approval-status {feature}` — all gates approved (design, plan, tasks)
|
|
19
|
+
- [ ] `morph-spec state get {feature}` — phase is `implement`, all tasks `done`
|
|
20
20
|
- [ ] Recap generated: `.morph/features/{feature}/5-implement/recap.md` exists
|
|
21
21
|
|
|
22
22
|
### Pre-Deploy
|
|
@@ -57,7 +57,7 @@ Store `stack`, `frontendPath`, `startCommand` and the detected context — all s
|
|
|
57
57
|
## Step 1 — Design Outputs Validation (if context includes design validation)
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
|
-
|
|
60
|
+
morph-spec validate-feature $ARGUMENTS
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
Verify existence and quality of the 4 mandatory outputs in `.morph/features/$ARGUMENTS/2-ui/`:
|
|
@@ -25,10 +25,10 @@ Before running any `morph-spec` command, detect how to invoke the CLI:
|
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
27
|
# Try local first (project dependency), then global
|
|
28
|
-
|
|
28
|
+
morph-spec --version
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
- If `
|
|
31
|
+
- If `morph-spec --version` succeeds → use `morph-spec` as the CLI prefix for all commands.
|
|
32
32
|
- If it fails → try `morph-spec --version` (global install). If that works → use `morph-spec`.
|
|
33
33
|
- If both fail → **STOP** and show:
|
|
34
34
|
```
|
|
@@ -36,7 +36,7 @@ npx morph-spec --version
|
|
|
36
36
|
npm install @polymorphism-tech/morph-spec
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
Use the resolved CLI prefix (e.g. `
|
|
39
|
+
Use the resolved CLI prefix (e.g. `morph-spec`) for ALL bash commands in the following steps.
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
@@ -78,19 +78,19 @@ Check if `.morph/` exists in the current directory.
|
|
|
78
78
|
|
|
79
79
|
**If MISSING:**
|
|
80
80
|
```bash
|
|
81
|
-
|
|
81
|
+
morph-spec setup-infra
|
|
82
82
|
```
|
|
83
83
|
Output confirms: `✓ MORPH-SPEC infrastructure installed.`
|
|
84
84
|
|
|
85
85
|
**If EXISTS and argument is `refresh`:**
|
|
86
86
|
Re-run setup-infra to update framework files, then continue with context/config refresh:
|
|
87
87
|
```bash
|
|
88
|
-
|
|
88
|
+
morph-spec setup-infra
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
**If EXISTS and no argument:**
|
|
92
92
|
Ask: *"MORPH already initialized. Refresh context and config? (y/n)"*
|
|
93
|
-
If `y` → re-run `
|
|
93
|
+
If `y` → re-run `morph-spec setup-infra` then continue.
|
|
94
94
|
If `n` → STOP.
|
|
95
95
|
|
|
96
96
|
---
|
|
@@ -359,7 +359,7 @@ And inform the user:
|
|
|
359
359
|
To create a new VSA project:
|
|
360
360
|
dotnet new install https://github.com/polymorphism-tech/Morph_Template_VerticalSliceArchitecture
|
|
361
361
|
dotnet new vsa -n MyProject
|
|
362
|
-
cd MyProject &&
|
|
362
|
+
cd MyProject && morph-spec init
|
|
363
363
|
```
|
|
364
364
|
|
|
365
365
|
---
|
|
@@ -374,7 +374,7 @@ For each detected integration with an available MCP:
|
|
|
374
374
|
```json
|
|
375
375
|
"supabase": { "type": "http", "url": "https://mcp.supabase.com/mcp" }
|
|
376
376
|
```
|
|
377
|
-
- NO → show snippet + `
|
|
377
|
+
- NO → show snippet + `morph-spec mcp setup supabase`
|
|
378
378
|
|
|
379
379
|
**GitHub:**
|
|
380
380
|
> *"Configure GitHub MCP? Requires Docker + a `GITHUB_PERSONAL_ACCESS_TOKEN`."*
|
|
@@ -386,7 +386,7 @@ For each detected integration with an available MCP:
|
|
|
386
386
|
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<token>" }
|
|
387
387
|
}
|
|
388
388
|
```
|
|
389
|
-
- NO → show snippet + `
|
|
389
|
+
- NO → show snippet + `morph-spec mcp setup github`
|
|
390
390
|
|
|
391
391
|
**Vercel detected** (vercel.json exists OR stack is nextjs):
|
|
392
392
|
> *"Configure Vercel MCP? Uses OAuth — no credentials needed."*
|
|
@@ -394,7 +394,7 @@ For each detected integration with an available MCP:
|
|
|
394
394
|
```json
|
|
395
395
|
"vercel": { "type": "http", "url": "https://mcp.vercel.com" }
|
|
396
396
|
```
|
|
397
|
-
- NO → show snippet + `
|
|
397
|
+
- NO → show snippet + `morph-spec mcp setup vercel`
|
|
398
398
|
|
|
399
399
|
Only offer Docker, Azure if explicitly detected in `.env.example`.
|
|
400
400
|
|
|
@@ -462,7 +462,7 @@ Use `AskUserQuestion` with header `"{MCP} failed"` and these options:
|
|
|
462
462
|
After all configuration is complete, run the health check to verify everything is properly installed:
|
|
463
463
|
|
|
464
464
|
```bash
|
|
465
|
-
|
|
465
|
+
morph-spec doctor
|
|
466
466
|
```
|
|
467
467
|
|
|
468
468
|
This validates: config.json integrity, agents.json presence, hooks installation, skills distribution, required command files, and state.json schema version. Fix any reported issues before proceeding.
|