@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,210 +1,54 @@
1
1
  ---
2
- description: MORPH Spec Pipeline — creates or resumes feature planning through proposal, design, plan, and tasks phases with mandatory approval pauses. Use whenever the user wants to plan, spec, or design a new feature, or when they say /morph-proposal. This is the primary entry point for all MORPH-SPEC feature work.
2
+ description: Inicia uma nova feature MORPH-SPEC. Roda morph-brainstorming para entender negócio + escanear stack, depois morph-plan para produzir spec/mandate/tasks. Pausa nos Gates 1 e 2.
3
3
  argument-hint: <feature-name>
4
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
4
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent, AskUserQuestion, Skill
5
5
  ---
6
6
 
7
- # MORPH Spec Pipeline
7
+ # /morph-proposal — NLH Pipeline
8
8
 
9
- Guide a feature through the full planning pipeline (proposal through tasks) with mandatory approval pauses at each gate.
9
+ Conduz a feature do request inicial até o Gate 2 (plano aprovado), sem intervenção do usuário entre os gates.
10
10
 
11
- ---
12
-
13
- ## 1. Resume Logic
14
-
15
- Check if the feature already has state:
16
-
17
- ```bash
18
- morph-spec state get {feature-name}
19
- ```
20
-
21
- - **Exists:** Read the current phase and resume from where it stopped (skip completed phases). Create pipeline master tasks (Step 6) and mark already-completed phases as `completed`.
22
- - **Does not exist:** Start from scratch (PHASE 0)
23
-
24
- ---
25
-
26
- ## 2. PHASE 0: PROPOSAL
27
-
28
- ### Step 1: Load project context
29
-
30
- Read these files to understand the project before writing anything:
31
- - `.morph/context/README.md` — project overview, tech stack, architecture
32
- - `.morph/config/config.json` — project configuration (language, workflow, architecture style)
33
-
34
- ### Step 2: Detect agents
35
-
36
- Read `framework/agents.json` (or `.morph/framework/agents.json` in client projects). For each agent:
37
- 1. Check if `always_active: true` — include automatically
38
- 2. Compare agent `keywords[]` and `domains[]` against the feature description — include on match
39
- 3. **Document false-positive exclusions**: for agents that match on keywords but are irrelevant to this feature, note why they were excluded (this helps audit agent selection later)
40
-
41
- Register each selected agent:
42
- ```bash
43
- morph-spec state add-agent {feature-name} {agent-id}
44
- ```
45
-
46
- ### Step 3: Determine if UI/UX phase is needed
47
-
48
- If `ui-designer` is among the selected agents, the feature will trigger the UI/UX phase later. Note this decision — it affects the pipeline path.
49
-
50
- ### Step 4: Create proposal
11
+ ## Argumentos
51
12
 
52
- Read the proposal template at `framework/templates/docs/proposal.md` first, then create:
13
+ `{feature-name}` — nome em kebab-case da feature.
53
14
 
54
- ```
55
- .morph/features/{feature-name}/
56
- 0-proposal/proposal.md
57
- ```
15
+ ## Fluxo
58
16
 
59
- Fill every section of the template. In particular:
60
- - **Metadata table**: date, author, status, priority, stack
61
- - **Problem Statement**: use the What/Who/Impact structure from the template
62
- - **Proposed Solution**: technical approach, key features, user journey
63
- - **Success Metrics**: quantified current vs target values
64
- - **Scope**: explicit In Scope, Out of Scope, and Future Considerations
65
- - **Risks**: table with likelihood, impact, mitigation
66
- - **Dependencies**: checklist of prerequisites
67
- - **Estimated Effort**: broken down by phase (in hours)
68
- - **Questions & Open Points**: seed 3-6 questions to be resolved during the design phase
17
+ 1. **Detecta contexto:** verifica se `.morph/features/{feature-name}/` já existe.
18
+ - Se existe e tem `0-proposal/proposal.md`: pular para passo 3.
19
+ - Se não existe: criar a estrutura e seguir o passo 2.
69
20
 
