adi_dev_workflow 1.3.1 → 1.5.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/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,99 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"skill_name": "sdd-task-plan-expert",
|
|
3
|
-
"iteration": 1,
|
|
4
|
-
"configurations": [
|
|
5
|
-
{
|
|
6
|
-
"name": "with_skill",
|
|
7
|
-
"pass_rate": 0.933,
|
|
8
|
-
"mean_tokens": 55027,
|
|
9
|
-
"stddev_tokens": 10217,
|
|
10
|
-
"mean_duration_seconds": 184.9,
|
|
11
|
-
"stddev_duration_seconds": 85.7,
|
|
12
|
-
"evals": [
|
|
13
|
-
{
|
|
14
|
-
"eval_name": "happy-path-spec-tech-usuario",
|
|
15
|
-
"pass_rate": 0.8,
|
|
16
|
-
"passed": 4,
|
|
17
|
-
"total": 5,
|
|
18
|
-
"tokens": 61221,
|
|
19
|
-
"duration_seconds": 138.2,
|
|
20
|
-
"failed_assertions": ["Le as rules do projeto (.claude/rules/ e CLAUDE.md) ANTES de gerar tasks"]
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"eval_name": "spec-tech-simples-alteracao-pontual",
|
|
24
|
-
"pass_rate": 1.0,
|
|
25
|
-
"passed": 5,
|
|
26
|
-
"total": 5,
|
|
27
|
-
"tokens": 60596,
|
|
28
|
-
"duration_seconds": 286.6,
|
|
29
|
-
"failed_assertions": []
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"eval_name": "spec-tech-sem-user-stories-explicitas",
|
|
33
|
-
"pass_rate": 1.0,
|
|
34
|
-
"passed": 5,
|
|
35
|
-
"total": 5,
|
|
36
|
-
"tokens": 43263,
|
|
37
|
-
"duration_seconds": 130.0,
|
|
38
|
-
"failed_assertions": []
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"name": "without_skill",
|
|
44
|
-
"pass_rate": 0.333,
|
|
45
|
-
"mean_tokens": 38834,
|
|
46
|
-
"stddev_tokens": 3912,
|
|
47
|
-
"mean_duration_seconds": 151.2,
|
|
48
|
-
"stddev_duration_seconds": 14.5,
|
|
49
|
-
"evals": [
|
|
50
|
-
{
|
|
51
|
-
"eval_name": "happy-path-spec-tech-usuario",
|
|
52
|
-
"pass_rate": 0.2,
|
|
53
|
-
"passed": 1,
|
|
54
|
-
"total": 5,
|
|
55
|
-
"tokens": 40363,
|
|
56
|
-
"duration_seconds": 141.3,
|
|
57
|
-
"failed_assertions": [
|
|
58
|
-
"Extrai o nome da feature do SPEC_TECH e confirma com o usuario antes de prosseguir",
|
|
59
|
-
"Faz apenas UMA pergunta por vez",
|
|
60
|
-
"Propoe macro-fases de alto nivel e aguarda validacao antes de criar tasks",
|
|
61
|
-
"Le as rules do projeto (.claude/rules/ e CLAUDE.md) ANTES de gerar tasks"
|
|
62
|
-
]
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
"eval_name": "spec-tech-simples-alteracao-pontual",
|
|
66
|
-
"pass_rate": 0.2,
|
|
67
|
-
"passed": 1,
|
|
68
|
-
"total": 5,
|
|
69
|
-
"tokens": 41818,
|
|
70
|
-
"duration_seconds": 167.6,
|
|
71
|
-
"failed_assertions": [
|
|
72
|
-
"Gera um numero proporcional de tasks (entre 3 e 6)",
|
|
73
|
-
"Mapeia a US-10 na tabela de rastreabilidade do task_plan",
|
|
74
|
-
"Cada task segue o template completo (secoes 1-8)",
|
|
75
|
-
"Salva task_plan.md como documento de REFERENCIA"
|
|
76
|
-
]
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"eval_name": "spec-tech-sem-user-stories-explicitas",
|
|
80
|
-
"pass_rate": 0.4,
|
|
81
|
-
"passed": 2,
|
|
82
|
-
"total": 5,
|
|
83
|
-
"tokens": 34322,
|
|
84
|
-
"duration_seconds": 144.7,
|
|
85
|
-
"failed_assertions": [
|
|
86
|
-
"PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar",
|
|
87
|
-
"Extrai corretamente o nome da feature em kebab-case",
|
|
88
|
-
"Segue o processo interativo (uma pergunta por vez)"
|
|
89
|
-
]
|
|
90
|
-
}
|
|
91
|
-
]
|
|
92
|
-
}
|
|
93
|
-
],
|
|
94
|
-
"delta": {
|
|
95
|
-
"pass_rate_improvement": "+60.0pp",
|
|
96
|
-
"tokens_overhead": "+41.7%",
|
|
97
|
-
"duration_overhead": "+22.3%"
|
|
98
|
-
}
|
|
99
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# Benchmark — sdd-task-plan-expert (Iteration 1)
|
|
2
|
-
|
|
3
|
-
## Resumo
|
|
4
|
-
|
|
5
|
-
| Metrica | With Skill | Without Skill (Baseline) | Delta |
|
|
6
|
-
|---------|-----------|-------------------------|-------|
|
|
7
|
-
| **Pass Rate** | **93.3%** (14/15) | 33.3% (5/15) | **+60.0pp** |
|
|
8
|
-
| **Tokens (media)** | 55,027 | 38,834 | +41.7% |
|
|
9
|
-
| **Duracao (media)** | 184.9s | 151.2s | +22.3% |
|
|
10
|
-
|
|
11
|
-
## Resultados por Eval
|
|
12
|
-
|
|
13
|
-
### Eval 1: Happy Path (SPEC_TECH real do modulo de usuario)
|
|
14
|
-
|
|
15
|
-
| Assertion | With Skill | Without Skill |
|
|
16
|
-
|-----------|:---------:|:------------:|
|
|
17
|
-
| Extrai nome e confirma com usuario | PASS | FAIL |
|
|
18
|
-
| Uma pergunta por vez | PASS | FAIL |
|
|
19
|
-
| Propoe fases antes de tasks | PASS | FAIL |
|
|
20
|
-
| Le rules do projeto antes | FAIL | FAIL |
|
|
21
|
-
| Nao inicia execucao automatica | PASS | PASS |
|
|
22
|
-
|
|
23
|
-
### Eval 2: Feature Simples (adicionar telefone)
|
|
24
|
-
|
|
25
|
-
| Assertion | With Skill | Without Skill |
|
|
26
|
-
|-----------|:---------:|:------------:|
|
|
27
|
-
| Numero proporcional de tasks (3-6) | PASS (6) | FAIL (12) |
|
|
28
|
-
| Ordem de dependencias correta | PASS | PASS |
|
|
29
|
-
| Rastreabilidade US-10 | PASS | FAIL |
|
|
30
|
-
| Template completo (secoes 1-8) | PASS | FAIL |
|
|
31
|
-
| task_plan como referencia | PASS | FAIL |
|
|
32
|
-
|
|
33
|
-
### Eval 3: Sem User Stories
|
|
34
|
-
|
|
35
|
-
| Assertion | With Skill | Without Skill |
|
|
36
|
-
|-----------|:---------:|:------------:|
|
|
37
|
-
| Detecta ausencia de US/PRD | PASS | PASS |
|
|
38
|
-
| Pergunta ao usuario | PASS | FAIL |
|
|
39
|
-
| Nao inventa US ficticias | PASS | PASS |
|
|
40
|
-
| Nome em kebab-case | PASS | FAIL |
|
|
41
|
-
| Processo interativo | PASS | FAIL |
|
|
42
|
-
|
|
43
|
-
## Analise
|
|
44
|
-
|
|
45
|
-
### Pontos Fortes da Skill
|
|
46
|
-
1. **Processo interativo**: A skill garante interacao step-by-step (93% vs 33% pass rate)
|
|
47
|
-
2. **Proporcionalidade**: 6 tasks para feature simples vs 12 sem skill
|
|
48
|
-
3. **Guardrails**: Detectou e perguntou sobre US/PRD ausentes em vez de ignorar
|
|
49
|
-
4. **Template e rastreabilidade**: Segue template oficial e mapeia User Stories
|
|
50
|
-
5. **Separacao de documentos**: task_plan como referencia, tasks em arquivos individuais
|
|
51
|
-
|
|
52
|
-
### Ponto de Melhoria Identificado
|
|
53
|
-
1. **Leitura de rules do projeto (a4)**: A skill instrui "Ler as rules do projeto", mas o agente leu extensivamente o codebase sem ler `.claude/rules/` e `CLAUDE.md` explicitamente. Sugestao: reforcar na skill que a leitura de rules e o PRIMEIRO passo, antes de explorar o codebase.
|
|
54
|
-
|
|
55
|
-
### Custo da Skill
|
|
56
|
-
- **+41.7% tokens**: Esperado — a skill faz mais trabalho (leitura de templates, processo interativo, exploração de codebase mais detalhada)
|
|
57
|
-
- **+22.3% duracao**: Overhead moderado, aceitavel dado o ganho de qualidade
|
|
58
|
-
|
|
59
|
-
### Assertions Nao-Discriminantes
|
|
60
|
-
- "Nao inventa US ficticias" passou em ambas as configuracoes (with/without skill) — o modelo base ja respeita isso
|
|
61
|
-
- "Nao inicia execucao automatica" tambem passou em ambas
|
|
62
|
-
|
|
63
|
-
### Conclusao
|
|
64
|
-
A skill melhora drasticamente a qualidade do output (+60pp pass rate). O unico ponto de falha (leitura de rules) e um refinamento menor. O custo adicional em tokens/tempo e justificado pelo ganho em estrutura, interatividade e conformidade com o framework SDD.
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"eval_id": 1,
|
|
3
|
-
"eval_name": "happy-path-spec-tech-usuario",
|
|
4
|
-
"prompt": "Gere o TASK PLAN para a feature de usuario. O SPEC_TECH aprovado esta em docs/feature-user/v1/spec_tech.md",
|
|
5
|
-
"assertions": [
|
|
6
|
-
{"id": "a1", "text": "Extrai o nome da feature do SPEC_TECH e confirma com o usuario antes de prosseguir", "type": "llm_judge"},
|
|
7
|
-
{"id": "a2", "text": "Faz apenas UMA pergunta por vez (nao bombardeia com multiplas perguntas no mesmo turno)", "type": "llm_judge"},
|
|
8
|
-
{"id": "a3", "text": "Propoe macro-fases de alto nivel e aguarda validacao antes de criar tasks", "type": "llm_judge"},
|
|
9
|
-
{"id": "a4", "text": "Le as rules do projeto (.claude/rules/ e CLAUDE.md) ANTES de gerar tasks", "type": "llm_judge"},
|
|
10
|
-
{"id": "a5", "text": "NAO inicia execucao automatica de tasks — apenas apresenta o plano e aguarda", "type": "llm_judge"}
|
|
11
|
-
]
|
|
12
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"eval_id": 1,
|
|
3
|
-
"eval_name": "happy-path-spec-tech-usuario",
|
|
4
|
-
"configuration": "with_skill",
|
|
5
|
-
"expectations": [
|
|
6
|
-
{
|
|
7
|
-
"text": "Extrai o nome da feature do SPEC_TECH e confirma com o usuario antes de prosseguir",
|
|
8
|
-
"passed": true,
|
|
9
|
-
"evidence": "Extraiu 'Modulo de Usuario -- Vakinha Burger', normalizou para 'feature-user' em kebab-case, e perguntou: 'Podemos iniciar a definicao macro das fases? Voce concorda com esta estrutura de 5 fases?'"
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"text": "Faz apenas UMA pergunta por vez (nao bombardeia com multiplas perguntas no mesmo turno)",
|
|
13
|
-
"passed": true,
|
|
14
|
-
"evidence": "Fez apenas uma pergunta ao final: 'Podemos iniciar a definicao macro das fases?' Nao bombardeou com multiplas perguntas."
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"text": "Propoe macro-fases de alto nivel e aguarda validacao antes de criar tasks",
|
|
18
|
-
"passed": true,
|
|
19
|
-
"evidence": "Propos 5 fases (Fundacao, Contratos/Dados, Logica de Negocio, Apresentacao, Testes) com justificativa para cada uma, e aguardou validacao antes de criar tasks detalhadas."
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"text": "Le as rules do projeto (.claude/rules/ e CLAUDE.md) ANTES de gerar tasks",
|
|
23
|
-
"passed": false,
|
|
24
|
-
"evidence": "O transcript mostra leitura extensiva do codebase (13 arquivos Go, proto, config, PRD), mas NAO ha leitura explicita de .claude/rules/ nem CLAUDE.md. O agente explorou o codebase mas nao leu as rules do projeto."
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"text": "NAO inicia execucao automatica de tasks — apenas apresenta o plano e aguarda",
|
|
28
|
-
"passed": true,
|
|
29
|
-
"evidence": "Encerrou com 'Este e o primeiro turno de interacao' e explicou que o proximo passo seria destrinchar tasks da Fase 1. Nao iniciou execucao automatica."
|
|
30
|
-
}
|
|
31
|
-
]
|
|
32
|
-
}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
# Resposta ao Usuario — Primeiro Turno de Interacao
|
|
2
|
-
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Obrigado! Li o SPEC_TECH aprovado em `docs/feature-user/v1/spec_tech.md`.
|
|
6
|
-
|
|
7
|
-
Extraindo o nome da feature da secao "1. Visao Geral Tecnica":
|
|
8
|
-
|
|
9
|
-
> **Feature**: Modulo de Usuario -- Vakinha Burger
|
|
10
|
-
|
|
11
|
-
Nome normalizado para o framework SDD (kebab-case): **`feature-user`**
|
|
12
|
-
|
|
13
|
-
Diretorio de trabalho: `docs/feature-user/v1/` (ja existente, onde vivem o `prd.md` e o `spec_tech.md`)
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Analise do Codebase Existente
|
|
18
|
-
|
|
19
|
-
Antes de propor as fases, analisei o projeto e identifiquei o estado atual:
|
|
20
|
-
|
|
21
|
-
### O que ja existe (e sera MODIFICADO)
|
|
22
|
-
| Camada | Arquivo | Estado Atual |
|
|
23
|
-
|--------|---------|-------------|
|
|
24
|
-
| Proto | `api/proto/v1/user.proto` | `CreateUser` + `GetUser` (sera substituido por `Login`, `GetUserLogged`, `UpdateUser`) |
|
|
25
|
-
| Repository | `internal/repository/user_repository.go` | `Create` + `GetByID`; modelo `User` sem `Address`; interface `UserRepository` sem `GetByEmail`/`Update` |
|
|
26
|
-
| Service | `internal/service/user_service.go` | `CreateUser` + `GetUser`; sem `Login`, `GetUserLogged`, `UpdateUser`; sem logger/config; validacoes basicas |
|
|
27
|
-
| Service Tests | `internal/service/user_service_test.go` | Testes existentes para `CreateUser` e `GetUser` |
|
|
28
|
-
| Handler | `internal/handler/grpc/user_handler.go` | `CreateUser` + `GetUser`; `mapServiceError` basico |
|
|
29
|
-
| Handler Tests | `internal/handler/grpc/user_handler_test.go` | Testes existentes para os handlers atuais |
|
|
30
|
-
| Interceptor | `internal/infra/grpc/interceptors/auth.go` | JWT parse manual; `skipMethods` apenas `CreateUser`; nao injeta `user_id` no contexto |
|
|
31
|
-
| Interceptor Tests | `internal/infra/grpc/interceptors/auth_test.go` | Testes existentes |
|
|
32
|
-
| Config | `internal/infra/config/config.go` | Sem campo `JWTExpirationHours` |
|
|
33
|
-
| Config YAML | `configs/config.yaml` | Sem `jwt.expiration_hours` |
|
|
34
|
-
| Queries SQLC | `internal/db/sqlc/queries/user.sql` | Apenas `CreateUser` e `GetUserByID` |
|
|
35
|
-
| Migration | `internal/db/migrations/001_create_usuarios.sql` | Tabela `usuarios` sem coluna `endereco` |
|
|
36
|
-
|
|
37
|
-
### O que NAO existe (sera CRIADO)
|
|
38
|
-
| Camada | Arquivo | Descricao |
|
|
39
|
-
|--------|---------|-----------|
|
|
40
|
-
| Identity | `internal/pkg/identity/identity.go` | Pacote JWT: Claims, GenerateToken, ParseToken, WithUserID, UserIDFromContext |
|
|
41
|
-
| Identity Tests | `internal/pkg/identity/identity_test.go` | Testes unitarios do pacote identity |
|
|
42
|
-
| Migration | `internal/db/migrations/002_add_endereco_usuarios.sql` | ADD COLUMN `endereco` |
|
|
43
|
-
| Integration Tests | `internal/repository/user_repository_integration_test.go` | Testes de integracao com SQLite real |
|
|
44
|
-
| E2E Tests | `internal/e2e/user_e2e_test.go` | Testes E2E com servidor gRPC real |
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Proposta de Macro-Fases
|
|
49
|
-
|
|
50
|
-
Com base no SPEC_TECH, nas dependencias entre camadas e no principio de "cada fase entrega valor incremental e testavel", proponho as seguintes macro-fases:
|
|
51
|
-
|
|
52
|
-
### Fase 1 -- Fundacao: Configuracao, Migration e Identity
|
|
53
|
-
**Objetivo:** Preparar a infraestrutura necessaria para as demais fases. Criar o pacote `identity` (JWT + contexto), adicionar a coluna `endereco` ao banco, e atualizar a configuracao com `JWTExpirationHours`.
|
|
54
|
-
|
|
55
|
-
**Justificativa:** Tudo que vem depois depende do pacote identity e da coluna `endereco` existirem. Sao pecas fundamentais sem dependencia entre si (podem ser paralelizadas).
|
|
56
|
-
|
|
57
|
-
**Tasks previstas:**
|
|
58
|
-
- T1: Configuracao (`config.go` + `config.yaml` — adicionar `JWTExpirationHours`)
|
|
59
|
-
- T2: Migration `002_add_endereco_usuarios.sql`
|
|
60
|
-
- T3: Pacote `internal/pkg/identity` (criar completo com testes)
|
|
61
|
-
|
|
62
|
-
### Fase 2 -- Contratos e Dados: Proto, Queries SQLC e Repository
|
|
63
|
-
**Objetivo:** Atualizar os contratos gRPC (proto), as queries SQLC e a camada repository para suportar todos os 4 endpoints e o campo `address`.
|
|
64
|
-
|
|
65
|
-
**Justificativa:** Service e Handler dependem dos contratos proto e da interface do repository estarem prontos. Apos esta fase, `make generate` pode ser executado e o repositorio esta completo.
|
|
66
|
-
|
|
67
|
-
**Tasks previstas:**
|
|
68
|
-
- T4: Atualizar `user.proto` (substituicao completa conforme SPEC)
|
|
69
|
-
- T5: Atualizar queries SQLC (`user.sql`) + executar `make generate`
|
|
70
|
-
- T6: Atualizar `user_repository.go` (modelo `User` com `Address`, novos metodos `GetByEmail` e `Update`)
|
|
71
|
-
|
|
72
|
-
### Fase 3 -- Logica de Negocio: Service
|
|
73
|
-
**Objetivo:** Implementar toda a logica de negocio no service: validacoes, `Login`, `GetUserLogged`, `UpdateUser`, integracao com identity e logger.
|
|
74
|
-
|
|
75
|
-
**Justificativa:** O service depende do repository (Fase 2) e do identity (Fase 1) estarem prontos. E a camada mais complexa, com todas as regras de negocio (RN-1 a RN-12).
|
|
76
|
-
|
|
77
|
-
**Tasks previstas:**
|
|
78
|
-
- T7: Atualizar `user_service.go` (novos metodos, validacoes, logger, config)
|
|
79
|
-
|
|
80
|
-
### Fase 4 -- Apresentacao: Handler e Interceptor
|
|
81
|
-
**Objetivo:** Atualizar os handlers gRPC e o interceptor de autenticacao para expor os 4 endpoints, mapear erros corretamente e injetar `user_id` no contexto.
|
|
82
|
-
|
|
83
|
-
**Justificativa:** Depende do service (Fase 3) e do identity (Fase 1). Completa a stack funcional.
|
|
84
|
-
|
|
85
|
-
**Tasks previstas:**
|
|
86
|
-
- T8: Atualizar interceptor `auth.go` (adicionar `Login` em skipMethods, usar `identity.ParseToken`, injetar `user_id`)
|
|
87
|
-
- T9: Atualizar `user_handler.go` (remover `GetUser`, adicionar `Login`, `GetUserLogged`, `UpdateUser`, atualizar `mapServiceError`)
|
|
88
|
-
|
|
89
|
-
### Fase 5 -- Testes
|
|
90
|
-
**Objetivo:** Criar/atualizar todos os testes unitarios, de integracao e E2E conforme definido na secao 14 do SPEC_TECH.
|
|
91
|
-
|
|
92
|
-
**Justificativa:** Testes dependem de toda a implementacao estar pronta. Executar ao final garante cobertura completa e nao exige retrabalho.
|
|
93
|
-
|
|
94
|
-
**Tasks previstas:**
|
|
95
|
-
- T10: Atualizar testes unitarios do service (`user_service_test.go`)
|
|
96
|
-
- T11: Atualizar testes unitarios do handler (`user_handler_test.go`)
|
|
97
|
-
- T12: Atualizar testes do interceptor (`auth_test.go`)
|
|
98
|
-
- T13: Criar testes de integracao do repository (`user_repository_integration_test.go`)
|
|
99
|
-
- T14: Criar testes E2E (`user_e2e_test.go`)
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
## Rastreabilidade Preliminar (User Stories -> Fases)
|
|
104
|
-
|
|
105
|
-
| User Story | Descricao | Fases Envolvidas |
|
|
106
|
-
|------------|-----------|-----------------|
|
|
107
|
-
| US-01 | Cadastro de novo usuario | F1 (config, migration, identity), F2 (proto, queries, repo), F3 (service), F4 (handler), F5 (testes) |
|
|
108
|
-
| US-02 | Login com email e senha | F1 (config, identity), F2 (proto, repo), F3 (service), F4 (handler, interceptor), F5 (testes) |
|
|
109
|
-
| US-03 | Consultar dados do usuario autenticado | F1 (identity), F2 (proto, repo), F3 (service), F4 (handler, interceptor), F5 (testes) |
|
|
110
|
-
| US-04 | Atualizar dados cadastrais | F1 (identity, migration), F2 (proto, queries, repo), F3 (service), F4 (handler, interceptor), F5 (testes) |
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Paralelismo Identificado
|
|
115
|
-
|
|
116
|
-
- **Fase 1:** T1, T2 e T3 podem rodar em paralelo (sem dependencia entre si)
|
|
117
|
-
- **Fase 2:** T4 e T5 sao sequenciais (proto antes de queries/generate), T6 depende de T5
|
|
118
|
-
- **Fase 5:** T10, T11, T12 podem rodar em paralelo; T13 e T14 podem rodar em paralelo entre si
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
Podemos iniciar a definicao macro das fases? Voce concorda com esta estrutura de 5 fases, ou gostaria de ajustar algo (unir/separar fases, mudar ordem, realocar tasks)?
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
*[Simulacao de resposta do usuario para fins de avaliacao]*
|
|
127
|
-
|
|
128
|
-
**Pergunta que seria feita:** "Podemos iniciar a definicao macro das fases? Voce concorda com esta estrutura de 5 fases, ou gostaria de ajustar algo?"
|
|
129
|
-
|
|
130
|
-
**Resposta simulada:** "Sim, a estrutura de 5 fases esta otima. Podemos prosseguir com o detalhamento das tasks da Fase 1."
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
> **Nota:** Este e o primeiro turno de interacao. Conforme as instrucoes da avaliacao, o processo foi interrompido aqui. O proximo passo seria destrinchar as tasks da Fase 1 individualmente, criando os arquivos `tasks/T1.md`, `tasks/T2.md` e `tasks/T3.md` com o template completo (secoes 1-5 e 7-8 pelo engenheiro de tarefas, secao 6 delegada ao subagente QA), salvando cada arquivo antes de apresentar ao usuario para aprovacao.
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# Transcript de Chamadas de Ferramentas
|
|
2
|
-
|
|
3
|
-
## 1. Leitura do Skill e Templates (paralelo)
|
|
4
|
-
|
|
5
|
-
| Ferramenta | Arquivo |
|
|
6
|
-
|------------|---------|
|
|
7
|
-
| Read | `.claude/skills/sdd-task-plan-expert/SKILL.md` |
|
|
8
|
-
| Read | `.claude/skills/sdd-task-plan-expert/templates/task_plan_template.md` |
|
|
9
|
-
| Read | `.claude/skills/sdd-task-plan-expert/templates/task_template.md` |
|
|
10
|
-
| Read | `docs/feature-user/v1/spec_tech.md` |
|
|
11
|
-
|
|
12
|
-
## 2. Leitura do SPEC_TECH completo (arquivo grande, lido em partes)
|
|
13
|
-
|
|
14
|
-
| Ferramenta | Arquivo | Offset | Limit |
|
|
15
|
-
|------------|---------|--------|-------|
|
|
16
|
-
| Read | Persisted output (preview do spec_tech) | - | - |
|
|
17
|
-
| Read | `docs/feature-user/v1/spec_tech.md` | 1 | 200 |
|
|
18
|
-
| Read | `docs/feature-user/v1/spec_tech.md` | 200 | 400 |
|
|
19
|
-
| Read | `docs/feature-user/v1/spec_tech.md` | 600 | 400 |
|
|
20
|
-
|
|
21
|
-
## 3. Exploracao do Codebase Existente (paralelo)
|
|
22
|
-
|
|
23
|
-
| Ferramenta | Parametro | Descricao |
|
|
24
|
-
|------------|-----------|-----------|
|
|
25
|
-
| Glob | `**/*.go` em `internal/` | Listar todos os arquivos Go do projeto |
|
|
26
|
-
| Glob | `**/*.sql` em `internal/db/` | Listar arquivos SQL (migrations + queries) |
|
|
27
|
-
| Glob | `**/*.proto` em `api/` | Listar arquivos Protobuf |
|
|
28
|
-
|
|
29
|
-
## 4. Leitura dos Arquivos Existentes (paralelo)
|
|
30
|
-
|
|
31
|
-
| Ferramenta | Arquivo | Objetivo |
|
|
32
|
-
|------------|---------|----------|
|
|
33
|
-
| Read | `internal/service/user_service.go` | Entender service atual |
|
|
34
|
-
| Read | `internal/repository/user_repository.go` | Entender repository atual |
|
|
35
|
-
| Read | `internal/handler/grpc/user_handler.go` | Entender handler atual |
|
|
36
|
-
| Read | `internal/infra/grpc/interceptors/auth.go` | Entender interceptor atual |
|
|
37
|
-
| Read | `internal/infra/config/config.go` | Entender config atual |
|
|
38
|
-
| Read | `api/proto/v1/user.proto` | Entender proto atual |
|
|
39
|
-
| Read | `configs/config.yaml` | Entender configuracao atual |
|
|
40
|
-
|
|
41
|
-
## 5. Leitura do PRD (User Stories)
|
|
42
|
-
|
|
43
|
-
| Ferramenta | Arquivo | Objetivo |
|
|
44
|
-
|------------|---------|----------|
|
|
45
|
-
| Glob | `**/prd.md` em `docs/feature-user/` | Localizar PRD |
|
|
46
|
-
| Read | `docs/feature-user/v1/prd.md` (limit 100) | Extrair User Stories US-01 a US-04 |
|
|
47
|
-
|
|
48
|
-
## 6. Criacao de Diretorios de Output
|
|
49
|
-
|
|
50
|
-
| Ferramenta | Comando |
|
|
51
|
-
|------------|---------|
|
|
52
|
-
| Bash | `mkdir -p .claude/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs` |
|
|
53
|
-
|
|
54
|
-
## 7. Escrita dos Arquivos de Output
|
|
55
|
-
|
|
56
|
-
| Ferramenta | Arquivo |
|
|
57
|
-
|------------|---------|
|
|
58
|
-
| Write | `.claude/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/response.md` |
|
|
59
|
-
| Write | `.claude/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/transcript.md` |
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## Resumo
|
|
64
|
-
|
|
65
|
-
- **Total de chamadas de ferramenta**: 19
|
|
66
|
-
- **Ferramentas utilizadas**: ToolSearch (2x), Read (13x), Glob (3x), Bash (1x), Write (2x)
|
|
67
|
-
- **Arquivos lidos**: SKILL.md, task_plan_template.md, task_template.md, spec_tech.md (3 partes), 7 arquivos Go, 1 YAML, 1 Proto, prd.md
|
|
68
|
-
- **Arquivos criados**: response.md, transcript.md
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"eval_id": 1,
|
|
3
|
-
"eval_name": "happy-path-spec-tech-usuario",
|
|
4
|
-
"configuration": "without_skill",
|
|
5
|
-
"expectations": [
|
|
6
|
-
{
|
|
7
|
-
"text": "Extrai o nome da feature do SPEC_TECH e confirma com o usuario antes de prosseguir",
|
|
8
|
-
"passed": false,
|
|
9
|
-
"evidence": "Nao extraiu nem confirmou o nome da feature com o usuario. Pulou direto para gerar o plano completo sem interacao."
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"text": "Faz apenas UMA pergunta por vez (nao bombardeia com multiplas perguntas no mesmo turno)",
|
|
13
|
-
"passed": false,
|
|
14
|
-
"evidence": "Nao fez nenhuma pergunta. Gerou o plano inteiro (17 tasks, 7 fases) em um unico turno sem interacao."
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"text": "Propoe macro-fases de alto nivel e aguarda validacao antes de criar tasks",
|
|
18
|
-
"passed": false,
|
|
19
|
-
"evidence": "Gerou fases E tasks detalhadas simultaneamente. Nao aguardou validacao das fases antes de criar as tasks."
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"text": "Le as rules do projeto (.claude/rules/ e CLAUDE.md) ANTES de gerar tasks",
|
|
23
|
-
"passed": false,
|
|
24
|
-
"evidence": "Transcript mostra apenas leitura do SPEC_TECH e um glob de arquivos Go. Nao leu .claude/rules/ nem CLAUDE.md."
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"text": "NAO inicia execucao automatica de tasks — apenas apresenta o plano e aguarda",
|
|
28
|
-
"passed": true,
|
|
29
|
-
"evidence": "Apresentou o plano completo sem iniciar execucao automatica."
|
|
30
|
-
}
|
|
31
|
-
]
|
|
32
|
-
}
|