@polymorphism-tech/morph-spec 4.9.0 → 4.10.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 (164) 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 +35 -98
  8. package/framework/agents/backend/api-designer.md +3 -0
  9. package/framework/agents/backend/dotnet-senior.md +3 -0
  10. package/framework/agents/backend/ef-modeler.md +2 -0
  11. package/framework/agents/backend/hangfire-orchestrator.md +2 -0
  12. package/framework/agents/backend/ms-agent-expert.md +2 -0
  13. package/framework/agents/frontend/blazor-builder.md +2 -0
  14. package/framework/agents/frontend/nextjs-expert.md +2 -0
  15. package/framework/agents/infrastructure/azure-architect.md +2 -0
  16. package/framework/agents/infrastructure/azure-deploy-specialist.md +2 -0
  17. package/framework/agents/infrastructure/bicep-architect.md +2 -0
  18. package/framework/agents/infrastructure/container-specialist.md +2 -0
  19. package/framework/agents/infrastructure/devops-engineer.md +3 -0
  20. package/framework/agents/infrastructure/infra-architect.md +3 -0
  21. package/framework/agents/integrations/asaas-financial.md +2 -0
  22. package/framework/agents/integrations/azure-identity.md +2 -0
  23. package/framework/agents/integrations/clerk-auth.md +3 -0
  24. package/framework/agents/integrations/hangfire-integration.md +2 -0
  25. package/framework/agents/integrations/resend-email.md +2 -0
  26. package/framework/agents.json +37 -7
  27. package/framework/commands/commit.md +166 -0
  28. package/framework/commands/morph-apply.md +156 -155
  29. package/framework/commands/morph-archive.md +33 -27
  30. package/framework/commands/morph-infra.md +83 -77
  31. package/framework/commands/morph-preflight.md +97 -55
  32. package/framework/commands/morph-proposal.md +131 -58
  33. package/framework/commands/morph-status.md +36 -30
  34. package/framework/commands/morph-troubleshoot.md +68 -59
  35. package/framework/hooks/claude-code/notification/approval-reminder.js +3 -2
  36. package/framework/hooks/claude-code/post-tool-use/dispatch.js +154 -31
  37. package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +7 -84
  38. package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +8 -17
  39. package/framework/hooks/claude-code/pre-compact/save-morph-context.js +16 -3
  40. package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +4 -3
  41. package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +3 -2
  42. package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +60 -0
  43. package/framework/hooks/claude-code/session-start/inject-morph-context.js +55 -2
  44. package/framework/hooks/claude-code/session-start/post-compact-restore.js +41 -0
  45. package/framework/hooks/claude-code/stop/validate-completion.js +2 -15
  46. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +23 -5
  47. package/framework/hooks/shared/compact-restore.js +100 -0
  48. package/framework/hooks/shared/dispatch-helpers.js +116 -0
  49. package/framework/hooks/shared/phase-utils.js +9 -5
  50. package/framework/hooks/shared/state-reader.js +27 -3
  51. package/framework/phases.json +30 -7
  52. package/framework/rules/csharp-standards.md +3 -0
  53. package/framework/rules/frontend-standards.md +2 -0
  54. package/framework/rules/infrastructure-standards.md +3 -0
  55. package/framework/rules/morph-workflow.md +143 -86
  56. package/framework/rules/nextjs-standards.md +2 -0
  57. package/framework/rules/testing-standards.md +3 -0
  58. package/framework/skills/level-0-meta/mcp-registry.json +86 -51
  59. package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +139 -0
  60. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +42 -19
  61. package/framework/skills/level-0-meta/{code-review → morph-code-review}/SKILL.md +8 -5
  62. package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/SKILL.md +8 -6
  63. package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +362 -0
  64. package/framework/skills/level-0-meta/morph-init/SKILL.md +114 -20
  65. package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +362 -0
  66. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +95 -87
  67. package/framework/skills/level-0-meta/{simulation-checklist → morph-simulation-checklist}/SKILL.md +24 -0
  68. package/framework/skills/level-0-meta/{tool-usage-guide → morph-tool-usage-guide}/SKILL.md +43 -43
  69. package/framework/skills/level-0-meta/{tool-usage-guide → morph-tool-usage-guide}/references/tools-per-phase.md +1 -2
  70. package/framework/skills/level-0-meta/{verification-before-completion → morph-verification-before-completion}/SKILL.md +23 -12
  71. package/framework/skills/level-0-meta/{verification-before-completion → morph-verification-before-completion}/scripts/check-phase-outputs.mjs +2 -2
  72. package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +247 -0
  73. package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +270 -0
  74. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +499 -0
  75. package/framework/skills/level-1-workflows/morph-phase-implement/.morph/logs/activity.json +38 -0
  76. package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +472 -0
  77. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +50 -0
  78. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +45 -0
  79. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +47 -0
  80. package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +246 -0
  81. package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +238 -0
  82. package/framework/skills/level-1-workflows/morph-phase-tasks/.morph/logs/activity.json +14 -0
  83. package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +312 -0
  84. package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/scripts/validate-tasks.mjs +3 -3
  85. package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +324 -0
  86. package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +146 -0
  87. package/framework/standards/integration/mcp/mcp-tools.md +25 -7
  88. package/framework/templates/docs/onboarding.md +2 -2
  89. package/package.json +3 -4
  90. package/src/commands/agents/dispatch-agents.js +50 -3
  91. package/src/commands/mcp/mcp-setup.js +39 -2
  92. package/src/commands/phase/phase-reset.js +74 -0
  93. package/src/commands/project/doctor.js +26 -7
  94. package/src/commands/project/update.js +4 -4
  95. package/src/commands/scope/escalate.js +215 -0
  96. package/src/commands/state/advance-phase.js +27 -53
  97. package/src/commands/state/state.js +1 -1
  98. package/src/commands/task/expand.js +100 -0
  99. package/src/core/paths/output-schema.js +4 -3
  100. package/src/core/state/phase-state-machine.js +7 -4
  101. package/src/core/state/state-manager.js +4 -3
  102. package/src/lib/detectors/claude-config-detector.js +93 -347
  103. package/src/lib/detectors/design-system-detector.js +189 -189
  104. package/src/lib/detectors/index.js +155 -57
  105. package/src/lib/generators/context-generator.js +2 -2
  106. package/src/lib/installers/mcp-installer.js +37 -5
  107. package/src/lib/phase-chain/phase-validator.js +22 -16
  108. package/src/lib/scope/impact-analyzer.js +106 -0
  109. package/src/lib/stack-filter.js +58 -0
  110. package/src/lib/tasks/task-parser.js +1 -1
  111. package/src/lib/validators/shared/emit-validator-dispatch.js +64 -0
  112. package/src/scripts/setup-infra.js +68 -18
  113. package/src/utils/agents-installer.js +51 -17
  114. package/src/utils/claude-md-injector.js +90 -0
  115. package/src/utils/file-copier.js +0 -1
  116. package/src/utils/hooks-installer.js +16 -5
  117. package/src/utils/skills-installer.js +67 -7
  118. package/CLAUDE.md +0 -98
  119. package/framework/memory/patterns-learned.md +0 -766
  120. package/framework/skills/level-0-meta/brainstorming/SKILL.md +0 -137
  121. package/framework/skills/level-0-meta/frontend-review/SKILL.md +0 -359
  122. package/framework/skills/level-0-meta/post-implementation/SKILL.md +0 -362
  123. package/framework/skills/level-0-meta/terminal-title/SKILL.md +0 -61
  124. package/framework/skills/level-0-meta/terminal-title/scripts/set_title.sh +0 -65
  125. package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +0 -216
  126. package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +0 -252
  127. package/framework/skills/level-1-workflows/phase-design/SKILL.md +0 -383
  128. package/framework/skills/level-1-workflows/phase-implement/SKILL.md +0 -492
  129. package/framework/skills/level-1-workflows/phase-setup/SKILL.md +0 -195
  130. package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +0 -271
  131. package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +0 -286
  132. package/src/commands/project/index.js +0 -8
  133. package/src/core/index.js +0 -10
  134. package/src/core/state/index.js +0 -8
  135. package/src/core/templates/index.js +0 -9
  136. package/src/core/templates/template-data-sources.js +0 -325
  137. package/src/core/workflows/index.js +0 -7
  138. package/src/lib/detectors/config-detector.js +0 -223
  139. package/src/lib/detectors/standards-generator.js +0 -335
  140. package/src/lib/detectors/structure-detector.js +0 -275
  141. package/src/lib/monitor/agent-resolver.js +0 -144
  142. package/src/lib/monitor/renderer.js +0 -230
  143. package/src/lib/orchestration/index.js +0 -7
  144. package/src/lib/orchestration/team-orchestrator.js +0 -404
  145. package/src/sanitizer/context-sanitizer.js +0 -221
  146. package/src/sanitizer/patterns.js +0 -163
  147. package/src/writer/file-writer.js +0 -86
  148. /package/framework/skills/level-0-meta/{brainstorming → morph-brainstorming}/references/proposal-example.md +0 -0
  149. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/references/review-example.md +0 -0
  150. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/references/review-guidelines.md +0 -0
  151. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/scripts/scan-csharp.mjs +0 -0
  152. /package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/references/review-example-nextjs.md +0 -0
  153. /package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/scripts/scan-nextjs.mjs +0 -0
  154. /package/framework/skills/level-0-meta/{frontend-review → morph-frontend-review}/scripts/scan-accessibility.mjs +0 -0
  155. /package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/scripts/detect-dev-server.mjs +0 -0
  156. /package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/scripts/detect-stack.mjs +0 -0
  157. /package/framework/skills/level-1-workflows/{phase-clarify → morph-phase-clarify}/references/clarifications-example.md +0 -0
  158. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/architecture-analysis-guide.md +0 -0
  159. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/spec-authoring-guide.md +0 -0
  160. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/spec-example.md +0 -0
  161. /package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/references/recap-example.md +0 -0
  162. /package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/references/vsa-implementation-guide.md +0 -0
  163. /package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/references/task-planning-patterns.md +0 -0
  164. /package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/references/tasks-example.md +0 -0
