@polymorphism-tech/morph-spec 4.8.19 → 4.9.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.
- package/CLAUDE.md +21 -0
- package/README.md +2 -2
- package/bin/morph-spec.js +15 -56
- package/bin/task-manager.js +115 -14
- package/bin/validate.js +67 -33
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +201 -203
- package/docs/QUICKSTART.md +2 -2
- package/framework/CLAUDE.md +21 -0
- package/framework/agents.json +698 -176
- package/framework/hooks/claude-code/post-tool-use/context-refresh.js +1 -1
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +2 -2
- package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +155 -0
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +1 -1
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +71 -2
- package/framework/hooks/claude-code/statusline.py +76 -30
- package/framework/hooks/claude-code/user-prompt/set-terminal-title.js +14 -6
- package/framework/hooks/shared/activity-logger.js +0 -24
- package/framework/hooks/shared/phase-utils.js +3 -0
- package/framework/hooks/shared/skill-reminder-helpers.js +79 -0
- package/framework/hooks/shared/stale-task-reset.js +57 -0
- package/framework/hooks/shared/state-reader.js +2 -2
- package/framework/hooks/shared/worktree-helpers.js +53 -0
- package/framework/phases.json +40 -8
- package/framework/skills/level-0-meta/brainstorming/SKILL.md +1 -1
- package/framework/skills/level-0-meta/code-review/SKILL.md +1 -1
- package/framework/skills/level-0-meta/code-review-nextjs/SKILL.md +163 -163
- package/framework/skills/level-0-meta/frontend-review/SKILL.md +5 -5
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
- package/framework/skills/level-0-meta/morph-init/SKILL.md +5 -5
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +4 -4
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +1 -1
- package/framework/skills/level-0-meta/post-implementation/SKILL.md +59 -12
- package/framework/skills/level-0-meta/simulation-checklist/SKILL.md +1 -1
- package/framework/skills/level-0-meta/terminal-title/SKILL.md +1 -1
- package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +1 -1
- package/framework/skills/level-0-meta/tool-usage-guide/references/tools-per-phase.md +6 -5
- package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +215 -189
- package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +251 -251
- package/framework/skills/level-1-workflows/phase-design/SKILL.md +382 -365
- package/framework/skills/level-1-workflows/phase-implement/SKILL.md +492 -450
- package/framework/skills/level-1-workflows/phase-setup/SKILL.md +194 -190
- package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +270 -270
- package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +285 -285
- package/framework/standards/STANDARDS.json +640 -88
- package/framework/standards/infrastructure/vercel/vercel-database.md +106 -0
- package/framework/templates/REGISTRY.json +1825 -1909
- package/framework/templates/context/CONTEXT-FEATURE.md +276 -276
- package/framework/templates/docs/onboarding.md +1 -5
- package/package.json +2 -6
- package/src/commands/agents/dispatch-agents.js +55 -4
- package/src/commands/project/doctor.js +16 -47
- package/src/commands/project/init.js +1 -1
- package/src/commands/project/status.js +2 -2
- package/src/commands/project/update.js +381 -365
- package/src/commands/project/worktree.js +154 -0
- package/src/commands/state/advance-phase.js +120 -30
- package/src/commands/state/approve.js +2 -2
- package/src/commands/state/index.js +7 -8
- package/src/commands/state/phase-runner.js +1 -1
- package/src/commands/state/state.js +61 -6
- package/src/commands/tasks/task.js +78 -99
- package/src/commands/templates/template-render.js +93 -173
- package/src/commands/trust/trust.js +26 -21
- package/src/core/paths/output-schema.js +15 -0
- package/src/core/state/state-manager.js +28 -54
- package/src/core/workflows/workflow-detector.js +9 -87
- package/src/lib/phase-chain/phase-validator.js +330 -0
- package/src/lib/stack/stack-profile.js +88 -0
- package/src/lib/tasks/task-classifier.js +16 -0
- package/src/lib/tasks/test-runner.js +77 -0
- package/src/lib/trust/trust-manager.js +32 -144
- package/src/lib/validators/spec-validator.js +58 -4
- package/src/lib/validators/validation-runner.js +23 -11
- package/src/scripts/setup-infra.js +240 -224
- package/src/utils/agents-installer.js +2 -2
- package/src/utils/banner.js +1 -1
- package/src/utils/claude-settings-manager.js +1 -1
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +258 -8
- package/framework/hooks/dev/check-sync-health.js +0 -117
- package/framework/hooks/dev/guard-version-numbers.js +0 -57
- package/framework/hooks/dev/sync-standards-registry.js +0 -60
- package/framework/hooks/dev/sync-template-registry.js +0 -60
- package/framework/hooks/dev/validate-skill-format.js +0 -70
- package/framework/hooks/dev/validate-standard-format.js +0 -73
- package/framework/templates/meta-prompts/hops/hop-retry.md +0 -78
- package/framework/templates/meta-prompts/hops/hop-validation.md +0 -97
- package/framework/templates/meta-prompts/hops/hop-wrapper.md +0 -36
- package/framework/workflows/configs/design-impl.json +0 -49
- package/framework/workflows/configs/express.json +0 -45
- package/framework/workflows/configs/fast-track.json +0 -42
- package/framework/workflows/configs/full-morph.json +0 -79
- package/framework/workflows/configs/fusion.json +0 -39
- package/framework/workflows/configs/long-running.json +0 -33
- package/framework/workflows/configs/spec-only.json +0 -43
- package/framework/workflows/configs/ui-refresh.json +0 -49
- package/framework/workflows/configs/zero-touch.json +0 -82
- package/src/commands/project/monitor.js +0 -295
- package/src/commands/project/tutorial.js +0 -115
- package/src/commands/state/validate-phase.js +0 -238
- package/src/commands/templates/generate-contracts.js +0 -445
- package/src/core/orchestrator.js +0 -171
- package/src/core/registry/command-registry.js +0 -28
- package/src/core/registry/index.js +0 -8
- package/src/core/registry/validator-registry.js +0 -204
- package/src/core/templates/template-validator.js +0 -296
- package/src/generator/config-generator.js +0 -206
- package/src/generator/templates/config.json.template +0 -40
- package/src/generator/templates/project.md.template +0 -67
- package/src/lib/agents/micro-agent-factory.js +0 -161
- package/src/lib/analysis/complexity-analyzer.js +0 -441
- package/src/lib/analysis/index.js +0 -7
- package/src/lib/analytics/analytics-engine.js +0 -345
- package/src/lib/checkpoints/checkpoint-hooks.js +0 -298
- package/src/lib/checkpoints/index.js +0 -7
- package/src/lib/context/context-bundler.js +0 -241
- package/src/lib/context/context-optimizer.js +0 -212
- package/src/lib/context/context-tracker.js +0 -273
- package/src/lib/context/core-four-tracker.js +0 -201
- package/src/lib/context/mcp-optimizer.js +0 -200
- package/src/lib/execution/fusion-executor.js +0 -304
- package/src/lib/execution/parallel-executor.js +0 -270
- package/src/lib/hooks/stop-hook-executor.js +0 -286
- package/src/lib/hops/hop-composer.js +0 -221
- package/src/lib/phase-chain/eligibility-checker.js +0 -243
- package/src/lib/threads/thread-coordinator.js +0 -238
- package/src/lib/threads/thread-manager.js +0 -317
- package/src/lib/tracking/artifact-trail.js +0 -202
- package/src/scanner/project-scanner.js +0 -242
- package/src/ui/diff-display.js +0 -91
- package/src/ui/interactive-wizard.js +0 -96
- package/src/ui/user-review.js +0 -211
- package/src/ui/wizard-questions.js +0 -188
- package/src/utils/color-utils.js +0 -70
- package/src/utils/process-handler.js +0 -97
|
@@ -1,190 +1,216 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: phase-clarify
|
|
3
|
-
description: MORPH-SPEC Phase 3 (Clarify). Reviews spec.md for ambiguities, generates 3-7 targeted clarification questions, waits for user answers, then updates spec with edge cases and clarification sections. Use after design approval to eliminate spec ambiguities before task breakdown begins.
|
|
4
|
-
argument-hint: "[feature-name]"
|
|
5
|
-
user-invocable: false
|
|
6
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
7
|
-
cliVersion: "4.
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# MORPH Clarify - FASE 3
|
|
11
|
-
|
|
12
|
-
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
13
|
-
|
|
14
|
-
Identifique ambiguidades na especificação e faça perguntas de clarificação para garantir que todos os edge cases estão cobertos.
|
|
15
|
-
|
|
16
|
-
## Pré-requisitos
|
|
17
|
-
|
|
18
|
-
- [ ] FASE 2 (Design) concluída
|
|
19
|
-
- [ ] `spec.md` aprovado pelo usuário
|
|
20
|
-
- [ ] `contracts.cs` definidos
|
|
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
|
-
> **Example:** `references/clarifications-example.md` — filled-in clarifications.md showing expected Q&A format.
|
|
27
|
-
|
|
28
|
-
| Ação | Ferramenta | Alternativa |
|
|
29
|
-
|------|------------|-------------|
|
|
30
|
-
| Ler spec.md completo | **Read** spec.md | — |
|
|
31
|
-
| Ler contracts.cs | **Read** contracts.cs | — |
|
|
32
|
-
| Ler schema-analysis.md | **Read** schema-analysis.md | — |
|
|
33
|
-
| Verificar viabilidade de requisito | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
|
|
34
|
-
| Verificar issues/limitações conhecidas | **GitHub MCP** `search_issues()` | **Bash** `gh issue list --search "..."` |
|
|
35
|
-
| Pesquisar edge cases externos | **WebSearch** | — |
|
|
36
|
-
| Verificar comportamento UI existente | **Playwright MCP** `browser_navigate()` + `browser_snapshot()` | **WebFetch** URL |
|
|
37
|
-
| Atualizar spec com clarificações | **Edit** spec.md | — |
|
|
38
|
-
| Criar clarifications.md | **Bash** `npx morph-spec template render docs/clarifications .morph/features/$ARGUMENTS/2-clarify/clarifications.md` | — |
|
|
39
|
-
| Atualizar state | **Bash** `npx morph-spec state mark-output $ARGUMENTS clarifications` | — |
|
|
40
|
-
|
|
41
|
-
**MCPs desta fase:** Context7 (validar viabilidade), GitHub (issues conhecidas), Playwright (verificar UI existente).
|
|
42
|
-
|
|
43
|
-
**Anti-padrões:**
|
|
44
|
-
- ❌ Task agent para ler spec (use Read direto)
|
|
45
|
-
- ❌ Reescrever spec do zero (use Edit para atualizar seções)
|
|
46
|
-
- ❌ Pular cross-reference com schema-analysis.md (crítico para precisão)
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## Workflow
|
|
51
|
-
|
|
52
|
-
### Passo 1: Analisar Spec
|
|
53
|
-
|
|
54
|
-
Leia `.morph/features/$ARGUMENTS/1-design/spec.md` em detalhes e identifique:
|
|
55
|
-
|
|
56
|
-
#### 1.1. Ambiguidades
|
|
57
|
-
- Requisitos vagos ou genéricos
|
|
58
|
-
- Termos sem definição clara
|
|
59
|
-
- Comportamentos não especificados
|
|
60
|
-
|
|
61
|
-
#### 1.2. Edge Cases Não Documentados
|
|
62
|
-
- O que acontece se...?
|
|
63
|
-
- Como lidar com entradas inválidas?
|
|
64
|
-
- Comportamento em caso de erro?
|
|
65
|
-
- Estados intermediários (loading, empty)
|
|
66
|
-
|
|
67
|
-
#### 1.3. Requisitos Conflitantes
|
|
68
|
-
- Duas funcionalidades que parecem incompatíveis
|
|
69
|
-
- Prioridades não claras (o que vem primeiro?)
|
|
70
|
-
|
|
71
|
-
#### 1.4. Dados Faltantes
|
|
72
|
-
- Validações de negócio não especificadas
|
|
73
|
-
- Limites e constraints (tamanhos, quantidades)
|
|
74
|
-
- Formatos de dados (datas, moedas, etc.)
|
|
75
|
-
|
|
76
|
-
### Passo 2: Gerar Perguntas de Clarificação
|
|
77
|
-
|
|
78
|
-
Com base na análise, gere **3-7 perguntas** focadas e específicas:
|
|
79
|
-
|
|
80
|
-
**Formato de pergunta:**
|
|
81
|
-
```markdown
|
|
82
|
-
### Q{N}: {Categoria} - {Título}
|
|
83
|
-
|
|
84
|
-
**Context:** {Por que esta pergunta é importante}
|
|
85
|
-
|
|
86
|
-
**Question:** {Pergunta clara e objetiva}
|
|
87
|
-
|
|
88
|
-
**Options (if applicable):**
|
|
89
|
-
- A) {Opção 1}
|
|
90
|
-
- B) {Opção 2}
|
|
91
|
-
- C) {Deixar em aberto/usuário decidir}
|
|
92
|
-
|
|
93
|
-
**Impact:** {Como a resposta afeta a implementação}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Passo 3: Categorizar Perguntas
|
|
97
|
-
|
|
98
|
-
Organize perguntas por categoria:
|
|
99
|
-
|
|
100
|
-
| Categoria | Descrição | Exemplos |
|
|
101
|
-
|-----------|-----------|----------|
|
|
102
|
-
| **Validação** | Regras de negócio, constraints | Limites de tamanho, formatos aceitos |
|
|
103
|
-
| **Comportamento** | O que acontece quando... | Error handling, estados vazios |
|
|
104
|
-
| **Prioridade** | O que é must-have vs nice-to-have | MVP vs futuras iterações |
|
|
105
|
-
| **Integração** | Como interage com sistemas externos | APIs, webhooks, formato de dados |
|
|
106
|
-
| **Performance** | Requisitos de velocidade/volume | Quantos registros? Tempo de resposta? |
|
|
107
|
-
| **UX** | Experiência do usuário | Feedback visual, mensagens de erro |
|
|
108
|
-
|
|
109
|
-
### Passo 4: Apresentar Perguntas ao Usuário
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
**
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
**
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
1
|
+
---
|
|
2
|
+
name: morph:phase-clarify
|
|
3
|
+
description: MORPH-SPEC Phase 3 (Clarify). Reviews spec.md for ambiguities, generates 3-7 targeted clarification questions, waits for user answers, then updates spec with edge cases and clarification sections. Use after design approval to eliminate spec ambiguities before task breakdown begins.
|
|
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 Clarify - FASE 3
|
|
11
|
+
|
|
12
|
+
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
13
|
+
|
|
14
|
+
Identifique ambiguidades na especificação e faça perguntas de clarificação para garantir que todos os edge cases estão cobertos.
|
|
15
|
+
|
|
16
|
+
## Pré-requisitos
|
|
17
|
+
|
|
18
|
+
- [ ] FASE 2 (Design) concluída
|
|
19
|
+
- [ ] `spec.md` aprovado pelo usuário
|
|
20
|
+
- [ ] `contracts.cs` definidos
|
|
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
|
+
> **Example:** `references/clarifications-example.md` — filled-in clarifications.md showing expected Q&A format.
|
|
27
|
+
|
|
28
|
+
| Ação | Ferramenta | Alternativa |
|
|
29
|
+
|------|------------|-------------|
|
|
30
|
+
| Ler spec.md completo | **Read** spec.md | — |
|
|
31
|
+
| Ler contracts.cs | **Read** contracts.cs | — |
|
|
32
|
+
| Ler schema-analysis.md | **Read** schema-analysis.md | — |
|
|
33
|
+
| Verificar viabilidade de requisito | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
|
|
34
|
+
| Verificar issues/limitações conhecidas | **GitHub MCP** `search_issues()` | **Bash** `gh issue list --search "..."` |
|
|
35
|
+
| Pesquisar edge cases externos | **WebSearch** | — |
|
|
36
|
+
| Verificar comportamento UI existente | **Playwright MCP** `browser_navigate()` + `browser_snapshot()` | **WebFetch** URL |
|
|
37
|
+
| Atualizar spec com clarificações | **Edit** spec.md | — |
|
|
38
|
+
| Criar clarifications.md | **Bash** `npx morph-spec template render docs/clarifications .morph/features/$ARGUMENTS/2-clarify/clarifications.md` | — |
|
|
39
|
+
| Atualizar state | **Bash** `npx morph-spec state mark-output $ARGUMENTS clarifications` | — |
|
|
40
|
+
|
|
41
|
+
**MCPs desta fase:** Context7 (validar viabilidade), GitHub (issues conhecidas), Playwright (verificar UI existente).
|
|
42
|
+
|
|
43
|
+
**Anti-padrões:**
|
|
44
|
+
- ❌ Task agent para ler spec (use Read direto)
|
|
45
|
+
- ❌ Reescrever spec do zero (use Edit para atualizar seções)
|
|
46
|
+
- ❌ Pular cross-reference com schema-analysis.md (crítico para precisão)
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Workflow
|
|
51
|
+
|
|
52
|
+
### Passo 1: Analisar Spec
|
|
53
|
+
|
|
54
|
+
Leia `.morph/features/$ARGUMENTS/1-design/spec.md` em detalhes e identifique:
|
|
55
|
+
|
|
56
|
+
#### 1.1. Ambiguidades
|
|
57
|
+
- Requisitos vagos ou genéricos
|
|
58
|
+
- Termos sem definição clara
|
|
59
|
+
- Comportamentos não especificados
|
|
60
|
+
|
|
61
|
+
#### 1.2. Edge Cases Não Documentados
|
|
62
|
+
- O que acontece se...?
|
|
63
|
+
- Como lidar com entradas inválidas?
|
|
64
|
+
- Comportamento em caso de erro?
|
|
65
|
+
- Estados intermediários (loading, empty)
|
|
66
|
+
|
|
67
|
+
#### 1.3. Requisitos Conflitantes
|
|
68
|
+
- Duas funcionalidades que parecem incompatíveis
|
|
69
|
+
- Prioridades não claras (o que vem primeiro?)
|
|
70
|
+
|
|
71
|
+
#### 1.4. Dados Faltantes
|
|
72
|
+
- Validações de negócio não especificadas
|
|
73
|
+
- Limites e constraints (tamanhos, quantidades)
|
|
74
|
+
- Formatos de dados (datas, moedas, etc.)
|
|
75
|
+
|
|
76
|
+
### Passo 2: Gerar Perguntas de Clarificação
|
|
77
|
+
|
|
78
|
+
Com base na análise, gere **3-7 perguntas** focadas e específicas:
|
|
79
|
+
|
|
80
|
+
**Formato de pergunta:**
|
|
81
|
+
```markdown
|
|
82
|
+
### Q{N}: {Categoria} - {Título}
|
|
83
|
+
|
|
84
|
+
**Context:** {Por que esta pergunta é importante}
|
|
85
|
+
|
|
86
|
+
**Question:** {Pergunta clara e objetiva}
|
|
87
|
+
|
|
88
|
+
**Options (if applicable):**
|
|
89
|
+
- A) {Opção 1}
|
|
90
|
+
- B) {Opção 2}
|
|
91
|
+
- C) {Deixar em aberto/usuário decidir}
|
|
92
|
+
|
|
93
|
+
**Impact:** {Como a resposta afeta a implementação}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Passo 3: Categorizar Perguntas
|
|
97
|
+
|
|
98
|
+
Organize perguntas por categoria:
|
|
99
|
+
|
|
100
|
+
| Categoria | Descrição | Exemplos |
|
|
101
|
+
|-----------|-----------|----------|
|
|
102
|
+
| **Validação** | Regras de negócio, constraints | Limites de tamanho, formatos aceitos |
|
|
103
|
+
| **Comportamento** | O que acontece quando... | Error handling, estados vazios |
|
|
104
|
+
| **Prioridade** | O que é must-have vs nice-to-have | MVP vs futuras iterações |
|
|
105
|
+
| **Integração** | Como interage com sistemas externos | APIs, webhooks, formato de dados |
|
|
106
|
+
| **Performance** | Requisitos de velocidade/volume | Quantos registros? Tempo de resposta? |
|
|
107
|
+
| **UX** | Experiência do usuário | Feedback visual, mensagens de erro |
|
|
108
|
+
|
|
109
|
+
### Passo 4: Apresentar Perguntas ao Usuário via AskUserQuestion
|
|
110
|
+
|
|
111
|
+
Use o tool `AskUserQuestion` para coletar as respostas — **NUNCA liste perguntas como texto simples**.
|
|
112
|
+
|
|
113
|
+
**Regras:**
|
|
114
|
+
- `AskUserQuestion` aceita **1-4 perguntas por chamada**
|
|
115
|
+
- Se houver 5-7 perguntas, faça **2 chamadas sequenciais** (ex: Q1-Q4 → Q5-Q7)
|
|
116
|
+
- Cada pergunta deve ter `header` (≤12 chars), `question` clara e 2-4 `options`
|
|
117
|
+
- Se a pergunta for aberta sem opções fixas, defina 2-3 opções representativas (o usuário pode usar "Other" para resposta livre)
|
|
118
|
+
- Use `multiSelect: true` quando múltiplas respostas forem igualmente válidas
|
|
119
|
+
- Aguarde o retorno do tool antes de prosseguir para qualquer próximo passo
|
|
120
|
+
|
|
121
|
+
**Exemplo de estrutura:**
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"questions": [
|
|
125
|
+
{
|
|
126
|
+
"header": "Validação",
|
|
127
|
+
"question": "Qual o limite de tamanho para o campo Nome?",
|
|
128
|
+
"multiSelect": false,
|
|
129
|
+
"options": [
|
|
130
|
+
{ "label": "100 chars", "description": "Padrão comum para nomes curtos" },
|
|
131
|
+
{ "label": "255 chars", "description": "Máximo típico de banco de dados" },
|
|
132
|
+
{ "label": "Sem limite fixo", "description": "Apenas validação no frontend" }
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**IMPORTANTE:** Não prossiga para o Passo 5 até receber respostas de TODAS as perguntas!
|
|
140
|
+
|
|
141
|
+
### Passo 5: Atualizar `spec.md` com Respostas
|
|
142
|
+
|
|
143
|
+
Após receber respostas do usuário, atualize o spec com:
|
|
144
|
+
|
|
145
|
+
1. **Seção de Clarificações** no início do spec:
|
|
146
|
+
```markdown
|
|
147
|
+
## Clarifications (FASE 3)
|
|
148
|
+
|
|
149
|
+
### Q1: {Título}
|
|
150
|
+
**Answer:** {Resposta do usuário}
|
|
151
|
+
**Date:** {YYYY-MM-DD}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
2. **Atualizar seções relevantes** com detalhes adicionados
|
|
155
|
+
|
|
156
|
+
### CHECKPOINT: Validar Respostas Completas
|
|
157
|
+
|
|
158
|
+
**⏸️ PAUSE - Antes de atualizar spec:**
|
|
159
|
+
|
|
160
|
+
- [ ] Todas as perguntas foram respondidas pelo usuário?
|
|
161
|
+
- [ ] Nenhuma resposta é ambígua ou contraditória?
|
|
162
|
+
- [ ] Respostas são consistentes com `contracts.cs` existente?
|
|
163
|
+
- [ ] Respostas são consistentes com `schema-analysis.md`?
|
|
164
|
+
|
|
165
|
+
**❌ Se alguma checkbox NÃO estiver marcada:**
|
|
166
|
+
→ Voltar e pedir esclarecimento adicional ao usuário
|
|
167
|
+
|
|
168
|
+
**✅ Se TODAS as checkboxes estiverem marcadas:**
|
|
169
|
+
→ Prosseguir para atualizar spec.md
|
|
170
|
+
|
|
171
|
+
### Passo 6: Validar Edge Cases
|
|
172
|
+
|
|
173
|
+
Documente no spec como lidar com cada edge case identificado:
|
|
174
|
+
|
|
175
|
+
```markdown
|
|
176
|
+
## Edge Cases
|
|
177
|
+
|
|
178
|
+
### EC001: {Nome do Edge Case}
|
|
179
|
+
**Scenario:** {Quando acontece}
|
|
180
|
+
**Expected Behavior:** {Como o sistema deve reagir}
|
|
181
|
+
**Implementation Notes:** {Dicas para implementação}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Passo 7: Atualizar State
|
|
185
|
+
|
|
186
|
+
## Outputs Gerados/Atualizados
|
|
187
|
+
|
|
188
|
+
- `.morph/features/$ARGUMENTS/1-design/spec.md` - Atualizado com:
|
|
189
|
+
- Seção "Clarifications" com perguntas e respostas
|
|
190
|
+
- Edge cases documentados
|
|
191
|
+
- Requisitos mais específicos
|
|
192
|
+
- `.morph/features/$ARGUMENTS/2-clarify/clarifications.md` - Novo arquivo com Q&A estruturado
|
|
193
|
+
|
|
194
|
+
## Critérios de Avanço
|
|
195
|
+
|
|
196
|
+
- [x] Perguntas de clarificação identificadas (3-7)
|
|
197
|
+
- [x] Perguntas apresentadas ao usuário
|
|
198
|
+
- [x] Respostas do usuário recebidas
|
|
199
|
+
- [x] `spec.md` atualizado com clarificações
|
|
200
|
+
- [x] Edge cases documentados
|
|
201
|
+
- [x] State atualizado
|
|
202
|
+
- [x] Nenhuma ambiguidade crítica remanescente
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Integração com Superpowers
|
|
207
|
+
|
|
208
|
+
> Disponível quando o plugin `superpowers` está instalado.
|
|
209
|
+
|
|
210
|
+
| Skill | Quando Usar | Invocação |
|
|
211
|
+
|-------|-------------|-----------|
|
|
212
|
+
| `systematic-debugging` | Para investigar ambiguidades técnicas complexas | `Skill(superpowers:systematic-debugging)` |
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
190
216
|
Continuar automaticamente para FASE 4 (Tasks) após clarificações resolvidas.
|