70
- ### Step 5: Register state
21
+ 2. **Invocar `morph-brainstorming`** (skill em `framework/skills/core/morph-brainstorming/`):
22
+ - Faz até 4 perguntas de negócio via AskUserQuestion.
23
+ - Roda Explore subagent para detectar stack e estado do codebase.
24
+ - Produz `proposal.md` em `.morph/features/{feature-name}/0-proposal/`.
25
+ - Apresenta o **Gate 1**.
71
26
 
72
- ```bash
73
- morph-spec state init {feature-name}
74
- morph-spec state set {feature-name} status draft
75
- morph-spec state mark-output {feature-name} proposal
76
- ```
27
+ 3. **Aguardar aprovação do Gate 1.**
28
+ - Resposta válida: "aprovado", "pode avançar", "lgtm".
29
+ - Se ajustes solicitados: aplicar e reapresentar o gate.
77
30
 
78
- ### Step 6: Create pipeline master tasks
31
+ 4. **Após Gate 1, invocar `morph-plan`** (skill em `framework/skills/core/morph-plan/`):
32
+ - Lê `proposal.md`.
33
+ - Produz `spec.md`, `mandate.md`, `tasks.md` em `.morph/features/{feature-name}/2-plan/`.
34
+ - Apresenta o **Gate 2** com template fixo (ver SKILL.md passo 5).
79
35
 
80
- > **MANDATORY** — Create one native task per pipeline phase for progress visibility.
81
- > These are high-level tasks — one per phase, not per workflow step.
36
+ 5. **Aguardar aprovação do Gate 2.**
37
+ - Resposta válida: "pode implementar", "aprovado".
38
+ - Se ajustes solicitados: aplicar e reapresentar o gate.
82
39
 
83
- ```
84
- TaskCreate: "Proposal" → description: "Define feature scope and approach"
85
- TaskCreate: "Design" → description: "Schema analysis, spec, contracts, decisions"
86
- TaskCreate: "Plan" → description: "Implementation plan with TDD and file paths"
87
- TaskCreate: "Tasks" → description: "Break spec into T001-T00N with dependencies"
88
- ```
40
+ 6. **Após Gate 2:** sinalizar ao usuário que `/morph-apply {feature-name}` está pronto para iniciar a implementação.
89
41
 
90
- If `ui-designer` is among the activated agents, also create:
91
- ```
92
- TaskCreate: "UI/UX" → description: "Design system, mockups, components, flows"
93
- ```
94
-
95
- Wire dependencies matching the phase sequence:
96
- - UI/UX (if created) ← Proposal
97
- - Design ← UI/UX (or Proposal if no UI/UX)
98
- - Plan ← Design
99
- - Tasks ← Plan
100
-
101
- Mark "Proposal" as `in_progress` immediately.
102
-
103
- ### MANDATORY PAUSE
104
-
105
- Use `AskUserQuestion` to present the approval gate with these elements:
106
-
107
- 1. **Proposal summary** — 3-4 sentence overview of what was proposed
108
- 2. **Agents activated** — table showing agent ID, tier, role, and why selected
109
- 3. **Effort estimate** — total hours from the proposal
110
- 4. **Key decisions pending** — 2-3 design decisions that will be resolved in the design phase
111
-
112
- Options: Approve proposal / Request changes / Reject
113
-
114
- After approval:
115
- ```bash
116
- morph-spec approve {feature-name} proposal
117
- morph-spec phase advance {feature-name}
118
- ```
119
-
120
- ---
121
-
122
- ## 3. PHASE 1: UI/UX (conditional)
123
-
124
- Check if `ui-designer` is in `activeAgents`:
125
- - **Yes:** Invoke the `morph-phase-uiux` skill. **MANDATORY PAUSE** after generating UI deliverables.
126
- - **No:** Skip to PHASE 2.
127
-
128
- > **Task lifecycle:** `TaskUpdate` the "Proposal" task → `completed`. `TaskUpdate` the "UI/UX" task → `in_progress` (if UI/UX), or the "Design" task → `in_progress` (if skipping UI/UX).
129
-
130
- After approval:
131
- ```bash
132
- morph-spec approve {feature-name} uiux
133
- morph-spec phase advance {feature-name}
134
- ```
135
-
136
- ---
42
+ ## Anti-padrões
137
43
 
