@polymorphism-tech/morph-spec 4.10.3 β 4.10.5
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 +2 -2
- package/bin/morph-spec.js +3 -1
- package/bin/task-manager.js +21 -5
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/hooks/claude-code/post-tool-use/context-refresh.js +1 -1
- package/framework/phases.json +17 -17
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +1 -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 -1
- package/framework/skills/level-0-meta/morph-code-review-nextjs/SKILL.md +1 -1
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +3 -3
- package/framework/skills/level-0-meta/morph-init/SKILL.md +6 -6
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +7 -7
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +4 -4
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +1 -1
- package/framework/skills/level-0-meta/morph-simulation-checklist/SKILL.md +1 -1
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +1 -1
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +4 -4
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +2 -2
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +4 -4
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +4 -5
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +5 -6
- package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +3 -3
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +4 -5
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +4 -4
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +2 -2
- package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +1 -1
- package/package.json +1 -1
- package/src/commands/state/advance-phase.js +17 -4
- package/src/commands/state/approve.js +1 -1
- package/src/commands/state/state.js +26 -5
- package/src/lib/detectors/index.js +46 -28
- package/src/lib/phase-chain/phase-validator.js +6 -1
- package/src/lib/tasks/task-parser.js +4 -0
- package/src/scripts/setup-infra.js +1 -1
- package/src/utils/agents-installer.js +20 -11
- package/src/utils/banner.js +1 -1
- package/src/utils/hooks-installer.js +739 -739
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.10.
|
|
6
|
+
**Version:** 4.10.5
|
|
7
7
|
**Requires:** Node.js 18+, Claude Code
|
|
8
8
|
|
|
9
9
|
---
|
|
@@ -376,4 +376,4 @@ Code generated by morph-spec (contracts, templates, implementation output) belon
|
|
|
376
376
|
|
|
377
377
|
---
|
|
378
378
|
|
|
379
|
-
*morph-spec v4.10.
|
|
379
|
+
*morph-spec v4.10.5 by [Polymorphism Tech](https://polymorphism.tech)*
|
package/bin/morph-spec.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { program } from 'commander';
|
|
4
4
|
import chalk from 'chalk';
|
|
@@ -197,6 +197,8 @@ phaseCommand
|
|
|
197
197
|
.command('advance <feature>')
|
|
198
198
|
.description('Validate current phase and advance to next')
|
|
199
199
|
.option('--skip-optional', 'Skip optional phases (uiux, sync)')
|
|
200
|
+
.option('--skip-approval', 'Skip approval gate checks')
|
|
201
|
+
.option('--force', 'Force phase transition even if state machine rejects it')
|
|
200
202
|
.action((feature, options) => advancePhaseCommand(feature, options));
|
|
201
203
|
|
|
202
204
|
phaseCommand
|
package/bin/task-manager.js
CHANGED
|
@@ -121,6 +121,11 @@ class TaskManager {
|
|
|
121
121
|
throw new Error(`tasks.md found but no tasks could be parsed for '${featureName}'.\n Ensure tasks use the format: ### T001 β Title or ### T001: Title`);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
+
// Persist initial taskList so counters are visible in `state get` even if
|
|
125
|
+
// validation fails later and the completion save never runs.
|
|
126
|
+
syncCounters(feature);
|
|
127
|
+
saveState(state);
|
|
128
|
+
|
|
124
129
|
const results = [];
|
|
125
130
|
const tasksToComplete = [];
|
|
126
131
|
|
|
@@ -304,14 +309,20 @@ class TaskManager {
|
|
|
304
309
|
}
|
|
305
310
|
|
|
306
311
|
// Suggest next task
|
|
312
|
+
const activeTasks = taskList.filter(t => t.status !== 'expanded');
|
|
313
|
+
const allCompleted = activeTasks.length > 0 && activeTasks.every(t => t.status === 'completed');
|
|
307
314
|
const nextTask = this.getNextTask(taskList);
|
|
308
|
-
|
|
315
|
+
|
|
316
|
+
if (allCompleted) {
|
|
317
|
+
console.log(chalk.green('\nπ All tasks completed!'));
|
|
318
|
+
} else if (nextTask) {
|
|
309
319
|
console.log(chalk.cyan(`\nβοΈ Next: ${nextTask.id} - ${nextTask.title}`));
|
|
310
320
|
if (nextTask.dependencies && nextTask.dependencies.length > 0) {
|
|
311
321
|
console.log(chalk.gray(` Dependencies: ${nextTask.dependencies.join(', ')}`));
|
|
312
322
|
}
|
|
313
323
|
} else {
|
|
314
|
-
|
|
324
|
+
const remaining = activeTasks.filter(t => t.status !== 'completed');
|
|
325
|
+
console.log(chalk.yellow(`\nβΈοΈ No tasks available β ${remaining.length} task(s) have unmet dependencies`));
|
|
315
326
|
}
|
|
316
327
|
|
|
317
328
|
return results;
|
|
@@ -490,7 +501,7 @@ class TaskManager {
|
|
|
490
501
|
const result = await runValidation('.', featureName, { verbose: false });
|
|
491
502
|
validationNote = result.passed
|
|
492
503
|
? ' | Validation: PASSED'
|
|
493
|
-
: ` | Validation: ${result.errors
|
|
504
|
+
: ` | Validation: ${result.errors} errors, ${result.warnings} warnings`;
|
|
494
505
|
} catch {
|
|
495
506
|
// No validation available
|
|
496
507
|
}
|
|
@@ -743,9 +754,13 @@ class TaskManager {
|
|
|
743
754
|
}
|
|
744
755
|
|
|
745
756
|
const taskList = await ensureTaskList(feature, featureName);
|
|
757
|
+
const activeTasks = taskList.filter(t => t.status !== 'expanded');
|
|
758
|
+
const allCompleted = activeTasks.length > 0 && activeTasks.every(t => t.status === 'completed');
|
|
746
759
|
const nextTask = this.getNextTask(taskList);
|
|
747
760
|
|
|
748
|
-
if (
|
|
761
|
+
if (allCompleted) {
|
|
762
|
+
console.log(chalk.green('π All tasks completed!'));
|
|
763
|
+
} else if (nextTask) {
|
|
749
764
|
console.log(chalk.cyan(`\nβοΈ Next task: ${nextTask.id} - ${nextTask.title}`));
|
|
750
765
|
if (nextTask.dependencies && nextTask.dependencies.length > 0) {
|
|
751
766
|
console.log(chalk.gray(` Dependencies: ${nextTask.dependencies.join(', ')}`));
|
|
@@ -755,7 +770,8 @@ class TaskManager {
|
|
|
755
770
|
nextTask.files.forEach(f => console.log(chalk.gray(` - ${f}`)));
|
|
756
771
|
}
|
|
757
772
|
} else {
|
|
758
|
-
|
|
773
|
+
const remaining = activeTasks.filter(t => t.status !== 'completed');
|
|
774
|
+
console.log(chalk.yellow(`\nβΈοΈ No tasks available β ${remaining.length} task(s) have unmet dependencies`));
|
|
759
775
|
}
|
|
760
776
|
}
|
|
761
777
|
}
|
package/claude-plugin.json
CHANGED
package/docs/CHEATSHEET.md
CHANGED
package/docs/QUICKSTART.md
CHANGED
|
@@ -102,7 +102,7 @@ function isContextInitialized() {
|
|
|
102
102
|
const contextPath = join(process.cwd(), '.morph/context/README.md');
|
|
103
103
|
if (!existsSync(contextPath)) return false;
|
|
104
104
|
const content = readFileSync(contextPath, 'utf-8');
|
|
105
|
-
return !content.includes('Run /morph
|
|
105
|
+
return !content.includes('Run /morph-init to generate');
|
|
106
106
|
} catch {
|
|
107
107
|
return false;
|
|
108
108
|
}
|
package/framework/phases.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
],
|
|
20
20
|
"agentTiers": [1],
|
|
21
21
|
"requiredSkills": [
|
|
22
|
-
{ "trigger": "beforePhaseStart", "skill": "morph
|
|
22
|
+
{ "trigger": "beforePhaseStart", "skill": "morph-brainstorming" }
|
|
23
23
|
]
|
|
24
24
|
},
|
|
25
25
|
"setup": {
|
|
@@ -58,9 +58,9 @@
|
|
|
58
58
|
],
|
|
59
59
|
"agentTiers": [1, 2, 3],
|
|
60
60
|
"requiredSkills": [
|
|
61
|
-
{ "trigger": "beforeArchitecturalDecision", "skill": "morph
|
|
62
|
-
{ "trigger": "onHTMLPrototypeAvailable", "skill": "morph
|
|
63
|
-
{ "trigger": "beforePhaseComplete", "skill": "morph
|
|
61
|
+
{ "trigger": "beforeArchitecturalDecision", "skill": "morph-brainstorming" },
|
|
62
|
+
{ "trigger": "onHTMLPrototypeAvailable", "skill": "morph-replicate" },
|
|
63
|
+
{ "trigger": "beforePhaseComplete", "skill": "morph-frontend-review" }
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"design": {
|
|
@@ -82,11 +82,11 @@
|
|
|
82
82
|
],
|
|
83
83
|
"agentTiers": [1, 2, 3, 4],
|
|
84
84
|
"requiredSkills": [
|
|
85
|
-
{ "trigger": "beforePhaseStart", "skill": "morph
|
|
86
|
-
{ "trigger": "beforePhaseStart", "skill": "morph
|
|
87
|
-
{ "trigger": "beforeArchitecturalDecision", "skill": "morph
|
|
88
|
-
{ "trigger": "onExternalServiceIntegration", "skill": "morph
|
|
89
|
-
{ "trigger": "beforePhaseComplete", "skill": "morph
|
|
85
|
+
{ "trigger": "beforePhaseStart", "skill": "morph-phase-design" },
|
|
86
|
+
{ "trigger": "beforePhaseStart", "skill": "morph-phase-codebase-analysis" },
|
|
87
|
+
{ "trigger": "beforeArchitecturalDecision", "skill": "morph-brainstorming" },
|
|
88
|
+
{ "trigger": "onExternalServiceIntegration", "skill": "morph-simulation-checklist" },
|
|
89
|
+
{ "trigger": "beforePhaseComplete", "skill": "morph-verification-before-completion" }
|
|
90
90
|
]
|
|
91
91
|
},
|
|
92
92
|
"clarify": {
|
|
@@ -105,8 +105,8 @@
|
|
|
105
105
|
"pausePoints": [],
|
|
106
106
|
"agentTiers": [1, 2],
|
|
107
107
|
"requiredSkills": [
|
|
108
|
-
{ "trigger": "beforePhaseStart", "skill": "morph
|
|
109
|
-
{ "trigger": "beforePhaseComplete", "skill": "morph
|
|
108
|
+
{ "trigger": "beforePhaseStart", "skill": "morph-phase-clarify" },
|
|
109
|
+
{ "trigger": "beforePhaseComplete", "skill": "morph-verification-before-completion" }
|
|
110
110
|
]
|
|
111
111
|
},
|
|
112
112
|
"plan": {
|
|
@@ -127,8 +127,8 @@
|
|
|
127
127
|
],
|
|
128
128
|
"agentTiers": [1, 2],
|
|
129
129
|
"requiredSkills": [
|
|
130
|
-
{ "trigger": "beforePhaseStart", "skill": "morph
|
|
131
|
-
{ "trigger": "beforePhaseComplete", "skill": "morph
|
|
130
|
+
{ "trigger": "beforePhaseStart", "skill": "morph-phase-plan" },
|
|
131
|
+
{ "trigger": "beforePhaseComplete", "skill": "morph-verification-before-completion" }
|
|
132
132
|
]
|
|
133
133
|
},
|
|
134
134
|
"tasks": {
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
"agentTiers": [1, 2, 3],
|
|
151
151
|
"requiredSkills": [
|
|
152
152
|
{ "trigger": "onParallelTasksIdentified", "skill": "superpowers:dispatching-parallel-agents" },
|
|
153
|
-
{ "trigger": "beforePhaseComplete", "skill": "morph
|
|
153
|
+
{ "trigger": "beforePhaseComplete", "skill": "morph-verification-before-completion" }
|
|
154
154
|
]
|
|
155
155
|
},
|
|
156
156
|
"implement": {
|
|
@@ -171,11 +171,11 @@
|
|
|
171
171
|
"agentTiers": [1, 2, 3, 4],
|
|
172
172
|
"requiredSkills": [
|
|
173
173
|
{ "trigger": "beforeEachTask", "skill": "superpowers:test-driven-development" },
|
|
174
|
-
{ "trigger": "beforeTaskDone", "skill": "morph
|
|
174
|
+
{ "trigger": "beforeTaskDone", "skill": "morph-verification-before-completion" },
|
|
175
175
|
{ "trigger": "onBugOrUnexpected", "skill": "superpowers:systematic-debugging" },
|
|
176
|
-
{ "trigger": "afterAllTasks", "skill": "morph
|
|
176
|
+
{ "trigger": "afterAllTasks", "skill": "morph-post-implementation" },
|
|
177
177
|
{ "trigger": "afterAllTasks", "skill": "superpowers:requesting-code-review" },
|
|
178
|
-
{ "trigger": "beforePR", "skill": "morph
|
|
178
|
+
{ "trigger": "beforePR", "skill": "morph-checklist" }
|
|
179
179
|
]
|
|
180
180
|
},
|
|
181
181
|
"sync": {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-brainstorming
|
|
3
3
|
description: Morph-spec-aware brainstorming that loads project context, explores multiple design approaches, asks clarifying questions, and produces proposal.md or decisions.md. Use before designing a feature, when facing architectural decisions with multiple valid approaches, or when a feature needs requirements exploration before committing to a direction.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: "[feature-name or topic]"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-checklist
|
|
3
3
|
description: Pre-deploy, security, SEO, performance, accessibility, and LGPD compliance checklists for MORPH-SPEC projects. Use before deploying to production, during security audits, when optimizing for SEO or performance, or when validating Brazilian LGPD data protection compliance.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
@@ -7,7 +7,7 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
|
7
7
|
|
|
8
8
|
# MORPH Checklists
|
|
9
9
|
|
|
10
|
-
Types: `deploy`, `security`, `seo`, `performance`, `accessibility`, `legal-brazil`, `simulation` (see skill: `morph
|
|
10
|
+
Types: `deploy`, `security`, `seo`, `performance`, `accessibility`, `legal-brazil`, `simulation` (see skill: `morph-simulation-checklist`)
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-code-review
|
|
3
3
|
description: .NET/C# code review checklist covering naming conventions, architecture layer integrity, async patterns, logging, error handling, DI lifetimes, and DTO contracts. Use after implementing .NET code, before creating PRs, or when reviewing C# code for compliance with MORPH-SPEC standards.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-code-review-nextjs
|
|
3
3
|
description: Next.js code review checklist covering naming conventions, component architecture (Server vs Client), data fetching patterns, form implementation, state management, TypeScript/Zod discipline, feature boundaries, and testing. Use after implementing Next.js code, before creating PRs, or when reviewing TSX/TS code for compliance with MORPH-SPEC Next.js standards.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-frontend-review
|
|
3
3
|
description: Complete frontend audit β validates design outputs (design-system, WCAG contrast,
|
|
4
4
|
mockups), static accessibility scan (TSX + Razor), responsive screenshots at 3
|
|
5
5
|
breakpoints via Playwright, axe-core a11y at runtime, and SEO (Next.js metadata). Covers Next.js
|
|
@@ -193,7 +193,7 @@ Request explicit user confirmation before skipping screenshots:
|
|
|
193
193
|
Dev server not detected. Responsive screenshots via Playwright cannot be captured.
|
|
194
194
|
|
|
195
195
|
Options:
|
|
196
|
-
1. Start the server manually and re-run /morph
|
|
196
|
+
1. Start the server manually and re-run /morph-frontend-review
|
|
197
197
|
2. Explicitly confirm you want to skip screenshots and why
|
|
198
198
|
|
|
199
199
|
Cannot proceed to axe-core without dev server.
|
|
@@ -300,7 +300,7 @@ Create consolidated summary file:
|
|
|
300
300
|
mkdir -p ".morph/features/$ARGUMENTS/visual-screenshots"
|
|
301
301
|
```
|
|
302
302
|
|
|
303
|
-
Save to `.morph/features/$ARGUMENTS/visual-screenshots/morph
|
|
303
|
+
Save to `.morph/features/$ARGUMENTS/visual-screenshots/morph-frontend-review-summary.md`:
|
|
304
304
|
|
|
305
305
|
```markdown
|
|
306
306
|
# Frontend Review β {feature}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-init
|
|
3
3
|
description: >
|
|
4
4
|
LLM-powered project initialization. Installs morph-spec infrastructure if
|
|
5
5
|
needed, auto-installs required plugins (superpowers, context7), analyzes any
|
|
6
6
|
project structure intelligently, generates rich context/README.md and
|
|
7
7
|
config.json, and configures MCPs. Use once per project after installing
|
|
8
|
-
@polymorphism-tech/morph-spec. Re-run with /morph
|
|
8
|
+
@polymorphism-tech/morph-spec. Re-run with /morph-init refresh to update
|
|
9
9
|
context as the project evolves.
|
|
10
10
|
argument-hint: "[refresh]"
|
|
11
11
|
user-invocable: true
|
|
@@ -15,7 +15,7 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
|
15
15
|
# morph-init β LLM-Powered Project Initialization
|
|
16
16
|
|
|
17
17
|
> Run once after `npm install @polymorphism-tech/morph-spec`.
|
|
18
|
-
> Re-run as `/morph
|
|
18
|
+
> Re-run as `/morph-init refresh` when your project evolves.
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
@@ -55,7 +55,7 @@ claude plugin install superpowers@claude-plugins-official
|
|
|
55
55
|
claude plugin install context7@claude-plugins-official
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
**If the command succeeds:** `β {plugin} installed. Restart Claude Code after /morph
|
|
58
|
+
**If the command succeeds:** `β {plugin} installed. Restart Claude Code after /morph-init completes.`
|
|
59
59
|
|
|
60
60
|
**If the command fails:** Show this and **STOP** β do not continue:
|
|
61
61
|
|
|
@@ -63,7 +63,7 @@ claude plugin install context7@claude-plugins-official
|
|
|
63
63
|
Plugin {plugin} could not be installed automatically.
|
|
64
64
|
Run manually and restart Claude Code:
|
|
65
65
|
claude plugin install {plugin}
|
|
66
|
-
Then re-run /morph
|
|
66
|
+
Then re-run /morph-init.
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
Both `superpowers` and `context7` are required. Do not continue if either is missing.
|
|
@@ -318,7 +318,7 @@ For each MCP configured in Step 7, run a health check to verify it actually work
|
|
|
318
318
|
Use `AskUserQuestion` with header `"{MCP} failed"` and these options:
|
|
319
319
|
- **Reconfigure credentials** β Loop back to Step 7 for this specific MCP. Maximum 2 retries per MCP. After 2 failures, force option 2.
|
|
320
320
|
- **Continue without {MCP}** β Show the `fallback` field from the registry (e.g., "WebSearch + WebFetch for library documentation") and proceed.
|
|
321
|
-
- **Stop init** β Abort initialization. User must fix MCP configuration manually and re-run `/morph
|
|
321
|
+
- **Stop init** β Abort initialization. User must fix MCP configuration manually and re-run `/morph-init`.
|
|
322
322
|
|
|
323
323
|
**Retry tracking:** Keep a counter per MCP. On the 2nd failure for the same MCP, skip the "Reconfigure" option and only offer "Continue without" or "Stop".
|
|
324
324
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-post-implementation
|
|
3
3
|
description: Orchestrates the complete post-implementation flow: stack detection,
|
|
4
4
|
automated scans (C#/Next.js), tests, validate-feature, smoke test via Playwright
|
|
5
5
|
(mandatory if dev server active), code review checklist by stack, checkpoint, and
|
|
@@ -61,8 +61,8 @@ node .claude/skills/morph-code-review-nextjs/scripts/scan-nextjs.mjs --diff
|
|
|
61
61
|
**π« BLOCK if any CRITICAL finding found.**
|
|
62
62
|
|
|
63
63
|
Fix all CRITICALs before continuing. To review the full checklist:
|
|
64
|
-
- .NET: `/morph
|
|
65
|
-
- Next.js: `/morph
|
|
64
|
+
- .NET: `/morph-code-review`
|
|
65
|
+
- Next.js: `/morph-code-review-nextjs`
|
|
66
66
|
|
|
67
67
|
---
|
|
68
68
|
|
|
@@ -222,7 +222,7 @@ Wait for both. **π« BLOCK if either returns unresolved CRITICAL.**
|
|
|
222
222
|
[ ] DTOs with descriptive names + correct types
|
|
223
223
|
```
|
|
224
224
|
|
|
225
|
-
> For full list: `/morph
|
|
225
|
+
> For full list: `/morph-code-review`
|
|
226
226
|
|
|
227
227
|
### If NEXTJS:
|
|
228
228
|
|
|
@@ -241,7 +241,7 @@ Wait for both. **π« BLOCK if either returns unresolved CRITICAL.**
|
|
|
241
241
|
[ ] No any type annotation
|
|
242
242
|
```
|
|
243
243
|
|
|
244
|
-
> For full list: `/morph
|
|
244
|
+
> For full list: `/morph-code-review-nextjs`
|
|
245
245
|
|
|
246
246
|
**π« BLOCK if any CRITICAL item is unresolved.**
|
|
247
247
|
|
|
@@ -296,7 +296,7 @@ This skill will:
|
|
|
296
296
|
Before creating the PR, invoke the compliance checklist:
|
|
297
297
|
|
|
298
298
|
```
|
|
299
|
-
Skill(morph
|
|
299
|
+
Skill(morph-checklist)
|
|
300
300
|
```
|
|
301
301
|
|
|
302
302
|
This skill checks: security, SEO, performance, accessibility, and LGPD compliance.
|
|
@@ -353,7 +353,7 @@ EOF
|
|
|
353
353
|
| Step 5 | Dev server not detected without explicit user confirmation |
|
|
354
354
|
| Step 6 | Any unresolved CRITICAL item in manual checklist |
|
|
355
355
|
| Step 8 | Tests failing in worktree before merge/PR |
|
|
356
|
-
| Step 9 | Unresolved CRITICAL item in `morph
|
|
356
|
+
| Step 9 | Unresolved CRITICAL item in `morph-checklist` |
|
|
357
357
|
|
|
358
358
|
**All BLOCKs must be resolved before creating the PR.**
|
|
359
359
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-replicate
|
|
3
3
|
description: Simplified workflow for converting HTML prototypes into functional Blazor components, extracting design patterns and mapping HTML elements to Fluent UI/MudBlazor equivalents. Use when an approved HTML prototype exists and needs conversion to Blazor without a full MORPH-SPEC spec pipeline.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: "[feature-name] [prototype-path]"
|
|
@@ -16,12 +16,12 @@ stacks:
|
|
|
16
16
|
## Command
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
/morph
|
|
19
|
+
/morph-replicate {feature-name} {prototype-path}
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
**Example:**
|
|
23
23
|
```bash
|
|
24
|
-
/morph
|
|
24
|
+
/morph-replicate ui-redesign prototipo/
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
---
|
|
@@ -162,7 +162,7 @@ npx morph-spec state mark-output {feature-name} recap
|
|
|
162
162
|
## Execution Example
|
|
163
163
|
|
|
164
164
|
```markdown
|
|
165
|
-
/morph
|
|
165
|
+
/morph-replicate checkout-redesign prototipo/checkout/
|
|
166
166
|
|
|
167
167
|
π Analyzing prototype in prototipo/checkout/...
|
|
168
168
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# HTML β Blazor Component Mapping Reference
|
|
2
2
|
|
|
3
3
|
> Reference for converting HTML prototype elements to Fluent UI / MudBlazor equivalents.
|
|
4
|
-
> Used during FASE 1 of the `/morph
|
|
4
|
+
> Used during FASE 1 of the `/morph-replicate` workflow.
|
|
5
5
|
|
|
6
6
|
## Common Component Mappings
|
|
7
7
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-simulation-checklist
|
|
3
3
|
description: Checklist for implementing mock/simulation clients for external .NET services (AI APIs, payments, email). Use when setting up simulation mode without real API access, when creating fake service implementations for development/testing, or when debugging external service integrations.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-tool-usage-guide
|
|
3
3
|
description: Decision flowchart and per-phase reference for selecting the right Claude Code tool (Read, Grep, Glob, Bash, Task) or MCP tool in MORPH-SPEC workflows. Use when unsure which tool to use for a given action, when choosing between native tools and MCPs, or when deciding whether to use a subagent vs direct tools.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-verification-before-completion
|
|
3
3
|
description: Phase-specific verification checklists and morph-spec validation commands for confirming MORPH-SPEC outputs are complete and correct. Use before marking any task done, before advancing to the next phase, before committing, or before creating PRs.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: "[feature-name] [phase?]"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-phase-clarify
|
|
3
3
|
description: MORPH-SPEC Phase 3 (Clarify). Iterative clarification loop driven by a satisfaction score (0-100). Generates targeted questions per round, always presents "End Clarify" as exit option, and stops when score >= 85 or user exits. Use after design approval to eliminate spec ambiguities before task breakdown begins.
|
|
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.10.
|
|
7
|
+
cliVersion: "4.10.5"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Clarify β Phase 3
|
|
@@ -224,11 +224,11 @@ npx morph-spec state mark-output $ARGUMENTS clarifications
|
|
|
224
224
|
|
|
225
225
|
## Phase Outputs
|
|
226
226
|
|
|
227
|
-
<!-- morph
|
|
227
|
+
<!-- morph-outputs:clarify -->
|
|
228
228
|
| Output | Path |
|
|
229
229
|
|--------|------|
|
|
230
230
|
| `clarifications` | `.morph/features/{feature}/1-design/clarifications.md` |
|
|
231
|
-
<!-- /morph
|
|
231
|
+
<!-- /morph-outputs -->
|
|
232
232
|
|
|
233
233
|
## Advancement Criteria
|
|
234
234
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
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.10.
|
|
6
|
+
cliVersion: "4.10.5"
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# MORPH Codebase Analysis - Design Sub-phase
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-phase-design
|
|
3
3
|
description: MORPH-SPEC Phase 2 (Design). Schema-first interactive design: reads EF models/Supabase/DB, validates findings with user, then routes to VSA Blueprint or DDD Architecture Blueprint based on config.architecture.style, producing spec.md, contracts.cs, schema-analysis.md, and decisions.md through a quality loop (score 0-100). Use after setup phase to create technical specifications grounded in the real database schema.
|
|
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.10.
|
|
7
|
+
cliVersion: "4.10.5"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Design β Phase 2
|
|
@@ -485,7 +485,7 @@ npx morph-spec state set $ARGUMENTS costs.estimated {X.XX}
|
|
|
485
485
|
|
|
486
486
|
---
|
|
487
487
|
|
|
488
|
-
<!-- morph
|
|
488
|
+
<!-- morph-outputs:design -->
|
|
489
489
|
| Output | Path |
|
|
490
490
|
|--------|------|
|
|
491
491
|
| `schemaAnalysis` | `.morph/features/{feature}/1-design/schema-analysis.md` |
|
|
@@ -494,6 +494,6 @@ npx morph-spec state set $ARGUMENTS costs.estimated {X.XX}
|
|
|
494
494
|
| `contractsTs` | `.morph/features/{feature}/1-design/contracts.ts` |
|
|
495
495
|
| `contractsVsa` | `.morph/features/{feature}/1-design/contracts-vsa.cs` |
|
|
496
496
|
| `decisions` | `.morph/features/{feature}/1-design/decisions.md` |
|
|
497
|
-
<!-- /morph
|
|
497
|
+
<!-- /morph-outputs -->
|
|
498
498
|
|
|
499
499
|
Continue automatically to Phase 3 (Clarify) after approval.
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-phase-implement
|
|
3
3
|
description: MORPH-SPEC Phase 5 (Implement). Executes feature tasks using TDD with checkpoint validation every 3 tasks, smoke tests via Playwright, and generates code + recap.md. Use after task list approval when starting feature implementation.
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
|
-
disable-model-invocation: true
|
|
6
5
|
context: fork
|
|
7
6
|
agent: general-purpose
|
|
8
7
|
user-invocable: false
|
|
9
|
-
cliVersion: "4.10.
|
|
8
|
+
cliVersion: "4.10.5"
|
|
10
9
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Agent
|
|
11
10
|
---
|
|
12
11
|
|
|
@@ -461,11 +460,11 @@ Agent(subagent_type=standards-architect, prompt=<filled prompts/code-quality-rev
|
|
|
461
460
|
|
|
462
461
|
## Phase Outputs
|
|
463
462
|
|
|
464
|
-
<!-- morph
|
|
463
|
+
<!-- morph-outputs:implement -->
|
|
465
464
|
| Output | Path |
|
|
466
465
|
|--------|------|
|
|
467
466
|
| `recap` | `.morph/features/{feature}/5-implement/recap.md` |
|
|
468
|
-
<!-- /morph
|
|
467
|
+
<!-- /morph-outputs -->
|
|
469
468
|
|
|
470
469
|
---
|
|
471
470
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-phase-plan
|
|
3
3
|
description: MORPH-SPEC Phase 4 (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 clarify phase to create an actionable implementation plan before task breakdown.
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
|
-
disable-model-invocation: true
|
|
6
5
|
user-invocable: false
|
|
7
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
8
|
-
cliVersion: "4.10.
|
|
7
|
+
cliVersion: "4.10.5"
|
|
9
8
|
---
|
|
10
9
|
|
|
11
10
|
# MORPH Plan β Phase 4
|
|
@@ -118,7 +117,7 @@ Create `.morph/features/$ARGUMENTS/3-plan/plan.md` with this structure:
|
|
|
118
117
|
```markdown
|
|
119
118
|
# {Feature Name} Implementation Plan
|
|
120
119
|
|
|
121
|
-
> **For Claude:** Use morph
|
|
120
|
+
> **For Claude:** Use morph-phase-implement to execute this plan.
|
|
122
121
|
|
|
123
122
|
**Goal:** {One sentence describing what will be built}
|
|
124
123
|
|
|
@@ -223,11 +222,11 @@ Use `AskUserQuestion` to capture approval before advancing. This gate prevents t
|
|
|
223
222
|
|
|
224
223
|
## Phase Outputs
|
|
225
224
|
|
|
226
|
-
<!-- morph
|
|
225
|
+
<!-- morph-outputs:plan -->
|
|
227
226
|
| Output | Path |
|
|
228
227
|
|--------|------|
|
|
229
228
|
| `plan` | `.morph/features/{feature}/3-plan/plan.md` |
|
|
230
|
-
<!-- /morph
|
|
229
|
+
<!-- /morph-outputs -->
|
|
231
230
|
|
|
232
231
|
---
|
|
233
232
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-phase-setup
|
|
3
3
|
description: MORPH-SPEC Phase 1 (Setup). Reads project context, detects tech stack, activates relevant agents by reading agents.json, and confirms the feature environment. Use at the start of every MORPH-SPEC feature workflow after proposal approval to load standards and initialize the context.
|
|
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.10.
|
|
7
|
+
cliVersion: "4.10.5"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Setup β Phase 1
|
|
@@ -139,7 +139,7 @@ Use `AskUserQuestion` with header `"{MCP}"` and options:
|
|
|
139
139
|
|
|
140
140
|
**4. For MCPs RECOMMENDED but NOT CONFIGURED:**
|
|
141
141
|
- Print `β³ {MCP} β not configured (fallback: {registry.fallback})`
|
|
142
|
-
- Suggestion: `Tip: configure with /morph
|
|
142
|
+
- Suggestion: `Tip: configure with /morph-init refresh or npx morph-spec mcp setup`
|
|
143
143
|
|
|
144
144
|
**Summary:** Show a status table for each MCP before proceeding:
|
|
145
145
|
```
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: morph
|
|
2
|
+
name: morph-phase-tasks
|
|
3
3
|
description: MORPH-SPEC Phase 4 (Tasks). Breaks approved spec into bottom-up ordered implementation tasks (T001...TXXX) with dependencies, checkpoints every 3 tasks, and effort estimates, producing tasks.md. Use after design and clarification phases to create a structured implementation plan before coding starts.
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
|
-
disable-model-invocation: true
|
|
6
5
|
user-invocable: false
|
|
7
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
8
|
-
cliVersion: "4.10.
|
|
7
|
+
cliVersion: "4.10.5"
|
|
9
8
|
---
|
|
10
9
|
|
|
11
10
|
# MORPH Tasks β Phase 4
|
|
@@ -301,11 +300,11 @@ Use `AskUserQuestion` to capture explicit approval before advancing. This gate p
|
|
|
301
300
|
|
|
302
301
|
## Phase Outputs
|
|
303
302
|
|
|
304
|
-
<!-- morph
|
|
303
|
+
<!-- morph-outputs:tasks -->
|
|
305
304
|
| Output | Path |
|
|
306
305
|
|--------|------|
|
|
307
306
|
| `tasks` | `.morph/features/{feature}/4-tasks/tasks.md` |
|
|
308
|
-
<!-- /morph
|
|
307
|
+
<!-- /morph-outputs -->
|
|
309
308
|
|
|
310
309
|
---
|
|
311
310
|
|