@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,271 +1,308 @@
1
- ---
2
- name: morph:phase-tasks
3
- description: MORPH-SPEC Phase 4 (Tasks). Breaks approved spec into bottom-up ordered implementation tasks (T001...TXXX) with dependencies, checkpoints every 3 tasks, and effort estimates, producing tasks.md. Use after design and clarification phases to create a structured implementation plan before coding starts.
4
- argument-hint: "[feature-name]"
5
- disable-model-invocation: true
6
- user-invocable: false
7
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
8
- cliVersion: "4.9.0"
9
- ---
10
-
11
- # MORPH Tasks - FASE 4
12
-
13
- > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
14
-
15
- Quebre a especificação em tasks executáveis, defina ordem de execução e estabeleça checkpoints.
16
-
17
- ## Pré-requisitos
18
-
19
- - [ ] FASE 3 (Clarify) concluída
20
- - [ ] `spec.md` atualizado com clarificações
21
- - [ ] Todos os edge cases documentados
22
-
23
- ## Ferramentas Recomendadas
24
-
25
- > **Ref:** `framework/skills/level-0-meta/tool-usage-guide/SKILL.md` para guia completo.
26
- > **Ref:** `framework/standards/integration/mcp/mcp-tools.md` para referência MCP.
27
- > **Example:** `references/tasks-example.md` — filled-in tasks.md showing expected granularity and format.
28
- > **Script:** `scripts/validate-tasks.mjs` — validates tasks.md structure, T### IDs, and required fields.
29
-
30
- | Ação | Ferramenta | Alternativa |
31
- |------|------------|-------------|
32
- | Ler spec + contracts + decisions | **Read** todos os outputs | — |
33
- | Analisar complexidade de implementação | **Grep** padrões no código existente | — |
34
- | Contar padrões similares existentes | **Glob** `**/Services/**/*.cs` | — |
35
- | Consultar padrões de implementação | **Context7 MCP** `query_docs()` | **WebSearch** |
36
- | Criar issues no GitHub a partir das tasks | **GitHub MCP** `create_issue()` | **Bash** `gh issue create ...` |
37
- | Renderizar template de tasks | **Bash** `npx morph-spec template render docs/tasks ...` | — |
38
- | Atualizar state com total de tasks | **Bash** `npx morph-spec state set ... tasks.total N` | — |
39
-
40
- **MCPs desta fase:** Context7 (estimar complexidade), GitHub (criar issues).
41
-
42
- **Anti-padrões:**
43
- - ❌ Task agent para quebrar spec simples de 1 domínio (faça diretamente)
44
- - ✅ Task agent para specs multi-domínio (backend + frontend + infra = 3 planners em paralelo)
45
- - ✅ Task agent quando spec tem 20+ requisitos em múltiplos bounded contexts
46
- - ❌ Criar tasks.json sem ler todos os outputs primeiro
47
- - ❌ **(VSA)** Criar tasks separadas para Handler, Validator e Endpoint — um slice = uma task
48
- - ❌ **(VSA)** Usar categorias DDD (`domain`, `application`, `infrastructure`) em projetos VSA
49
- - ❌ **(VSA)** Criar task de "Implementar Service layer" — não existe em VSA
50
-
51
- ---
52
-
53
- ## ✅ PRÉ-VOO OBRIGATÓRIO (antes de iniciar breakdown de tasks)
54
-
55
- ### 1. Ler todos os prerequisitos em PARALELO
56
-
57
- ```
58
- # Uma única chamada, não sequencial:
59
- Read: .morph/features/{feature}/1-design/spec.md
60
- + Read: .morph/features/{feature}/1-design/contracts.cs
61
- + Read: .morph/features/{feature}/1-design/decisions.md
62
- + Read: .morph/features/{feature}/1-design/schema-analysis.md (se existir)
63
- + Read: .morph/config/config.json (architecture.style)
64
- ```
65
-
66
- ### 2. Criar tasks de sessão para visibilidade
67
-
68
- ```
69
- TaskCreate: "Analisar spec e definir tasks" → activeForm: "Analisando spec"
70
- TaskCreate: "Gerar tasks.md" → activeForm: "Gerando tasks.md"
71
- TaskCreate: "Avanço de fase" → activeForm: "Avançando fase"
72
- ```
73
-
74
- > **Nota:** As tasks individuais T001-T00N serão criadas como native tasks durante a fase de implementação (`phase-implement`). Aqui mantemos apenas as 3 tasks de alto nível desta sessão de planejamento.
75
-
76
- ---
77
-
78
- ## Workflow
79
-
80
- ### CHECKPOINT DE ENTRADA: Verificar Pré-requisitos
81
-
82
- **⏸️ PAUSE - Antes de iniciar o breakdown de tasks:**
83
-
84
- - [ ] `spec.md` existe e foi aprovado pelo usuário?
85
- - [ ] `contracts.cs` existe e corresponde ao schema real?
86
- - [ ] `schema-analysis.md` foi validado (se aplicável)?
87
- - [ ] `decisions.md` contém ADRs para todas as escolhas críticas?
88
- - [ ] Design gate (`morph-spec approve $ARGUMENTS design`) foi aprovado?
89
- - [ ] Clarificações (FASE 3) foram resolvidas e spec atualizado?
90
-
91
- **❌ Se alguma checkbox NÃO estiver marcada:**
92
- → Voltar para a fase correspondente e resolver
93
-
94
- **✅ Se TODAS as checkboxes estiverem marcadas:**
95
- → Prosseguir para análise e breakdown
96
-
97
- ```bash
98
- # Verificar estado atual:
99
- npx morph-spec state get $ARGUMENTS
100
- # Verificar se design foi aprovado:
101
- npx morph-spec approval-status $ARGUMENTS
102
- ```
103
-
104
- ---
105
-
106
- ### Passo 0: Detectar Estilo de Arquitetura
107
-
108
- Antes de tudo, determine se o projeto é VSA ou DDD:
109
-
110
- ```bash
111
- cat .morph/config/config.json | grep -A3 '"architecture"'
112
- ```
113
-
114
- **Se `config.architecture.style === "vertical-slice"`** siga o **Passo 0.5 (VSA)** e pule o Passo 0 DDD.
115
- **Caso contrário** siga o **Passo 0.6 (DDD)** abaixo.
116
-
117
- ---
118
-
119
- ### Passo 0.5: Plano de Tasks — VSA
120
-
121
- > Para padrões de tarefas VSA e mapeamento DDD por nível, veja `references/task-planning-patterns.md`
122
-
123
- Leia a seção `## Architecture Style: Vertical Slice` do spec.md para o **VSA Blueprint**:
124
-
125
- ```bash
126
- grep -A30 "## Architecture Style" ".morph/features/$ARGUMENTS/1-design/spec.md"
127
- ```
128
-
129
- Crie uma task por slice (entity → errors → tags → migration → slices CRUD → slices custom → tests). Cada slice = Handler + Validator + Endpoint numa única task. `GetAll` não tem Validator.
130
-
131
- **Após definir tasks VSA, pule direto para o Passo 3 (Dependências).**
132
-
133
- ---
134
-
135
- ### Passo 0.6: Ler Nível de Domínio — DDD
136
-
137
- Leia a seção `## Domain Complexity` do spec.md:
138
-
139
- ```bash
140
- grep -A15 "## Domain Complexity" ".morph/features/$ARGUMENTS/1-design/spec.md"
141
- ```
142
-
143
- > Se a seção não existir, assuma **Nível 1 (CRUD)**.
144
-
145
- Use o nível para restringir categorias (Nível 1: domain→infra→application→presentation→tests; Nível 2: adiciona AggregateRoot, ValueObjects, DomainEvents, CQRS handlers; Nível 3: adiciona BC setup, Integration Events). Ver `references/task-planning-patterns.md` para tabela completa.
146
-
147
- ---
148
-
149
- ### Passo 1: Analisar Spec
150
-
151
- > **VSA:** Se veio do Passo 0.5, o breakdown de tasks já foi definido — use os exemplos gerados como base e pule para o Passo 3 (Dependências).
152
-
153
- Leia `.morph/features/$ARGUMENTS/1-design/spec.md` e identifique:
154
-
155
- 1. **Requisitos funcionais** (FR001, FR002, ...)
156
- 2. **Componentes técnicos** (Entities, Services/Slices, Controllers/Endpoints, Pages)
157
- 3. **Infraestrutura** (Bicep, migrations, configs)
158
- 4. **Testes** (Unit tests, integration tests)
159
-
160
- ### Passo 2: Quebrar em Tasks
161
-
162
- > Para estrutura JSON, categorias e ordem de implementação, veja `references/task-planning-patterns.md`
163
-
164
- Crie tasks no formato **T{NNN}** seguindo bottom-up: domain → infrastructure → application → presentation → tests → infra → docs.
165
-
166
- ### Passo 3: Definir Dependências
167
-
168
- Para cada task, especifique dependências:
169
-
170
- ```json
171
- {
172
- "id": "T005",
173
- "title": "Criar {Nome}Service",
174
- "dependencies": ["T001", "T002"],
175
- "status": "pending"
176
- }
177
- ```
178
-
179
- **Regra:** Task só pode ser executada quando todas as dependências estão `completed`.
180
-
181
- ### Passo 4: Estabelecer Checkpoints
182
-
183
- Defina checkpoints a cada **3 tasks** ou **marcos significativos**:
184
-
185
- ```json
186
- {
187
- "id": "CHECKPOINT_001",
188
- "title": "Domain Layer Completo",
189
- "afterTasks": ["T001", "T002", "T003"],
190
- "validations": [
191
- "Todas as entities criadas",
192
- "Migrations aplicadas",
193
- "Testes de domain passando"
194
- ]
195
- }
196
- ```
197
-
198
- ### Passo 5: Estimar Esforço
199
-
200
- Para cada task, estime tempo em minutos:
201
-
202
- | Complexidade | Tempo Estimado |
203
- |--------------|----------------|
204
- | Trivial (CRUD básico) | 15-30 min |
205
- | Simples (Service, Controller) | 30-60 min |
206
- | Média (Business logic, validações) | 60-120 min |
207
- | Complexa (Integrações, AI) | 120-240 min |
208
-
209
- ### Passo 6: Gerar `tasks.md`
210
-
211
- Crie `.morph/features/$ARGUMENTS/3-tasks/tasks.md` com a estrutura completa de tasks, checkpoints e estimativas.
212
-
213
- ### Passo 7: Incluir Tasks de IaC (se necessário)
214
-
215
- Se houver recursos Azure, adicionar tasks de Bicep e migrations.
216
-
217
- ### Passo 8: Atualizar State
218
-
219
- ```bash
220
- npx morph-spec state set $ARGUMENTS tasks.total {N}
221
- npx morph-spec state mark-output $ARGUMENTS tasks
222
- ```
223
-
224
- ## Outputs Gerados
225
-
226
- - `.morph/features/$ARGUMENTS/3-tasks/tasks.md` - Breakdown completo de tasks
227
-
228
- ## PAUSA OBRIGATÓRIA
229
-
230
- Apresente ao usuário 3 ações sugeridas:
231
-
232
- 1. **Aprovar breakdown e iniciar implementação**
233
- 2. **Repriorizar tasks** - Mudar ordem de execução
234
- 3. **Adicionar/remover tasks** - Ajustar escopo
235
-
236
- ## Critérios de Avanço
237
-
238
- - [x] `tasks.json` criado com todas as tasks
239
- - [x] Tasks categorizadas corretamente
240
- - [x] Dependências mapeadas
241
- - [x] Checkpoints definidos (a cada 3 tasks)
242
- - [x] Esforço estimado por task
243
- - [x] Ordem de execução clara
244
- - [x] Tasks de IaC incluídas (se aplicável)
245
- - [x] State atualizado com total de tasks
246
- - [x] Usuário aprovou breakdown
247
-
248
- ---
249
-
250
- ## Integração com Superpowers
251
-
252
- > Disponível quando o plugin `superpowers` está instalado.
253
-
254
- | Skill | Quando Usar | Invocação |
255
- |-------|-------------|-----------|
256
- | `writing-plans` | Após breakdown de tasks, para planejar sequência de implementação | `Skill(superpowers:writing-plans)` |
257
- | `executing-plans` | Para executar o plano de tasks em sessão separada | `Skill(superpowers:executing-plans)` |
258
-
259
- ---
260
-
261
- ## Outputs desta Fase
262
-
263
- <!-- morph:outputs:tasks -->
264
- | Output | Caminho |
265
- |--------|---------|
266
- | `tasks` | `.morph/features/{feature}/3-tasks/tasks.md` |
267
- <!-- /morph:outputs -->
268
-
269
- ---
270
-
1
+ ---
2
+ name: morph:phase-tasks
3
+ description: MORPH-SPEC Phase 4 (Tasks). Breaks approved spec into bottom-up ordered implementation tasks (T001...TXXX) with dependencies, checkpoints every 3 tasks, and effort estimates, producing tasks.md. Use after design and clarification phases to create a structured implementation plan before coding starts.
4
+ argument-hint: "[feature-name]"
5
+ disable-model-invocation: true
6
+ user-invocable: false
7
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
8
+ cliVersion: "4.10.0"
9
+ ---
10
+
11
+ # MORPH Tasks - FASE 4
12
+
13
+ > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
14
+
15
+ Quebre a especificação em tasks executáveis, defina ordem de execução e estabeleça checkpoints.
16
+
17
+ ## Pré-requisitos
18
+
19
+ - [ ] FASE 3 (Clarify) concluída
20
+ - [ ] `spec.md` atualizado com clarificações
21
+ - [ ] Todos os edge cases documentados
22
+
23
+ ## Ferramentas Recomendadas
24
+
25
+ > **Ref:** `framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md` para guia completo.
26
+ > **Ref:** `framework/standards/integration/mcp/mcp-tools.md` para referência MCP.
27
+ > **Example:** `references/tasks-example.md` — filled-in tasks.md showing expected granularity and format.
28
+ > **Script:** `scripts/validate-tasks.mjs` — validates tasks.md structure, T### IDs, and required fields.
29
+
30
+ | Ação | Ferramenta | Alternativa |
31
+ |------|------------|-------------|
32
+ | Ler spec + contracts + decisions | **Read** todos os outputs | — |
33
+ | Analisar complexidade de implementação | **Grep** padrões no código existente | — |
34
+ | Contar padrões similares existentes | **Glob** `**/Services/**/*.cs` | — |
35
+ | Consultar padrões de implementação | **Context7 MCP** `query_docs()` | **WebSearch** |
36
+ | Criar issues no GitHub a partir das tasks | **GitHub MCP** `create_issue()` | **Bash** `gh issue create ...` |
37
+ | Renderizar template de tasks | **Bash** `npx morph-spec template render docs/tasks ...` | — |
38
+ | Atualizar state com total de tasks | **Bash** `npx morph-spec state set ... tasks.total N` | — |
39
+
40
+ **MCPs desta fase:** Context7 (estimar complexidade), GitHub (criar issues).
41
+
42
+ **Anti-padrões:**
43
+ - ❌ Task agent para quebrar spec simples de 1 domínio (faça diretamente)
44
+ - ✅ Task agent para specs multi-domínio (backend + frontend + infra = 3 planners em paralelo)
45
+ - ✅ Task agent quando spec tem 20+ requisitos em múltiplos bounded contexts
46
+ - ❌ Criar tasks.json sem ler todos os outputs primeiro
47
+ - ❌ **(VSA)** Criar tasks separadas para Handler, Validator e Endpoint — um slice = uma task
48
+ - ❌ **(VSA)** Usar categorias DDD (`domain`, `application`, `infrastructure`) em projetos VSA
49
+ - ❌ **(VSA)** Criar task de "Implementar Service layer" — não existe em VSA
50
+
51
+ ---
52
+
53
+ ## ✅ PRÉ-VOO OBRIGATÓRIO (antes de iniciar breakdown de tasks)
54
+
55
+ ### 0. Garantir fase tasks
56
+
57
+ ```bash
58
+ npx morph-spec state get $ARGUMENTS
59
+ ```
60
+
61
+ Verifique o campo `"phase"` no output:
62
+
63
+ **Se `"phase": "tasks"`** ✅ fase correta, prossiga.
64
+
65
+ **Se `"phase": "clarify"`** → execute em sequência:
66
+ 1. `npx morph-spec state mark-output $ARGUMENTS clarifications`
67
+ 2. `npx morph-spec phase advance $ARGUMENTS` (→ tasks)
68
+
69
+ **Qualquer outro valor** não prossiga estado inconsistente, reporte ao usuário.
70
+
71
+ > **Regra:** Nunca escreva em `4-tasks/` enquanto a fase não for `tasks`. O hook bloqueará a escrita.
72
+
73
+ ---
74
+
75
+ ### 1. Ler todos os prerequisitos em PARALELO
76
+
77
+ ```
78
+ # Uma única chamada, não sequencial:
79
+ Read: .morph/features/{feature}/1-design/spec.md
80
+ + Read: .morph/features/{feature}/1-design/contracts.cs
81
+ + Read: .morph/features/{feature}/1-design/decisions.md
82
+ + Read: .morph/features/{feature}/1-design/schema-analysis.md (se existir)
83
+ + Read: .morph/config/config.json (→ architecture.style)
84
+ ```
85
+
86
+ ### 2. Criar tasks de sessão para visibilidade
87
+
88
+ ```
89
+ TaskCreate: "Analisar spec e definir tasks" → activeForm: "Analisando spec"
90
+ TaskCreate: "Gerar tasks.md" → activeForm: "Gerando tasks.md"
91
+ TaskCreate: "Avanço de fase" → activeForm: "Avançando fase"
92
+ ```
93
+
94
+ > **Nota:** As tasks individuais T001-T00N serão criadas como native tasks durante a fase de implementação (`phase-implement`). Aqui mantemos apenas as 3 tasks de alto nível desta sessão de planejamento.
95
+
96
+ ---
97
+
98
+ ## Workflow
99
+
100
+ ### CHECKPOINT DE ENTRADA: Verificar Pré-requisitos
101
+
102
+ **⏸️ PAUSE - Antes de iniciar o breakdown de tasks:**
103
+
104
+ - [ ] `spec.md` existe e foi aprovado pelo usuário?
105
+ - [ ] `contracts.cs` existe e corresponde ao schema real?
106
+ - [ ] `schema-analysis.md` foi validado (se aplicável)?
107
+ - [ ] `decisions.md` contém ADRs para todas as escolhas críticas?
108
+ - [ ] Design gate (`morph-spec approve $ARGUMENTS design`) foi aprovado?
109
+ - [ ] Clarificações (FASE 3) foram resolvidas e spec atualizado?
110
+
111
+ **❌ Se alguma checkbox NÃO estiver marcada:**
112
+ → Voltar para a fase correspondente e resolver
113
+
114
+ **✅ Se TODAS as checkboxes estiverem marcadas:**
115
+ Prosseguir para análise e breakdown
116
+
117
+ ```bash
118
+ # Verificar estado atual:
119
+ npx morph-spec state get $ARGUMENTS
120
+ # Verificar se design foi aprovado:
121
+ npx morph-spec approval-status $ARGUMENTS
122
+ ```
123
+
124
+ ---
125
+
126
+ ### Passo 0: Detectar Estilo de Arquitetura
127
+
128
+ Antes de tudo, determine se o projeto é VSA ou DDD:
129
+
130
+ ```bash
131
+ cat .morph/config/config.json | grep -A3 '"architecture"'
132
+ ```
133
+
134
+ **Se `config.architecture.style === "vertical-slice"`** → siga o **Passo 0.5 (VSA)** e pule o Passo 0 DDD.
135
+ **Caso contrário** → siga o **Passo 0.6 (DDD)** abaixo.
136
+
137
+ ---
138
+
139
+ ### Passo 0.5: Plano de Tasks — VSA
140
+
141
+ > Para padrões de tarefas VSA e mapeamento DDD por nível, veja `references/task-planning-patterns.md`
142
+
143
+ Leia a seção `## Architecture Style: Vertical Slice` do spec.md para o **VSA Blueprint**:
144
+
145
+ ```bash
146
+ grep -A30 "## Architecture Style" ".morph/features/$ARGUMENTS/1-design/spec.md"
147
+ ```
148
+
149
+ Crie uma task por slice (entity → errors → tags → migration → slices CRUD → slices custom → tests). Cada slice = Handler + Validator + Endpoint numa única task. `GetAll` não tem Validator.
150
+
151
+ **Após definir tasks VSA, pule direto para o Passo 3 (Dependências).**
152
+
153
+ ---
154
+
155
+ ### Passo 0.6: Ler Nível de Domínio — DDD
156
+
157
+ Leia a seção `## Domain Complexity` do spec.md:
158
+
159
+ ```bash
160
+ grep -A15 "## Domain Complexity" ".morph/features/$ARGUMENTS/1-design/spec.md"
161
+ ```
162
+
163
+ > Se a seção não existir, assuma **Nível 1 (CRUD)**.
164
+
165
+ Use o nível para restringir categorias (Nível 1: domain→infra→application→presentation→tests; Nível 2: adiciona AggregateRoot, ValueObjects, DomainEvents, CQRS handlers; Nível 3: adiciona BC setup, Integration Events). Ver `references/task-planning-patterns.md` para tabela completa.
166
+
167
+ ---
168
+
169
+ ### Passo 1: Analisar Spec
170
+
171
+ > **VSA:** Se veio do Passo 0.5, o breakdown de tasks já foi definido — use os exemplos gerados como base e pule para o Passo 3 (Dependências).
172
+
173
+ Leia `.morph/features/$ARGUMENTS/1-design/spec.md` e identifique:
174
+
175
+ 1. **Requisitos funcionais** (FR001, FR002, ...)
176
+ 2. **Componentes técnicos** (Entities, Services/Slices, Controllers/Endpoints, Pages)
177
+ 3. **Infraestrutura** (Bicep, migrations, configs)
178
+ 4. **Testes** (Unit tests, integration tests)
179
+
180
+ ### Passo 2: Quebrar em Tasks
181
+
182
+ > Para estrutura JSON, categorias e ordem de implementação, veja `references/task-planning-patterns.md`
183
+
184
+ Crie tasks no formato **T{NNN}** seguindo bottom-up: domain → infrastructure → application → presentation → tests → infra → docs.
185
+
186
+ ### Passo 3: Definir Dependências
187
+
188
+ Para cada task, especifique dependências:
189
+
190
+ ```json
191
+ {
192
+ "id": "T005",
193
+ "title": "Criar {Nome}Service",
194
+ "dependencies": ["T001", "T002"],
195
+ "status": "pending"
196
+ }
197
+ ```
198
+
199
+ **Regra:** Task só pode ser executada quando todas as dependências estão `completed`.
200
+
201
+ ### Passo 4: Estabelecer Checkpoints
202
+
203
+ Defina checkpoints a cada **3 tasks** ou **marcos significativos**:
204
+
205
+ ```json
206
+ {
207
+ "id": "CHECKPOINT_001",
208
+ "title": "Domain Layer Completo",
209
+ "afterTasks": ["T001", "T002", "T003"],
210
+ "validations": [
211
+ "Todas as entities criadas",
212
+ "Migrations aplicadas",
213
+ "Testes de domain passando"
214
+ ]
215
+ }
216
+ ```
217
+
218
+ ### Passo 5: Estimar Esforço
219
+
220
+ Para cada task, estime tempo em minutos:
221
+
222
+ | Complexidade | Tempo Estimado |
223
+ |--------------|----------------|
224
+ | Trivial (CRUD básico) | 15-30 min |
225
+ | Simples (Service, Controller) | 30-60 min |
226
+ | Média (Business logic, validações) | 60-120 min |
227
+ | Complexa (Integrações, AI) | 120-240 min |
228
+
229
+ ### Passo 6: Gerar `tasks.md`
230
+
231
+ Crie `.morph/features/$ARGUMENTS/4-tasks/tasks.md` com a estrutura completa de tasks, checkpoints e estimativas.
232
+
233
+ ### Passo 7: Incluir Tasks de IaC (se necessário)
234
+
235
+ Se houver recursos Azure, adicionar tasks de Bicep e migrations.
236
+
237
+ ### Passo 8: Atualizar State
238
+
239
+ ```bash
240
+ npx morph-spec state set $ARGUMENTS tasks.total {N}
241
+ npx morph-spec state mark-output $ARGUMENTS tasks
242
+ ```
243
+
244
+ ## Outputs Gerados
245
+
246
+ - `.morph/features/$ARGUMENTS/4-tasks/tasks.md` - Breakdown completo de tasks
247
+
248
+ ## PAUSA OBRIGATÓRIA
249
+
250
+ Use `AskUserQuestion` para capturar aprovação explícita antes de avançar:
251
+
252
+ ```json
253
+ {
254
+ "questions": [{
255
+ "header": "Aprovação",
256
+ "question": "Tasks geradas. Aprovar para iniciar implementação?",
257
+ "multiSelect": false,
258
+ "options": [
259
+ { "label": "Aprovar e implementar", "description": "Avançar para fase de implementação" },
260
+ { "label": "Tenho feedback", "description": "Digite o que deseja mudar no campo abaixo (Other)" }
261
+ ]
262
+ }]
263
+ }
264
+ ```
265
+
266
+ - **"Aprovar e implementar"**
267
+ ```bash
268
+ npx morph-spec approve $ARGUMENTS tasks
269
+ npx morph-spec phase advance $ARGUMENTS
270
+ ```
271
+ - **"Tenho feedback" ou "Other"** → aplique o feedback recebido e repita esta PAUSA
272
+
273
+ ## Critérios de Avanço
274
+
275
+ - [x] `tasks.json` criado com todas as tasks
276
+ - [x] Tasks categorizadas corretamente
277
+ - [x] Dependências mapeadas
278
+ - [x] Checkpoints definidos (a cada 3 tasks)
279
+ - [x] Esforço estimado por task
280
+ - [x] Ordem de execução clara
281
+ - [x] Tasks de IaC incluídas (se aplicável)
282
+ - [x] State atualizado com total de tasks
283
+ - [x] Usuário aprovou breakdown
284
+
285
+ ---
286
+
287
+ ## Integração com Superpowers
288
+
289
+ > Disponível quando o plugin `superpowers` está instalado.
290
+
291
+ | Skill | Quando Usar | Invocação |
292
+ |-------|-------------|-----------|
293
+ | `writing-plans` | Após breakdown de tasks, para planejar sequência de implementação | `Skill(superpowers:writing-plans)` |
294
+ | `executing-plans` | Para executar o plano de tasks em sessão separada | `Skill(superpowers:executing-plans)` |
295
+
296
+ ---
297
+
298
+ ## Outputs desta Fase
299
+
300
+ <!-- morph:outputs:tasks -->
301
+ | Output | Caminho |
302
+ |--------|---------|
303
+ | `tasks` | `.morph/features/{feature}/4-tasks/tasks.md` |
304
+ <!-- /morph:outputs -->
305
+
306
+ ---
307
+
271
308
  Após aprovação: "Planejamento completo! Execute `/morph-apply $ARGUMENTS` para iniciar implementação."
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Usage:
9
9
  * node validate-tasks.mjs <tasks-file>
10
- * node validate-tasks.mjs .morph/features/my-feature/3-tasks/tasks.md
10
+ * node validate-tasks.mjs .morph/features/my-feature/4-tasks/tasks.md
11
11
  *
12
12
  * Checks:
13
13
  * - Summary table exists with T### IDs and valid statuses
@@ -57,9 +57,9 @@ if (summaryTasks.length === 0) {
57
57
  errors.push('No summary table found — expected rows matching | T### | Type | Title | Status |');
58
58
  }
59
59
 
60
- // 2. Parse task headers (### T001: Title)
60
+ // 2. Parse task headers (### T001: Title or ### T001 — Title or ### T001 - Title)
61
61
  const taskHeaders = lines
62
- .map((l, i) => ({ line: i + 1, match: l.match(/^###\s+(T\d{3}):\s+(.+)/) }))
62
+ .map((l, i) => ({ line: i + 1, match: l.match(/^###\s+(T\d{3})\s*[—–:\-]\s+(.+)/) }))
63
63
  .filter(r => r.match);
64
64
 
65
65
  // Check sequential IDs