@polymorphism-tech/morph-spec 4.22.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.
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,6 +1,6 @@
1
1
  {
2
2
  "name": "morph-spec",
3
- "version": "4.22.0",
3
+ "version": "4.22.1",
4
4
  "displayName": "MORPH-SPEC Framework",
5
5
  "description": "Spec-driven development with 38 agents and 8-phase workflow for .NET/Blazor/Next.js/Azure",
6
6
  "publisher": "polymorphism-tech",
@@ -196,4 +196,4 @@ These files are never edited directly. Use CLI commands or `morph-spec update` i
196
196
 
197
197
  ---
198
198
 
199
- *morph-spec v4.22.0 by Polymorphism Tech*
199
+ *morph-spec v4.22.1 by Polymorphism Tech*
@@ -197,4 +197,4 @@ morph-spec doctor
197
197
 
198
198
  ---
199
199
 
200
- *morph-spec v4.22.0 by Polymorphism Tech*
200
+ *morph-spec v4.22.1 by Polymorphism Tech*
@@ -1,38 +1,55 @@
1
- # MORPH-SPEC Runtime Instructions
2
-
3
- > by Polymorphism Tech — Spec-driven development framework
4
-
5
- @.morph/context/README.md
6
-
7
- ## Critical Rules
8
-
9
- **NEVER:**
10
- - Skip to code without a specification
11
- - Implement without design approval
12
- - Ignore standards in `.morph/framework/standards/`
13
- - Generate code without defined contracts
14
- - List questions as plain text — always use the `AskUserQuestion` tool
15
-
16
- **ALWAYS:**
17
- - Follow the mandatory phases
18
- - Generate outputs in `.morph/features/{feature}/`
19
- - Document decisions in `decisions.md`
20
- - Use `AskUserQuestion` tool whenever asking the user anything (1-4 questions per call)
21
- - Read spec.md FR sections before implementing each task
22
- - Reference FR IDs in task descriptions and commit messages
23
-
24
- ## Quick Reference
25
-
26
- | Command | Purpose |
27
- |---------|---------|
28
- | `/morph-proposal {feature}` | Full spec pipeline (pauses for approval) |
29
- | `/morph-apply {feature}` | Implement feature |
30
- | `/morph-status` | Status dashboard |
31
- | `/morph-preflight` | Pre-deploy validation |
32
- | `morph-spec context refresh` | Scan architecture & update context |
33
-
34
- ## Agents
35
-
36
- MORPH agents (tiers 1-4) are available as native subagents in `.claude/agents/`.
37
-
38
- *MORPH-SPEC by Polymorphism Tech*
1
+ # MORPH-SPEC Runtime Instructions
2
+
3
+ > by Polymorphism Tech — Spec-driven development harness for Claude Code
4
+
5
+ ## Como começar cada sessão
6
+
7
+ 1. Leia `.morph/framework/MORPH.md` — o charter NLH com papéis, fases, gates e skills.
8
+ 2. Leia `.morph/state.json` — identifique a feature `in_progress` e a fase atual.
9
+ 3. Assuma o papel correspondente (Orchestrator/Specialist/Evaluator) e continue o trabalho. Não aguarde instrução do usuário se há trabalho pendente entre gates.
10
+
11
+ Se não houver feature ativa, pergunte ao usuário qual feature trabalhar.
12
+
13
+ ## Regras críticas
14
+
15
+ **NUNCA:**
16
+ - Pular para código sem proposal aprovado (Gate 1) e plano aprovado (Gate 2).
17
+ - Modificar `spec.md`, `mandate.md`, `tasks.md` depois do Gate 2 — eles estão congelados.
18
+ - Listar perguntas em texto simples — sempre use a tool `AskUserQuestion` (1-4 perguntas por chamada).
19
+ - Usar `Guid.NewGuid()`, classes não-sealed sem justificativa, exceptions como fluxo de controle, Repository pattern.
20
+
21
+ **SEMPRE:**
22
+ - Auto-advance entre tarefas durante a fase implement — não pause sem ambiguidade bloqueante.
23
+ - Apresentar gates com o template fixo definido em MORPH.md / morph-plan.
24
+ - Registrar decisões não triviais em `decisions.md`.
25
+ - Aplicar `morph-eval` após cada tarefa; silêncio em score ≥ 8 é o sinal correto.
26
+
27
+ ## Slash commands
28
+
29
+ | Comando | Propósito |
30
+ |---------|-----------|
31
+ | `/morph-proposal {feature}` | Entendimento de negócio + plano (Gates 1 e 2) |
32
+ | `/morph-apply {feature}` | Execução autônoma + review (Gate 3) |
33
+ | `/morph-status [feature]` | Status da feature ativa (ou a especificada) |
34
+ | `/morph-archive {feature}` | Arquiva feature concluída (após Gate 3) |
35
+ | `/morph-preflight` | Validação pré-deploy (specs, contratos, testes, infra) |
36
+ | `/morph-troubleshoot [erro]` | Diagnóstico de erros .NET/Next.js com root-cause analysis |
37
+
38
+ ## Skills core (em `.claude/skills/`)
39
+
40
+ | Skill | Quando usar |
41
+ |-------|-------------|
42
+ | `morph-brainstorming` | Entender negócio, escanear stack, produzir proposal.md |
43
+ | `morph-stack-scan` | Detectar desvios de stack em projeto brownfield |
44
+ | `morph-plan` | Produzir spec.md + mandate.md + tasks.md |
45
+ | `morph-implement` | Executar uma tarefa com auto-advance entre tasks |
46
+ | `morph-eval` | Aplicar rubricas e produzir score 0-10 |
47
+ | `morph-review` | Produzir review-report.md (Gate 3) |
48
+ | `morph-standards` | Localizar standard sob demanda |
49
+
50
+ ## Personas (em `.claude/agents/`)
51
+
52
+ 7 personas de domínio dispatchávels via Agent tool:
53
+ `dotnet-senior`, `ef-modeler`, `maf-expert`, `nextjs-expert`, `ui-designer`, `infra-engineer`, `evaluator`.
54
+
55
+ *MORPH-SPEC v5 by Polymorphism Tech*
@@ -0,0 +1,244 @@
1
+ # MORPH.md — Natural Language Harness
2
+
3
+ > Leia este documento uma vez no início de cada sessão.
4
+ > Ele define papéis, fases, outputs, standards, gates e skills do morph-spec.
5
+ > Não procure instruções em hooks — o harness vive aqui.
6
+ >
7
+ > **Depois de ler:** leia `.morph/state.json` para identificar a feature ativa e a fase atual. Se o arquivo existir e houver uma feature `in_progress`, assuma o papel correspondente à fase e continue o trabalho sem esperar instrução. Se não houver feature ativa, pergunte ao usuário qual feature trabalhar ou se é uma feature nova.
8
+
9
+ ---
10
+
11
+ ## 0. Contrato de Autonomia
12
+
13
+ Entre gates, você opera com autonomia total. O dev valida. Você executa.
14
+
15
+ | Situação | O que você faz |
16
+ |-----------------------------------------------------------------------|-------------------------------------------------------------------------------|
17
+ | Gate 1 / 2 / 3 aprovado | Avançar para próxima fase imediatamente |
18
+ | Tarefa completada na fase implement | Iniciar a próxima tarefa do tasks.md sem aguardar instrução |
19
+ | Ambiguidade de escopo coberta pelo mandate | Resolver conservadoramente e registrar em decisions.md |
20
+ | Ambiguidade bloqueante (requisito ausente ou contraditório) | UMA pergunta via AskUserQuestion |
21
+ | Sub-agent com auto-score ≥ 7 | Integrar ao recap.md e continuar |
22
+ | Sub-agent com auto-score < 7 | Aplicar morph-eval antes de aceitar |
23
+ | Build/typecheck quebra | Corrigir antes de marcar tarefa como done |
24
+ | Score morph-eval ≥ 8 | Silêncio (aprovação implícita), próxima tarefa |
25
+ | Score morph-eval entre 6 e 7.9 | Feedback priorizado, continuar |
26
+ | Score morph-eval < 6 | Escalar ao usuário via review-report |
27
+
28
+ **Regra de ouro:** Dúvida que não bloqueia o progresso → resolver e registrar. Dúvida que bloqueia → uma pergunta, máximo.
29
+
30
+ ---
31
+
32
+ ## Stack baked-in
33
+
34
+ O harness conhece o stack por padrão. Não pergunte sobre tecnologia a menos que haja ambiguidade real.
35
+
36
+ | Camada | Stack |
37
+ |------------|--------------------------------------------------------------------------------------------------|
38
+ | Backend | .NET 10 + VSA (feature-folder: handler + validator + endpoint + errors + tests) |
39
+ | ORM/DB | EF Core + Neon (Postgres) |
40
+ | IDs | `Guid.CreateVersion7()` (nunca `Guid.NewGuid()`) |
41
+ | Classes | `sealed` por padrão |
42
+ | Erros | Result pattern com `result.Match()` (nunca exceptions como fluxo) |
43
+ | IA | Microsoft Agent Framework (MAF) — quando houver agentes |
44
+ | Frontend | Next.js App Router + Tailwind + Framer Motion + Shadcn |
45
+ | Jobs async | Hangfire — apenas quando há razão real |
46
+
47
+ Padrões proibidos automaticamente injetados no mandate:
48
+ - `Guid.NewGuid()` → `Guid.CreateVersion7()`
49
+ - Classes não-sealed sem justificativa
50
+ - Exceptions como fluxo de controle
51
+ - Repository pattern / `IRepository<T>` (VSA usa handlers diretos no DbContext)
52
+
53
+ ---
54
+
55
+ ## 1. Papéis
56
+
57
+ O morph-spec opera com três papéis que você assume conforme o contexto da tarefa:
58
+
59
+ **Orchestrator** — ativo na abertura de uma feature e nas transições de fase.
60
+ Responsabilidades: ler o mandato, entender o escopo, propor o plano de ataque, identificar dependências entre tarefas, garantir que gates sejam respeitados antes de avançar.
61
+ Anti-padrão: o Orchestrator não escreve código. Se você está no papel de Orchestrator e percebe que começou a implementar algo, pare — você transitou de papel sem intenção, e o plano provavelmente ainda não está fechado.
62
+
63
+ **Specialist** — ativo durante a fase de implementação.
64
+ Responsabilidades: executar tarefas do tasks.md em ordem, consultar standards relevantes antes de cada tarefa, registrar decisões e desvios no decisions.md, manter o recap.md atualizado ao final de cada tarefa.
65
+ Anti-padrão: o Specialist não cria novas tarefas. Descobertas de escopo durante a implementação vão para o decisions.md com flag "escopo expandido" — o Orchestrator avalia se o tasks.md precisa ser atualizado.
66
+
67
+ **Evaluator** — ativo após uma tarefa ou fase ser concluída.
68
+ Responsabilidades: aplicar as rubricas em `framework/evals/rubrics/`, produzir score 0-10, emitir feedback priorizado quando score < 8, escalar para revisão humana quando score < 6.
69
+ Anti-padrão: o Evaluator não reescreve o código que avaliou. Se o score está abaixo de 6, o relatório vai para o humano — não para uma segunda rodada de tentativa automática.
70
+
71
+ Os papéis não são exclusivos — numa sessão longa você transita entre Orchestrator e Specialist conforme as tarefas avançam. A transição deve ser explícita: antes de mudar de papel, conclua o que estava fazendo ou registre o estado corrente no recap.md.
72
+
73
+ ---
74
+
75
+ ## 2. Fases
76
+
77
+ O fluxo padrão de uma feature tem quatro fases. Cada fase tem uma pasta dedicada em `.morph/features/{feature}/`.
78
+
79
+ | Fase | Pasta | Gate | O que termina a fase |
80
+ |-------------|----------------|-------------------|-----------------------------------------------|
81
+ | proposal | `0-proposal/` | Aprovação humana | `proposal.md` aprovado e commitado |
82
+ | plan | `2-plan/` | Aprovação humana | `spec.md`, `mandate.md`, `tasks.md` aprovados |
83
+ | implement | `3-implement/` | Nenhum | Todas as tarefas do tasks.md com status Done |
84
+ | review | `4-review/` | Aprovação humana | `review-report.md` aprovado e commitado |
85
+
86
+ A fase `1-ui/` (design system, mockups, flows) é opcional — aplica-se apenas a features com componentes de UI novos e deve ser explicitamente requisitada pelo usuário.
87
+
88
+ Não avance de fase sem o gate correspondente ter sido confirmado.
89
+
90
+ ---
91
+
92
+ ## 3. Contratos de Output
93
+
94
+ Cada fase produz artefatos específicos que devem ser salvos nos caminhos exatos abaixo.
95
+ Não invente caminhos alternativos.
96
+
97
+ ### Proposal (`0-proposal/`)
98
+
99
+ - `proposal.md` — descrição da feature, problema que resolve, escopo, critérios de aceite, riscos. Um bom proposal.md tem no máximo 2 páginas: se está crescendo além disso, o escopo provavelmente precisa ser cortado antes de avançar.
100
+
101
+ ### Plan (`2-plan/`)
102
+
103
+ - `spec.md` — especificação técnica detalhada: arquitetura, componentes, integrações, fluxos de dados, edge cases identificados. Um bom spec.md permite que qualquer desenvolvedor comece a implementar sem fazer perguntas básicas. Um spec.md fraco lista tecnologias mas não explica como os componentes se conectam.
104
+
105
+ - `mandate.md` — contrato de implementação: stack exata, standards obrigatórios (com links), patterns explicitamente proibidos, checklist de done com critérios verificáveis. O mandate.md é lido no início de cada tarefa de implementação — deve ser específico o suficiente para resolver ambiguidades sem consultar o Orchestrator.
106
+
107
+ - `tasks.md` — lista ordenada de tarefas com IDs únicos (T1, T2...), dependências explícitas entre tarefas, estimativa de esforço, critério de done verificável por tarefa. Cada entrada no recap.md deve referenciar um ID do tasks.md.
108
+
109
+ - `decisions.md` — log de decisões técnicas: qual era a alternativa, por que foi descartada, quem decidiu. Criado quando surgir a primeira decisão não trivial. Não é obrigatório — só existe se houver decisões que precisam de rastreabilidade.
110
+
111
+ ### Implement (`3-implement/`)
112
+
113
+ - `recap.md` — atualizado ao fim de cada tarefa: ID da tarefa, o que foi feito, arquivos modificados, problemas encontrados e como foram resolvidos, standard consultado. Se não há nada a registrar em alguma dessas categorias, escreva "nenhum" — um recap vazio é pior do que um recap mínimo.
114
+
115
+ ### Review (`4-review/`)
116
+
117
+ - `review-report.md` — relatório de revisão: scores por dimensão (arquitetura, contratos, qualidade, cobertura), feedback priorizado (bloqueantes primeiro, melhorias depois), aprovação ou rejeição com critérios explícitos. Um review-report.md que só diz "aprovado" sem scores não satisfaz o gate.
118
+
119
+ ### Traces (`.morph/traces/`)
120
+
121
+ Cada sessão de trabalho produz um trace JSON em `.morph/traces/YYYY-MM-DD-{feature}-{phase}.json`.
122
+ O trace registra tarefas, scores de eval, standards consultados e sub-agents despachados.
123
+ O formato canônico está em `framework/evals/trace-schema.md` (criado na issue #17).
124
+ Traces são ignorados pelo git (`.gitignore`) e servem para análise do harness — não fazem parte da entrega da feature.
125
+
126
+ ---
127
+
128
+ ## 4. Como consultar Standards
129
+
130
+ Standards nunca devem ser carregados todos de uma vez. Consulte sob demanda, por tarefa.
131
+
132
+ O índice de standards fica em `framework/standards/STANDARDS.json`. Cada entrada tem `id`, `name`, `path`, `category`, `tags`.
133
+
134
+ **Fluxo de consulta:**
135
+
136
+ 1. Antes de iniciar uma tarefa, identifique de 1 a 3 standards relevantes pelo `id` ou `tags`.
137
+ 2. Leia apenas o arquivo `.md` daquele standard específico — o path está no campo `path` do JSON.
138
+ 3. Aplique o standard durante a implementação. Se precisar de contexto adicional, leia mais um standard.
139
+ 4. Registre no recap.md qual standard foi consultado e como foi aplicado.
140
+
141
+ **Nunca** carregue todos os standards no início da sessão. Isso custa tokens sem benefício — você não sabe quais serão relevantes antes de começar.
142
+
143
+ **Como identificar o standard certo:** filtre por `category` primeiro (ex: "architecture", "contracts", "testing"), depois por `tags` (ex: "dotnet", "nextjs", "blazor"). Se dois standards parecem relevantes e há conflito, adote o mais específico ao stack do projeto — e registre o conflito no decisions.md.
144
+
145
+ O agente responsável por um domínio está listado em `framework/agents.json`. Consulte o campo `persona` do agente para entender o ponto de vista que você deve adotar ao aplicar os standards daquele domínio. A persona define o nível de rigor esperado: um agente de arquitetura tem critérios mais rígidos do que um agente de suporte mensal.
146
+
147
+ **Quando não há standard adequado:** registre no decisions.md que nenhum standard cobre o caso, descreva o critério que você adotou e sinalize para revisão futura. Não invente um standard — padrões não documentados são dívida técnica disfarçada.
148
+
149
+ ---
150
+
151
+ ## 5. Gates de Aprovação
152
+
153
+ Gates são pontos obrigatórios de pausa. Não avance sem confirmação humana explícita.
154
+
155
+ **Gate 1 — Proposta aprovada**
156
+ Condição: o usuário leu e aprovou o `proposal.md`.
157
+ Como ativar: apresente o proposal, aguarde resposta explícita ("aprovado", "pode avançar", "lgtm" ou equivalente).
158
+ Nunca assuma aprovação silenciosa. Se o usuário responder com uma pergunta, responda a pergunta e reapresente o gate.
159
+ Sinal de gate aberto: resposta que confirma que pode avançar para o planejamento.
160
+
161
+ **Gate 2 — Plano aprovado**
162
+ Condição: o usuário leu e aprovou `spec.md`, `mandate.md` e `tasks.md`.
163
+ Como ativar: use o template de apresentação do Gate 2 em `framework/skills/core/morph-plan/SKILL.md` passo 5. Apresente o gate completo — spec em uma frase, mandate resumido, tasks com estimativa, decisões de arquitetura se houver.
164
+ Se o usuário pedir ajustes, aplique e reapresente o gate completo antes de avançar.
165
+ Sinal de gate aberto: aprovação explícita de todos os três artefatos, ou "pode implementar".
166
+ Atenção: aprovação parcial ("o spec está bom") não abre o gate — todos os três precisam ser confirmados.
167
+
168
+ **Gate 3 — Review aprovado**
169
+ Condição: o usuário leu e aprovou o `review-report.md`.
170
+ Como ativar: apresente o relatório com scores e feedback. Se houver itens bloqueantes (score < 6), não apresente o gate — corrija primeiro, reavalite, então apresente o relatório final.
171
+ Sinal de gate aberto: aprovação do review-report.md com ciência dos scores.
172
+
173
+ **Comportamento padrão fora de gate:** trabalhe com autonomia total. Gates só existem nestes três pontos. Não pause para confirmação no meio de implementação a menos que encontre uma ambiguidade de escopo que o mandate não cobre — nesse caso, registre a ambiguidade no decisions.md, resolva da forma mais conservadora possível, e sinalize na entrega da tarefa.
174
+
175
+ ---
176
+
177
+ ## 6. Sub-agents
178
+
179
+ Despache um sub-agent quando a tarefa atende a pelo menos um dos critérios abaixo:
180
+
181
+ - Duração estimada > 5 minutos
182
+ - Mais de 3 tentativas de correção falharam no mesmo problema
183
+ - Análise de arquivo com mais de 500 linhas
184
+ - Tarefa repetitiva com mais de 3 instâncias do mesmo padrão
185
+ - Risco de "contaminar" o contexto principal com detalhes de baixo nível irrelevantes para o fluxo
186
+
187
+ **O que passar ao sub-agent:**
188
+ - Especificação da tarefa (do tasks.md)
189
+ - Path do standard relevante (apenas um)
190
+ - Lista de arquivos que ele precisa ler ou modificar
191
+ - Critério de done claro e verificável
192
+
193
+ **O que NÃO passar ao sub-agent:**
194
+ - Histórico da conversa principal
195
+ - Contexto de outras tarefas não relacionadas
196
+ - Outputs de ferramentas não pertinentes à tarefa
197
+
198
+ **O que receber de volta:**
199
+ - O que foi feito (2-3 frases)
200
+ - Arquivos modificados (lista)
201
+ - Problemas encontrados e como foram resolvidos
202
+ - Auto-score 0-10 com justificativa em uma linha
203
+
204
+ O sub-agent deve ser autossuficiente com o que você passou. Se precisar de mais contexto para começar, a tarefa não estava bem especificada — refine antes de despachar.
205
+
206
+ **Quando NÃO despachar sub-agent:**
207
+ - Tarefas curtas onde o overhead de contexto do dispatch custa mais do que a economia de contexto principal.
208
+ - Quando o feedback do sub-agent precisaria ser discutido em tempo real — dispatch é assíncrono.
209
+ - Quando a tarefa envolve mudanças de arquitetura que o Orchestrator precisa validar antes de executar.
210
+
211
+ **Após receber o retorno do sub-agent:** leia o auto-score. Se for < 7, aplique a skill morph-eval no resultado antes de aceitar. Se for >= 7 e sem itens bloqueantes, integre o resultado ao recap.md e siga para a próxima tarefa.
212
+
213
+ O padrão de dispatch e o template de prompt para sub-agents estão detalhados em `framework/skills/core/morph-implement/SKILL.md`.
214
+
215
+ ---
216
+
217
+ ## 7. Skills disponíveis
218
+
219
+ Skills são documentos de instrução que você invoca sob demanda. Eles ficam em `framework/skills/core/`.
220
+ Não invoque uma skill fora do momento indicado.
221
+
222
+ | Skill | Path | Quando invocar |
223
+ |-----------------------|----------------------------------------------------|-------------------------------------------------------------|
224
+ | morph-brainstorming | `framework/skills/core/morph-brainstorming/SKILL.md` | Ao receber um novo request de feature (antes de morph-plan) |
225
+ | morph-stack-scan | `framework/skills/core/morph-stack-scan/SKILL.md` | Em projetos existentes, para detectar desvios de stack |
226
+ | morph-plan | `framework/skills/core/morph-plan/SKILL.md` | Ao iniciar a fase de planejamento |
227
+ | morph-implement | `framework/skills/core/morph-implement/SKILL.md` | Ao iniciar cada tarefa de implementação |
228
+ | morph-eval | `framework/skills/core/morph-eval/SKILL.md` | Após concluir uma tarefa ou fase |
229
+ | morph-review | `framework/skills/core/morph-review/SKILL.md` | Ao iniciar a fase de revisão |
230
+ | morph-standards | `framework/skills/core/morph-standards/SKILL.md` | Quando precisar localizar ou aplicar um standard específico |
231
+
232
+ Cada skill contém instruções de execução passo a passo. Leia, siga, não desvie sem justificativa registrada no recap.md.
233
+
234
+ Apenas o conjunto `framework/skills/core/` é instalado. As legacy trees `level-0-meta/` e `level-1-workflows/` foram removidas em v5 — o conteúdo útil foi consolidado em core.
235
+
236
+ Nenhuma skill deve ser invocada proativamente por um hook ou script automático. Skills são instrumentos do modelo — você decide quando a situação pede o nível de rigor que a skill fornece.
237
+
238
+ ---
239
+
240
+ > **Nota de autoria:** Este documento deve ser revisado e mantido pelo time de engenharia.
241
+ > Alterações de comportamento do harness exigem atualização aqui, não em hooks ou scripts.
242
+ > Versão inicial criada em 2026-04-24. Próxima revisão recomendada após o ciclo completo com NLH.
243
+ >
244
+ > Para histórico de decisões sobre este documento, consulte os commits do arquivo e o `harness-token-audit.md` na raiz do repositório.