@polymorphism-tech/morph-spec 4.21.0 → 5.0.1
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 +57 -71
- package/README.md +2 -2
- package/bin/morph-spec.js +224 -491
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/CLAUDE.md +55 -38
- package/framework/MORPH.md +244 -0
- package/framework/agents.json +127 -1183
- package/framework/commands/morph-apply.md +56 -240
- package/framework/commands/morph-archive.md +48 -85
- package/framework/commands/morph-preflight.md +7 -7
- package/framework/commands/morph-proposal.md +35 -191
- package/framework/commands/morph-status.md +19 -50
- package/framework/commands/morph-troubleshoot.md +2 -2
- package/framework/evals/rubrics/README.md +44 -0
- package/framework/evals/rubrics/architecture.md +46 -0
- package/framework/evals/rubrics/code-quality.md +50 -0
- package/framework/evals/rubrics/contracts.md +47 -0
- package/framework/evals/rubrics/test-coverage.md +50 -0
- package/framework/evals/scenarios/dotnet-crud.yaml +42 -0
- package/framework/evals/scenarios/nextjs-auth.yaml +38 -0
- package/framework/evals/suites/standard.yaml +5 -0
- package/framework/evals/trace-schema.md +67 -0
- package/framework/hooks/claude-code/core/README.md +3 -0
- package/framework/hooks/claude-code/core/denylist.json +14 -0
- package/framework/hooks/claude-code/{pre-tool-use → core}/enforce-phase-writes.js +5 -5
- package/framework/hooks/claude-code/core/post-edit-typecheck.js +69 -0
- package/framework/hooks/claude-code/core/pre-bash-denylist.js +29 -0
- package/framework/hooks/claude-code/{pre-tool-use → core}/protect-spec-files.js +4 -6
- package/framework/hooks/claude-code/{stop → core}/validate-completion.js +13 -82
- package/framework/hooks/shared/phase-utils.js +20 -28
- package/framework/hooks/shared/state-reader.js +4 -5
- package/framework/{skills/level-0-meta/mcp-registry.json → mcp/registry.json} +254 -210
- package/framework/phases.json +40 -114
- package/framework/rubrics/eval-rubric.json +66 -0
- package/framework/skills/README.md +39 -64
- package/framework/skills/core/README.md +3 -0
- package/framework/skills/core/morph-brainstorming/SKILL.md +102 -0
- package/framework/skills/core/morph-eval/SKILL.md +57 -0
- package/framework/skills/core/morph-implement/SKILL.md +83 -0
- package/framework/skills/core/morph-plan/SKILL.md +64 -0
- package/framework/skills/core/morph-review/SKILL.md +62 -0
- package/framework/skills/core/morph-stack-scan/SKILL.md +109 -0
- package/framework/skills/core/morph-standards/SKILL.md +49 -0
- package/framework/standards/STANDARDS.json +32 -0
- package/framework/standards/frontend/design-system/ai-image-generation.md +244 -0
- package/framework/standards/integration/mcp/mcp-tools.md +48 -0
- package/framework/templates/CLAUDE.md.core.guide.md +29 -0
- package/framework/templates/CLAUDE.md.core.template +22 -0
- package/framework/templates/REGISTRY.json +4 -4
- package/framework/workflows/configs/fast-track.json +5 -10
- package/framework/workflows/configs/full.json +4 -8
- package/framework/workflows/configs/quick.json +32 -0
- package/framework/workflows/configs/standard.json +57 -64
- package/package.json +7 -6
- package/src/commands/mcp/mcp-setup.js +58 -31
- package/src/commands/project/doctor.js +69 -70
- package/src/commands/project/init.js +26 -5
- package/src/commands/project/status.js +18 -19
- package/src/commands/state/approve.js +1 -1
- package/src/commands/validation/validate-feature.js +18 -112
- package/src/core/paths/output-schema.js +133 -151
- package/src/core/state/phase-state-machine.js +10 -24
- package/src/core/state/state-manager.js +17 -17
- package/src/core/workflows/workflow-detector.js +214 -31
- package/src/core/workflows/workflow-router.js +204 -0
- package/src/dashboard/app/pages/AgentMap.jsx +32 -33
- package/src/dashboard/app/pages/LiveState.jsx +1 -1
- package/src/dashboard/app/pages/PhasePipeline.jsx +2 -4
- package/src/dashboard/app/pages/SkillsLibrary.jsx +2 -3
- package/src/dashboard/app/pages/Workflows.jsx +2 -2
- package/src/dashboard/scanner/agents-scanner.js +30 -35
- package/src/lib/agents/metrics-aggregator.js +1 -1
- package/src/lib/agents/output-collector.js +7 -8
- package/src/lib/context/context-builder.js +289 -0
- package/src/lib/detectors/claude-config-detector.js +19 -3
- package/src/lib/generators/context-generator.js +20 -42
- package/src/lib/generators/index.js +1 -0
- package/src/lib/generators/mandate-generator.js +512 -0
- package/src/lib/generators/metadata-extractor.js +1 -1
- package/src/lib/generators/recap-generator.js +3 -4
- package/src/lib/installers/mcp-installer.js +300 -92
- package/src/lib/phase-chain/phase-validator.js +36 -40
- package/src/lib/stack/stack-profile.js +74 -91
- package/src/lib/tasks/task-parser.js +1 -1
- package/src/lib/tasks/wave-resolver.js +353 -0
- package/src/lib/validators/checkpoint-persistence.js +2 -2
- package/src/lib/validators/content/cross-phase-validator.js +281 -0
- package/src/lib/validators/content/index.js +1 -0
- package/src/lib/validators/shared/emit-validator-dispatch.js +6 -56
- package/src/scripts/global-install.js +2 -27
- package/src/utils/agents-installer.js +224 -447
- package/src/utils/claude-settings-manager.js +57 -15
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +15 -117
- package/src/utils/skills-installer.js +12 -18
- package/bin/detect-agents.js +0 -226
- package/bin/task-manager.js +0 -1036
- package/framework/agents/README.md +0 -13
- package/framework/agents/ai-agents/ai-system-architect.md +0 -194
- package/framework/agents/ai-agents/vector-search-expert.md +0 -247
- package/framework/agents/architecture/architecture-expert.md +0 -98
- package/framework/agents/architecture/morph-spec-architect.md +0 -66
- package/framework/agents/architecture/packages-validator.md +0 -89
- package/framework/agents/architecture/security-expert.md +0 -79
- package/framework/agents/architecture/seo-growth-hacker.md +0 -168
- package/framework/agents/architecture/standards-architect.md +0 -153
- package/framework/agents/backend/dotnet-senior.md +0 -163
- package/framework/agents/backend/ef-modeler.md +0 -119
- package/framework/agents/backend/hangfire-orchestrator.md +0 -133
- package/framework/agents/backend/ms-agent-expert.md +0 -55
- package/framework/agents/backend/neon-expert.md +0 -379
- package/framework/agents/frontend/css-specialist.md +0 -89
- package/framework/agents/frontend/design-system-validator.md +0 -100
- package/framework/agents/frontend/gsap-animator.md +0 -131
- package/framework/agents/frontend/nextjs-component-validator.md +0 -97
- package/framework/agents/frontend/nextjs-expert.md +0 -201
- package/framework/agents/frontend/ui-designer.md +0 -259
- package/framework/agents/infrastructure/infra-architect.md +0 -215
- package/framework/agents/integrations/asaas-financial.md +0 -138
- package/framework/agents/integrations/neon-auth.md +0 -151
- package/framework/agents/integrations/resend-email.md +0 -127
- package/framework/hooks/claude-code/post-tool-use/agent-complete.js +0 -122
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +0 -363
- package/framework/hooks/claude-code/post-tool-use/handle-tool-failure.js +0 -78
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +0 -194
- package/framework/hooks/claude-code/pre-compact/save-morph-context.js +0 -199
- package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +0 -55
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +0 -323
- package/framework/hooks/claude-code/session-start/post-compact-restore.js +0 -41
- package/framework/hooks/claude-code/session-start/resume-context.js +0 -77
- package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +0 -90
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +0 -114
- package/framework/hooks/shared/compact-restore.js +0 -123
- package/framework/hooks/shared/dispatch-helpers.js +0 -147
- package/framework/hooks/shared/skill-reminder-helpers.js +0 -79
- package/framework/hooks/shared/stale-task-reset.js +0 -57
- package/framework/hooks/shared/worktree-helpers.js +0 -75
- package/framework/skills/level-0-meta/README.md +0 -7
- package/framework/skills/level-0-meta/morph-agent-teams/SKILL.md +0 -472
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +0 -174
- package/framework/skills/level-0-meta/morph-brainstorming/references/proposal-example.md +0 -138
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +0 -145
- package/framework/skills/level-0-meta/morph-code-review/SKILL.md +0 -250
- package/framework/skills/level-0-meta/morph-code-review/references/review-example.md +0 -164
- package/framework/skills/level-0-meta/morph-code-review/references/review-guidelines.md +0 -100
- package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +0 -151
- package/framework/skills/level-0-meta/morph-code-review-nextjs/SKILL.md +0 -165
- package/framework/skills/level-0-meta/morph-code-review-nextjs/references/review-example-nextjs.md +0 -254
- package/framework/skills/level-0-meta/morph-code-review-nextjs/scripts/scan-nextjs.mjs +0 -189
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +0 -344
- package/framework/skills/level-0-meta/morph-frontend-review/scripts/scan-accessibility.mjs +0 -376
- package/framework/skills/level-0-meta/morph-init/SKILL.md +0 -537
- package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +0 -225
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +0 -382
- package/framework/skills/level-0-meta/morph-post-implementation/scripts/detect-dev-server.mjs +0 -153
- package/framework/skills/level-0-meta/morph-post-implementation/scripts/detect-stack.mjs +0 -234
- package/framework/skills/level-0-meta/morph-simulation-checklist/SKILL.md +0 -106
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +0 -243
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +0 -169
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +0 -148
- package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +0 -110
- package/framework/skills/level-1-workflows/README.md +0 -7
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +0 -269
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +0 -453
- package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +0 -44
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-authoring-guide.md +0 -55
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +0 -253
- package/framework/skills/level-1-workflows/morph-phase-implement/.morph/logs/activity.json +0 -38
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +0 -493
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +0 -50
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +0 -46
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +0 -47
- package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +0 -132
- package/framework/skills/level-1-workflows/morph-phase-implement/references/vsa-implementation-guide.md +0 -92
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +0 -257
- package/framework/skills/level-1-workflows/morph-phase-tasks/.morph/logs/activity.json +0 -14
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +0 -291
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +0 -143
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +0 -404
- package/framework/skills/level-1-workflows/morph-phase-tasks/scripts/validate-tasks.mjs +0 -112
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +0 -788
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +0 -147
- package/framework/squad-templates/backend-only.json +0 -47
- package/framework/squad-templates/frontend-only.json +0 -56
- package/framework/squad-templates/full-stack.json +0 -74
- package/src/commands/agents/agent-metrics.js +0 -174
- package/src/commands/agents/audit-dispatch.js +0 -82
- package/src/commands/agents/detect-agents.js +0 -275
- package/src/commands/agents/dispatch-agents.js +0 -461
- package/src/commands/agents/index.js +0 -13
- package/src/commands/agents/manage-agents.js +0 -352
- package/src/commands/agents/project-metrics.js +0 -74
- package/src/commands/phase/phase-reset.js +0 -74
- package/src/commands/scope/escalate.js +0 -217
- package/src/commands/state/advance-phase.js +0 -600
- package/src/commands/state/phase-runner.js +0 -215
- package/src/commands/state/state.js +0 -444
- package/src/commands/task/expand.js +0 -100
- package/src/commands/tasks/index.js +0 -4
- package/src/commands/tasks/task.js +0 -105
- package/src/commands/templates/index.js +0 -5
- package/src/commands/templates/template-render.js +0 -93
- package/src/commands/trust/trust.js +0 -118
- package/src/lib/agents/agents-manager.js +0 -349
- package/src/lib/build/build-runner.js +0 -99
- package/src/lib/checkpoints/checkpoint-hooks.js +0 -111
- package/src/lib/contracts/sprint-contract-generator.js +0 -137
- package/src/lib/scope/impact-analyzer.js +0 -106
- package/src/lib/trust/trust-manager.js +0 -157
- package/src/utils/tier-helpers.js +0 -24
- /package/framework/hooks/claude-code/{post-tool-use → core}/loop-detect.js +0 -0
package/framework/phases.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "
|
|
2
|
+
"version": "5.0.0",
|
|
3
3
|
"phases": {
|
|
4
4
|
"proposal": {
|
|
5
5
|
"id": "proposal",
|
|
@@ -7,20 +7,16 @@
|
|
|
7
7
|
"folder": "0-proposal",
|
|
8
8
|
"displayName": "Proposal",
|
|
9
9
|
"goals": [
|
|
10
|
-
"Understand the
|
|
11
|
-
"
|
|
12
|
-
"Produce
|
|
10
|
+
"Understand the business problem and user flows",
|
|
11
|
+
"Detect existing stack (brownfield) or assume default stack (greenfield)",
|
|
12
|
+
"Produce proposal.md and reach Gate 1"
|
|
13
13
|
],
|
|
14
14
|
"requiredOutputs": ["proposal"],
|
|
15
|
-
"optionalOutputs": [],
|
|
16
|
-
"recommendedMCPs": ["context7"],
|
|
15
|
+
"optionalOutputs": ["migrationPlan", "stackScan"],
|
|
17
16
|
"pausePoints": [
|
|
18
|
-
{ "id": "proposal", "label": "Approve
|
|
17
|
+
{ "id": "proposal", "label": "Gate 1 — Approve proposal" }
|
|
19
18
|
],
|
|
20
|
-
"
|
|
21
|
-
"requiredSkills": [
|
|
22
|
-
{ "trigger": "beforePhaseStart", "skill": "morph-brainstorming" }
|
|
23
|
-
]
|
|
19
|
+
"skill": "morph-brainstorming"
|
|
24
20
|
},
|
|
25
21
|
"uiux": {
|
|
26
22
|
"id": "uiux",
|
|
@@ -29,134 +25,64 @@
|
|
|
29
25
|
"displayName": "UI/UX Design",
|
|
30
26
|
"optional": true,
|
|
31
27
|
"goals": [
|
|
32
|
-
"Define
|
|
33
|
-
"
|
|
34
|
-
"Produce wireframes and user flows"
|
|
28
|
+
"Define design system tokens and components",
|
|
29
|
+
"Produce mockups and user flows"
|
|
35
30
|
],
|
|
36
31
|
"requiredOutputs": ["uiDesignSystem"],
|
|
37
32
|
"optionalOutputs": ["uiMockups", "uiComponents", "uiFlows"],
|
|
38
|
-
"recommendedMCPs": ["playwright", "context7", "stitch"],
|
|
39
|
-
"pausePoints": [
|
|
40
|
-
{ "id": "uiux", "label": "Approve UI/UX Design" }
|
|
41
|
-
],
|
|
42
|
-
"agentTiers": [1, 2, 3],
|
|
43
|
-
"requiredSkills": [
|
|
44
|
-
{ "trigger": "beforeArchitecturalDecision", "skill": "morph-brainstorming" },
|
|
45
|
-
{ "trigger": "beforePhaseComplete", "skill": "morph-frontend-review" }
|
|
46
|
-
]
|
|
47
|
-
},
|
|
48
|
-
"design": {
|
|
49
|
-
"id": "design",
|
|
50
|
-
"index": 2,
|
|
51
|
-
"folder": "2-design",
|
|
52
|
-
"displayName": "Technical Design",
|
|
53
|
-
"goals": [
|
|
54
|
-
"Write technical specification",
|
|
55
|
-
"Define contracts and interfaces",
|
|
56
|
-
"Analyse schema changes",
|
|
57
|
-
"Document architectural decisions"
|
|
58
|
-
],
|
|
59
|
-
"requiredOutputs": ["spec", "contracts"],
|
|
60
|
-
"optionalOutputs": ["schemaAnalysis", "decisions"],
|
|
61
|
-
"recommendedMCPs": ["context7", "github"],
|
|
62
33
|
"pausePoints": [
|
|
63
|
-
{ "id": "
|
|
34
|
+
{ "id": "uiux", "label": "Approve UI/UX" }
|
|
64
35
|
],
|
|
65
|
-
"
|
|
66
|
-
"requiredSkills": [
|
|
67
|
-
{ "trigger": "beforePhaseStart", "skill": "morph-phase-design" },
|
|
68
|
-
{ "trigger": "beforePhaseStart", "skill": "morph-phase-codebase-analysis" },
|
|
69
|
-
{ "trigger": "beforeArchitecturalDecision", "skill": "morph-brainstorming" },
|
|
70
|
-
{ "trigger": "onExternalServiceIntegration", "skill": "morph-simulation-checklist" },
|
|
71
|
-
{ "trigger": "beforePhaseComplete", "skill": "morph-verification-before-completion" }
|
|
72
|
-
]
|
|
36
|
+
"skill": null
|
|
73
37
|
},
|
|
74
38
|
"plan": {
|
|
75
39
|
"id": "plan",
|
|
76
|
-
"index":
|
|
77
|
-
"folder": "
|
|
78
|
-
"displayName": "
|
|
79
|
-
"goals": [
|
|
80
|
-
"Create detailed implementation plan with exact file paths and code",
|
|
81
|
-
"Define bite-sized TDD tasks with test-first approach",
|
|
82
|
-
"Establish execution strategy based on project analysis"
|
|
83
|
-
],
|
|
84
|
-
"requiredOutputs": ["plan"],
|
|
85
|
-
"optionalOutputs": [],
|
|
86
|
-
"recommendedMCPs": ["context7", "github"],
|
|
87
|
-
"pausePoints": [
|
|
88
|
-
{ "id": "plan", "label": "Approve Implementation Plan" }
|
|
89
|
-
],
|
|
90
|
-
"agentTiers": [1, 2],
|
|
91
|
-
"requiredSkills": [
|
|
92
|
-
{ "trigger": "beforePhaseStart", "skill": "morph-phase-plan" },
|
|
93
|
-
{ "trigger": "beforePhaseComplete", "skill": "morph-verification-before-completion" }
|
|
94
|
-
]
|
|
95
|
-
},
|
|
96
|
-
"tasks": {
|
|
97
|
-
"id": "tasks",
|
|
98
|
-
"index": 4,
|
|
99
|
-
"folder": "4-tasks",
|
|
100
|
-
"displayName": "Task Breakdown",
|
|
40
|
+
"index": 2,
|
|
41
|
+
"folder": "2-plan",
|
|
42
|
+
"displayName": "Plan",
|
|
101
43
|
"goals": [
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
44
|
+
"Write spec.md (technical spec)",
|
|
45
|
+
"Write mandate.md (implementation contract with stack defaults + forbidden patterns)",
|
|
46
|
+
"Write tasks.md (ordered task breakdown)"
|
|
105
47
|
],
|
|
106
|
-
"requiredOutputs": ["tasks"],
|
|
107
|
-
"optionalOutputs": [],
|
|
108
|
-
"recommendedMCPs": ["context7", "github"],
|
|
48
|
+
"requiredOutputs": ["spec", "mandate", "tasks"],
|
|
49
|
+
"optionalOutputs": ["decisions"],
|
|
109
50
|
"pausePoints": [
|
|
110
|
-
{ "id": "
|
|
51
|
+
{ "id": "plan", "label": "Gate 2 — Approve spec + mandate + tasks" }
|
|
111
52
|
],
|
|
112
|
-
"
|
|
113
|
-
"requiredSkills": [
|
|
114
|
-
{ "trigger": "onParallelTasksIdentified", "skill": "superpowers:dispatching-parallel-agents" },
|
|
115
|
-
{ "trigger": "beforePhaseComplete", "skill": "morph-verification-before-completion" }
|
|
116
|
-
]
|
|
53
|
+
"skill": "morph-plan"
|
|
117
54
|
},
|
|
118
55
|
"implement": {
|
|
119
56
|
"id": "implement",
|
|
120
|
-
"index":
|
|
121
|
-
"folder": "
|
|
57
|
+
"index": 3,
|
|
58
|
+
"folder": "3-implement",
|
|
122
59
|
"displayName": "Implementation",
|
|
123
60
|
"goals": [
|
|
124
|
-
"Execute
|
|
125
|
-
"
|
|
126
|
-
"
|
|
127
|
-
"Write implementation recap"
|
|
61
|
+
"Execute tasks in order with auto-advance between tasks",
|
|
62
|
+
"Apply morph-eval after each task",
|
|
63
|
+
"Maintain recap.md and execution trace"
|
|
128
64
|
],
|
|
129
65
|
"requiredOutputs": ["recap"],
|
|
130
66
|
"optionalOutputs": [],
|
|
131
|
-
"recommendedMCPs": ["context7", "playwright", "github", "vercel"],
|
|
132
67
|
"pausePoints": [],
|
|
133
|
-
"
|
|
134
|
-
"requiredSkills": [
|
|
135
|
-
{ "trigger": "beforeEachTask", "skill": "superpowers:test-driven-development" },
|
|
136
|
-
{ "trigger": "beforeTaskDone", "skill": "morph-verification-before-completion" },
|
|
137
|
-
{ "trigger": "onBugOrUnexpected", "skill": "superpowers:systematic-debugging" },
|
|
138
|
-
{ "trigger": "afterAllTasks", "skill": "morph-post-implementation" },
|
|
139
|
-
{ "trigger": "afterAllTasks", "skill": "superpowers:requesting-code-review" },
|
|
140
|
-
{ "trigger": "beforePR", "skill": "morph-checklist" }
|
|
141
|
-
]
|
|
68
|
+
"skill": "morph-implement"
|
|
142
69
|
},
|
|
143
|
-
"
|
|
144
|
-
"id": "
|
|
145
|
-
"index":
|
|
146
|
-
"folder":
|
|
147
|
-
"displayName": "
|
|
148
|
-
"optional": true,
|
|
70
|
+
"review": {
|
|
71
|
+
"id": "review",
|
|
72
|
+
"index": 4,
|
|
73
|
+
"folder": "4-review",
|
|
74
|
+
"displayName": "Review",
|
|
149
75
|
"goals": [
|
|
150
|
-
"
|
|
151
|
-
"
|
|
152
|
-
"
|
|
76
|
+
"Verify implementation against mandate",
|
|
77
|
+
"Apply morph-eval at phase scope to produce dimension scores",
|
|
78
|
+
"Produce review-report.md and present Gate 3"
|
|
153
79
|
],
|
|
154
|
-
"requiredOutputs": [],
|
|
80
|
+
"requiredOutputs": ["reviewReport"],
|
|
155
81
|
"optionalOutputs": [],
|
|
156
|
-
"
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
"
|
|
82
|
+
"pausePoints": [
|
|
83
|
+
{ "id": "review", "label": "Gate 3 — Approve review-report" }
|
|
84
|
+
],
|
|
85
|
+
"skill": "morph-review"
|
|
160
86
|
}
|
|
161
87
|
}
|
|
162
88
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "eval",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Eval rubric for morph-eval system. Scores phase outputs across structural and semantic dimensions.",
|
|
5
|
+
"categories": {
|
|
6
|
+
"structural_compliance": {
|
|
7
|
+
"weight": 0.25,
|
|
8
|
+
"description": "Required sections, headers, formatting present in phase outputs",
|
|
9
|
+
"dimensions": {
|
|
10
|
+
"proposal": ["has_problem_statement", "has_proposed_solution", "min_length_300"],
|
|
11
|
+
"spec": ["has_overview", "has_functional_requirements", "has_fr_sections", "has_data_model"],
|
|
12
|
+
"tasks": ["has_task_headers", "has_fr_references", "no_duplicate_ids"],
|
|
13
|
+
"contracts": ["has_type_definitions", "correct_naming_conventions"]
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"content_quality": {
|
|
17
|
+
"weight": 0.30,
|
|
18
|
+
"description": "LLM-as-judge: completeness, specificity, actionability of outputs",
|
|
19
|
+
"dimensions": {
|
|
20
|
+
"completeness": "Covers all aspects of the feature request",
|
|
21
|
+
"specificity": "Requirements are concrete and testable, not vague",
|
|
22
|
+
"actionability": "A developer could implement from this alone",
|
|
23
|
+
"architecture_depth": "Component boundaries, data flow, error handling clear"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"cross_phase_consistency": {
|
|
27
|
+
"weight": 0.25,
|
|
28
|
+
"description": "Alignment between spec, tasks, mandate, and contracts",
|
|
29
|
+
"dimensions": {
|
|
30
|
+
"fr_coverage": "Every spec FR referenced by at least one task",
|
|
31
|
+
"mandate_integrity": "Mandate includes all tasks with acceptance criteria",
|
|
32
|
+
"contract_alignment": "Spec Data Model entities appear in contracts",
|
|
33
|
+
"dependency_ordering": "Task dependencies are topologically valid"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"stack_appropriateness": {
|
|
37
|
+
"weight": 0.20,
|
|
38
|
+
"description": "Outputs match the target technology stack",
|
|
39
|
+
"dimensions": {
|
|
40
|
+
"correct_language": "Contracts use the right language for the stack (TS vs CS)",
|
|
41
|
+
"framework_patterns": "Architecture follows stack conventions (App Router, VSA, etc.)",
|
|
42
|
+
"tool_chain": "Build/test commands match the stack"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"thresholds": {
|
|
47
|
+
"approve": 8.0,
|
|
48
|
+
"retry": 6.0,
|
|
49
|
+
"max_iterations": 3,
|
|
50
|
+
"regression_tolerance": 0.5
|
|
51
|
+
},
|
|
52
|
+
"scoring": {
|
|
53
|
+
"structural": {
|
|
54
|
+
"method": "binary_checklist",
|
|
55
|
+
"description": "Each dimension is pass/fail. Score = (passed / total) * 10"
|
|
56
|
+
},
|
|
57
|
+
"llm_judge": {
|
|
58
|
+
"method": "evidence_based",
|
|
59
|
+
"description": "LLM scores 1-10 per dimension with evidence quotes and gap descriptions"
|
|
60
|
+
},
|
|
61
|
+
"cross_phase": {
|
|
62
|
+
"method": "ratio_based",
|
|
63
|
+
"description": "FR coverage ratio, mandate inclusion ratio. Score = ratio * 10"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -1,64 +1,39 @@
|
|
|
1
|
-
# MORPH-SPEC Skills
|
|
2
|
-
|
|
3
|
-
Skills installed to `.claude/skills/` during `morph-spec init` (or `morph-spec update`).
|
|
4
|
-
|
|
5
|
-
Each skill is a directory: `{name}/SKILL.md` + optional `scripts/`, `references/`, `assets/`.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
|
14
|
-
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
| `phase-uiux` | 1 | UI/UX design system + mockups + components |
|
|
41
|
-
| `phase-plan` | 3 | Implementation plan with exact paths and TDD |
|
|
42
|
-
| `phase-tasks` | 4 | Break spec into ordered task list (tasks.md) |
|
|
43
|
-
| `phase-implement` | 5 | Implement tasks with TDD + checkpoints + recap |
|
|
44
|
-
|
|
45
|
-
### level-1-workflows extras
|
|
46
|
-
|
|
47
|
-
| Skill | File | Purpose |
|
|
48
|
-
|-------|------|---------|
|
|
49
|
-
| `phase-design` | `references/spec-example.md` | Filled-in spec.md example |
|
|
50
|
-
| `phase-tasks` | `references/tasks-example.md` | Filled-in tasks.md with T### format |
|
|
51
|
-
| `phase-tasks` | `scripts/validate-tasks.mjs` | Validate tasks.md structure and IDs |
|
|
52
|
-
| `phase-implement` | `references/recap-example.md` | Filled-in recap.md example |
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Domain Agents
|
|
57
|
-
|
|
58
|
-
Domain specialist agents (`framework/agents/`) are installed separately as `.claude/agents/morph-domain-{name}.md` — they are subagents, not skills.
|
|
59
|
-
|
|
60
|
-
See `framework/agents/README.md` for the full list.
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
*MORPH-SPEC by Polymorphism Tech*
|
|
1
|
+
# MORPH-SPEC Skills
|
|
2
|
+
|
|
3
|
+
Skills installed to `.claude/skills/` during `morph-spec init` (or `morph-spec update`).
|
|
4
|
+
|
|
5
|
+
Each skill is a directory: `{name}/SKILL.md` + optional `scripts/`, `references/`, `assets/`.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## core/ — NLH Skills (Single Source of Truth)
|
|
10
|
+
|
|
11
|
+
These are the only skills the harness needs. MORPH.md references them by path.
|
|
12
|
+
|
|
13
|
+
| Skill | Purpose | User-invocable |
|
|
14
|
+
|----------------------|----------------------------------------------------------------------|----------------|
|
|
15
|
+
| `morph-brainstorming` | Business understanding + brownfield scan → proposal.md (Gate 1) | yes |
|
|
16
|
+
| `morph-stack-scan` | Detect stack drift in existing projects, generate migration-plan.md | yes |
|
|
17
|
+
| `morph-plan` | Produce spec.md + mandate.md + tasks.md (Gate 2) | yes |
|
|
18
|
+
| `morph-implement` | Execute each task with standard + persona, auto-advance between tasks| no |
|
|
19
|
+
| `morph-eval` | Score work 0-10 across 4 dimensions, silence on score >= 8 | no |
|
|
20
|
+
| `morph-review` | Final review report with scores + recommendation (Gate 3) | yes |
|
|
21
|
+
| `morph-standards` | Locate and load a specific standard on demand | no |
|
|
22
|
+
|
|
23
|
+
The legacy `level-0-meta/` and `level-1-workflows/` skill trees were removed
|
|
24
|
+
in v5 — their useful content was consolidated into `core/`. MORPH.md is the
|
|
25
|
+
single charter that ties everything together.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Domain Agents
|
|
30
|
+
|
|
31
|
+
Domain specialist agents (`framework/agents/`) are installed separately as
|
|
32
|
+
`.claude/agents/morph-{name}.md` — they are subagents dispatched via the
|
|
33
|
+
`Agent` tool, not skills.
|
|
34
|
+
|
|
35
|
+
See `framework/agents.json` for the full list and persona definitions.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
*MORPH-SPEC by Polymorphism Tech*
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: morph-brainstorming
|
|
3
|
+
description: Entende o negócio, os usuários e a arquitetura antes de qualquer planejamento técnico. Para projetos existentes, detecta desvios de stack e propõe plano de compliance.
|
|
4
|
+
version: core
|
|
5
|
+
when-to-invoke: ao receber um novo request de feature, antes de morph-plan
|
|
6
|
+
user-invokable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# morph-brainstorming
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Garantir que o planejamento técnico parta de entendimento real do negócio e do contexto técnico existente — não de suposições. Output é o `proposal.md` aprovado pelo Gate 1.
|
|
13
|
+
|
|
14
|
+
## Quando invocar
|
|
15
|
+
Ao iniciar uma nova feature — antes de qualquer especificação técnica ou planejamento.
|
|
16
|
+
|
|
17
|
+
## Stack padrão (baked in)
|
|
18
|
+
|
|
19
|
+
O harness conhece o stack por padrão. Não pergunte sobre tecnologia a menos que haja ambiguidade real.
|
|
20
|
+
|
|
21
|
+
| Camada | Stack |
|
|
22
|
+
|--------|-------|
|
|
23
|
+
| Backend | .NET 10, VSA (feature-folder: handler + validator + endpoint + errors + tests) |
|
|
24
|
+
| ORM | EF Core + Neon (Postgres), `Guid.CreateVersion7()`, `sealed` classes, `result.Match()` |
|
|
25
|
+
| IA | Microsoft Agent Framework (MAF) — quando a feature envolve agentes |
|
|
26
|
+
| Frontend | Next.js App Router + Tailwind + Framer Motion + Shadcn |
|
|
27
|
+
| Jobs async | Hangfire — apenas se a feature requer processamento em background |
|
|
28
|
+
|
|
29
|
+
**Padrões proibidos:** `Guid.NewGuid()`, classes não-sealed sem justificativa, exceptions sem result pattern, Repository pattern (VSA usa handlers diretos).
|
|
30
|
+
|
|
31
|
+
## O que fazer
|
|
32
|
+
|
|
33
|
+
### Parte 1 — Entendimento de negócio
|
|
34
|
+
|
|
35
|
+
1. Faça até 4 perguntas ao usuário via `AskUserQuestion` para entender:
|
|
36
|
+
- Qual problema de negócio esta feature resolve?
|
|
37
|
+
- Quem são os usuários afetados e quais são os fluxos críticos deles?
|
|
38
|
+
- Qual é o critério de sucesso — como saberemos que a feature está pronta?
|
|
39
|
+
- Há integrações externas, dependências de outras features ou restrições de prazo?
|
|
40
|
+
|
|
41
|
+
Se as respostas forem claras e suficientes, siga para a Parte 2 sem perguntas adicionais.
|
|
42
|
+
|
|
43
|
+
### Parte 2 — Detecção de contexto (greenfield vs brownfield)
|
|
44
|
+
|
|
45
|
+
2. Use um `Explore` subagent para varrer o projeto com este prompt:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Varredura de codebase para morph-brainstorming.
|
|
49
|
+
|
|
50
|
+
Procure e reporte:
|
|
51
|
+
1. Stack atual: leia .csproj (TargetFramework, PackageReferences), package.json (dependencies),
|
|
52
|
+
migrations/ (ORM em uso). Liste tecnologias encontradas.
|
|
53
|
+
2. Estrutura de pastas: o projeto segue VSA (feature-folder) ou outra arquitetura?
|
|
54
|
+
3. Padrões em uso: Guid.NewGuid() ou Guid.CreateVersion7()? Classes sealed? Result pattern ou exceptions?
|
|
55
|
+
4. Features existentes: liste as pastas em src/ ou equivalente para mapear slices já implementados.
|
|
56
|
+
5. Dependências relevantes para esta feature: o que já existe que esta feature vai usar ou modificar?
|
|
57
|
+
|
|
58
|
+
Retorne apenas fatos observados — sem sugestões ou opiniões.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
3. Com base na varredura:
|
|
62
|
+
- **Se o projeto não existe ainda (greenfield):** siga direto para a Parte 3.
|
|
63
|
+
- **Se o projeto existe e segue o stack padrão:** siga para a Parte 3.
|
|
64
|
+
- **Se o projeto existe mas desvia do stack padrão:** gere um `migration-plan.md` em `.morph/features/{feature}/0-proposal/` listando o que migrar e em que ordem. Faça UMA pergunta via `AskUserQuestion`: "A migração de stack deve ser incluída nesta feature ou tratada numa feature separada?" Registre a decisão e siga para a Parte 3.
|
|
65
|
+
|
|
66
|
+
### Parte 3 — Produção do proposal.md
|
|
67
|
+
|
|
68
|
+
4. Produza `proposal.md` em `.morph/features/{feature}/0-proposal/` com:
|
|
69
|
+
- **Problema:** o que está sendo resolvido e para quem (máx. 2 parágrafos)
|
|
70
|
+
- **Escopo:** o que está incluído e o que está explicitamente excluído
|
|
71
|
+
- **Usuários e fluxos críticos:** quem usa e qual é o caminho principal
|
|
72
|
+
- **Critérios de aceite:** condições verificáveis que indicam que a feature está pronta
|
|
73
|
+
- **Stack:** confirme o stack padrão ou documente desvios aprovados
|
|
74
|
+
- **Riscos e dependências:** o que pode dar errado, o que esta feature depende
|
|
75
|
+
- **Compliance de stack:** "Em compliance" ou lista de desvios detectados e plano de resolução
|
|
76
|
+
|
|
77
|
+
Um bom proposal.md tem no máximo 2 páginas. Se está crescendo além disso, o escopo precisa ser cortado.
|
|
78
|
+
|
|
79
|
+
5. Apresente o Gate 1:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
## Gate 1 — Proposta pronta para revisão
|
|
83
|
+
|
|
84
|
+
**Feature:** {nome}
|
|
85
|
+
**Problema:** {1 frase}
|
|
86
|
+
**Escopo:** {incluído} | Excluído: {exclusões explícitas}
|
|
87
|
+
**Stack:** {Em compliance / Desvios: X, Y}
|
|
88
|
+
**Riscos:** {principal risco identificado}
|
|
89
|
+
|
|
90
|
+
Aprovado? Responda "aprovado" para avançar para o planejamento.
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Aguarde aprovação explícita. Se o usuário pedir ajustes, aplique e reapresente o gate.
|
|
94
|
+
|
|
95
|
+
## Output esperado
|
|
96
|
+
- `.morph/features/{feature}/0-proposal/proposal.md` — proposta aprovada
|
|
97
|
+
- `.morph/features/{feature}/0-proposal/migration-plan.md` — apenas se houver desvio de stack
|
|
98
|
+
- Gate 1 apresentado e aprovado
|
|
99
|
+
|
|
100
|
+
## Referências
|
|
101
|
+
- `framework/MORPH.md` — seções 1 (Papéis), 2 (Fases), 5 (Gates)
|
|
102
|
+
- `framework/standards/STANDARDS.json` — para referência de standards relevantes à stack
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: morph-eval
|
|
3
|
+
description: Avalia a qualidade de uma tarefa ou fase com rubricas graduadas 0-10
|
|
4
|
+
version: core
|
|
5
|
+
when-to-invoke: ao completar uma tarefa ou ao finalizar uma fase de implementação
|
|
6
|
+
user-invokable: false
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# morph-eval
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Produzir um score 0-10 por dimensão e uma ação clara baseada no score.
|
|
13
|
+
O objetivo não é punir — é identificar o que melhorar antes de seguir adiante.
|
|
14
|
+
|
|
15
|
+
## Quando invocar
|
|
16
|
+
Após concluir uma tarefa ou ao finalizar a fase de implementação.
|
|
17
|
+
Também invocado ao receber o retorno de um sub-agent com auto-score < 7.
|
|
18
|
+
|
|
19
|
+
## O que fazer
|
|
20
|
+
|
|
21
|
+
1. Identifique o escopo da avaliação: tarefa única ou fase completa.
|
|
22
|
+
|
|
23
|
+
2. Para cada dimensão, leia a rubrica correspondente em `framework/evals/rubrics/`:
|
|
24
|
+
- `architecture.md` — peso 30% — vertical slice, separação de responsabilidades, infra
|
|
25
|
+
- `contracts.md` — peso 25% — tipos, validação, tratamento de erros, naming
|
|
26
|
+
- `code-quality.md` — peso 25% — naming, ausência de code smells, padrões do stack
|
|
27
|
+
- `test-coverage.md` — peso 20% — happy path, edge cases, isolamento, naming de testes
|
|
28
|
+
|
|
29
|
+
3. Atribua um score de 1 a 10 para cada dimensão seguindo as bandas da rubrica.
|
|
30
|
+
|
|
31
|
+
4. Calcule o score composto: (arch × 0.30) + (contracts × 0.25) + (quality × 0.25) + (tests × 0.20).
|
|
32
|
+
|
|
33
|
+
5. Aja conforme o score composto:
|
|
34
|
+
- **8-10:** Aprovado — nenhuma saída necessária no contexto, siga para próxima tarefa.
|
|
35
|
+
- **6-7.9:** Feedback priorizado — liste o que melhorar (bloqueantes primeiro), modelo continua.
|
|
36
|
+
- **< 6:** Escale para revisão humana — produza relatório detalhado com scores por dimensão e itens bloqueantes.
|
|
37
|
+
|
|
38
|
+
6. Registre o score no recap.md da tarefa avaliada.
|
|
39
|
+
|
|
40
|
+
7. Atualize o trace de execução em `.morph/traces/YYYY-MM-DD-{feature}-{phase}.json`:
|
|
41
|
+
- Encontre a entrada da task avaliada em `tasks[]` pelo `id`
|
|
42
|
+
- Preencha `eval_score` com o score composto calculado no passo 4
|
|
43
|
+
- Preencha `eval_dimensions` com os scores individuais por dimensão
|
|
44
|
+
|
|
45
|
+
## Output esperado
|
|
46
|
+
- Score composto 0-10 com scores por dimensão
|
|
47
|
+
- Ação tomada com base no score (aprovado / feedback / escalado)
|
|
48
|
+
- Entrada no recap.md com scores
|
|
49
|
+
- Trace atualizado com `eval_score` e `eval_dimensions`
|
|
50
|
+
|
|
51
|
+
## Referências
|
|
52
|
+
- `framework/evals/rubrics/architecture.md` — rubrica de arquitetura (30%)
|
|
53
|
+
- `framework/evals/rubrics/contracts.md` — rubrica de contratos (25%)
|
|
54
|
+
- `framework/evals/rubrics/code-quality.md` — rubrica de qualidade (25%)
|
|
55
|
+
- `framework/evals/rubrics/test-coverage.md` — rubrica de cobertura (20%)
|
|
56
|
+
- `framework/evals/trace-schema.md` — formato canônico do trace
|
|
57
|
+
- `framework/MORPH.md` — seção 1 (papel Evaluator)
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: morph-implement
|
|
3
|
+
description: Guia a execução de cada tarefa de implementação com standard e persona adequados
|
|
4
|
+
version: core
|
|
5
|
+
when-to-invoke: ao iniciar cada tarefa de implementação listada no tasks.md
|
|
6
|
+
user-invokable: false
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# morph-implement
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Garantir que cada tarefa seja executada com o standard correto, a persona de agente adequada,
|
|
13
|
+
e que o resultado seja registrado no recap.md ao final.
|
|
14
|
+
|
|
15
|
+
## Quando invocar
|
|
16
|
+
Ao iniciar cada tarefa do tasks.md — antes de escrever qualquer código.
|
|
17
|
+
|
|
18
|
+
## O que fazer
|
|
19
|
+
|
|
20
|
+
1. Leia o mandate.md em `.morph/features/{feature}/2-plan/mandate.md`.
|
|
21
|
+
Identifique os standards obrigatórios e patterns proibidos para esta feature.
|
|
22
|
+
|
|
23
|
+
2. Identifique o standard mais relevante para a tarefa atual:
|
|
24
|
+
- Consulte `framework/standards/STANDARDS.json` — filtre por `category` e `tags`.
|
|
25
|
+
- Leia apenas o arquivo `.md` do standard identificado (campo `path` no JSON).
|
|
26
|
+
- Se nenhum standard cobrir o caso, registre no decisions.md e adote o critério mais conservador.
|
|
27
|
+
|
|
28
|
+
3. Identifique a persona de agente adequada para a tarefa:
|
|
29
|
+
- Consulte `framework/agents.json` — encontre o agente cujo `domains` cobre o domínio da tarefa.
|
|
30
|
+
- Leia o campo `persona` do agente e adote esse ponto de vista durante a implementação.
|
|
31
|
+
|
|
32
|
+
4. Avalie se a tarefa se qualifica para sub-agent dispatch (ver critérios em `framework/MORPH.md` seção 6):
|
|
33
|
+
- Duração estimada > 5 minutos
|
|
34
|
+
- Mais de 3 tentativas de correção falharam no mesmo problema
|
|
35
|
+
- Análise de arquivo com > 500 linhas
|
|
36
|
+
- Tarefa repetitiva com > 3 instâncias do mesmo padrão
|
|
37
|
+
- Risco de contaminar o contexto principal com detalhes de baixo nível irrelevantes para o fluxo
|
|
38
|
+
|
|
39
|
+
**Se sim — despache sub-agent com este template:**
|
|
40
|
+
```
|
|
41
|
+
Implementar [ID da tarefa]: [título da tarefa]
|
|
42
|
+
|
|
43
|
+
Spec: [O que deve ser feito em 3-5 frases, extraído do tasks.md]
|
|
44
|
+
Standard: [path do .md do standard identificado no passo 2]
|
|
45
|
+
Arquivos relevantes: [lista de paths que o sub-agent precisa ler ou modificar]
|
|
46
|
+
Done quando: [critério verificável do tasks.md]
|
|
47
|
+
|
|
48
|
+
Retorne APENAS: (1) o que foi feito em 2-3 frases, (2) arquivos modificados,
|
|
49
|
+
(3) problemas encontrados e como foram resolvidos, (4) auto-score 0-10.
|
|
50
|
+
```
|
|
51
|
+
Após receber o retorno: se auto-score < 7, aplique `morph-eval` antes de aceitar. Se >= 7, integre ao recap.md e vá para o passo 7.
|
|
52
|
+
|
|
53
|
+
**Se não — siga para o passo 5.**
|
|
54
|
+
|
|
55
|
+
5. Implemente a tarefa seguindo o standard e a persona identificados.
|
|
56
|
+
Se encontrar ambiguidade de escopo não coberta pelo mandate, registre no decisions.md
|
|
57
|
+
e resolva da forma mais conservadora — não pause para perguntar, a menos que seja bloqueante.
|
|
58
|
+
|
|
59
|
+
6. Ao concluir a tarefa, atualize `recap.md` em `.morph/features/{feature}/3-implement/`:
|
|
60
|
+
- ID da tarefa concluída
|
|
61
|
+
- O que foi feito (2-3 frases)
|
|
62
|
+
- Arquivos modificados
|
|
63
|
+
- Standard consultado
|
|
64
|
+
- Problemas encontrados e como foram resolvidos
|
|
65
|
+
|
|
66
|
+
7. Registre a entrada no trace de execução em `.morph/traces/YYYY-MM-DD-{feature}-implement.json`:
|
|
67
|
+
- Crie o arquivo se não existir (use o schema em `framework/evals/trace-schema.md`)
|
|
68
|
+
- Adicione entrada em `tasks[]` com: `id`, `title`, `status`, `standards_consulted`, `agent_persona`, `files_modified`, `sub_agent_dispatched`
|
|
69
|
+
- Deixe `eval_score` e `eval_dimensions` como `null` — serão preenchidos pelo morph-eval
|
|
70
|
+
- Se esta for a última tarefa da fase, preencha `completed_at`
|
|
71
|
+
|
|
72
|
+
8. Verifique o tasks.md por tarefas com status pendente. Se houver próxima tarefa, inicie-a imediatamente aplicando esta skill desde o passo 1 — sem aguardar instrução do usuário. Pause apenas se encontrar ambiguidade bloqueante não coberta pelo mandate.
|
|
73
|
+
|
|
74
|
+
## Output esperado
|
|
75
|
+
- Código implementado conforme o standard consultado (direto ou via sub-agent)
|
|
76
|
+
- `.morph/features/{feature}/3-implement/recap.md` atualizado com entrada da tarefa concluída
|
|
77
|
+
- `.morph/features/{feature}/2-plan/decisions.md` atualizado se houver decisão não trivial
|
|
78
|
+
|
|
79
|
+
## Referências
|
|
80
|
+
- `framework/standards/STANDARDS.json` — índice de standards (não carregue todos — filtre por tarefa)
|
|
81
|
+
- `framework/agents.json` — personas dos agentes por domínio
|
|
82
|
+
- `framework/MORPH.md` seção 6 — critérios de dispatch e contrato de retorno do sub-agent
|
|
83
|
+
- `.morph/features/{feature}/2-plan/mandate.md` — contrato da feature
|