138
- ## 4. PHASE 2: DESIGN
44
+ - Não pular o Gate 1 mesmo que o usuário pareça apressado — proposal.md é o contrato de escopo.
45
+ - Não escrever código nesta fase. Apenas artefatos de planejamento.
46
+ - Não perguntar sobre stack — o stack padrão é VSA + .NET 10 + MAF + Next.js + Neon.
139
47
 
140
- > **Task lifecycle:** `TaskUpdate` the completing phase task (UI/UX or Proposal) → `completed`. `TaskUpdate` the "Design" task → `in_progress`.
48
+ ## Referências
141
49
 
142
- Invoke the `morph-phase-design` skill.
143
-
144
- Summary: generate spec.md, contracts.cs (or contracts-vsa.cs for VSA), decisions.md with ADRs.
145
-
146
- ### MANDATORY PAUSE
147
-
148
- Present: spec, contracts, decisions, effort estimate. Use `AskUserQuestion` with options: Approve design / Adjust scope / Modify contracts.
149
-
150
- After approval:
151
- ```bash
152
- morph-spec approve {feature-name} design
153
- morph-spec phase advance {feature-name}
154
- ```
155
-
156
- ---
157
-
158
- ## 5. PHASE 3: PLAN
159
-
160
- > **Task lifecycle:** `TaskUpdate` the "Design" task → `completed`. `TaskUpdate` the "Plan" task → `in_progress`.
161
-
162
- Invoke the `morph-phase-plan` skill.
163
-
164
- Summary: generate a detailed implementation plan with exact file paths, TDD structure, and context-aware execution strategy.
165
-
166
- ### MANDATORY PAUSE
167
-
168
- Present: implementation plan with recommended strategy. Use `AskUserQuestion` with options: Approve plan / Adjust strategy / Modify plan.
169
-
170
- After approval:
171
- ```bash
172
- morph-spec approve {feature-name} plan
173
- morph-spec phase advance {feature-name}
174
- ```
175
-
176
- ---
177
-
178
- ## 6. PHASE 4: TASKS
179
-
180
- > **Task lifecycle:** `TaskUpdate` the "Plan" task → `completed`. `TaskUpdate` the "Tasks" task → `in_progress`.
181
-
182
- Invoke the `morph-phase-tasks` skill.
183
-
184
- Summary: break spec into tasks T001-TXXX with dependencies, checkpoints, estimates.
185
-
186
- ### MANDATORY PAUSE
187
-
188
- Present: task breakdown, execution order, total estimate. Use `AskUserQuestion` with options: Approve tasks / Reprioritize / Add or remove tasks.
189
-
190
- After approval:
191
- ```bash
192
- morph-spec approve {feature-name} tasks
193
- morph-spec phase advance {feature-name}
194
- ```
195
-
196
- ---
197
-
198
- ## 7. Planning Complete
199
-
200
- > **Task lifecycle:** `TaskUpdate` the "Tasks" task → `completed`.
201
-
202
- After task approval:
203
-
204
- ```
205
- Planning complete! Run /morph-apply {feature-name} to start implementation.
206
- ```
207
-
208
- ---
50
+ - `framework/MORPH.md` — charter completo
51
+ - `framework/skills/core/morph-brainstorming/SKILL.md`
52
+ - `framework/skills/core/morph-plan/SKILL.md`
209
53
 
210
- **Feature requested:** $ARGUMENTS
54
+ **Feature:** $ARGUMENTS
@@ -1,71 +1,40 @@
1
1
  ---
2
- description: Show current MORPH project status and all features in development with their phases and approvals
2
+ description: Show current MORPH-SPEC feature status (phase, gates, task counts)
3
3
  argument-hint: [feature-name]
