@polymorphism-tech/morph-spec 4.22.0 → 6.0.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.
Files changed (211) hide show
  1. package/CLAUDE.md +57 -71
  2. package/README.md +2 -2
  3. package/bin/morph-spec.js +224 -491
  4. package/claude-plugin.json +1 -1
  5. package/docs/CHEATSHEET.md +1 -1
  6. package/docs/QUICKSTART.md +1 -1
  7. package/framework/CLAUDE.md +55 -38
  8. package/framework/MORPH.md +244 -0
  9. package/framework/agents.json +127 -1198
  10. package/framework/commands/morph-apply.md +56 -240
  11. package/framework/commands/morph-archive.md +48 -85
  12. package/framework/commands/morph-preflight.md +7 -7
  13. package/framework/commands/morph-proposal.md +35 -191
  14. package/framework/commands/morph-status.md +19 -50
  15. package/framework/commands/morph-troubleshoot.md +2 -2
  16. package/framework/evals/rubrics/README.md +44 -0
  17. package/framework/evals/rubrics/architecture.md +46 -0
  18. package/framework/evals/rubrics/code-quality.md +50 -0
  19. package/framework/evals/rubrics/contracts.md +47 -0
  20. package/framework/evals/rubrics/test-coverage.md +50 -0
  21. package/framework/evals/scenarios/dotnet-crud.yaml +42 -0
  22. package/framework/evals/scenarios/nextjs-auth.yaml +38 -0
  23. package/framework/evals/suites/standard.yaml +5 -0
  24. package/framework/evals/trace-schema.md +67 -0
  25. package/framework/hooks/claude-code/core/README.md +3 -0
  26. package/framework/hooks/claude-code/core/denylist.json +14 -0
  27. package/framework/hooks/claude-code/{pre-tool-use → core}/enforce-phase-writes.js +5 -5
  28. package/framework/hooks/claude-code/core/post-edit-typecheck.js +69 -0
  29. package/framework/hooks/claude-code/core/pre-bash-denylist.js +29 -0
  30. package/framework/hooks/claude-code/{pre-tool-use → core}/protect-spec-files.js +4 -6
  31. package/framework/hooks/claude-code/{stop → core}/validate-completion.js +13 -82
  32. package/framework/hooks/shared/phase-utils.js +20 -31
  33. package/framework/hooks/shared/state-reader.js +4 -5
  34. package/framework/{skills/level-0-meta/mcp-registry.json → mcp/registry.json} +254 -243
  35. package/framework/phases.json +41 -115
  36. package/framework/rubrics/eval-rubric.json +66 -0
  37. package/framework/skills/README.md +39 -64
  38. package/framework/skills/core/README.md +3 -0
  39. package/framework/skills/core/morph-brainstorming/SKILL.md +102 -0
  40. package/framework/skills/core/morph-eval/SKILL.md +57 -0
  41. package/framework/skills/core/morph-implement/SKILL.md +83 -0
  42. package/framework/skills/core/morph-plan/SKILL.md +64 -0
  43. package/framework/skills/core/morph-review/SKILL.md +62 -0
  44. package/framework/skills/core/morph-stack-scan/SKILL.md +109 -0
  45. package/framework/skills/core/morph-standards/SKILL.md +49 -0
  46. package/framework/templates/CLAUDE.md.core.guide.md +29 -0
  47. package/framework/templates/CLAUDE.md.core.template +22 -0
  48. package/framework/templates/REGISTRY.json +4 -4
  49. package/framework/workflows/configs/fast-track.json +5 -10
  50. package/framework/workflows/configs/full.json +4 -8
  51. package/framework/workflows/configs/quick.json +32 -0
  52. package/framework/workflows/configs/standard.json +57 -64
  53. package/package.json +7 -6
  54. package/src/commands/mcp/mcp-setup.js +58 -31
  55. package/src/commands/project/doctor.js +69 -70
  56. package/src/commands/project/init.js +26 -5
  57. package/src/commands/project/status.js +18 -19
  58. package/src/commands/state/approve.js +1 -1
  59. package/src/commands/validation/validate-feature.js +18 -112
  60. package/src/core/paths/output-schema.js +133 -152
  61. package/src/core/state/phase-state-machine.js +10 -24
  62. package/src/core/state/state-manager.js +17 -17
  63. package/src/core/workflows/workflow-detector.js +214 -31
  64. package/src/core/workflows/workflow-router.js +204 -0
  65. package/src/dashboard/app/pages/AgentMap.jsx +32 -33
  66. package/src/dashboard/app/pages/LiveState.jsx +1 -1
  67. package/src/dashboard/app/pages/PhasePipeline.jsx +2 -4
  68. package/src/dashboard/app/pages/SkillsLibrary.jsx +2 -3
  69. package/src/dashboard/app/pages/Workflows.jsx +2 -2
  70. package/src/dashboard/scanner/agents-scanner.js +30 -35
  71. package/src/lib/agents/metrics-aggregator.js +1 -1
  72. package/src/lib/agents/output-collector.js +7 -9
  73. package/src/lib/context/context-builder.js +289 -0
  74. package/src/lib/detectors/claude-config-detector.js +19 -3
  75. package/src/lib/generators/context-generator.js +20 -42
  76. package/src/lib/generators/index.js +1 -0
  77. package/src/lib/generators/mandate-generator.js +512 -0
  78. package/src/lib/generators/metadata-extractor.js +1 -1
  79. package/src/lib/generators/recap-generator.js +3 -4
  80. package/src/lib/installers/mcp-installer.js +300 -92
  81. package/src/lib/phase-chain/phase-validator.js +36 -40
  82. package/src/lib/stack/stack-profile.js +74 -91
  83. package/src/lib/tasks/task-parser.js +1 -1
  84. package/src/lib/tasks/wave-resolver.js +353 -0
  85. package/src/lib/validators/checkpoint-persistence.js +2 -2
  86. package/src/lib/validators/content/cross-phase-validator.js +281 -0
  87. package/src/lib/validators/content/index.js +1 -0
  88. package/src/lib/validators/shared/emit-validator-dispatch.js +6 -56
  89. package/src/scripts/global-install.js +2 -27
  90. package/src/utils/agents-installer.js +224 -447
  91. package/src/utils/claude-settings-manager.js +57 -15
  92. package/src/utils/file-copier.js +1 -0
  93. package/src/utils/hooks-installer.js +15 -117
  94. package/src/utils/skills-installer.js +12 -18
  95. package/bin/detect-agents.js +0 -226
  96. package/bin/task-manager.js +0 -1036
  97. package/framework/agents/README.md +0 -13
  98. package/framework/agents/ai-agents/ai-system-architect.md +0 -194
  99. package/framework/agents/ai-agents/vector-search-expert.md +0 -247
  100. package/framework/agents/architecture/architecture-expert.md +0 -98
  101. package/framework/agents/architecture/morph-spec-architect.md +0 -66
  102. package/framework/agents/architecture/packages-validator.md +0 -89
  103. package/framework/agents/architecture/security-expert.md +0 -79
  104. package/framework/agents/architecture/seo-growth-hacker.md +0 -168
  105. package/framework/agents/architecture/standards-architect.md +0 -153
  106. package/framework/agents/backend/dotnet-senior.md +0 -163
  107. package/framework/agents/backend/ef-modeler.md +0 -119
  108. package/framework/agents/backend/hangfire-orchestrator.md +0 -133
  109. package/framework/agents/backend/ms-agent-expert.md +0 -55
  110. package/framework/agents/backend/neon-expert.md +0 -379
  111. package/framework/agents/frontend/css-specialist.md +0 -89
  112. package/framework/agents/frontend/design-system-validator.md +0 -100
  113. package/framework/agents/frontend/gsap-animator.md +0 -131
  114. package/framework/agents/frontend/nextjs-component-validator.md +0 -97
  115. package/framework/agents/frontend/nextjs-expert.md +0 -201
  116. package/framework/agents/frontend/ui-designer.md +0 -259
  117. package/framework/agents/infrastructure/infra-architect.md +0 -215
  118. package/framework/agents/integrations/asaas-financial.md +0 -138
  119. package/framework/agents/integrations/neon-auth.md +0 -151
  120. package/framework/agents/integrations/resend-email.md +0 -127
  121. package/framework/hooks/claude-code/post-tool-use/agent-complete.js +0 -122
  122. package/framework/hooks/claude-code/post-tool-use/dispatch.js +0 -363
  123. package/framework/hooks/claude-code/post-tool-use/handle-tool-failure.js +0 -78
  124. package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +0 -194
  125. package/framework/hooks/claude-code/pre-compact/save-morph-context.js +0 -199
  126. package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +0 -55
  127. package/framework/hooks/claude-code/session-start/inject-morph-context.js +0 -323
  128. package/framework/hooks/claude-code/session-start/post-compact-restore.js +0 -41
  129. package/framework/hooks/claude-code/session-start/resume-context.js +0 -77
  130. package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +0 -90
  131. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +0 -114
  132. package/framework/hooks/shared/compact-restore.js +0 -123
  133. package/framework/hooks/shared/dispatch-helpers.js +0 -147
  134. package/framework/hooks/shared/skill-reminder-helpers.js +0 -79
  135. package/framework/hooks/shared/stale-task-reset.js +0 -57
  136. package/framework/hooks/shared/worktree-helpers.js +0 -75
  137. package/framework/skills/level-0-meta/README.md +0 -7
  138. package/framework/skills/level-0-meta/morph-agent-teams/SKILL.md +0 -472
  139. package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +0 -174
  140. package/framework/skills/level-0-meta/morph-brainstorming/references/proposal-example.md +0 -138
  141. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +0 -145
  142. package/framework/skills/level-0-meta/morph-code-review/SKILL.md +0 -250
  143. package/framework/skills/level-0-meta/morph-code-review/references/review-example.md +0 -164
  144. package/framework/skills/level-0-meta/morph-code-review/references/review-guidelines.md +0 -100
  145. package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +0 -151
  146. package/framework/skills/level-0-meta/morph-code-review-nextjs/SKILL.md +0 -165
  147. package/framework/skills/level-0-meta/morph-code-review-nextjs/references/review-example-nextjs.md +0 -254
  148. package/framework/skills/level-0-meta/morph-code-review-nextjs/scripts/scan-nextjs.mjs +0 -189
  149. package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +0 -344
  150. package/framework/skills/level-0-meta/morph-frontend-review/scripts/scan-accessibility.mjs +0 -376
  151. package/framework/skills/level-0-meta/morph-gemini-image/SKILL.md +0 -290
  152. package/framework/skills/level-0-meta/morph-init/SKILL.md +0 -537
  153. package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +0 -225
  154. package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +0 -401
  155. package/framework/skills/level-0-meta/morph-post-implementation/scripts/detect-dev-server.mjs +0 -153
  156. package/framework/skills/level-0-meta/morph-post-implementation/scripts/detect-stack.mjs +0 -234
  157. package/framework/skills/level-0-meta/morph-simulation-checklist/SKILL.md +0 -106
  158. package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +0 -243
  159. package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +0 -169
  160. package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +0 -148
  161. package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +0 -110
  162. package/framework/skills/level-1-workflows/README.md +0 -7
  163. package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +0 -269
  164. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +0 -453
  165. package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +0 -44
  166. package/framework/skills/level-1-workflows/morph-phase-design/references/spec-authoring-guide.md +0 -55
  167. package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +0 -253
  168. package/framework/skills/level-1-workflows/morph-phase-implement/.morph/logs/activity.json +0 -38
  169. package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +0 -634
  170. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +0 -50
  171. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +0 -54
  172. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +0 -47
  173. package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +0 -132
  174. package/framework/skills/level-1-workflows/morph-phase-implement/references/vsa-implementation-guide.md +0 -92
  175. package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +0 -257
  176. package/framework/skills/level-1-workflows/morph-phase-tasks/.morph/logs/activity.json +0 -14
  177. package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +0 -291
  178. package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +0 -143
  179. package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +0 -404
  180. package/framework/skills/level-1-workflows/morph-phase-tasks/scripts/validate-tasks.mjs +0 -112
  181. package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +0 -995
  182. package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +0 -147
  183. package/framework/squad-templates/backend-only.json +0 -47
  184. package/framework/squad-templates/frontend-only.json +0 -56
  185. package/framework/squad-templates/full-stack.json +0 -74
  186. package/src/commands/agents/agent-metrics.js +0 -174
  187. package/src/commands/agents/audit-dispatch.js +0 -82
  188. package/src/commands/agents/detect-agents.js +0 -275
  189. package/src/commands/agents/dispatch-agents.js +0 -461
  190. package/src/commands/agents/index.js +0 -13
  191. package/src/commands/agents/manage-agents.js +0 -352
  192. package/src/commands/agents/project-metrics.js +0 -74
  193. package/src/commands/phase/phase-reset.js +0 -74
  194. package/src/commands/scope/escalate.js +0 -217
  195. package/src/commands/state/advance-phase.js +0 -600
  196. package/src/commands/state/phase-runner.js +0 -215
  197. package/src/commands/state/state.js +0 -444
  198. package/src/commands/task/expand.js +0 -100
  199. package/src/commands/tasks/index.js +0 -4
  200. package/src/commands/tasks/task.js +0 -105
  201. package/src/commands/templates/index.js +0 -5
  202. package/src/commands/templates/template-render.js +0 -93
  203. package/src/commands/trust/trust.js +0 -118
  204. package/src/lib/agents/agents-manager.js +0 -349
  205. package/src/lib/build/build-runner.js +0 -99
  206. package/src/lib/checkpoints/checkpoint-hooks.js +0 -111
  207. package/src/lib/contracts/sprint-contract-generator.js +0 -137
  208. package/src/lib/scope/impact-analyzer.js +0 -106
  209. package/src/lib/trust/trust-manager.js +0 -157
  210. package/src/utils/tier-helpers.js +0 -24
  211. /package/framework/hooks/claude-code/{post-tool-use → core}/loop-detect.js +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0",
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 feature scope",
11
- "Agree on high-level approach",
12
- "Produce initial proposal document"
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 Proposal" }
17
+ { "id": "proposal", "label": "Gate 1 — Approve proposal" }
19
18
  ],
