adi_dev_workflow 1.3.0 → 1.4.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/frameworks/commands/ministack/generate-tasks.md +212 -212
- package/frameworks/commands/sdd/generate-task-plan.md +4 -4
- package/frameworks/commands/sdd/generate-tech-direction.md +2 -2
- package/frameworks/commands/sdd/generate-tech-spec.md +4 -4
- package/frameworks/commands/sdd/generate-tests.md +171 -39
- package/frameworks/config/ai-framework-config.yaml +2 -2
- package/frameworks/skills/ministack-tasks-expert/SKILL.md +115 -104
- package/frameworks/skills/ministack-tech-direction-expert/SKILL.md +21 -6
- package/frameworks/skills/prompt-engineer-expert/SKILL.md +10 -7
- package/frameworks/skills/sdd-tech-direction-expert/SKILL.md +21 -6
- package/frameworks/skills/sdd-tech-spec-expert/SKILL.md +23 -7
- package/package.json +1 -1
- package/src/cli.js +27 -2
- package/src/installer.js +185 -106
- package/frameworks/agents/qa-validation-expert.md +0 -458
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.json +0 -99
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.md +0 -64
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/response.md +0 -134
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/transcript.md +0 -68
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/response.md +0 -525
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/transcript.md +0 -30
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/response.md +0 -1126
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/transcript.md +0 -131
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/response.md +0 -452
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/transcript.md +0 -78
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/response.md +0 -101
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/transcript.md +0 -133
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/response.md +0 -248
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/transcript.md +0 -49
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/timing.json +0 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/review.html +0 -1325
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.json +0 -94
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.md +0 -67
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/response.md +0 -117
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/transcript.md +0 -91
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/response.md +0 -694
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/transcript.md +0 -45
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/response.md +0 -1087
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/transcript.md +0 -124
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/response.md +0 -458
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/transcript.md +0 -84
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/eval_metadata.json +0 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/response.md +0 -70
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/transcript.md +0 -148
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/grading.json +0 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/response.md +0 -249
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/transcript.md +0 -80
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/timing.json +0 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/review.html +0 -1325
|
@@ -1,212 +1,212 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Gera TASKS do miniStack a partir de INTENT e SCOPE aprovados. Params: <intent.md> <scope.md>"
|
|
3
|
-
argument-hint: "<intent.md ex: docs/carrinho-compra/v1/intent.md> <scope.md ex: docs/carrinho-compra/v1/scope.md>"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
> **Paths**: Leia `.claude/config/ai-framework-config.yaml`
|
|
7
|
-
|
|
8
|
-
Use a skill **ministack-tasks-expert** para gerar as TASKS.
|
|
9
|
-
|
|
10
|
-
## Contexto
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
O $ARGUMENTS deve conter:
|
|
15
|
-
1. **caminho do intent.md** (
|
|
16
|
-
2. **caminho do scope.md** (
|
|
17
|
-
|
|
18
|
-
O task_plan.md e as tasks individuais
|
|
19
|
-
|
|
20
|
-
## Regras Adicionais
|
|
21
|
-
|
|
22
|
-
- **Claude Code**: use a ferramenta `AskUserQuestion` para esclarecer
|
|
23
|
-
- **NUNCA** deduza escopo ou invente
|
|
24
|
-
- Liste **TODOS** os arquivos envolvidos e as
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Estrutura de
|
|
29
|
-
|
|
30
|
-
A skill gera **arquivos individuais** para cada task,
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
docs/[nome-feature]/
|
|
34
|
-
task_plan.md #
|
|
35
|
-
tasks/
|
|
36
|
-
T1.md # Task individual completa
|
|
37
|
-
T2.md
|
|
38
|
-
T3.md
|
|
39
|
-
...
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
##
|
|
45
|
-
|
|
46
|
-
A **
|
|
47
|
-
|
|
48
|
-
### Quando executar
|
|
49
|
-
|
|
50
|
-
Para **cada task**,
|
|
51
|
-
|
|
52
|
-
### Passo 1: Preparar a lista de arquivos
|
|
53
|
-
|
|
54
|
-
Monte a lista de `arquivos` que o agente deve ler para CADA task. Inclua:
|
|
55
|
-
|
|
56
|
-
- **INTENT aprovada**: `docs/[nome-feature]/
|
|
57
|
-
- **SCOPE aprovado**: `docs/[nome-feature]/
|
|
58
|
-
- **Testes existentes**: busque arquivos de teste relacionados aos arquivos impactados pela task
|
|
59
|
-
- **
|
|
60
|
-
|
|
61
|
-
### Passo 2: Preparar as
|
|
62
|
-
|
|
63
|
-
Monte o campo `instrucoes` com:
|
|
64
|
-
|
|
65
|
-
1. O
|
|
66
|
-
2. Os **
|
|
67
|
-
3. Os **arquivos impactados** pela task — para o QA saber quais camadas testar
|
|
68
|
-
4. O **tipo da task** (cria handler, cria service, cria repository, cria
|
|
69
|
-
|
|
70
|
-
### Passo 3: Disparar o agente
|
|
71
|
-
|
|
72
|
-
Lance o agente usando a ferramenta `Agent` com:
|
|
73
|
-
|
|
74
|
-
- **subagent_type**: `qa-staff-engineer`
|
|
75
|
-
- **description**: "QA gerar testes task TN"
|
|
76
|
-
- **prompt**: Monte o prompt com os 3
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
1. **modo**: GERAR_TESTES
|
|
82
|
-
2. **arquivos**: [lista de caminhos dos arquivos preparados no Passo 1]
|
|
83
|
-
3. **instrucoes**: [
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Passo 4: Converter JSON em formato tabular (
|
|
87
|
-
|
|
88
|
-
O agente QA retorna um JSON com `casos_teste[]`.
|
|
89
|
-
|
|
90
|
-
#### Mapeamento de tipos
|
|
91
|
-
|
|
92
|
-
| Campo `tipo` no JSON |
|
|
93
|
-
|---------------------|-----------------|
|
|
94
|
-
| `UNITARIO` | **5.1 Testes
|
|
95
|
-
| `INTEGRACAO` | **5.2 Testes de
|
|
96
|
-
| `E2E` | **5.3 Testes E2E** |
|
|
97
|
-
| `SEGURANCA` | **5.4
|
|
98
|
-
| `PERFORMANCE` | **5.4
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
#### Formato de
|
|
103
|
-
|
|
104
|
-
O formato DEVE seguir o **formato tabular** do template de task individual. Isso garante clareza sobre o objetivo real de cada teste.
|
|
105
|
-
|
|
106
|
-
Infira o nome do arquivo de teste a partir do componente testado:
|
|
107
|
-
- Handler → `[nome]_handler_test.go`
|
|
108
|
-
- Service → `[nome]_service_test.go`
|
|
109
|
-
- Repository → `[nome]_repository_test.go`
|
|
110
|
-
|
|
111
|
-
Infira o nome da
|
|
112
|
-
- Use formato `TestNomeMetodo_CenarioDescritivo` (Go convention)
|
|
113
|
-
|
|
114
|
-
**5.1 Testes
|
|
115
|
-
|
|
116
|
-
```markdown
|
|
117
|
-
#### [Camada]: [NomeComponente] (`arquivo_test.go`)
|
|
118
|
-
|
|
119
|
-
Mock: [interfaces mockadas]
|
|
120
|
-
|
|
121
|
-
| CT | Teste | Objetivo | Input | Expected | Mock |
|
|
122
|
-
|----|-------|----------|-------|----------|------|
|
|
123
|
-
| CT-XX | TestMetodo_Cenario | Verificar que [comportamento] quando [
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**5.2 Testes de
|
|
127
|
-
|
|
128
|
-
```markdown
|
|
129
|
-
#### [CamadaA + CamadaB] (`arquivo_test.go`)
|
|
130
|
-
|
|
131
|
-
Setup: [banco in-memory,
|
|
132
|
-
|
|
133
|
-
| CT | Teste | Objetivo | Fluxo |
|
|
134
|
-
|----|-------|----------|-------|-----------|
|
|
135
|
-
| CT-XX | TestIntegracao_Cenario | Verificar que [comportamento] quando [
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
**5.3 Testes E2E** — formato descritivo por fluxo:
|
|
139
|
-
|
|
140
|
-
```markdown
|
|
141
|
-
#### Fluxo: [Nome do Fluxo] (CT-XX)
|
|
142
|
-
- **Objetivo**: (1 frase descrevendo o que este fluxo E2E valida de ponta a ponta)
|
|
143
|
-
- **
|
|
144
|
-
- **Passos**:
|
|
145
|
-
1. Passo 1
|
|
146
|
-
2. Passo 2
|
|
147
|
-
- **
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
**5.4
|
|
151
|
-
|
|
152
|
-
```markdown
|
|
153
|
-
|
|
|
154
|
-
|
|
155
|
-
|
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
#### Testes Existentes a Modificar
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
```markdown
|
|
163
|
-
#### Testes Existentes a Modificar
|
|
164
|
-
| Arquivo | Motivo da
|
|
165
|
-
|---------|----------------------|
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Se nenhum: `> Nenhum teste existente impactado.`
|
|
169
|
-
|
|
170
|
-
### Passo 5: Validar como engenheiro de tarefas
|
|
171
|
-
|
|
172
|
-
Antes de integrar a
|
|
173
|
-
|
|
174
|
-
1. Verifique **
|
|
175
|
-
2. Verifique que os testes cobrem os **
|
|
176
|
-
3. Ajuste nomenclatura para seguir
|
|
177
|
-
4. Para tasks sem
|
|
178
|
-
|
|
179
|
-
### Passo 6: Salvar e apresentar
|
|
180
|
-
|
|
181
|
-
1. Salve cada task individual em `docs/[nome-feature]/
|
|
182
|
-
2. Salve o task plan em `docs/[nome-feature]/
|
|
183
|
-
3. Apresente ao
|
|
184
|
-
|
|
185
|
-
**
|
|
186
|
-
|
|
187
|
-
---
|
|
188
|
-
|
|
189
|
-
## Estado do Pipeline (ministack_state.yaml)
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
```yaml
|
|
194
|
-
# atualizar apenas estes campos:
|
|
195
|
-
current_step: task_plan
|
|
196
|
-
steps:
|
|
197
|
-
task_plan:
|
|
198
|
-
status: completed
|
|
199
|
-
summary: "<N tasks>, <M fases>, <P
|
|
200
|
-
execution:
|
|
201
|
-
status: pending
|
|
202
|
-
tasks_total: <N>
|
|
203
|
-
tasks_completed: 0
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
Se o `ministack_state.yaml`
|
|
207
|
-
|
|
208
|
-
## Entrada
|
|
209
|
-
|
|
210
|
-
Cole a INTENT e SCOPE aprovados:
|
|
211
|
-
|
|
212
|
-
$ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: "Gera TASKS do miniStack a partir de INTENT e SCOPE aprovados. Params: <intent.md> <scope.md>"
|
|
3
|
+
argument-hint: "<intent.md ex: docs/specs/carrinho-compra/v1/intent.md> <scope.md ex: docs/specs/carrinho-compra/v1/scope.md>"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` seção `ministack` antes de salvar artefatos. Os paths abaixo são exemplos — o path real vem do config.
|
|
7
|
+
|
|
8
|
+
Use a skill **ministack-tasks-expert** para gerar as TASKS.
|
|
9
|
+
|
|
10
|
+
## Contexto
|
|
11
|
+
|
|
12
|
+
Você deve seguir as regras e o processo definidos na skill ministack-tasks-expert.
|
|
13
|
+
|
|
14
|
+
O $ARGUMENTS deve conter:
|
|
15
|
+
1. **caminho do intent.md** (obrigatório)
|
|
16
|
+
2. **caminho do scope.md** (obrigatório)
|
|
17
|
+
|
|
18
|
+
O task_plan.md e as tasks individuais serão gerados no mesmo diretório dos arquivos de entrada.
|
|
19
|
+
|
|
20
|
+
## Regras Adicionais
|
|
21
|
+
|
|
22
|
+
- **Claude Code**: use a ferramenta `AskUserQuestion` para esclarecer dúvidas com o usuário
|
|
23
|
+
- **NUNCA** deduza escopo ou invente informações — na **DÚVIDA PERGUNTE AO USUÁRIO**
|
|
24
|
+
- Liste **TODOS** os arquivos envolvidos e as ações (criar/modificar/remover) em cada task — economiza tokens e scans
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Estrutura de Saída (Formato Modular)
|
|
29
|
+
|
|
30
|
+
A skill gera **arquivos individuais** para cada task, não um arquivo monolítico:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
docs/specs/[nome-feature]/[versão]/
|
|
34
|
+
task_plan.md # Índice: macro-fases, grafo de dependências, visão consolidada
|
|
35
|
+
tasks/
|
|
36
|
+
T1.md # Task individual completa
|
|
37
|
+
T2.md
|
|
38
|
+
T3.md
|
|
39
|
+
...
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Delegação QA — Seção de Testes de cada Task
|
|
45
|
+
|
|
46
|
+
A **seção de Testes** de cada task NÃO deve ser preenchida pela skill. Você (comando orquestrador) DEVE delegar para o agente **qa-staff-engineer** que retorna um JSON estruturado. Depois, você converte o resultado em markdown na seção de Testes.
|
|
47
|
+
|
|
48
|
+
### Quando executar
|
|
49
|
+
|
|
50
|
+
Para **cada task**, após a skill preencher todas as seções exceto Testes, **ANTES de salvar os arquivos finais**. Se várias tasks estão sendo criadas, você pode disparar agentes QA em **paralelo** para maximizar eficiência.
|
|
51
|
+
|
|
52
|
+
### Passo 1: Preparar a lista de arquivos
|
|
53
|
+
|
|
54
|
+
Monte a lista de `arquivos` que o agente deve ler para CADA task. Inclua:
|
|
55
|
+
|
|
56
|
+
- **INTENT aprovada**: `docs/specs/[nome-feature]/[versão]/intent.md`
|
|
57
|
+
- **SCOPE aprovado**: `docs/specs/[nome-feature]/[versão]/scope.md`
|
|
58
|
+
- **Testes existentes**: busque arquivos de teste relacionados aos arquivos impactados pela task
|
|
59
|
+
- **Código-fonte existente**: arquivos listados na task (a criar ou modificar)
|
|
60
|
+
|
|
61
|
+
### Passo 2: Preparar as instruções
|
|
62
|
+
|
|
63
|
+
Monte o campo `instrucoes` com:
|
|
64
|
+
|
|
65
|
+
1. O conteúdo completo da **task parcial** que a skill montou até o momento
|
|
66
|
+
2. Os **critérios de conclusão** da task
|
|
67
|
+
3. Os **arquivos impactados** pela task — para o QA saber quais camadas testar
|
|
68
|
+
4. O **tipo da task** (cria handler, cria service, cria repository, cria migração, etc.)
|
|
69
|
+
|
|
70
|
+
### Passo 3: Disparar o agente
|
|
71
|
+
|
|
72
|
+
Lance o agente usando a ferramenta `Agent` com:
|
|
73
|
+
|
|
74
|
+
- **subagent_type**: `qa-staff-engineer`
|
|
75
|
+
- **description**: "QA gerar testes task TN"
|
|
76
|
+
- **prompt**: Monte o prompt com os 3 parâmetros obrigatórios:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Você foi invocado com os seguintes parâmetros:
|
|
80
|
+
|
|
81
|
+
1. **modo**: GERAR_TESTES
|
|
82
|
+
2. **arquivos**: [lista de caminhos dos arquivos preparados no Passo 1]
|
|
83
|
+
3. **instrucoes**: [conteúdo preparado no Passo 2]
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Passo 4: Converter JSON em formato tabular (seção Testes)
|
|
87
|
+
|
|
88
|
+
O agente QA retorna um JSON com `casos_teste[]`. Você DEVE converter para o formato **tabular** da seção de Testes usando o mapeamento abaixo:
|
|
89
|
+
|
|
90
|
+
#### Mapeamento de tipos
|
|
91
|
+
|
|
92
|
+
| Campo `tipo` no JSON | Subseção destino |
|
|
93
|
+
|---------------------|-----------------|
|
|
94
|
+
| `UNITARIO` | **5.1 Testes Unitários** |
|
|
95
|
+
| `INTEGRACAO` | **5.2 Testes de Integração** |
|
|
96
|
+
| `E2E` | **5.3 Testes E2E** |
|
|
97
|
+
| `SEGURANCA` | **5.4 Cenários de Erro** |
|
|
98
|
+
| `PERFORMANCE` | **5.4 Cenários de Erro** |
|
|
99
|
+
|
|
100
|
+
Além dos testes tipo `SEGURANCA` e `PERFORMANCE`, inclua em 5.4 todos os `casos_teste` com `categoria` igual a: `tratamento_erro`, `caso_extremo`, `fronteira`.
|
|
101
|
+
|
|
102
|
+
#### Formato de saída por subseção
|
|
103
|
+
|
|
104
|
+
O formato DEVE seguir o **formato tabular** do template de task individual. Isso garante clareza sobre o objetivo real de cada teste.
|
|
105
|
+
|
|
106
|
+
Infira o nome do arquivo de teste a partir do componente testado:
|
|
107
|
+
- Handler → `[nome]_handler_test.go`
|
|
108
|
+
- Service → `[nome]_service_test.go`
|
|
109
|
+
- Repository → `[nome]_repository_test.go`
|
|
110
|
+
|
|
111
|
+
Infira o nome da função de teste a partir do título do CT:
|
|
112
|
+
- Use formato `TestNomeMetodo_CenarioDescritivo` (Go convention)
|
|
113
|
+
|
|
114
|
+
**5.1 Testes Unitários** — formato tabular agrupado por componente:
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
#### [Camada]: [NomeComponente] (`arquivo_test.go`)
|
|
118
|
+
|
|
119
|
+
Mock: [interfaces mockadas]
|
|
120
|
+
|
|
121
|
+
| CT | Teste | Objetivo | Input | Expected | Mock |
|
|
122
|
+
|----|-------|----------|-------|----------|------|
|
|
123
|
+
| CT-XX | TestMetodo_Cenario | Verificar que [comportamento] quando [condição] | dados entrada | resultado esperado | dependências mockadas |
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**5.2 Testes de Integração** — formato tabular com Setup:
|
|
127
|
+
|
|
128
|
+
```markdown
|
|
129
|
+
#### [CamadaA + CamadaB] (`arquivo_test.go`)
|
|
130
|
+
|
|
131
|
+
Setup: [banco in-memory, migrações, fixtures]
|
|
132
|
+
|
|
133
|
+
| CT | Teste | Objetivo | Fluxo | Validação |
|
|
134
|
+
|----|-------|----------|-------|-----------|
|
|
135
|
+
| CT-XX | TestIntegracao_Cenario | Verificar que [comportamento] quando [condição] | Passos do fluxo | Assertions esperadas |
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**5.3 Testes E2E** — formato descritivo por fluxo:
|
|
139
|
+
|
|
140
|
+
```markdown
|
|
141
|
+
#### Fluxo: [Nome do Fluxo] (CT-XX)
|
|
142
|
+
- **Objetivo**: (1 frase descrevendo o que este fluxo E2E valida de ponta a ponta)
|
|
143
|
+
- **Pré-condições**: (estado inicial do sistema)
|
|
144
|
+
- **Passos**:
|
|
145
|
+
1. Passo 1
|
|
146
|
+
2. Passo 2
|
|
147
|
+
- **Validações**: (assertions sobre dados e estado final)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**5.4 Cenários de Erro** — formato tabular:
|
|
151
|
+
|
|
152
|
+
```markdown
|
|
153
|
+
| Cenário | Objetivo | Trigger | Código/Status | Log Esperado |
|
|
154
|
+
|---------|----------|---------|---------------|--------------|
|
|
155
|
+
| Descrição | Verificar que [constraint] impede [operação] | Ação trigger | Código erro | Mensagem log |
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
#### Testes Existentes a Modificar
|
|
159
|
+
|
|
160
|
+
Após as subseções 5.1-5.4, adicione a tabela de testes existentes:
|
|
161
|
+
|
|
162
|
+
```markdown
|
|
163
|
+
#### Testes Existentes a Modificar
|
|
164
|
+
| Arquivo | Motivo da Modificação |
|
|
165
|
+
|---------|----------------------|
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Se nenhum: `> Nenhum teste existente impactado.`
|
|
169
|
+
|
|
170
|
+
### Passo 5: Validar como engenheiro de tarefas
|
|
171
|
+
|
|
172
|
+
Antes de integrar a seção de Testes na task:
|
|
173
|
+
|
|
174
|
+
1. Verifique **coerência** com os arquivos impactados (os componentes testados existem?)
|
|
175
|
+
2. Verifique que os testes cobrem os **critérios de conclusão** da task
|
|
176
|
+
3. Ajuste nomenclatura para seguir padrões do projeto
|
|
177
|
+
4. Para tasks sem código (documentação, configuração): "N/A — task não envolve código testável"
|
|
178
|
+
|
|
179
|
+
### Passo 6: Salvar e apresentar
|
|
180
|
+
|
|
181
|
+
1. Salve cada task individual em `docs/specs/[nome-feature]/[versão]/tasks/T[N].md`
|
|
182
|
+
2. Salve o task plan em `docs/specs/[nome-feature]/[versão]/task_plan.md`
|
|
183
|
+
3. Apresente ao usuário para aprovação
|
|
184
|
+
|
|
185
|
+
**NÃO peça aprovação isolada da seção de testes** — apresente as tasks completas para validação.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Estado do Pipeline (ministack_state.yaml)
|
|
190
|
+
|
|
191
|
+
Após salvar o task_plan.md e todas as tasks com sucesso, atualize o arquivo `ministack_state.yaml` no mesmo diretório:
|
|
192
|
+
|
|
193
|
+
```yaml
|
|
194
|
+
# atualizar apenas estes campos:
|
|
195
|
+
current_step: task_plan
|
|
196
|
+
steps:
|
|
197
|
+
task_plan:
|
|
198
|
+
status: completed
|
|
199
|
+
summary: "<N tasks>, <M fases>, <P paralelizáveis>"
|
|
200
|
+
execution:
|
|
201
|
+
status: pending
|
|
202
|
+
tasks_total: <N>
|
|
203
|
+
tasks_completed: 0
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Se o `ministack_state.yaml` não existir, não crie — o generate-intent é responsável por criar.
|
|
207
|
+
|
|
208
|
+
## Entrada
|
|
209
|
+
|
|
210
|
+
Cole a INTENT e SCOPE aprovados:
|
|
211
|
+
|
|
212
|
+
$ARGUMENTS
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Gera TASK PLAN + tasks individuais do SDD a partir de SPEC_TECH aprovado. Param: caminho do spec_tech.md"
|
|
3
|
-
argument-hint: "<spec_tech.md ex: docs/feature-user/v1/spec_tech.md>"
|
|
3
|
+
argument-hint: "<spec_tech.md ex: docs/specs/feature-user/v1/spec_tech.md>"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `sdd` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
@@ -12,7 +12,7 @@ Use a skill **sdd-task-plan-expert** para gerar o TASK PLAN e as tasks individua
|
|
|
12
12
|
Voce deve atuar como um **Engenheiro de Software Senior** especializado em decomposicao de tarefas e seguir todo o processo interativo definido na skill sdd-task-plan-expert.
|
|
13
13
|
|
|
14
14
|
O $ARGUMENTS deve conter:
|
|
15
|
-
1. **caminho do spec_tech.md** (obrigatorio) — ex: `docs/feature-user/v1/spec_tech.md`
|
|
15
|
+
1. **caminho do spec_tech.md** (obrigatorio) — ex: `docs/specs/feature-user/v1/spec_tech.md`
|
|
16
16
|
|
|
17
17
|
O task_plan.md e as tasks individuais serao gerados no mesmo diretorio do spec_tech.md. O PRD sera localizado a partir de referencia interna no spec_tech.md.
|
|
18
18
|
|
|
@@ -39,8 +39,8 @@ Para **cada task**, apos preencher as secoes 1-5 e 7-8, **ANTES de salvar o arqu
|
|
|
39
39
|
|
|
40
40
|
Monte a lista de `arquivos` que o subagente deve ler para CADA task. Inclua:
|
|
41
41
|
|
|
42
|
-
- **PRD aprovado**: `docs/[nome-feature]/
|
|
43
|
-
- **SPEC_TECH aprovado**: `docs/[nome-feature]/
|
|
42
|
+
- **PRD aprovado**: `docs/specs/[nome-feature]/[versao]/prd.md`
|
|
43
|
+
- **SPEC_TECH aprovado**: `docs/specs/[nome-feature]/[versao]/spec_tech.md`
|
|
44
44
|
- **Regras do projeto**: `CLAUDE.md`, `.claude/rules/*.md`
|
|
45
45
|
- **Migracoes**: `internal/db/migrations/*.sql` (relacionadas a task)
|
|
46
46
|
- **Queries SQLC**: `internal/db/queries/*.sql` (relacionadas a task)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Gera TECH DIRECTION do SDD a partir de PRD aprovado. Param: caminho do prd.md"
|
|
3
|
-
argument-hint: "<prd.md ex: docs/feature-user/v1/prd.md>"
|
|
3
|
+
argument-hint: "<prd.md ex: docs/specs/feature-user/v1/prd.md>"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `sdd` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
@@ -23,7 +23,7 @@ Antes de iniciar, verifique se `.claude/rules/project-profile.md` existe. Se NAO
|
|
|
23
23
|
- Pesquise o codebase ANTES de fazer perguntas (regras, padroes, libs)
|
|
24
24
|
- Faca **UMA pergunta por vez**, aguardando a resposta antes de avancar
|
|
25
25
|
- **SEMPRE** salve o arquivo fisico antes de apresentar ao usuario
|
|
26
|
-
- O arquivo deve ser salvo no mesmo diretorio do PRD: `docs/[nome-feature]/
|
|
26
|
+
- O arquivo deve ser salvo no mesmo diretorio do PRD: `docs/specs/[nome-feature]/[versao]/tech_direction.md`
|
|
27
27
|
|
|
28
28
|
## Estado do Pipeline (sdd_state.yaml)
|
|
29
29
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Gera SPEC_TECH completo do SDD a partir de PRD aprovado. Param: caminho do prd.md"
|
|
3
|
-
argument-hint: "<prd.md ex: docs/feature-user/v1/prd.md>"
|
|
3
|
+
argument-hint: "<prd.md ex: docs/specs/feature-user/v1/prd.md>"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `sdd` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
@@ -12,7 +12,7 @@ Use a skill **sdd-tech-spec-expert** para gerar o SPEC_TECH.
|
|
|
12
12
|
Voce deve atuar como um **Arquiteto de Software Senior** e seguir todo o processo interativo definido na skill sdd-tech-spec-expert para transformar o PRD aprovado em uma especificacao tecnica completa.
|
|
13
13
|
|
|
14
14
|
O $ARGUMENTS deve conter:
|
|
15
|
-
1. **caminho do prd.md** (obrigatorio) — ex: `docs/feature-user/v1/prd.md`
|
|
15
|
+
1. **caminho do prd.md** (obrigatorio) — ex: `docs/specs/feature-user/v1/prd.md`
|
|
16
16
|
|
|
17
17
|
O spec_tech.md sera gerado no mesmo diretorio do prd.md.
|
|
18
18
|
|
|
@@ -35,7 +35,7 @@ Antes de iniciar, verifique se existe um arquivo `tech_direction.md` no mesmo di
|
|
|
35
35
|
- Liste **TODOS** os arquivos envolvidos e as acoes (criar/modificar/referencia) — economiza tokens e scans
|
|
36
36
|
- Mapeie cada **User Story do PRD** para definicoes tecnicas correspondentes
|
|
37
37
|
|
|
38
|
-
O arquivo deve ser salvo no diretorio `docs/[nome-feature]/
|
|
38
|
+
O arquivo deve ser salvo no diretorio `docs/specs/[nome-feature]/[versao]/spec_tech.md`
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
@@ -51,7 +51,7 @@ Apos coletar todas as decisoes tecnicas e preencher as secoes 1-13 do SPEC_TECH,
|
|
|
51
51
|
|
|
52
52
|
Monte a lista de `arquivos` que o subagente deve ler. Inclua TODOS os caminhos relevantes:
|
|
53
53
|
|
|
54
|
-
- **PRD aprovado**: `docs/[nome-feature]/
|
|
54
|
+
- **PRD aprovado**: `docs/specs/[nome-feature]/[versao]/prd.md`
|
|
55
55
|
- **Regras do projeto**: `CLAUDE.md`, `.claude/rules/*.md`
|
|
56
56
|
- **Migracoes**: `internal/db/migrations/*.sql` (relacionadas a feature)
|
|
57
57
|
- **Queries SQLC**: `internal/db/queries/*.sql` (relacionadas a feature)
|