@@ -1,492 +0,0 @@
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.cs — auto-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 → vá 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)` só 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
-
492
- Feature completa! Considere criar um PR e rodar `morph-spec generate recap $ARGUMENTS`.
@@ -1,195 +0,0 @@
1
- ---
2
- name: morph:phase-setup
3
- description: MORPH-SPEC Phase 1 (Setup). Reads project context, detects tech stack, activates relevant agents by reading agents.json, and confirms the feature environment. Use at the start of every MORPH-SPEC feature workflow after proposal approval to load standards and initialize the context.
4
- argument-hint: "[feature-name]"
5
- user-invocable: false
6
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
7
- cliVersion: "4.9.0"
8
- ---
9
-
10
- # MORPH Setup - FASE 1
11
-
12
- > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
13
-
14
- Inicialize o contexto e prepare o ambiente para uma feature aprovada.
15
-
16
- ## Pré-requisitos
17
-
18
- - [ ] Feature tem `proposal.md` criado (FASE 0 concluída)
19
- - [ ] Proposal foi aprovado pelo usuário
20
- - [ ] Agentes foram detectados e registrados no state
21
-
22
- ## Ferramentas Recomendadas
23
-
24
- > **Ref:** `framework/skills/level-0-meta/tool-usage-guide/SKILL.md` para guia completo.
25
- > **Ref:** `framework/standards/integration/mcp/mcp-tools.md` para referência MCP.
26
-
27
- | Ação | Ferramenta | Alternativa |
28
- |------|------------|-------------|
29
- | Verificar state | **Bash** `npx morph-spec state get` | — |
30
- | Detectar agentes + standards | **Read** `.morph/framework/agents.json` → match keywords → **Bash** `npx morph-spec state add-agent` | — |
31
- | Ler contexto do projeto | **Read** `.morph/context/README.md` | — |
32
- | Ler config | **Read** `.morph/config/config.json` | — |
33
- | Detectar arquitetura VSA | **Read** `.morph/config/config.json` → verificar `config.architecture.style` | — |
34
- | Escanear estrutura do projeto | **Glob** `src/**/*.{ts,tsx,cs}` | — |
35
- | Metadata do repositório | **GitHub MCP** `get_repo()` | **Bash** `gh repo view --json` |
36
- | Atualizar state | **Bash** `npx morph-spec state set` | — |
37
-
38
- **MCPs desta fase:** GitHub (opcional — metadata do repo).
39
-
40
- **Anti-padrões:**
41
- - ❌ Chamar `detect-agents` CLI (não existe — leia `.morph/framework/agents.json` diretamente)
42
- - ❌ Task agent para o keyword matching inline de stack detection (rápido o suficiente direto)
43
- - ❌ WebSearch para info local do projeto (use Read/Glob)
44
-
45
- ---
46
-
47
- ## Workflow
48
-
49
- ### CHECKPOINT DE ENTRADA: Verificar Pré-requisitos
50
-
51
- **⏸️ Antes de prosseguir com setup:**
52
-
53
- - [ ] `proposal.md` existe em `.morph/features/$ARGUMENTS/`?
54
- - [ ] Proposal foi apresentado e aprovado pelo usuário?
55
- - [ ] Feature foi registrada no state?
56
-
57
- **❌ Se alguma checkbox NÃO estiver marcada:**
58
- → Voltar para FASE 0 (Proposal)
59
-
60
- ---
61
-
62
- ### Passo 1: Verificar State
63
-
64
- Confirme que a feature existe no state:
65
-
66
- ```bash
67
- npx morph-spec state get $ARGUMENTS
68
- ```
69
-
70
- Se não existir, volte para FASE 0 (proposal).
71
-
72
- ### Passo 2: Detectar Agentes e Carregar Standards
73
-
74
- #### Passo 2.0: Detectar Estilo de Arquitetura e Ativar Arquiteto
75
-
76
- **Leia `.morph/config/config.json` e verifique `config.architecture.style`:**
77
-
78
- | Valor | Ação |
79
- |-------|------|
80
- | `"vertical-slice"` | `npx morph-spec state add-agent $ARGUMENTS vsa-architect` |
81
- | ausente / qualquer outro | `npx morph-spec state add-agent $ARGUMENTS domain-architect` |
82
-
83
- **Prossiga com keyword detection normal para os demais agentes** (ef-modeler, api-designer, etc.).
84
- O arquiteto já foi adicionado acima — **ignore-o no keyword matching** para evitar duplicação.
85
-
86
- #### Passo 2.1: Keyword Detection
87
-
88
- **Leia agents.json diretamente e faça o match de keywords** (exceto `domain-architect` e `vsa-architect` que já foram tratados no Passo 2.0):
89
-
90
- 1. Leia `.morph/framework/agents.json`
91
- 2. Extraia título e descrição da feature de `0-proposal/proposal.md`
92
- 3. Para cada agente no JSON (exceto arquitetos), verifique se alguma keyword do campo `keywords[]` aparece no texto da proposta
93
- 4. Adicione os agentes correspondentes ao state:
94
-
95
- ```bash
96
- npx morph-spec state add-agent $ARGUMENTS {agent-id}
97
- # Exemplo:
98
- npx morph-spec state add-agent $ARGUMENTS dotnet-senior
99
- npx morph-spec state add-agent $ARGUMENTS ef-modeler
100
- ```
101
-
102
- **Para carregar standards dos agentes detectados:**
103
- - Para cada agente ativo, leia os standards referenciados pelo campo `standards[]` em `agents.json`
104
- - Os arquivos de standard ficam em `.morph/framework/standards/{path}`
105
-
106
- **Standards resolution order** (manual):
107
- 1. `.morph/context/*.md` — project overrides (maior prioridade)
108
- 2. `.morph/framework/standards/` — standards instalados pelo morph-spec
109
- 3. `framework/standards/` — standards do pacote npm (fallback)
110
-
111
- **Contexto geral** (leia sempre):
112
- - `.morph/context/README.md` — Overview do projeto
113
- - `.morph/config/config.json` — Configurações
114
-
115
- ### Passo 3: Confirmar Stack
116
-
117
- Baseado no proposal e contexto, confirme:
118
- - Stack tecnológica (Blazor Server, Next.js, etc.)
119
- - Padrões arquiteturais aplicáveis
120
- - Componentes reutilizáveis existentes
121
-
122
- ### Passo 4: Listar Agentes Ativos e Preview de Dispatch
123
-
124
- Mostre os agentes detectados no proposal:
125
-
126
- ```bash
127
- npx morph-spec state get $ARGUMENTS
128
- ```
129
-
130
- Parse o JSON e liste os `activeAgents` com seus emojis e responsabilidades (consulte `.morph/framework/agents.json`).
131
-
132
- **Se houver 2+ agentes especialistas ativos**, mostre o plano de dispatch para as próximas fases:
133
-
134
- ```bash
135
- npx morph-spec dispatch-agents $ARGUMENTS design
136
- ```
137
-
138
- Isso informa quais agentes serão disparados em paralelo na fase de design e quais tasks eles executarão.
139
-
140
- > **Mapeamento importante:** `agents[].id` do dispatch config = `subagent_type` no `Agent` tool.
141
- > Exemplo: `id: "nextjs-expert"` → `Agent(subagent_type=nextjs-expert, prompt=agent.taskPrompt)`.
142
- > Cada `id` corresponde ao campo `name:` no frontmatter do arquivo em `.claude/agents/`.
143
-
144
- ### Passo 5: Atualizar State
145
-
146
- Marque a feature como na fase SETUP:
147
-
148
- ```bash
149
- npx morph-spec state set $ARGUMENTS status in_progress
150
- ```
151
-
152
- ## Outputs
153
-
154
- **Apresente ao usuário:**
155
-
156
- 1. **Contexto carregado**:
157
- - Nome do projeto
158
- - Stack confirmado
159
- - Standards aplicáveis
160
-
161
- 2. **Agentes ativos**:
162
- - Lista de agentes com emojis
163
- - Responsabilidades de cada um
164
-
165
- ## Critérios de Avanço
166
-
167
- - [x] Contexto do projeto carregado
168
- - [x] Standards identificados (framework + project)
169
- - [x] Stack confirmado
170
- - [x] Agentes listados
171
- - [x] State atualizado para phase: setup
172
-
173
- ---
174
-
175
- ## Integração com Superpowers
176
-
177
- > Disponível quando o plugin `superpowers` está instalado.
178
-
179
- | Skill | Quando Usar | Invocação |
180
- |-------|-------------|-----------|
181
- | `using-git-worktrees` | Se feature requer isolamento do workspace | `Skill(superpowers:using-git-worktrees)` |
182
-
183
- ---
184
-
185
- ## Outputs desta Fase
186
-
187
- <!-- morph:outputs:proposal -->
188
- | Output | Caminho |
189
- |--------|---------|
190
- | `proposal` | `.morph/features/{feature}/0-proposal/proposal.md` |
191
- <!-- /morph:outputs -->
192
-
193
- ---
194
-
195
- Continuar automaticamente para próxima fase (UI/UX se detectado, ou Design).