4
4
  allowed-tools: Read, Bash
5
5
  ---
6
6
 
7
- # MORPH Project Status
7
+ # MORPH Status
8
8
 
9
- Show the current MORPH project status and features in development.
9
+ Show the status of a MORPH-SPEC feature: current phase, approval gates, and output completion.
10
10
 
11
11
  ## Usage
12
12
 
13
- **ALWAYS** use the state-manager CLI to get status:
14
-
15
13
  ```bash
16
- morph-spec state list
14
+ morph-spec status <feature-name>
17
15
  ```
18
16
 
19
- This command automatically shows:
20
- - All active features
21
- - Current phase of each feature
22
- - Task progress (X/Y)
23
- - Active agents
24
-
25
- ## Additional Checks
26
-
27
- ### 1. MORPH Configuration
28
- - [ ] `.morph/config/config.json` configured
29
- - [ ] `.morph/framework/standards/` present
30
-
31
- ### 2. Specific Feature Details
32
-
33
- To get detailed JSON for a feature:
17
+ Optional flags:
18
+ - `--json` — emit JSON for tooling
19
+ - `-v, --verbose` — show output files and gate details
34
20
 
35
- ```bash
36
- morph-spec state get {feature-name}
37
- ```
38
-
39
- ## Output
21
+ ## Resolving the active feature
40
22
 
41
- The `morph-spec state list` command automatically generates a formatted dashboard:
23
+ If the user did not pass a feature name in `$ARGUMENTS`:
42
24
 
43
- ```
44
- ╔════════════════════════════════════════════════════════════════╗
45
- ║ MORPH-SPEC PROJECT STATUS ║
46
- ╠════════════════════════════════════════════════════════════════╣
47
- ║ Project: {PROJECT_NAME} ║
48
- ║ Type: dotnet-nextjs ║
49
- ╠════════════════════════════════════════════════════════════════╣
50
- ║ FEATURES ║
51
- ╠════════════════════════════════════════════════════════════════╣
52
- ║ {feature-1} ║
53
- ║ Phase: implement | Tasks: 5/12 ║
54
- ║ Agents: ef-modeler hangfire-orchestrator ║
55
- ╠════════════════════════════════════════════════════════════════╣
56
- ║ {feature-2} ║
57
- ║ Phase: design | Tasks: 0/0 ║
58
- ║ Agents: None ║
59
- ╚════════════════════════════════════════════════════════════════╝
60
- ```
25
+ 1. Read `.morph/state.json`.
26
+ 2. Pick the most recently updated feature whose `status !== 'completed'`.
27
+ 3. If none exists, ask the user which feature to inspect via `AskUserQuestion`.
61
28
 
62
- **Simply run the command and show the result to the user.**
29
+ ## What you display
63
30
 
64
- ## Available Actions
31
+ The CLI prints a banner, the phase chain (`proposal → uiux → plan → implement → review`),
32
+ output completion (X/13 outputs), task progress, and next-step suggestions.
65
33
 
66
- Suggest next actions:
67
- - `/morph-proposal {feature}` - Create a new feature
68
- - `/morph-apply {feature}` - Implement a feature
34
+ After running the CLI, summarize:
35
+ - Current phase and which gate (if any) is open
36
+ - Outstanding outputs for the current phase
37
+ - Recommended next slash command (`/morph-proposal`, `/morph-apply`, or a gate approval)
69
38
 
70
39
  ---
71
40
 
@@ -69,7 +69,7 @@ site:learn.microsoft.com {error}
69
69
  **WebSearch usage example:**
70
70
 
71
71
  If the user asks about a SignalR error:
72
- 1. First: `morph-spec troubleshoot SignalR connection`
72
+ 1. First: search standards/codebase via Grep
73
73
  2. If not found: WebSearch with `site:github.com/dotnet/aspnetcore SignalR connection closed`
74
74
  3. Return formatted relevant links
75
75
 
@@ -103,7 +103,7 @@ When finding a solution, present in the following format:
103
103
  ✅ Solution:
104
104
  {code or steps to resolve}
105
105
 
106
- 📚 See full: morph-spec read {file}
106
+ 📚 See full: open {file}
107
107
 
108
108
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
109
109
  ```
@@ -0,0 +1,44 @@
1
+ # Sistema de Avaliação Graduada — morph-spec NLH
2
+
3
+ ## Como funciona
4
+
5
+ A skill `morph-eval` avalia o output de uma tarefa ou fase usando 4 dimensões.
6
+ Cada dimensão tem uma rubrica própria. O score final é ponderado.
7
+
8
+ | Dimensão | Peso | Arquivo |
9
+ |---------------------|------|----------------------|
10
+ | Arquitetura | 30% | architecture.md |
11
+ | Contratos | 25% | contracts.md |
12
+ | Qualidade de código | 25% | code-quality.md |
13
+ | Cobertura de testes | 20% | test-coverage.md |
14
+
15
+ ## Escala de scores
16
+
17
+ | Score | Ação |
18
+ |-------|----------------------------------------------------------------------|
19
+ | 8-10 | Aprovado — sem output no contexto, siga para próxima tarefa |
20
+ | 6-7.9 | Feedback priorizado — liste o que melhorar, modelo continua |
21
+ | < 6 | Escale para revisão humana — relatório detalhado obrigatório |
22
+
23
+ ## Como calcular o score composto
24
+
25
+ ```
26
+ score = (arquitetura × 0.30) + (contratos × 0.25) + (qualidade × 0.25) + (testes × 0.20)
27
+ ```
28
+
29
+ Arredonde para uma casa decimal.
30
+
31
+ ## Formato de output quando score < 8
32
+
33
+ Produza exatamente este bloco (não mais, não menos):
34
+
35
+ ```
36
+ Score: [X.X/10]
37
+ Arquitetura: X | Contratos: X | Qualidade: X | Testes: X
38
+ Issues (ordenados por impacto):
39
+ - [descrição do problema mais impactante]
40
+ - [próximo problema]
41
+ Ação: [feedback priorizado — continua | escalar para revisão humana]
42
+ ```
43
+
44
+ Quando score ≥ 8: nenhum output. O silêncio é o sinal de aprovação.
@@ -0,0 +1,46 @@
1
+ # Rubrica: Arquitetura (Peso 30%)
2
+
3
+ Avalia se a implementação segue o padrão arquitetural definido no spec.md e mandate.md.
4
+
5
+ ## Score 9-10 — Exemplar
6
+
7
+ - Segue o padrão de feature folder rigorosamente: cada feature tem seus próprios handlers, commands/queries, validators e endpoints.
8
+ - Zero dependências diretas entre features — comunicação cross-feature via interface, evento ou shared kernel explícito.
9
+ - Domain logic completamente isolado de infraestrutura: nenhum import de ORM, HTTP client ou I/O direto em objetos de domínio.
10
+ - Inversão de dependência aplicada onde a arquitetura exige.
11
+
12
+ ## Score 7-8 — Bom
13
+
14
+ - Segue o padrão com desvios menores e justificados.
15
+ - Dependências cross-feature existem mas são poucas, documentadas e via abstração.
16
+ - Pequenas impurezas de infraestrutura em domain que não afetam testabilidade.
17
+ - Estrutura de pastas correta, responsabilidades bem definidas.
18
+
19
+ ## Score 5-6 — Aceitável com ressalvas
20
+
21
+ - Estrutura de pastas correta mas responsabilidades começam a se misturar.
22
+ - Dependências cross-feature sem justificativa clara.
23
+ - Domain logic com acoplamento a infraestrutura que dificulta testes unitários.
24
+ - Padrão seguido na maior parte, mas com violações perceptíveis.
25
+
26
+ ## Score 3-4 — Problemático
27
+
28
+ - Desvios significativos do padrão definido no spec.md.
29
+ - Múltiplas violações de separação de responsabilidades.
30
+ - Feature não isolada — mudanças nela provavelmente afetam outras.
31
+ - Difícil de testar sem mocks de infraestrutura.
32
+
33
+ ## Score 1-2 — Reprovado
34
+
35
+ - Ignora completamente a arquitetura definida.
36
+ - Implementação plana sem estrutura de feature.
37
+ - Dependências circulares ou acoplamento total entre camadas.
38
+ - Requer refatoração antes de qualquer entrega.
39
+
40
+ ## Perguntas de avaliação
41
+
42
+ 1. Os arquivos estão nas pastas corretas da feature conforme o padrão do projeto?
43
+ 2. Há imports diretos entre features sem passar por abstração?
44
+ 3. Objetos de domínio importam de infraestrutura (ORM, HTTP, I/O)?
45
+ 4. Se remover esta feature, alguma outra quebra?
46
+ 5. O padrão arquitetural descrito no spec.md foi seguido?
@@ -0,0 +1,50 @@
1
+ # Rubrica: Qualidade de Código (Peso 25%)
2
+
3
+ Avalia naming, ausência de code smells e aderência aos padrões do stack do projeto.
4
+
5
+ ## Score 9-10 — Exemplar
6
+
7
+ - Nomes de variáveis, funções e classes comunicam intenção sem precisar de comentários.
8
+ - Funções com responsabilidade única: cada função faz uma coisa e tem no máximo 20-25 linhas.
9
+ - Classes com responsabilidade única: coesas, sem mistura de concerns.
10
+ - Zero duplicação óbvia — lógica repetida foi extraída.
11
+ - Segue os padrões do stack conforme os standards do projeto (ex: Result pattern para .NET, hooks pattern para React).
12
+ - Sem "dead code" — sem variáveis não usadas, sem blocos comentados, sem imports desnecessários.
13
+
14
+ ## Score 7-8 — Bom
15
+
16
+ - Nomes claros na maioria dos casos, com raras abreviações não óbvias.
17
+ - Funções e classes bem dimensionadas com poucos casos acima do ideal.
18
+ - Duplicação mínima e pontual.
19
+ - Segue padrões do stack com desvios isolados e justificáveis.
20
+ - Sem dead code significativo.
21
+
22
+ ## Score 5-6 — Aceitável com ressalvas
23
+
24
+ - Alguns nomes genéricos ou pouco descritivos (`data`, `result`, `temp`).
25
+ - Funções longas (>30 linhas) ou com múltiplas responsabilidades.
26
+ - Duplicação perceptível que aumenta custo de manutenção.
27
+ - Desvios dos padrões do stack sem justificativa.
28
+ - Dead code pontual.
29
+
30
+ ## Score 3-4 — Problemático
31
+
32
+ - Nomes que exigem contexto externo para entender o que representam.
33
+ - Funções com >50 linhas ou classes com >200 linhas sem coesão.
34
+ - Duplicação significativa: mesma lógica em múltiplos lugares.
35
+ - Não segue os padrões do stack — código parece escrito para outro contexto.
36
+
37
+ ## Score 1-2 — Reprovado
38
+
39
+ - Nomes arbitrários ou gerados automaticamente sem semântica.
40
+ - Funções/classes sem separação de responsabilidades — "god objects".
41
+ - Duplicação massiva ou copy-paste evidente.
42
+ - Completamente fora dos padrões do stack — exige reescrita.
43
+
44
+ ## Perguntas de avaliação
45
+
46
+ 1. É possível entender o que uma função faz apenas pelo seu nome e assinatura?
47
+ 2. Alguma função tem mais de 30 linhas ou mais de uma responsabilidade clara?
48
+ 3. Há lógica duplicada que poderia ser extraída?
49
+ 4. O código segue os padrões definidos nos standards do projeto?
50
+ 5. Há variáveis não usadas, imports desnecessários ou blocos comentados?
@@ -0,0 +1,47 @@
1
+ # Rubrica: Contratos (Peso 25%)
2
+
3
+ Avalia a qualidade dos tipos, validações, tratamento de erros e naming dos contratos públicos.
4
+
5
+ ## Score 9-10 — Exemplar
6
+
7
+ - Todos os tipos explícitos — zero `any`, zero `object` genérico onde um tipo específico cabe.
8
+ - Campos opcionais (`?`) usados apenas onde o dado é genuinamente opcional; campos obrigatórios sem nullable desnecessário.
9
+ - Validação de input declarada em todos os endpoints/handlers (FluentValidation, Zod, ou equivalente do stack).
10
+ - Error handling explícito via Result pattern, discriminated union ou equivalente — sem exceptions para fluxo de negócio.
11
+ - Nomes seguem a convenção do projeto: PascalCase para tipos, camelCase para propriedades, verbos para comandos.
12
+
13
+ ## Score 7-8 — Bom
14
+
15
+ - Tipos bem definidos com pouquíssimos `any` ou genéricos desnecessários — e onde existem, são justificados.
16
+ - Validação presente na maioria dos endpoints, com poucos casos sem cobertura.
17
+ - Error handling consistente com o padrão do projeto, com desvios pontuais.
18
+ - Nomes claros e consistentes, com raras exceções.
19
+
20
+ ## Score 5-6 — Aceitável com ressalvas
21
+
22
+ - Uso de `any` ou tipos genéricos em pontos visíveis da API.
23
+ - Validação parcial — alguns endpoints sem validação de input.
24
+ - Mix de estratégias de error handling (exceptions e Result no mesmo módulo).
25
+ - Nomes inconsistentes em algumas partes.
26
+
27
+ ## Score 3-4 — Problemático
28
+
29
+ - Tipos amplamente genéricos ou ausentes onde deveriam ser específicos.
30
+ - Validação de input ausente em múltiplos pontos de entrada.
31
+ - Error handling imprevisível — sem padrão claro, exceptions misturadas com retornos especiais.
32
+ - Nomes que não comunicam intenção.
33
+
34
+ ## Score 1-2 — Reprovado
35
+
36
+ - Contratos sem tipos definidos ou com `any` generalizado.
37
+ - Nenhuma validação de input.
38
+ - Sem tratamento de erro — falhas em runtime sem diagnóstico útil.
39
+ - Naming arbitrário ou genérico (`data`, `obj`, `result` sem qualificador).
40
+
41
+ ## Perguntas de avaliação
42
+
43
+ 1. Há `any` ou tipos genéricos onde um tipo específico seria possível?
44
+ 2. Todos os endpoints/handlers têm validação de input declarada?
45
+ 3. O tratamento de erros segue o padrão do projeto (Result, exceções, etc.)?
46
+ 4. Os nomes dos tipos e propriedades comunicam claramente o que representam?
47
+ 5. Campos opcionais fazem sentido semântico, ou são opcionais por comodidade?
@@ -0,0 +1,50 @@
1
+ # Rubrica: Cobertura de Testes (Peso 20%)
2
+
3
+ Avalia se os testes cobrem os comportamentos esperados, são isolados e têm nomes úteis.
4
+
5
+ ## Score 9-10 — Exemplar
6
+
7
+ - Happy path coberto para todos os casos de uso relevantes.
8
+ - Edge cases críticos cobertos: null/undefined, string vazia, boundary values, coleção vazia.
9
+ - Casos de erro cobertos: o que acontece quando a operação falha, quando a dependência retorna erro.
10
+ - Testes completamente isolados — cada teste pode rodar sozinho em qualquer ordem.
11
+ - Nomes de teste descrevem o comportamento esperado: `"deve retornar erro quando email já existe"` (não `"testEmail"`).
12
+ - Testes testam comportamento, não implementação — refatorar sem mudar comportamento não quebra testes.
13
+
14
+ ## Score 7-8 — Bom
15
+
16
+ - Happy path coberto em todos os casos relevantes.
17
+ - Maioria dos edge cases cobertos, com poucos gaps identificáveis.
18
+ - Casos de erro cobertos para os fluxos principais.
19
+ - Isolamento correto na maioria dos testes.
20
+ - Nomes descritivos com raras exceções genéricas.
21
+
22
+ ## Score 5-6 — Aceitável com ressalvas
23
+
24
+ - Happy path coberto, mas edge cases com cobertura parcial.
25
+ - Casos de erro não cobertos sistematicamente — só os mais óbvios.
26
+ - Alguns testes com dependências entre si (ordem importa).
27
+ - Nomes misturados: alguns descritivos, outros genéricos.
28
+ - Testes que testam implementação (dependentes de detalhes internos).
29
+
30
+ ## Score 3-4 — Problemático
31
+
32
+ - Apenas happy path coberto, sem edge cases.
33
+ - Testes interdependentes ou com estado compartilhado.
34
+ - Nomes que não descrevem o comportamento testado.
35
+ - Cobertura presente mas superficial — testes passam mas não protegem contra regressão.
36
+
37
+ ## Score 1-2 — Reprovado
38
+
39
+ - Ausência de testes ou testes que não verificam nada significativo.
40
+ - Testes que sempre passam independente do comportamento (sem asserts reais).
41
+ - Sem cobertura de qualquer edge case ou caminho de erro.
42
+ - Nomes completamente genéricos ou numerados.
43
+
44
+ ## Perguntas de avaliação
45
+
46
+ 1. O happy path está coberto para todos os casos de uso da tarefa?
47
+ 2. Os edge cases críticos (null, vazio, boundary) estão cobertos?
48
+ 3. O que acontece quando uma dependência falha — isso está testado?
49
+ 4. Os testes podem rodar em qualquer ordem sem interferir entre si?
50
+ 5. Os nomes dos testes descrevem o comportamento esperado sem precisar ler o corpo?
@@ -0,0 +1,42 @@
1
+ name: dotnet-crud
2
+ description: CRUD operations for product catalog in .NET 10 VSA application with Neon PostgreSQL
3
+ stack: dotnet-neon
4
+
5
+ request: |
6
+ Add CRUD operations for a product catalog to the .NET 10 application.
7
+ Products have: name, description, price (decimal), category, imageUrl, isActive.
8
+ Implement using Vertical Slice Architecture with IHandler<TRequest, TResponse>,
9
+ Result<T> railway-oriented error handling (no exceptions in handlers),
10
+ sealed records for DTOs, and FluentValidation via Scrutor decorators.
11
+ Use IApiEndpoint auto-discovery for Minimal API route registration.
12
+ Include pagination for the list endpoint with TanStack Query-compatible
13
+ response format, search by name/category, and soft-delete (isActive flag).
14
+ Database is Neon PostgreSQL via EF Core + Npgsql.
15
+ API docs via Scalar UI.
16
+
17
+ phases_to_eval:
18
+ - proposal
19
+ - spec
20
+ - tasks
21
+
22
+ skip_implementation: true
23
+
24
+ dimensions:
25
+ proposal:
26
+ completeness: "Covers all CRUD operations plus pagination, search, soft-delete, Scalar UI docs"
27
+ scope: "Product catalog only — no cart, orders, or user management"
28
+ spec:
29
+ specificity: "API contracts with sealed record DTOs, Result<T> return types, FluentValidation rules, specific HTTP status codes"
30
+ data_model: "Product entity with all fields, EF Core configuration, Neon PostgreSQL constraints"
31
+ architecture: "VSA feature folders, IHandler pattern, Scrutor pipeline, IApiEndpoint discovery, Repository/UnitOfWork"
32
+ completeness: "All CRUD endpoints, pagination params (page/pageSize), search filters, error responses via Result<T>"
33
+ tasks:
34
+ granularity: "Each task 15-60 minutes, no mega-tasks"
35
+ coverage: "All spec FRs mapped to at least one task"
36
+ ordering: "Entity/migration first, then handlers, then validation decorators, then API endpoints, then tests"
37
+ cross_phase:
38
+ fr_coverage_threshold: 0.95
39
+ mandate_completeness: 0.9
40
+
41
+ threshold: 8.0
42
+ max_iterations: 3