@polymorphism-tech/morph-spec 4.9.0 → 4.10.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 (124) hide show
  1. package/README.md +2 -2
  2. package/bin/morph-spec.js +30 -0
  3. package/bin/task-manager.js +34 -22
  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 +99 -98
  8. package/framework/agents.json +37 -7
  9. package/framework/commands/commit.md +166 -0
  10. package/framework/commands/morph-apply.md +13 -2
  11. package/framework/commands/morph-archive.md +8 -2
  12. package/framework/commands/morph-infra.md +6 -0
  13. package/framework/commands/morph-preflight.md +6 -0
  14. package/framework/commands/morph-proposal.md +56 -7
  15. package/framework/commands/morph-status.md +6 -0
  16. package/framework/commands/morph-troubleshoot.md +6 -0
  17. package/framework/hooks/claude-code/notification/approval-reminder.js +3 -2
  18. package/framework/hooks/claude-code/post-tool-use/dispatch.js +154 -31
  19. package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +7 -84
  20. package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +8 -17
  21. package/framework/hooks/claude-code/pre-compact/save-morph-context.js +16 -3
  22. package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +4 -3
  23. package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +3 -2
  24. package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +60 -0
  25. package/framework/hooks/claude-code/session-start/inject-morph-context.js +55 -2
  26. package/framework/hooks/claude-code/session-start/post-compact-restore.js +41 -0
  27. package/framework/hooks/claude-code/stop/validate-completion.js +2 -15
  28. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +23 -5
  29. package/framework/hooks/shared/compact-restore.js +100 -0
  30. package/framework/hooks/shared/dispatch-helpers.js +116 -0
  31. package/framework/hooks/shared/phase-utils.js +9 -5
  32. package/framework/hooks/shared/state-reader.js +27 -3
  33. package/framework/phases.json +30 -7
  34. package/framework/rules/morph-workflow.md +88 -86
  35. package/framework/skills/level-0-meta/mcp-registry.json +86 -51
  36. package/framework/skills/level-0-meta/{brainstorming → morph-brainstorming}/SKILL.md +13 -16
  37. package/framework/skills/level-0-meta/{code-review → morph-code-review}/SKILL.md +1 -1
  38. package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/SKILL.md +2 -2
  39. package/framework/skills/level-0-meta/{frontend-review → morph-frontend-review}/SKILL.md +5 -5
  40. package/framework/skills/level-0-meta/morph-init/SKILL.md +72 -7
  41. package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/SKILL.md +9 -9
  42. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +1 -1
  43. package/framework/skills/level-0-meta/{terminal-title → morph-terminal-title}/SKILL.md +1 -1
  44. package/framework/skills/level-0-meta/{tool-usage-guide → morph-tool-usage-guide}/SKILL.md +2 -3
  45. package/framework/skills/level-0-meta/{tool-usage-guide → morph-tool-usage-guide}/references/tools-per-phase.md +1 -2
  46. package/framework/skills/level-0-meta/{verification-before-completion → morph-verification-before-completion}/SKILL.md +1 -1
  47. package/framework/skills/level-0-meta/{verification-before-completion → morph-verification-before-completion}/scripts/check-phase-outputs.mjs +2 -2
  48. package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +238 -0
  49. package/framework/skills/level-1-workflows/{phase-codebase-analysis → morph-phase-codebase-analysis}/SKILL.md +251 -251
  50. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +507 -0
  51. package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/SKILL.md +590 -491
  52. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +50 -0
  53. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +45 -0
  54. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +47 -0
  55. package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +254 -0
  56. package/framework/skills/level-1-workflows/{phase-setup → morph-phase-setup}/SKILL.md +237 -194
  57. package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/SKILL.md +307 -270
  58. package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/scripts/validate-tasks.mjs +3 -3
  59. package/framework/skills/level-1-workflows/{phase-uiux → morph-phase-uiux}/SKILL.md +320 -285
  60. package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +97 -0
  61. package/framework/standards/integration/mcp/mcp-tools.md +25 -7
  62. package/framework/templates/docs/onboarding.md +2 -2
  63. package/package.json +1 -2
  64. package/src/commands/agents/dispatch-agents.js +50 -3
  65. package/src/commands/mcp/mcp-setup.js +39 -2
  66. package/src/commands/phase/phase-reset.js +74 -0
  67. package/src/commands/project/doctor.js +19 -5
  68. package/src/commands/scope/escalate.js +215 -0
  69. package/src/commands/state/advance-phase.js +27 -53
  70. package/src/commands/state/state.js +1 -1
  71. package/src/commands/task/expand.js +100 -0
  72. package/src/core/paths/output-schema.js +4 -3
  73. package/src/core/state/phase-state-machine.js +7 -4
  74. package/src/core/state/state-manager.js +4 -3
  75. package/src/lib/detectors/claude-config-detector.js +93 -347
  76. package/src/lib/detectors/design-system-detector.js +189 -189
  77. package/src/lib/detectors/index.js +155 -57
  78. package/src/lib/generators/context-generator.js +2 -2
  79. package/src/lib/installers/mcp-installer.js +37 -5
  80. package/src/lib/phase-chain/phase-validator.js +22 -16
  81. package/src/lib/scope/impact-analyzer.js +106 -0
  82. package/src/lib/tasks/task-parser.js +1 -1
  83. package/src/lib/validators/shared/emit-validator-dispatch.js +64 -0
  84. package/src/scripts/setup-infra.js +15 -0
  85. package/src/utils/agents-installer.js +32 -12
  86. package/src/utils/file-copier.js +0 -1
  87. package/src/utils/hooks-installer.js +15 -1
  88. package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +0 -216
  89. package/framework/skills/level-1-workflows/phase-design/SKILL.md +0 -383
  90. package/src/commands/project/index.js +0 -8
  91. package/src/core/index.js +0 -10
  92. package/src/core/state/index.js +0 -8
  93. package/src/core/templates/index.js +0 -9
  94. package/src/core/templates/template-data-sources.js +0 -325
  95. package/src/core/workflows/index.js +0 -7
  96. package/src/lib/detectors/config-detector.js +0 -223
  97. package/src/lib/detectors/standards-generator.js +0 -335
  98. package/src/lib/detectors/structure-detector.js +0 -275
  99. package/src/lib/monitor/agent-resolver.js +0 -144
  100. package/src/lib/monitor/renderer.js +0 -230
  101. package/src/lib/orchestration/index.js +0 -7
  102. package/src/lib/orchestration/team-orchestrator.js +0 -404
  103. package/src/sanitizer/context-sanitizer.js +0 -221
  104. package/src/sanitizer/patterns.js +0 -163
  105. package/src/writer/file-writer.js +0 -86
  106. /package/framework/skills/level-0-meta/{brainstorming → morph-brainstorming}/references/proposal-example.md +0 -0
  107. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/references/review-example.md +0 -0
  108. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/references/review-guidelines.md +0 -0
  109. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/scripts/scan-csharp.mjs +0 -0
  110. /package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/references/review-example-nextjs.md +0 -0
  111. /package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/scripts/scan-nextjs.mjs +0 -0
  112. /package/framework/skills/level-0-meta/{frontend-review → morph-frontend-review}/scripts/scan-accessibility.mjs +0 -0
  113. /package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/scripts/detect-dev-server.mjs +0 -0
  114. /package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/scripts/detect-stack.mjs +0 -0
  115. /package/framework/skills/level-0-meta/{simulation-checklist → morph-simulation-checklist}/SKILL.md +0 -0
  116. /package/framework/skills/level-0-meta/{terminal-title → morph-terminal-title}/scripts/set_title.sh +0 -0
  117. /package/framework/skills/level-1-workflows/{phase-clarify → morph-phase-clarify}/references/clarifications-example.md +0 -0
  118. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/architecture-analysis-guide.md +0 -0
  119. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/spec-authoring-guide.md +0 -0
  120. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/spec-example.md +0 -0
  121. /package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/references/recap-example.md +0 -0
  122. /package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/references/vsa-implementation-guide.md +0 -0
  123. /package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/references/task-planning-patterns.md +0 -0
  124. /package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/references/tasks-example.md +0 -0