20
- "agentTiers": [1],
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 visual design and design system",
33
- "Create component inventory and style guide",
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
- "optionalOutputs": ["uiMockups", "uiComponents", "uiFlows", "stitchHtml"],
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"],
32
+ "optionalOutputs": ["uiMockups", "uiComponents", "uiFlows"],
62
33
  "pausePoints": [
63
- { "id": "design", "label": "Approve Design Spec" }
34
+ { "id": "uiux", "label": "Approve UI/UX" }
64
35
  ],
65
- "agentTiers": [1, 2, 3, 4],
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": 3,
77
- "folder": "3-plan",
78
- "displayName": "Implementation Plan",
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
- "Break approved spec into numbered, atomic tasks",
103
- "Order tasks by dependency",
104
- "Assign tasks to agent tiers"
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": "tasks", "label": "Approve Task List" }
51
+ { "id": "plan", "label": "Gate 2 — Approve spec + mandate + tasks" }
111
52
  ],
112
- "agentTiers": [1, 2, 3],
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": 5,
121
- "folder": "5-implement",
57
+ "index": 3,
58
+ "folder": "3-implement",
122
59
  "displayName": "Implementation",
123
60
  "goals": [
124
- "Execute approved tasks in order",
125
- "Follow framework standards at each step",
126
- "Checkpoint every 3 tasks",
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
- "agentTiers": [1, 2, 3, 4],
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
- "sync": {
144
- "id": "sync",
145
- "index": 6,
146
- "folder": null,
147
- "displayName": "Sync Standards",
148
- "optional": true,
70
+ "review": {
71
+ "id": "review",
72
+ "index": 4,
73
+ "folder": "4-review",
74
+ "displayName": "Review",
149
75
  "goals": [
150
- "Update framework standards from feature learnings",
151
- "Capture new patterns to learning library",
152
- "Archive completed feature"
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
- "recommendedMCPs": [],
157
- "pausePoints": [],
158
- "agentTiers": [1],
159
- "requiredSkills": []
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
- ## level-0-meta — Utilities & Meta-Skills
10
-
11
- | Skill | Description |
12
- |-------|-------------|
13
- | `tool-usage-guide` | Tool selection flowchart — which tool for which action |
14
- | `morph-checklist` | Pre-session checklist for MORPH-SPEC projects |
15
- | `simulation-checklist` | Checklist for AI simulation / prompt testing |
16
- | `brainstorming` | Collaborative ideation → spec via dialogue |
17
- | `verification-before-completion` | Gate check before marking any work done |
18
- | `code-review` | .NET/C# review checklist (naming, arch, async, DI, DTOs) |
19
-
20
-
21
- ### level-0-meta extras
22
-
23
- | Skill | File | Purpose |
24
- |-------|------|---------|
25
- | `brainstorming` | `references/proposal-example.md` | Filled-in proposal.md example |
26
- | `verification-before-completion` | `scripts/check-phase-outputs.mjs` | Validate required phase outputs exist |
27
- | `code-review` | `references/review-example.md` | Filled-in review with finding format |
28
- | `code-review` | `scripts/scan-csharp.mjs` | Scan .cs files for CRITICAL/HIGH violations |
29
-
30
- ---
31
-
32
- ## level-1-workflows — Phase Workflow Skills
33
-
34
- Invoked internally by `/morph-proposal` and `/morph-apply`. Not user-invocable.
35
-
36
- | Skill | Phase | Description |
37
- |-------|-------|-------------|
38
- | `phase-codebase-analysis` | 0 | Analyse existing codebase before design |
39
- | `phase-design` | 2 | Technical spec + contracts + decisions + clarification |
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,3 @@
1
+ # skills/core
2
+ Part of morph-spec NLH.
3
+ See `framework/MORPH.md` for full documentation.
@@ -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