@@ -1,492 +1,591 @@
1
- ---
2
- name: morph:phase-implement
3
- description: MORPH-SPEC Phase 5 (Implement). Executes feature tasks using TDD with checkpoint validation every 3 tasks, smoke tests via Playwright, and generates code + recap.md. Use after task list approval when starting feature implementation.
4
- argument-hint: "[feature-name]"
5
- disable-model-invocation: true
6
- context: fork
7
- agent: general-purpose
8
- user-invocable: false
9
- cliVersion: "4.9.0"
10
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
11
- ---
12
-
13
- # MORPH Implement - FASE 5
14
-
15
- > INTERNAL: Workflow skill used by /morph-apply during automated phase orchestration. Not a user command.
16
-
17
- Implemente as tasks definidas na FASE 4, com checkpoints a cada 3 tasks e recap final.
18
-
19
- ## Pré-requisitos
20
-
21
- - [ ] FASE 4 (Tasks) concluída
22
- - [ ] `tasks.md` ou `tasks.json` aprovado pelo usuário
23
- - [ ] Tasks gate (`morph-spec approve $ARGUMENTS tasks`) aprovado
24
- - [ ] Todos os outputs de design existem (spec.md, contracts.cs, decisions.md)
25
-
26
- ## Pre-flight Validação Mecânica (OBRIGATÓRIO)
27
-
28
- Antes de qualquer task, valide que as fases anteriores estão realmente completas. O `state.json` pode ter sido setado manualmente estes comandos verificam os artefatos reais no filesystem.
29
-
30
- ```bash
31
- # 1. Verifica outputs obrigatórios de todas as fases anteriores
32
- npx morph-spec validate-feature $ARGUMENTS
33
-
34
- # 2. Confirma que todos os approval gates foram aprovados
35
- npx morph-spec approval-status $ARGUMENTS
36
- ```
37
-
38
- Se qualquer check falhar **STOP**. Não inicie nenhuma task. Reporte ao usuário o que está faltando e quais comandos rodar para resolver:
39
-
40
- | Problema | Comando de resolução |
41
- |----------|---------------------|
42
- | Output faltando (spec.md, contracts, etc.) | Volte à fase correspondente e gere o output |
43
- | Gate não aprovado (design, tasks) | `npx morph-spec approve $ARGUMENTS <gate>` |
44
- | Phase inválida | `npx morph-spec phase advance $ARGUMENTS` |
45
-
46
- **Esta etapa não é opcional.** Só prossiga quando ambos os comandos retornarem sem erros.
47
-
48
- ## Ferramentas Recomendadas
49
-
50
- > **Ref:** `framework/skills/level-0-meta/tool-usage-guide/SKILL.md` para guia completo.
51
- > **Ref:** `framework/standards/integration/mcp/mcp-tools.md` para referência MCP.
52
- > **Example:** `references/recap-example.md` — filled-in recap.md showing expected output quality.
53
-
54
- | Ação | Ferramenta | Alternativa |
55
- |------|------------|-------------|
56
- | Verificar modo de execução (single/subagents/agent-teams) | **Bash** `npx morph-spec dispatch-agents $ARGUMENTS implement` | Grupos de tasks + prompts de subagents |
57
- | **Dispatch implementadores por domínio** (subagents) | **Agent** `subagent_type=<taskGroups[grupo].agentId>` + `prompt=taskPrompt` do dispatch config | Backend + frontend + infra em paralelo |
58
- | **Criar Agent Team** (features críticas multi-domínio) | Linguagem natural — veja Passo 0.5b | — |
59
- | Ler task details | **Read** tasks.json, spec.md, contracts.cs | — |
60
- | Criar novos arquivos | **Write** source files | — |
61
- | Modificar arquivos existentes | **Edit** source files | |
62
- | Consultar API de biblioteca | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
63
- | Executar migrations | **Supabase MCP** `query()` | **Bash** `npx supabase migration ...` |
64
- | Build do projeto | **Bash** `dotnet build` ou `npm run build` | — |
65
- | Rodar testes | **Bash** `dotnet test` ou `npm test` | |
66
- | Checkpoint validation | **Bash** `npx morph-spec validate-feature ...` | |
67
- | Marcar task concluída | **Bash** `npx morph-spec task done $ARGUMENTS T001` | — |
68
- | Smoke test no browser | **Playwright MCP** `browser_navigate()` + `browser_snapshot()` | Manual |
69
- | Verificar erros de console | **Playwright MCP** `browser_console_messages()` | |
70
- | Screenshot para recap | **Playwright MCP** `browser_take_screenshot()` | — |
71
- | Criar PR | **Bash** `gh pr create ...` | **GitHub MCP** `create_pull_request()` |
72
- | Atualizar state | **Bash** `npx morph-spec state set ...` | — |
73
-
74
- **MCPs desta fase:** Supabase (migrations, RLS), Context7 (API lookup), Playwright (smoke test), GitHub (PRs).
75
-
76
- **Anti-padrões:**
77
- - Task agent para editar um único arquivo (use Edit direto)
78
- - ✅ Task agent para implementar service layer em 5+ arquivos (multi-file legítimo)
79
- - Task agents paralelos quando `tasks.total 6` e feature tem 2+ domínios ativos
80
- - Agent Teams quando backend e frontend precisam coordenar contratos de API
81
- - Agent Teams para features single-domain (subagents são suficientes)
82
- - Agent Teams sem plan approval (cria risco de implementações divergentes)
83
- - Bash `cat` para criar arquivos (use Write tool)
84
- - Bash `sed` para modificar código (use Edit tool)
85
- - Implementar sem ler contracts.cs primeiro (contracts são a fonte de verdade!)
86
- - Implementar tasks de backend e frontend sequencialmente quando são independentes
87
- - **(VSA)** Criar Application Service layer handler acessa IRepository diretamente
88
- - **(VSA)** Registrar handlers/endpoints manualmente no Program.csauto-discovery via reflection
89
- - **(VSA)** Colocar Request/Response em arquivos separados do Handler
90
- - **(VSA)** Usar `Guid.NewGuid()`use `Guid.CreateVersion7()`
91
- - **Tentar corrigir um bug sem invocar `systematic-debugging` primeiro** "a mudança é pequena" não é justificativa
92
- - Ao encontrar bug: `Skill(superpowers:systematic-debugging)` causa raiz → fix mínimo → verificar
93
-
94
- ---
95
-
96
- ## PRÉ-VOO OBRIGATÓRIO (antes de iniciar implementação)
97
-
98
- ### 1. Ler contexto completo em PARALELO
99
-
100
- ```
101
- # Uma única chamada, não sequencial:
102
- Read: .morph/features/{feature}/3-tasks/tasks.md
103
- + Read: .morph/features/{feature}/1-design/spec.md
104
- + Read: .morph/features/{feature}/1-design/contracts.cs
105
- + Read: .morph/config/config.json ( architecture.style)
106
- ```
107
-
108
- ### 2. Criar native tasks individuais por T001-T00N
109
-
110
- Após ler `tasks.md` no passo 1, crie **uma native task por task encontrada**:
111
-
112
- ```
113
- # Para cada task em tasks.md (T001, T002, ..., T00N):
114
- TaskCreate: "{T001}: {título da task}" → description: descrição completa → activeForm: "Implementando T001"
115
- TaskCreate: "{T002}: {título da task}" → description: descrição completa activeForm: "Implementando T002"
116
- ... (uma TaskCreate por task)
117
-
118
- # Tarefas orquestrais sempre ao final:
119
- TaskCreate: "Checkpoints e validação" → activeForm: "Validando checkpoint"
120
- TaskCreate: "Gerar recap.md" → activeForm: "Gerando recap"
121
- ```
122
-
123
- **Após criar todas as tasks, configure dependências espelhando `tasks.md`:**
124
- ```
125
- # Para cada task com `dependencies: [T00X, T00Y]` em tasks.md:
126
- TaskUpdate(taskId="<id de T003>", addBlockedBy=["<id de T001>", "<id de T002>"])
127
- ```
128
-
129
- > Guarde o mapeamento `{T001 taskId}` internamente para usar nos TaskUpdates do loop.
130
-
131
- ---
132
-
133
- ## Workflow
134
-
135
- ### Passo 0.5: Planejar Modo de Execução
136
-
137
- **Execute antes de qualquer implementação:**
138
-
139
- ```bash
140
- npx morph-spec dispatch-agents $ARGUMENTS implement
141
- ```
142
-
143
- **O output inclui um campo `mode` que determina o caminho de execução:**
144
-
145
- | `mode` | Ação |
146
- |--------|------|
147
- | `"single"` | → Continue para o workflow sequencial normal (Passo 1) |
148
- | `"subagents"` | → Dispatch Task subagents em paralelo (abaixo) |
149
- | `"agent-teams"` | → Crie Agent Team com plan approval (Passo 0.5b) |
150
-
151
- ---
152
-
153
- #### Modo `"subagents"` (se `mode: "subagents"` no output):
154
-
155
- 1. Leia os `taskGroups` retornados (ex: `backend`, `frontend`, `infra`)
156
- 2. Para cada grupo com ≥ 3 tasks e sem dependências cruzadas, use o **Agent tool** com o `subagent_type=<agentId>` do grupo e o `taskPrompt` do dispatch config:
157
-
158
- > **Mapeamento:** `taskGroups[grupo].agentId` do dispatch config = `subagent_type` no Agent tool.
159
- > Exemplo: `agentId: "dotnet-senior"` → `Agent(subagent_type=dotnet-senior, prompt=taskPrompt)`.
160
-
161
- ```
162
- [Task tool — grupo backend, por exemplo]
163
- Prompt do dispatch config enriquecido:
164
-
165
- Você é o implementador do grupo BACKEND da feature '$ARGUMENTS'.
166
-
167
- Contexto completo:
168
- - Spec: [conteúdo de .morph/features/$ARGUMENTS/1-design/spec.md]
169
- - Contracts: [conteúdo de .morph/features/$ARGUMENTS/1-design/contracts.cs]
170
- - Tasks do grupo: [lista de TXXX do grupo backend]
171
-
172
- # No início deste subagent (grupo BACKEND):
173
- # 1. Criar native task por task do grupo:
174
- # TaskCreate: "{T00X}: {título}" activeForm: "Implementando T00X"
175
- # 2. Configurar dependências do grupo via TaskUpdate:
176
- # TaskUpdate(taskId="<id de T003>", addBlockedBy=["<id de T001>", "<id de T002>"])
177
- # Guarde o mapeamento {T00X taskId} para usar no loop abaixo.
178
-
179
- Para cada task do grupo, em ordem:
180
- 1. TaskUpdate(taskId="<native id de T00X>", status="in_progress")
181
- 2. Execute: npx morph-spec task start $ARGUMENTS TXXX
182
- 3. Leia a descrição completa da task
183
- 4. Implemente os arquivos use Write (novo) ou Edit (existente)
184
- 5. Verifique build: [dotnet build / npm run build]
185
- 5b. Invoke Skill(verification-before-completion) — só prossiga para o passo 6 se passar
186
- 6. Execute: npx morph-spec task done $ARGUMENTS TXXX
187
- 7. Se task done retornar sem erro: TaskUpdate(taskId="<native id de T00X>", status="completed")
188
-
189
- A cada 3 tasks:
190
- - Execute: npx morph-spec checkpoint-save $ARGUMENTS
191
- - Execute: npx morph-spec validate-feature $ARGUMENTS --phase implement
192
- - Reporte qualquer falha de validação antes de continuar
193
-
194
- Restrições OBRIGATÓRIAS:
195
- - Modifique APENAS os arquivos listados nas tasks do grupo BACKEND
196
- - NÃO toque em arquivos de frontend, UI ou infra
197
- - Se encontrar dependência em outro grupo, pause e reporte
198
- ```
199
-
200
- 3. Dispare os Task subagents dos grupos em **paralelo** (quando sem dependências entre si)
201
- 4. Após todos completarem, valide integração: `npx morph-spec validate-feature $ARGUMENTS --phase implement`
202
-
203
- **Se `mode: "single"`** (feature pequena ou single-domain):
204
- → Continue para o workflow sequencial normal abaixo.
205
-
206
- ---
207
-
208
- ### Passo 0.5b: Agent Teams (features críticas multi-domínio)
209
-
210
- **Quando usar:** `mode: "agent-teams"` no output de `dispatch-agents`
211
- **Requisito:** `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` no `.claude/settings.local.json` (instalado pelo morph-spec)
212
-
213
- **Por que Agent Teams em vez de subagents:**
214
- Agent Teams têm TaskList compartilhada, mensagens diretas entre teammates e hooks `TeammateIdle`. Subagents são fire-and-forget. Para features onde backend e frontend precisam coordenar contratos de API, Agent Teams garantem que o frontend não implemente chamadas antes do backend estabilizar os DTOs.
215
-
216
- **1. Crie o Agent Team com linguagem natural:**
217
-
218
- ```
219
- Crie um agent team para implementar a feature '$ARGUMENTS' com teammates:
220
- - Backend teammate (dotnet-senior): Implemente as tasks do grupo backend.
221
- Contexto: .morph/features/$ARGUMENTS/1-design/spec.md, contracts.cs, standards/coding.md
222
- Restrição: Modifique APENAS arquivos de backend/domain/application.
223
- Antes de implementar interfaces compartilhadas, envie mensagem ao frontend teammate.
224
- - Frontend teammate (blazor-builder OU nextjs-expert): Implemente as tasks do grupo frontend.
225
- Contexto: .morph/features/$ARGUMENTS/1-design/spec.md, design-system.md, standards/frontend/
226
- Restrição: Modifique APENAS arquivos de UI/components/pages.
227
- Aguarde confirmação do backend teammate antes de implementar chamadas de API.
228
- - Quality teammate (standards-architect): Revise o output de cada teammate e execute validate-feature.
229
- Exija plan approval antes de cada implementação.
230
- Só aprove planos que correspondam ao contracts.cs e spec.md.
231
- ```
232
-
233
- **2. Protocolo de coordenação entre teammates:**
234
-
235
- - Backend deve completar definição de DTOs/interfaces ANTES do frontend implementar chamadas de API
236
- - Para qualquer interface compartilhada: backend envia mensagem ao frontend confirmando contratos estáveis
237
- - Se frontend precisar de um endpoint que não existe → instrua a enviar mensagem ao backend teammate
238
- - Conflitos de contratos escalone ao quality teammate para resolver
239
-
240
- **3. Configurações obrigatórias ao criar o team:**
241
-
242
- - Habilite **plan approval**: "Require plan approval before each teammate implements"
243
- - Gate de qualidade: "Only approve plans that match contracts.cs and spec.md"
244
- - Restrição de domínio por teammate: cada um modifica APENAS arquivos do seu domínio
245
-
246
- **4. Após todos os teammates completarem:**
247
-
248
- ```bash
249
- npx morph-spec validate-feature $ARGUMENTS --phase implement
250
- ```
251
-
252
- Sintetize os resultados de todos os teammates no recap.md (Passo 6).
253
-
254
- ---
255
-
256
- ### CHECKPOINT DE ENTRADA: Verificar Pré-requisitos
257
-
258
- **⏸️ Antes de iniciar implementação:**
259
-
260
- - [ ] `tasks.md` ou `tasks.json` existe e foi aprovado?
261
- - [ ] Tasks gate aprovado (`morph-spec approve $ARGUMENTS tasks`)?
262
- - [ ] `spec.md` atualizado com clarificações?
263
- - [ ] `contracts.cs` corresponde ao schema real?
264
- - [ ] Build base do projeto compila sem erros?
265
- - [ ] `activeAgents` estão populados? (`morph-spec state get $ARGUMENTS` → campo `activeAgents` não vazio)
266
-
267
- ```bash
268
- npx morph-spec state get $ARGUMENTS
269
- npx morph-spec approval-status $ARGUMENTS
270
- # Se activeAgents estiver vazio pare aqui e execute /phase-setup $ARGUMENTS primeiro
271
- npx morph-spec state get $ARGUMENTS | grep -A5 activeAgents
272
- ```
273
-
274
- **❌ Se alguma checkbox NÃO estiver marcada:**
275
- → Voltar para a fase correspondente
276
-
277
- **❌ Se `activeAgents` estiver vazio:**
278
- → Execute o skill `phase-setup` primeiro: `/phase-setup $ARGUMENTS`
279
- → Agentes não detectados = standards não carregados = implementação sem contexto correto
280
-
281
- ---
282
-
283
- ### Passo 1: Carregar Contexto Completo
284
-
285
- Leia todos os outputs antes de implementar:
286
-
287
- 1. `.morph/features/$ARGUMENTS/3-tasks/tasks.md` Lista de tasks
288
- 2. `.morph/features/$ARGUMENTS/1-design/spec.md` — Especificação completa
289
- 3. `.morph/features/$ARGUMENTS/1-design/contracts.cs` Interfaces e DTOs
290
- 4. `.morph/features/$ARGUMENTS/1-design/decisions.md` — ADRs
291
- 5. `.morph/features/$ARGUMENTS/1-design/schema-analysis.md` — Schema real (se existir)
292
- 6. `.morph/features/$ARGUMENTS/2-ui/design-system.md` Design tokens (se existir)
293
-
294
- **Detectar estilo de arquitetura:**
295
- ```bash
296
- # Leia config para saber se é VSA ou DDD:
297
- cat .morph/config/config.json | grep architecture
298
- ```
299
-
300
- Se `config.architecture.style === "vertical-slice"` siga o **Passo 1.5** antes de implementar.
301
- Caso contrário direto para o Passo 2.
302
-
303
- ### Passo 1.5: Guia de Implementação VSA (somente se `style: "vertical-slice"`)
304
-
305
- > Para a estrutura completa de slices e regras VSA, veja `references/vsa-implementation-guide.md`
306
-
307
- Estrutura: `Features/{Entity}Feature/{Op}/` com Handler (+ Request/Response records) + Validator + Endpoint por slice. Tudo `sealed`. `Guid.CreateVersion7()`. `result.Match()` nos endpoints. Sem Application Service layer — handler acessa IRepository diretamente. Auto-discovery via reflection: não registrar manualmente no Program.cs.
308
-
309
- Após cada slice completo, verificar build:
310
- ```bash
311
- dotnet build
312
- ```
313
-
314
- ### Passo 2: Iniciar Primeira Task
315
-
316
- ```bash
317
- npx morph-spec task next $ARGUMENTS
318
- ```
319
-
320
- Para cada task (T001 → T00N):
321
-
322
- 1. **Marcar como em progresso (native task):**
323
- ```
324
- TaskUpdate(taskId="<native id de T001>", status="in_progress")
325
- ```
326
- 2. **Iniciar via CLI:**
327
- ```bash
328
- npx morph-spec task start $ARGUMENTS T001
329
- ```
330
- 3. **Ler a task description** completa
331
- 4. **Ler contracts.cs** para DTOs/interfaces relevantes
332
- 5. **Implementar** usando Write (novo) ou Edit (existente)
333
- 6. **Verificar** build, lint, testes
334
- 6b. **⚠️ OBRIGATÓRIO Verificação antes de `task done`:**
335
- Invoke `Skill(verification-before-completion)` ou execute manualmente:
336
- ```bash
337
- npx morph-spec validate-feature $ARGUMENTS --phase implement
338
- ```
339
- Só prossiga para o passo 7 se a verificação passar. Se falhar → corrija antes de marcar `task done`.
340
- 7. **Marcar como done via CLI:**
341
- ```bash
342
- npx morph-spec task done $ARGUMENTS T001
343
- ```
344
- 8. **Se `task done` retornar sem erro, marcar native task como concluída:**
345
- ```
346
- TaskUpdate(taskId="<native id de T001>", status="completed")
347
- ```
348
- > **Nota:** `TaskUpdate(completed)` ocorre se `task done` retornar sem erro (validação passou).
349
-
350
- ### Passo 3: Checkpoint a Cada 3 Tasks
351
-
352
- **A cada 3 tasks completadas:**
353
-
354
- ```bash
355
- # Save checkpoint
356
- npx morph-spec checkpoint-save $ARGUMENTS
357
-
358
- # Run validation
359
- npx morph-spec validate-feature $ARGUMENTS --phase implement
360
- ```
361
-
362
- **Se validação falhar:**
363
- 1. NÃO avançar para próxima task
364
- 2. Corrigir issues reportados
365
- 3. Re-rodar validação
366
- 4. Só então prosseguir
367
-
368
- ### Passo 4: Test-Driven Development (Recomendado)
369
-
370
- Para cada task de implementação:
371
-
372
- 1. **Escrever teste primeiro** (unit test para service/domain)
373
- 2. **Rodar teste** deve falhar (RED)
374
- 3. **Implementar** o mínimo para passar
375
- 4. **Rodar teste** — deve passar (GREEN)
376
- 5. **Refatorar** se necessário (REFACTOR)
377
-
378
- ```bash
379
- # .NET
380
- dotnet test --filter "FullyQualifiedName~{TestClass}"
381
-
382
- # Node.js
383
- npm test -- test/path/to/test.js
384
- ```
385
-
386
- ### Passo 5: Smoke Test com Playwright (se UI)
387
-
388
- Após implementar componentes visuais:
389
-
390
- ```javascript
391
- // Navegar para a página
392
- await mcp__playwright__browser_navigate({ url: 'http://localhost:5000/feature-page' });
393
-
394
- // Capturar estado da página
395
- await mcp__playwright__browser_snapshot();
396
-
397
- // Verificar erros de console
398
- await mcp__playwright__browser_console_messages({ level: 'error' });
399
-
400
- // Screenshot para recap
401
- await mcp__playwright__browser_take_screenshot({ type: 'png' });
402
- ```
403
-
404
- ### Passo 6: Gerar `recap.md`
405
-
406
- Após TODAS as tasks completadas:
407
-
408
- ```bash
409
- npx morph-spec generate recap $ARGUMENTS
410
- ```
411
-
412
- > Para o formato completo do recap, veja `references/recap-example.md`
413
-
414
- ### Passo 7: Atualizar State
415
-
416
- ```bash
417
- npx morph-spec state set $ARGUMENTS status done
418
- npx morph-spec state mark-output $ARGUMENTS recap
419
- ```
420
-
421
- ### Passo 8: Revisão Pós-Implementação (obrigatório antes do PR)
422
-
423
- ```bash
424
- /post-implementation $ARGUMENTS
425
- ```
426
-
427
- Execute o skill `post-implementation` antes de criar o PR. Ele orquestra:
428
- - Scans automáticos (CRITICAL findings bloqueiam PR)
429
- - Test suite completo
430
- - `validate-feature` final
431
- - Smoke test via Playwright (obrigatório se dev server ativo)
432
- - Checklist de code review (CRITICAL + HIGH)
433
- - **`morph-checklist`** — compliance (segurança, SEO, performance, acessibilidade, LGPD)
434
- - Checkpoint + recap final
435
-
436
- ### Passo 9: Frontend Review (NEXTJS/FULLSTACK)
437
-
438
- Se stack for NEXTJS ou FULLSTACK:
439
-
440
- ```bash
441
- /frontend-review $ARGUMENTS
442
- ```
443
-
444
- Complementa o `post-implementation` com: scan de acessibilidade (static + axe-core runtime),
445
- screenshots responsivos (mobile/tablet/desktop), e verificação de SEO metadata.
446
-
447
- ---
448
-
449
- ## Integração com Superpowers
450
-
451
- > Disponível quando o plugin `superpowers` está instalado.
452
-
453
- | Skill | Quando Usar | Invocação |
454
- |-------|-------------|-----------|
455
- | `test-driven-development` | Para cada task de implementação | `Skill(superpowers:test-driven-development)` |
456
- | `systematic-debugging` | **OBRIGATÓRIO** quando testes falham ou comportamento inesperado — invoke ANTES de tentar qualquer fix | `Skill(superpowers:systematic-debugging)` |
457
- | `requesting-code-review` | Após implementação completa | `Skill(superpowers:requesting-code-review)` |
458
- | `verification-before-completion` | Antes de marcar feature como done | Use `verification-before-completion` (morph-spec version) |
459
- | `post-implementation` | Antes de criar o PR (scans + smoke test + review) | `/post-implementation {feature}` |
460
-
461
- ---
462
-
463
- ## Outputs Gerados
464
-
465
- - Código fonte implementado (vários arquivos)
466
- - Testes unitários e de integração
467
- - `.morph/features/$ARGUMENTS/4-implement/recap.md` Resumo da implementação
468
-
469
- ## Critérios de Conclusão
470
-
471
- - [x] Todas as tasks completadas
472
- - [x] Build compila sem erros
473
- - [x] Testes passando
474
- - [x] Validation pipeline passa
475
- - [x] `recap.md` gerado
476
- - [x] State atualizado para `status: done`
477
- - [x] Checkpoints salvos a cada 3 tasks
478
- - [x] `/post-implementation` executado sem BLOCKs (smoke test, scans, code review, `morph-checklist`)
479
-
480
- ---
481
-
482
- ## Outputs desta Fase
483
-
484
- <!-- morph:outputs:implement -->
485
- | Output | Caminho |
486
- |--------|---------|
487
- | `recap` | `.morph/features/{feature}/4-implement/recap.md` |
488
- <!-- /morph:outputs -->
489
-
490
- ---
491
-
1
+ ---
2
+ name: morph:phase-implement
3
+ description: MORPH-SPEC Phase 5 (Implement). Executes feature tasks using TDD with checkpoint validation every 3 tasks, smoke tests via Playwright, and generates code + recap.md. Use after task list approval when starting feature implementation.
4
+ argument-hint: "[feature-name]"
5
+ disable-model-invocation: true
6
+ context: fork
7
+ agent: general-purpose
8
+ user-invocable: false
9
+ cliVersion: "4.10.0"
10
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
11
+ ---
12
+
13
+ # MORPH Implement - FASE 5
14
+
15
+ > INTERNAL: Workflow skill used by /morph-apply during automated phase orchestration. Not a user command.
16
+
17
+ Implemente as tasks definidas na FASE 4, com checkpoints a cada 3 tasks e recap final.
18
+
19
+ ## Pré-requisitos
20
+
21
+ - [ ] FASE 4 (Tasks) concluída
22
+ - [ ] `tasks.md` ou `tasks.json` aprovado pelo usuário
23
+ - [ ] Tasks gate (`morph-spec approve $ARGUMENTS tasks`) aprovado
24
+ - [ ] Todos os outputs de design existem (spec.md, contracts.cs, decisions.md)
25
+
26
+ ## Passo 0: Garantir fase implement
27
+
28
+ **PASSO 0 (ANTES de qualquer leitura ou escrita)Garantir fase implement:**
29
+
30
+ ```bash
31
+ npx morph-spec state get $ARGUMENTS
32
+ ```
33
+
34
+ Verifique o campo `"phase"` no output:
35
+
36
+ **Se `"phase": "implement"`** → ✅ fase correta, prossiga.
37
+
38
+ **Se `"phase": "tasks"`**execute em sequência:
39
+ 1. `npx morph-spec state mark-output $ARGUMENTS tasks`
40
+ 2. `npx morph-spec approve $ARGUMENTS tasks`
41
+ 3. `npx morph-spec phase advance $ARGUMENTS` (→ implement)
42
+
43
+ **Qualquer outro valor** não prossiga estado inconsistente, reporte ao usuário.
44
+
45
+ > **Regra:** Nunca escreva em `5-implement/` enquanto a fase não for `implement`. O hook bloqueará a escrita.
46
+
47
+ ---
48
+
49
+ ## Pre-flight — Validação Mecânica (OBRIGATÓRIO)
50
+
51
+ Antes de qualquer task, valide que as fases anteriores estão realmente completas. O `state.json` pode ter sido setado manualmente — estes comandos verificam os artefatos reais no filesystem.
52
+
53
+ ```bash
54
+ # 1. Verifica outputs obrigatórios de todas as fases anteriores
55
+ npx morph-spec validate-feature $ARGUMENTS
56
+
57
+ # 2. Confirma que todos os approval gates foram aprovados
58
+ npx morph-spec approval-status $ARGUMENTS
59
+ ```
60
+
61
+ Se qualquer check falhar **STOP**. Não inicie nenhuma task. Reporte ao usuário o que está faltando e quais comandos rodar para resolver:
62
+
63
+ | Problema | Comando de resolução |
64
+ |----------|---------------------|
65
+ | Output faltando (spec.md, contracts, etc.) | Volte à fase correspondente e gere o output |
66
+ | Gate não aprovado (design, tasks) | `npx morph-spec approve $ARGUMENTS <gate>` |
67
+ | Phase inválida | `npx morph-spec phase advance $ARGUMENTS` |
68
+
69
+ **Esta etapa não é opcional.** prossiga quando ambos os comandos retornarem sem erros.
70
+
71
+ ## Ferramentas Recomendadas
72
+
73
+ > **Ref:** `framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md` para guia completo.
74
+ > **Ref:** `framework/standards/integration/mcp/mcp-tools.md` para referência MCP.
75
+ > **Example:** `references/recap-example.md` — filled-in recap.md showing expected output quality.
76
+
77
+ | Ação | Ferramenta | Alternativa |
78
+ |------|------------|-------------|
79
+ | Verificar modo de execução (single/subagents/agent-teams) | **Bash** `npx morph-spec dispatch-agents $ARGUMENTS implement` | Grupos de tasks + prompts de subagents |
80
+ | **Dispatch implementadores por domínio** (subagents) | **Agent** `subagent_type=<taskGroups[grupo].agentId>` + `prompt=taskPrompt` do dispatch config | Backend + frontend + infra em paralelo |
81
+ | **Criar Agent Team** (features críticas multi-domínio) | Linguagem natural — veja Passo 0.5b | — |
82
+ | Ler task details | **Read** tasks.json, spec.md, contracts.cs | |
83
+ | Criar novos arquivos | **Write** source files | — |
84
+ | Modificar arquivos existentes | **Edit** source files | — |
85
+ | Consultar API de biblioteca | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
86
+ | Executar migrations | **Supabase MCP** `query()` | **Bash** `npx supabase migration ...` |
87
+ | Build do projeto | **Bash** `dotnet build` ou `npm run build` | |
88
+ | Rodar testes | **Bash** `dotnet test` ou `npm test` | |
89
+ | Checkpoint validation | **Bash** `npx morph-spec validate-feature ...` | |
90
+ | Marcar task concluída | **Bash** `npx morph-spec task done $ARGUMENTS T001` | |
91
+ | Smoke test no browser | **Playwright MCP** `browser_navigate()` + `browser_snapshot()` | Manual |
92
+ | Verificar erros de console | **Playwright MCP** `browser_console_messages()` | |
93
+ | Screenshot para recap | **Playwright MCP** `browser_take_screenshot()` | — |
94
+ | Deploy e logs Vercel | **Vercel MCP** `list_projects()`, `get_deployments()`, `manage_env_vars()` | **Bash** `vercel deploy` |
95
+ | Criar PR | **Bash** `gh pr create ...` | **GitHub MCP** `create_pull_request()` |
96
+ | Atualizar state | **Bash** `npx morph-spec state set ...` | — |
97
+
98
+ **MCPs desta fase:** Supabase (migrations, RLS), Context7 (API lookup), Playwright (smoke test), GitHub (PRs), Vercel (deploy, logs, env vars).
99
+
100
+ **Anti-padrões:**
101
+ - Task agent para editar um único arquivo (use Edit direto)
102
+ - ✅ Task agent para implementar service layer em 5+ arquivos (multi-file legítimo)
103
+ - Task agents paralelos quando `tasks.total ≥ 6` e feature tem 2+ domínios ativos
104
+ - Agent Teams quando backend e frontend precisam coordenar contratos de API
105
+ - Agent Teams para features single-domain (subagents são suficientes)
106
+ - ❌ Agent Teams sem plan approval (cria risco de implementações divergentes)
107
+ - ❌ Bash `cat` para criar arquivos (use Write tool)
108
+ - Bash `sed` para modificar código (use Edit tool)
109
+ - ❌ Implementar sem ler contracts.cs primeiro (contracts são a fonte de verdade!)
110
+ - Implementar tasks de backend e frontend sequencialmente quando são independentes
111
+ - ❌ **(VSA)** Criar Application Service layer — handler acessa IRepository diretamente
112
+ - ❌ **(VSA)** Registrar handlers/endpoints manualmente no Program.cs — auto-discovery via reflection
113
+ - **(VSA)** Colocar Request/Response em arquivos separados do Handler
114
+ - **(VSA)** Usar `Guid.NewGuid()` use `Guid.CreateVersion7()`
115
+ - **Tentar corrigir um bug sem invocar `systematic-debugging` primeiro** "a mudança é pequena" não é justificativa
116
+ - ✅ Ao encontrar bug: `Skill(superpowers:systematic-debugging)` causa raiz → fix mínimo → verificar
117
+
118
+ ---
119
+
120
+ ## Pre-flight MCP Validacao de Conexoes
121
+
122
+ Antes de iniciar as tasks, verifique que os MCPs necessarios para a fase implement estao funcionando.
123
+
124
+ **1. Coletar MCPs da fase implement:**
125
+ - Leia `framework/skills/level-0-meta/mcp-registry.json` campo `phaseMatrix.implement`
126
+ - Leia `.claude/settings.local.json` identifique quais MCPs estao configurados
127
+
128
+ **2. Para cada MCP CONFIGURADO que aparece em `phaseMatrix.implement`:**
129
+ 1. Procure nas ferramentas disponiveis por uma que contenha `healthCheck.toolPattern` no nome
130
+ 2. Se encontrada → execute `healthCheck.testCall` com `healthCheck.testParams`
131
+ 3. Avalie:
132
+
133
+ | Resultado | Acao |
134
+ |-----------|------|
135
+ | **Sucesso** | `✓ {MCP} pronto` |
136
+ | **Ferramenta nao encontrada** | `○ {MCP} — precisa restart` |
137
+ | **Erro** | **AskUserQuestion** (abaixo) |
138
+
139
+ **Em caso de erro — pergunte ao usuario:**
140
+
141
+ Use `AskUserQuestion` com header `"{MCP}"` e opcoes:
142
+ - **Continuar sem {MCP}** — Mostre `fallback` do registry (ex: "Bash `gh` CLI" para GitHub). A implementacao usara o fallback automaticamente.
143
+ - **Reconfigurar credenciais** Colete credenciais e atualize `.claude/settings.local.json`. Re-teste apos reconfigurar.
144
+ - **Parar implementacao** — Aborte. Usuario deve corrigir o MCP e re-rodar `/morph-apply`.
145
+
146
+ **3. Resumo MCP Readiness:**
147
+ ```
148
+ MCP Readiness (implement phase):
149
+ context7 pronto
150
+ ✓ supabase — pronto
151
+ ○ playwright — precisa restart (fallback: manual testing)
152
+ — docker — nao configurado
153
+ ```
154
+
155
+ > **Design:** Este check e fail-open — consistente com a filosofia morph-spec. O usuario tem escolha explicita em vez de tasks falhando silenciosamente.
156
+
157
+ ---
158
+
159
+ ## PRÉ-VOO OBRIGATÓRIO (antes de iniciar implementação)
160
+
161
+ ### 1. Ler contexto completo em PARALELO
162
+
163
+ ```
164
+ # Uma única chamada, não sequencial:
165
+ Read: .morph/features/{feature}/4-tasks/tasks.md
166
+ + Read: .morph/features/{feature}/1-design/spec.md
167
+ + Read: .morph/features/{feature}/1-design/contracts.cs
168
+ + Read: .morph/config/config.json (→ architecture.style)
169
+ + Read: .morph/features/{feature}/3-plan/plan.md
170
+ ```
171
+
172
+ ### 2. Criar native tasks individuais por T001-T00N
173
+
174
+ Após ler `tasks.md` no passo 1, crie **uma native task por task encontrada**:
175
+
176
+ ```
177
+ # Para cada task em tasks.md (T001, T002, ..., T00N):
178
+ TaskCreate: "{T001}: {título da task}" → description: descrição completa → activeForm: "Implementando T001"
179
+ TaskCreate: "{T002}: {título da task}" → description: descrição completa → activeForm: "Implementando T002"
180
+ ... (uma TaskCreate por task)
181
+
182
+ # Tarefas orquestrais sempre ao final:
183
+ TaskCreate: "Checkpoints e validação" → activeForm: "Validando checkpoint"
184
+ TaskCreate: "Gerar recap.md" → activeForm: "Gerando recap"
185
+ ```
186
+
187
+ **Após criar todas as tasks, configure dependências espelhando `tasks.md`:**
188
+ ```
189
+ # Para cada task com `dependencies: [T00X, T00Y]` em tasks.md:
190
+ TaskUpdate(taskId="<id de T003>", addBlockedBy=["<id de T001>", "<id de T002>"])
191
+ ```
192
+
193
+ > Guarde o mapeamento `{T001 → taskId}` internamente para usar nos TaskUpdates do loop.
194
+
195
+ ---
196
+
197
+ ## Workflow
198
+
199
+ ### Passo 0.5: Planejar Modo de Execução
200
+
201
+ **Ler estratégia do plano:**
202
+ ```
203
+ Read: .morph/features/{feature}/3-plan/plan.md extrair campo "Execution Strategy"
204
+ ```
205
+
206
+ A estratégia já foi definida e aprovada na fase Plan. Use-a diretamente:
207
+
208
+ **O campo `Execution Strategy` determina o caminho de execução:**
209
+
210
+ | Estratégia | Ação |
211
+ |--------|------|
212
+ | `"single"` | → Continue para o workflow sequencial normal (Passo 1) |
213
+ | `"subagents"` | Dispatch Task subagents em paralelo (abaixo) |
214
+ | `"agent-teams"` | Crie Agent Team com plan approval (Passo 0.5b) |
215
+
216
+ Se `plan.md` não existir ou o campo não estiver presente, execute como fallback:
217
+
218
+ ```bash
219
+ npx morph-spec dispatch-agents $ARGUMENTS implement
220
+ ```
221
+
222
+ **O output inclui um campo `mode` equivalente à estratégia do plano.**
223
+
224
+ ---
225
+
226
+ #### Modo `"subagents"` (se `mode: "subagents"` no output):
227
+
228
+ 1. Leia os `taskGroups` retornados (ex: `backend`, `frontend`, `infra`)
229
+ 2. Para cada grupo com 3 tasks e sem dependências cruzadas, use o **Agent tool** com o `subagent_type=<agentId>` do grupo e o `taskPrompt` do dispatch config:
230
+
231
+ > **Mapeamento:** `taskGroups[grupo].agentId` do dispatch config = `subagent_type` no Agent tool.
232
+ > Exemplo: `agentId: "dotnet-senior"` → `Agent(subagent_type=dotnet-senior, prompt=taskPrompt)`.
233
+
234
+ ```
235
+ [Task tool grupo backend, por exemplo]
236
+ Prompt do dispatch config enriquecido:
237
+
238
+ Você é o implementador do grupo BACKEND da feature '$ARGUMENTS'.
239
+
240
+ Contexto completo:
241
+ - Spec: [conteúdo de .morph/features/$ARGUMENTS/1-design/spec.md]
242
+ - Contracts: [conteúdo de .morph/features/$ARGUMENTS/1-design/contracts.cs]
243
+ - Tasks do grupo: [lista de TXXX do grupo backend]
244
+
245
+ # No início deste subagent (grupo BACKEND):
246
+ # 1. Criar native task por task do grupo:
247
+ # TaskCreate: "{T00X}: {título}" → activeForm: "Implementando T00X"
248
+ # 2. Configurar dependências do grupo via TaskUpdate:
249
+ # TaskUpdate(taskId="<id de T003>", addBlockedBy=["<id de T001>", "<id de T002>"])
250
+ # Guarde o mapeamento {T00X → taskId} para usar no loop abaixo.
251
+
252
+ Para cada task do grupo, em ordem:
253
+ 1. TaskUpdate(taskId="<native id de T00X>", status="in_progress")
254
+ 2. Execute: npx morph-spec task start $ARGUMENTS TXXX
255
+ 3. Leia a descrição completa da task
256
+ 4. Implemente os arquivos use Write (novo) ou Edit (existente)
257
+ 5. Verifique build: [dotnet build / npm run build]
258
+ 5b. Invoke Skill(verification-before-completion) só prossiga para o passo 6 se passar
259
+ 6. Execute: npx morph-spec task done $ARGUMENTS TXXX
260
+ 7. Se task done retornar sem erro: TaskUpdate(taskId="<native id de T00X>", status="completed")
261
+
262
+ A cada 3 tasks:
263
+ - Execute: npx morph-spec checkpoint-save $ARGUMENTS
264
+ - Execute: npx morph-spec validate-feature $ARGUMENTS --phase implement
265
+ - Reporte qualquer falha de validação antes de continuar
266
+
267
+ Restrições OBRIGATÓRIAS:
268
+ - Modifique APENAS os arquivos listados nas tasks do grupo BACKEND
269
+ - NÃO toque em arquivos de frontend, UI ou infra
270
+ - Se encontrar dependência em outro grupo, pause e reporte
271
+ ```
272
+
273
+ 3. Dispare os Task subagents dos grupos em **paralelo** (quando sem dependências entre si)
274
+ 4. Após todos completarem, valide integração: `npx morph-spec validate-feature $ARGUMENTS --phase implement`
275
+
276
+ **Se `mode: "single"`** (feature pequena ou single-domain):
277
+ Continue para o workflow sequencial normal abaixo.
278
+
279
+ ---
280
+
281
+ ### Passo 0.5b: Agent Teams (features críticas multi-domínio)
282
+
283
+ **Quando usar:** `mode: "agent-teams"` no output de `dispatch-agents`
284
+ **Requisito:** `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` no `.claude/settings.local.json` (instalado pelo morph-spec)
285
+
286
+ **Por que Agent Teams em vez de subagents:**
287
+ Agent Teams têm TaskList compartilhada, mensagens diretas entre teammates e hooks `TeammateIdle`. Subagents são fire-and-forget. Para features onde backend e frontend precisam coordenar contratos de API, Agent Teams garantem que o frontend não implemente chamadas antes do backend estabilizar os DTOs.
288
+
289
+ **1. Crie o Agent Team com linguagem natural:**
290
+
291
+ ```
292
+ Crie um agent team para implementar a feature '$ARGUMENTS' com teammates:
293
+ - Backend teammate (dotnet-senior): Implemente as tasks do grupo backend.
294
+ Contexto: .morph/features/$ARGUMENTS/1-design/spec.md, contracts.cs, standards/coding.md
295
+ Restrição: Modifique APENAS arquivos de backend/domain/application.
296
+ Antes de implementar interfaces compartilhadas, envie mensagem ao frontend teammate.
297
+ - Frontend teammate (blazor-builder OU nextjs-expert): Implemente as tasks do grupo frontend.
298
+ Contexto: .morph/features/$ARGUMENTS/1-design/spec.md, design-system.md, standards/frontend/
299
+ Restrição: Modifique APENAS arquivos de UI/components/pages.
300
+ Aguarde confirmação do backend teammate antes de implementar chamadas de API.
301
+ - Quality teammate (standards-architect): Revise o output de cada teammate e execute validate-feature.
302
+ Exija plan approval antes de cada implementação.
303
+ aprove planos que correspondam ao contracts.cs e spec.md.
304
+ ```
305
+
306
+ **2. Protocolo de coordenação entre teammates:**
307
+
308
+ - Backend deve completar definição de DTOs/interfaces ANTES do frontend implementar chamadas de API
309
+ - Para qualquer interface compartilhada: backend envia mensagem ao frontend confirmando contratos estáveis
310
+ - Se frontend precisar de um endpoint que não existe → instrua a enviar mensagem ao backend teammate
311
+ - Conflitos de contratos → escalone ao quality teammate para resolver
312
+
313
+ **3. Configurações obrigatórias ao criar o team:**
314
+
315
+ - Habilite **plan approval**: "Require plan approval before each teammate implements"
316
+ - Gate de qualidade: "Only approve plans that match contracts.cs and spec.md"
317
+ - Restrição de domínio por teammate: cada um modifica APENAS arquivos do seu domínio
318
+
319
+ **4. Após todos os teammates completarem:**
320
+
321
+ ```bash
322
+ npx morph-spec validate-feature $ARGUMENTS --phase implement
323
+ ```
324
+
325
+ Sintetize os resultados de todos os teammates no recap.md (Passo 6).
326
+
327
+ ---
328
+
329
+ ### CHECKPOINT DE ENTRADA: Verificar Pré-requisitos
330
+
331
+ **⏸️ Antes de iniciar implementação:**
332
+
333
+ - [ ] `tasks.md` ou `tasks.json` existe e foi aprovado?
334
+ - [ ] Tasks gate aprovado (`morph-spec approve $ARGUMENTS tasks`)?
335
+ - [ ] `spec.md` atualizado com clarificações?
336
+ - [ ] `contracts.cs` corresponde ao schema real?
337
+ - [ ] Build base do projeto compila sem erros?
338
+ - [ ] `activeAgents` estão populados? (`morph-spec state get $ARGUMENTS` → campo `activeAgents` não vazio)
339
+
340
+ ```bash
341
+ npx morph-spec state get $ARGUMENTS
342
+ npx morph-spec approval-status $ARGUMENTS
343
+ # Se activeAgents estiver vazio → pare aqui e execute /phase-setup $ARGUMENTS primeiro
344
+ npx morph-spec state get $ARGUMENTS | grep -A5 activeAgents
345
+ ```
346
+
347
+ **❌ Se alguma checkbox NÃO estiver marcada:**
348
+ Voltar para a fase correspondente
349
+
350
+ **❌ Se `activeAgents` estiver vazio:**
351
+ → Execute o skill `phase-setup` primeiro: `/phase-setup $ARGUMENTS`
352
+ Agentes não detectados = standards não carregados = implementação sem contexto correto
353
+
354
+ ---
355
+
356
+ ### Passo 1: Carregar Contexto Completo
357
+
358
+ Leia todos os outputs antes de implementar:
359
+
360
+ 1. `.morph/features/$ARGUMENTS/4-tasks/tasks.md` — Lista de tasks
361
+ 2. `.morph/features/$ARGUMENTS/1-design/spec.md` — Especificação completa
362
+ 3. `.morph/features/$ARGUMENTS/1-design/contracts.cs` — Interfaces e DTOs
363
+ 4. `.morph/features/$ARGUMENTS/1-design/decisions.md` ADRs
364
+ 5. `.morph/features/$ARGUMENTS/1-design/schema-analysis.md` Schema real (se existir)
365
+ 6. `.morph/features/$ARGUMENTS/2-ui/design-system.md` — Design tokens (se existir)
366
+
367
+ **Detectar estilo de arquitetura:**
368
+ ```bash
369
+ # Leia config para saber se é VSA ou DDD:
370
+ cat .morph/config/config.json | grep architecture
371
+ ```
372
+
373
+ Se `config.architecture.style === "vertical-slice"` → siga o **Passo 1.5** antes de implementar.
374
+ Caso contrário direto para o Passo 2.
375
+
376
+ ### Passo 1.5: Guia de Implementação VSA (somente se `style: "vertical-slice"`)
377
+
378
+ > Para a estrutura completa de slices e regras VSA, veja `references/vsa-implementation-guide.md`
379
+
380
+ Estrutura: `Features/{Entity}Feature/{Op}/` com Handler (+ Request/Response records) + Validator + Endpoint por slice. Tudo `sealed`. `Guid.CreateVersion7()`. `result.Match()` nos endpoints. Sem Application Service layer — handler acessa IRepository diretamente. Auto-discovery via reflection: não registrar manualmente no Program.cs.
381
+
382
+ Após cada slice completo, verificar build:
383
+ ```bash
384
+ dotnet build
385
+ ```
386
+
387
+ ### Passo 2: Iniciar Primeira Task
388
+
389
+ ```bash
390
+ npx morph-spec task next $ARGUMENTS
391
+ ```
392
+
393
+ Para cada task (T001 → T00N):
394
+
395
+ 1. **Marcar como em progresso (native task):**
396
+ ```
397
+ TaskUpdate(taskId="<native id de T001>", status="in_progress")
398
+ ```
399
+ 2. **Iniciar via CLI:**
400
+ ```bash
401
+ npx morph-spec task start $ARGUMENTS T001
402
+ ```
403
+ 3. **Ler a task description** completa
404
+ 4. **Ler contracts.cs** para DTOs/interfaces relevantes
405
+ 5. **Implementar** usando Write (novo) ou Edit (existente)
406
+ 6. **Verificar** build, lint, testes
407
+ 6b. **⚠️ OBRIGATÓRIO — Verificação antes de `task done`:**
408
+ Invoke `Skill(verification-before-completion)` ou execute manualmente:
409
+ ```bash
410
+ npx morph-spec validate-feature $ARGUMENTS --phase implement
411
+ ```
412
+ prossiga para o passo 7 se a verificação passar. Se falhar → corrija antes de marcar `task done`.
413
+ 7. **Marcar como done via CLI:**
414
+ ```bash
415
+ npx morph-spec task done $ARGUMENTS T001
416
+ ```
417
+ 8. **Se `task done` retornar sem erro, marcar native task como concluída:**
418
+ ```
419
+ TaskUpdate(taskId="<native id de T001>", status="completed")
420
+ ```
421
+ > **Nota:** `TaskUpdate(completed)` ocorre se `task done` retornar sem erro (validação passou).
422
+
423
+ ### Passo 3: Checkpoint a Cada 3 Tasks
424
+
425
+ **A cada 3 tasks completadas:**
426
+
427
+ ```bash
428
+ # Save checkpoint
429
+ npx morph-spec checkpoint-save $ARGUMENTS
430
+
431
+ # Run validation
432
+ npx morph-spec validate-feature $ARGUMENTS --phase implement
433
+ ```
434
+
435
+ **Se validação falhar:**
436
+ 1. NÃO avançar para próxima task
437
+ 2. Corrigir issues reportados
438
+ 3. Re-rodar validação
439
+ 4. Só então prosseguir
440
+
441
+ ### Passo 4: Test-Driven Development (Recomendado)
442
+
443
+ Para cada task de implementação:
444
+
445
+ 1. **Escrever teste primeiro** (unit test para service/domain)
446
+ 2. **Rodar teste** — deve falhar (RED)
447
+ 3. **Implementar** o mínimo para passar
448
+ 4. **Rodar teste** — deve passar (GREEN)
449
+ 5. **Refatorar** se necessário (REFACTOR)
450
+
451
+ ```bash
452
+ # .NET
453
+ dotnet test --filter "FullyQualifiedName~{TestClass}"
454
+
455
+ # Node.js
456
+ npm test -- test/path/to/test.js
457
+ ```
458
+
459
+ ### Passo 5: Smoke Test com Playwright (se UI)
460
+
461
+ Após implementar componentes visuais:
462
+
463
+ ```javascript
464
+ // Navegar para a página
465
+ await mcp__playwright__browser_navigate({ url: 'http://localhost:5000/feature-page' });
466
+
467
+ // Capturar estado da página
468
+ await mcp__playwright__browser_snapshot();
469
+
470
+ // Verificar erros de console
471
+ await mcp__playwright__browser_console_messages({ level: 'error' });
472
+
473
+ // Screenshot para recap
474
+ await mcp__playwright__browser_take_screenshot({ type: 'png' });
475
+ ```
476
+
477
+ ### Passo 6: Gerar `recap.md`
478
+
479
+ Após TODAS as tasks completadas:
480
+
481
+ ```bash
482
+ npx morph-spec generate recap $ARGUMENTS
483
+ ```
484
+
485
+ > Para o formato completo do recap, veja `references/recap-example.md`
486
+
487
+ ### Passo 7: Atualizar State
488
+
489
+ ```bash
490
+ npx morph-spec state set $ARGUMENTS status done
491
+ npx morph-spec state mark-output $ARGUMENTS recap
492
+ ```
493
+
494
+ ### Passo 8: Revisão Pós-Implementação (obrigatório antes do PR)
495
+
496
+ ```bash
497
+ /post-implementation $ARGUMENTS
498
+ ```
499
+
500
+ Execute o skill `post-implementation` antes de criar o PR. Ele orquestra:
501
+ - Scans automáticos (CRITICAL findings bloqueiam PR)
502
+ - Test suite completo
503
+ - `validate-feature` final
504
+ - Smoke test via Playwright (obrigatório se dev server ativo)
505
+ - Checklist de code review (CRITICAL + HIGH)
506
+ - **`morph-checklist`** — compliance (segurança, SEO, performance, acessibilidade, LGPD)
507
+ - Checkpoint + recap final
508
+
509
+ ### Passo 9: Frontend Review (NEXTJS/FULLSTACK)
510
+
511
+ Se stack for NEXTJS ou FULLSTACK:
512
+
513
+ ```bash
514
+ /frontend-review $ARGUMENTS
515
+ ```
516
+
517
+ Complementa o `post-implementation` com: scan de acessibilidade (static + axe-core runtime),
518
+ screenshots responsivos (mobile/tablet/desktop), e verificação de SEO metadata.
519
+
520
+ ---
521
+
522
+ ## Dispatch Morph-Nativo
523
+
524
+ O morph-spec usa seus próprios agentes e validadores para implementação, dispatch e review.
525
+
526
+ ### Implementação
527
+
528
+ Implementadores são despachados via `dispatch-agents`:
529
+ ```bash
530
+ npx morph-spec dispatch-agents $ARGUMENTS implement
531
+ ```
532
+
533
+ Use o `agentId` de cada grupo como `subagent_type` no Agent tool:
534
+ ```
535
+ Agent(subagent_type=<agentId>, prompt=<conteúdo de prompts/implementer-prompt.md preenchido>)
536
+ ```
537
+
538
+ ### Review (Two-Stage)
539
+
540
+ **Stage 1 — Spec Compliance (obrigatório):**
541
+ ```
542
+ Agent(subagent_type=<tier-4 validator>, prompt=<conteúdo de prompts/spec-reviewer-prompt.md>)
543
+ ```
544
+ Use validadores do `dispatch-agents --mode validate`. Spec compliance DEVE passar antes de prosseguir.
545
+
546
+ **Stage 2 — Code Quality (obrigatório):**
547
+ ```
548
+ Agent(subagent_type=standards-architect, prompt=<conteúdo de prompts/code-quality-reviewer-prompt.md>)
549
+ ```
550
+ Issues `critical` bloqueiam. Issues `important` devem ser corrigidas. `suggestion` é opcional.
551
+
552
+ ### Prompt Templates
553
+
554
+ | Template | Uso |
555
+ |----------|-----|
556
+ | `prompts/implementer-prompt.md` | Dispatch para agentes implementadores |
557
+ | `prompts/spec-reviewer-prompt.md` | Review de compliance com spec |
558
+ | `prompts/code-quality-reviewer-prompt.md` | Review de qualidade de código |
559
+
560
+ ---
561
+
562
+ ## Outputs Gerados
563
+
564
+ - Código fonte implementado (vários arquivos)
565
+ - Testes unitários e de integração
566
+ - `.morph/features/$ARGUMENTS/5-implement/recap.md` — Resumo da implementação
567
+
568
+ ## Critérios de Conclusão
569
+
570
+ - [x] Todas as tasks completadas
571
+ - [x] Build compila sem erros
572
+ - [x] Testes passando
573
+ - [x] Validation pipeline passa
574
+ - [x] `recap.md` gerado
575
+ - [x] State atualizado para `status: done`
576
+ - [x] Checkpoints salvos a cada 3 tasks
577
+ - [x] `/post-implementation` executado sem BLOCKs (smoke test, scans, code review, `morph-checklist`)
578
+
579
+ ---
580
+
581
+ ## Outputs desta Fase
582
+
583
+ <!-- morph:outputs:implement -->
584
+ | Output | Caminho |
585
+ |--------|---------|
586
+ | `recap` | `.morph/features/{feature}/5-implement/recap.md` |
587
+ <!-- /morph:outputs -->
588
+
589
+ ---
590
+
492
591
  Feature completa! Considere criar um PR e rodar `morph-spec generate recap $ARGUMENTS`.