adi_dev_workflow 1.2.0 → 1.3.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/skills/ministack-intent-expert/SKILL.md +0 -2
- package/frameworks/skills/ministack-scope-expert/SKILL.md +0 -4
- package/frameworks/skills/ministack-tasks-expert/SKILL.md +204 -0
- package/frameworks/skills/ministack-tasks-expert/templates/task_plan_template.md +78 -0
- package/frameworks/skills/ministack-tasks-expert/templates/task_template.md +103 -0
- package/frameworks/skills/ministack-tech-direction-expert/SKILL.md +230 -0
- package/frameworks/skills/ministack-tech-direction-expert/evals/evals.json +1 -0
- package/frameworks/skills/ministack-tech-direction-expert/templates/tech_direction-template.md +17 -0
- package/frameworks/skills/prompt-engineer-expert/SKILL.md +232 -0
- package/frameworks/skills/prompt-engineer-expert/templates/prompt_template.md +139 -0
- package/frameworks/skills/sdd-prd-expert/SKILL.md +0 -2
- package/frameworks/skills/sdd-task-plan-expert/SKILL.md +0 -2
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.json +99 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.md +64 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/response.md +134 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/transcript.md +68 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/response.md +525 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/transcript.md +30 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/response.md +1126 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/transcript.md +131 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/response.md +452 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/transcript.md +78 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/response.md +101 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/transcript.md +133 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/response.md +248 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/transcript.md +49 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/timing.json +5 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/review.html +1325 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.json +94 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.md +67 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/response.md +117 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/transcript.md +91 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/response.md +694 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/transcript.md +45 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/response.md +1087 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/transcript.md +124 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/response.md +458 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/transcript.md +84 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/eval_metadata.json +12 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/response.md +70 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/transcript.md +148 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/grading.json +32 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/response.md +249 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/transcript.md +80 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/timing.json +1 -0
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/review.html +1325 -0
- package/frameworks/skills/sdd-tech-direction-expert/SKILL.md +235 -0
- package/frameworks/skills/sdd-tech-direction-expert/evals/evals.json +1 -0
- package/frameworks/skills/sdd-tech-direction-expert/templates/tech_direction-template.md +23 -0
- package/frameworks/skills/sdd-tech-spec-expert/SKILL.md +317 -0
- package/frameworks/skills/sdd-tech-spec-expert/evals/evals.json +199 -0
- package/frameworks/skills/sdd-tech-spec-expert/templates/spec_tech_template.md +290 -0
- package/frameworks/skills/sdd-tech-spec-expert/templates/tech_direction-template.md +23 -0
- package/frameworks/skills/taskcard-expert/SKILL.md +0 -4
- package/package.json +1 -1
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "sdd-tech-spec-expert",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"name": "prd-usuario-existente",
|
|
7
|
+
"prompt": "Preciso gerar o SPEC_TECH para a feature de usuario. O PRD aprovado esta em docs/feature-user/v1/prd.md",
|
|
8
|
+
"expected_output": "A skill deve: (1) ler o PRD aprovado em docs/feature-user/v1/prd.md, (2) pesquisar o codebase (CLAUDE.md, .claude/rules/, estrutura de diretorios, codigo existente), (3) verificar se existe tech_direction.md na pasta da feature, (4) iniciar o processo de coleta fazendo UMA pergunta por vez ao usuario, (5) NAO bombardear com multiplas perguntas de uma vez",
|
|
9
|
+
"files": [
|
|
10
|
+
"docs/feature-user/v1/prd.md"
|
|
11
|
+
],
|
|
12
|
+
"assertions": [
|
|
13
|
+
{
|
|
14
|
+
"name": "leu-prd-aprovado",
|
|
15
|
+
"type": "tool_usage",
|
|
16
|
+
"description": "Deve ler o arquivo PRD aprovado antes de fazer qualquer pergunta",
|
|
17
|
+
"check": "A skill usou Read para ler docs/feature-user/v1/prd.md"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "pesquisou-codebase",
|
|
21
|
+
"type": "tool_usage",
|
|
22
|
+
"description": "Deve pesquisar regras do projeto e estrutura do codebase",
|
|
23
|
+
"check": "A skill leu CLAUDE.md e/ou arquivos em .claude/rules/"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "verificou-tech-direction",
|
|
27
|
+
"type": "tool_usage",
|
|
28
|
+
"description": "Deve verificar se existe tech_direction.md na pasta da feature",
|
|
29
|
+
"check": "A skill tentou ler ou verificar a existencia de docs/feature-user/v1/tech_direction.md"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "uma-pergunta-por-vez",
|
|
33
|
+
"type": "output_quality",
|
|
34
|
+
"description": "Deve fazer apenas UMA pergunta tecnica por vez, nao bombardear o usuario",
|
|
35
|
+
"check": "A primeira interacao com o usuario contem no maximo 1 pergunta tecnica clara (pode ter sub-opcoes, mas e 1 topico)"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "resumo-do-prd",
|
|
39
|
+
"type": "output_content",
|
|
40
|
+
"description": "Deve apresentar um resumo do que entendeu do PRD antes de iniciar perguntas",
|
|
41
|
+
"check": "A skill apresenta um resumo do objetivo da feature (modulo de usuario, cadastro, login, consulta, atualizacao)"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": 2,
|
|
47
|
+
"name": "spec-tech-completo-16-secoes",
|
|
48
|
+
"prompt": "Gere o SPEC_TECH para a feature de usuario. PRD em docs/feature-user/v1/prd.md. Para agilizar, aceite todas as sugestoes padrao sem perguntar — quero ver o documento final completo.",
|
|
49
|
+
"expected_output": "A skill deve gerar um SPEC_TECH completo com TODAS as 16 secoes do template, salvar o arquivo fisico em docs/feature-user/v1/spec_tech.md ANTES de apresentar ao usuario, e NAO iniciar o TASK PLAN automaticamente",
|
|
50
|
+
"files": [
|
|
51
|
+
"docs/feature-user/v1/prd.md"
|
|
52
|
+
],
|
|
53
|
+
"assertions": [
|
|
54
|
+
{
|
|
55
|
+
"name": "todas-16-secoes",
|
|
56
|
+
"type": "output_content",
|
|
57
|
+
"description": "O SPEC_TECH gerado deve conter todas as 16 secoes do template",
|
|
58
|
+
"check": "O documento contem secoes 1 (Identificacao), 2 (Resumo Tecnico), 3 (Arquitetura), 4 (Estruturas de Dados), 5 (Regras Tecnicas), 6 (Fluxos Tecnicos), 7 (APIs/Endpoints), 8 (Frontend/Mobile), 9 (Banco Local/Cache), 10 (Dependencias), 11 (Requisitos Nao Funcionais), 12 (Criterios Tecnicos), 13 (Riscos), 14 (Estrategia de Testes), 15 (Arquivos Envolvidos), 16 (Checklist Final)"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "arquivo-salvo-antes-de-apresentar",
|
|
62
|
+
"type": "tool_usage",
|
|
63
|
+
"description": "Deve salvar o arquivo fisico ANTES de apresentar ao usuario",
|
|
64
|
+
"check": "A skill usou Write para salvar em docs/feature-user/v1/spec_tech.md antes de mostrar o conteudo ao usuario"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "nao-iniciou-task-plan",
|
|
68
|
+
"type": "output_content",
|
|
69
|
+
"description": "NAO deve sugerir ou iniciar a proxima etapa (TASK PLAN) automaticamente",
|
|
70
|
+
"check": "A skill NAO menciona executar /sdd:generate-task-plan nem inicia geracao de tasks. Apenas pergunta se o SPEC esta aprovado"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "mapeamento-user-stories-secao-5-1",
|
|
74
|
+
"type": "output_content",
|
|
75
|
+
"description": "A secao 5.1 deve mapear TODAS as user stories do PRD para definicoes tecnicas",
|
|
76
|
+
"check": "A secao 5.1 contem mapeamento de US-01, US-02, US-03 e US-04 para definicoes tecnicas correspondentes"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "secao-15-tres-subsecoes",
|
|
80
|
+
"type": "output_content",
|
|
81
|
+
"description": "A secao 15 deve ter 3 subsecoes: Criar, Modificar e Referencia",
|
|
82
|
+
"check": "A secao 15 contem 15.1 (Arquivos a Criar), 15.2 (Arquivos a Modificar) e 15.3 (Arquivos de Referencia)"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "delegou-secao-14-qa",
|
|
86
|
+
"type": "tool_usage",
|
|
87
|
+
"description": "A secao 14 (Estrategia de Testes) deve ser delegada a um subagente QA",
|
|
88
|
+
"check": "A skill disparou um subagente (Task tool) para gerar a secao 14 com contexto de QA expert"
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": 3,
|
|
94
|
+
"name": "respeita-arquitetura-existente",
|
|
95
|
+
"prompt": "Gere o SPEC_TECH para a feature de usuario. O PRD esta em docs/feature-user/v1/prd.md. Quero que a solucao use a arquitetura ja existente no projeto.",
|
|
96
|
+
"expected_output": "A skill deve pesquisar profundamente o codebase, identificar a arquitetura existente (gRPC, Clean Architecture, SQLite, Uber FX, SQLC) e propor solucoes que seguem os padroes ja estabelecidos — NAO propor REST quando o projeto usa gRPC, NAO propor PostgreSQL quando o projeto usa SQLite, etc.",
|
|
97
|
+
"files": [
|
|
98
|
+
"docs/feature-user/v1/prd.md"
|
|
99
|
+
],
|
|
100
|
+
"assertions": [
|
|
101
|
+
{
|
|
102
|
+
"name": "identificou-grpc",
|
|
103
|
+
"type": "output_content",
|
|
104
|
+
"description": "Deve identificar que o projeto usa gRPC e propor endpoints gRPC (nao REST)",
|
|
105
|
+
"check": "O SPEC_TECH propoe endpoints/servicos gRPC, NAO endpoints REST (GET/POST/PUT/DELETE)"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"name": "identificou-sqlite",
|
|
109
|
+
"type": "output_content",
|
|
110
|
+
"description": "Deve identificar que o projeto usa SQLite e propor migracoes SQLite",
|
|
111
|
+
"check": "O SPEC_TECH referencia SQLite como banco de dados, com migracoes no padrao do projeto"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "identificou-clean-architecture",
|
|
115
|
+
"type": "output_content",
|
|
116
|
+
"description": "Deve seguir a Clean Architecture do projeto (handler -> service -> repository)",
|
|
117
|
+
"check": "O SPEC_TECH propoe componentes nas camadas handler, service e repository conforme a arquitetura existente"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"name": "identificou-uber-fx",
|
|
121
|
+
"type": "output_content",
|
|
122
|
+
"description": "Deve mencionar Uber FX para injecao de dependencias",
|
|
123
|
+
"check": "O SPEC_TECH referencia Uber FX ou modulos fx.Module para DI dos novos componentes"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"name": "convencao-idioma-banco-portugues",
|
|
127
|
+
"type": "output_content",
|
|
128
|
+
"description": "Deve seguir a convencao do projeto: tabelas/colunas em portugues, codigo em ingles",
|
|
129
|
+
"check": "Tabelas e colunas propostas estao em portugues (ex: usuarios, nome, email, senha_hash) e nomes de structs/funcoes em ingles"
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"id": 4,
|
|
135
|
+
"name": "com-tech-direction-existente",
|
|
136
|
+
"prompt": "Preciso do SPEC_TECH para a feature de pedidos (orders). O PRD esta em docs/feature-order/v1/prd.md. Ja criei um tech_direction.md na mesma pasta com decisoes tecnicas que quero que sejam respeitadas.",
|
|
137
|
+
"expected_output": "A skill deve detectar o tech_direction.md, apresentar os direcionamentos encontrados, respeitar as decisoes do usuario como ponto de partida, e levantar conflitos se houver incompatibilidade com o codebase existente",
|
|
138
|
+
"files": [
|
|
139
|
+
"docs/feature-order/v1/prd.md",
|
|
140
|
+
"docs/feature-order/v1/tech_direction.md"
|
|
141
|
+
],
|
|
142
|
+
"assertions": [
|
|
143
|
+
{
|
|
144
|
+
"name": "detectou-tech-direction",
|
|
145
|
+
"type": "tool_usage",
|
|
146
|
+
"description": "Deve buscar e ler o tech_direction.md na pasta da feature",
|
|
147
|
+
"check": "A skill leu o arquivo docs/feature-order/v1/tech_direction.md"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"name": "apresentou-direcionamentos",
|
|
151
|
+
"type": "output_content",
|
|
152
|
+
"description": "Deve apresentar um resumo dos direcionamentos encontrados no tech_direction",
|
|
153
|
+
"check": "A skill lista ou resume as decisoes tecnicas encontradas no tech_direction.md antes de iniciar perguntas"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"name": "respeitou-decisoes-usuario",
|
|
157
|
+
"type": "output_content",
|
|
158
|
+
"description": "Deve usar as decisoes do tech_direction como ponto de partida, nao propor alternativas conflitantes",
|
|
159
|
+
"check": "As propostas tecnicas da skill sao consistentes com o tech_direction — nao propoe alternativas que contradizem decisoes firmes do usuario"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"name": "registrou-no-resumo-tecnico",
|
|
163
|
+
"type": "output_content",
|
|
164
|
+
"description": "Deve incluir as decisoes do tech_direction na secao 2 do SPEC_TECH",
|
|
165
|
+
"check": "A secao 2 (Resumo Tecnico) do SPEC_TECH referencia ou incorpora decisoes do tech_direction.md"
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"id": 5,
|
|
171
|
+
"name": "nao-inventa-nao-deduz",
|
|
172
|
+
"prompt": "Gere o SPEC_TECH para a feature de usuario. PRD em docs/feature-user/v1/prd.md. Mas quero que inclua tambem um sistema de notificacoes por email quando o usuario se cadastrar.",
|
|
173
|
+
"expected_output": "A skill deve identificar que 'notificacoes por email' NAO esta no PRD aprovado e NAO deve adicionar ao escopo. Deve informar ao usuario que isso esta fora do escopo do PRD e perguntar se deseja prosseguir apenas com o escopo aprovado ou se quer primeiro atualizar o PRD.",
|
|
174
|
+
"files": [
|
|
175
|
+
"docs/feature-user/v1/prd.md"
|
|
176
|
+
],
|
|
177
|
+
"assertions": [
|
|
178
|
+
{
|
|
179
|
+
"name": "identificou-escopo-fora-prd",
|
|
180
|
+
"type": "output_content",
|
|
181
|
+
"description": "Deve identificar que notificacoes por email nao esta no PRD aprovado",
|
|
182
|
+
"check": "A skill menciona que notificacoes por email nao faz parte do PRD aprovado ou esta fora do escopo definido"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "nao-adicionou-ao-spec",
|
|
186
|
+
"type": "output_content",
|
|
187
|
+
"description": "NAO deve adicionar funcionalidade fora do PRD ao SPEC_TECH sem aprovacao",
|
|
188
|
+
"check": "A skill NAO inclui notificacoes por email no SPEC_TECH gerado, ou pergunta ao usuario antes de incluir"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"name": "sugeriu-atualizar-prd",
|
|
192
|
+
"type": "output_content",
|
|
193
|
+
"description": "Deve sugerir que o usuario atualize o PRD se quiser incluir a funcionalidade",
|
|
194
|
+
"check": "A skill sugere atualizar o PRD primeiro ou pergunta ao usuario como deseja proceder com o item fora do escopo"
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
]
|
|
199
|
+
}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# SPEC_TECH -- Especificação Técnica
|
|
2
|
+
|
|
3
|
+
## 1. Identificação
|
|
4
|
+
- **Feature/Projeto**:
|
|
5
|
+
- **Autor**:
|
|
6
|
+
- **Data**:
|
|
7
|
+
- **Versão**:
|
|
8
|
+
- **Status**: Draft | Refinando | Aprovado
|
|
9
|
+
- **PRD Relacionado**:
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 2. Resumo Técnico da Solução
|
|
14
|
+
|
|
15
|
+
(Visão geral do COMO será implementado. Descreva em 3-5 linhas a abordagem técnica escolhida, as principais decisões arquiteturais e o resultado técnico esperado.)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 3. Arquitetura da Solução
|
|
20
|
+
|
|
21
|
+
### 3.1 Visão Geral
|
|
22
|
+
(Diagrama ou descrição da arquitetura geral da solução. Como os componentes se conectam.)
|
|
23
|
+
|
|
24
|
+
### 3.2 Componentes/Módulos
|
|
25
|
+
(Lista de componentes envolvidos com descrição da responsabilidade de cada um.)
|
|
26
|
+
|
|
27
|
+
| Componente | Responsabilidade | Camada |
|
|
28
|
+
|------------|-----------------|--------|
|
|
29
|
+
| | | |
|
|
30
|
+
|
|
31
|
+
### 3.3 Interações entre componentes
|
|
32
|
+
(Descreva como os componentes se comunicam. Fluxo de dados entre camadas.)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 4. Estruturas de Dados
|
|
37
|
+
|
|
38
|
+
### 4.1 Models / DTOs
|
|
39
|
+
(Structs, tipos e modelos de domínio que serão criados ou modificados.)
|
|
40
|
+
|
|
41
|
+
### 4.2 Entidades de Banco de Dados
|
|
42
|
+
(Tabelas, colunas, índices, constraints. Inclua SQL de migrações quando aplicável.)
|
|
43
|
+
|
|
44
|
+
### 4.3 Schemas adicionais
|
|
45
|
+
(Protocol Buffers, mensagens gRPC, schemas de validação ou outros formatos de dados.)
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 5. Regras Técnicas de Negócio
|
|
50
|
+
|
|
51
|
+
(Implementação técnica das regras definidas no PRD. Cada regra do PRD deve ter uma definição técnica correspondente.)
|
|
52
|
+
|
|
53
|
+
### 5.1 Mapeamento de User Stories para Definições Técnicas
|
|
54
|
+
|
|
55
|
+
| User Story (PRD) | Definição Técnica | Componentes Envolvidos |
|
|
56
|
+
|------------------|-------------------|----------------------|
|
|
57
|
+
| US-01 | | |
|
|
58
|
+
| US-02 | | |
|
|
59
|
+
|
|
60
|
+
<!-- LLM-ONLY: Cada user story do PRD deve ter pelo menos uma definicao tecnica correspondente. Isso garante rastreabilidade completa entre o PRD e a especificacao tecnica. -->
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 6. Fluxos Técnicos
|
|
65
|
+
|
|
66
|
+
### 6.1 Fluxo Principal (técnico)
|
|
67
|
+
(Sequência de chamadas, processamento e respostas do fluxo principal. Descreva camada por camada.)
|
|
68
|
+
|
|
69
|
+
### 6.2 Fluxos Alternativos
|
|
70
|
+
(Variações do fluxo principal: dados opcionais, caminhos condicionais, etc.)
|
|
71
|
+
|
|
72
|
+
### 6.3 Tratamento de Erros
|
|
73
|
+
(Como erros serão tratados em cada camada. Mapeamento de erros de negócio para códigos de status.)
|
|
74
|
+
|
|
75
|
+
| Erro de Negócio | Código de Status | Mensagem | Camada de Origem |
|
|
76
|
+
|----------------|-----------------|----------|-----------------|
|
|
77
|
+
| | | | |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 7. APIs / Endpoints
|
|
82
|
+
|
|
83
|
+
### 7.1 Endpoints Backend
|
|
84
|
+
|
|
85
|
+
| Ação | Método | Rota | Payload | Resposta Esperada |
|
|
86
|
+
|------|--------|------|---------|-------------------|
|
|
87
|
+
| | | | | |
|
|
88
|
+
|
|
89
|
+
### 7.2 Erros e Códigos de Status
|
|
90
|
+
|
|
91
|
+
| Código | Situação | Mensagem |
|
|
92
|
+
|--------|----------|----------|
|
|
93
|
+
| | | |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 8. Frontend / Mobile
|
|
98
|
+
|
|
99
|
+
### 8.1 Telas
|
|
100
|
+
(Telas envolvidas, layouts e componentes visuais.)
|
|
101
|
+
|
|
102
|
+
### 8.2 Estados e Gerência de Estado
|
|
103
|
+
(Gerenciamento de estado: loading, success, error, empty. Solução de state management.)
|
|
104
|
+
|
|
105
|
+
### 8.3 Navegação
|
|
106
|
+
(Fluxo de navegação entre telas. Rotas e parâmetros.)
|
|
107
|
+
|
|
108
|
+
### 8.4 Validações
|
|
109
|
+
(Validações de formulário, campos obrigatórios, máscaras, limites.)
|
|
110
|
+
|
|
111
|
+
### 8.5 Comportamentos específicos
|
|
112
|
+
(Animações, transições, comportamentos offline, responsividade.)
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 9. Banco Local / Cache
|
|
117
|
+
|
|
118
|
+
### 9.1 Estrutura de Tabelas
|
|
119
|
+
(Tabelas locais, colunas, tipos. Diferentes do banco remoto se aplicável.)
|
|
120
|
+
|
|
121
|
+
### 9.2 Estratégia de Sincronização
|
|
122
|
+
(Como dados locais sincronizam com o backend. Conflitos, prioridade, frequência.)
|
|
123
|
+
|
|
124
|
+
### 9.3 Estratégia de Versionamento
|
|
125
|
+
(Como lidar com mudanças de schema local. Migrações locais, rollback.)
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 10. Dependências Técnicas
|
|
130
|
+
|
|
131
|
+
| Tipo | Nome | Versão | Motivo |
|
|
132
|
+
|------|------|--------|--------|
|
|
133
|
+
| Pacote | | | |
|
|
134
|
+
| Biblioteca | | | |
|
|
135
|
+
| Ferramenta | | | |
|
|
136
|
+
| SDK | | | |
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 11. Requisitos Não Funcionais (COMO serão atendidos)
|
|
141
|
+
|
|
142
|
+
### Segurança
|
|
143
|
+
(Autenticação, autorização, criptografia, validação de input, sanitização.)
|
|
144
|
+
|
|
145
|
+
### Performance
|
|
146
|
+
(Metas de tempo de resposta, paginação, índices, cache, otimizações.)
|
|
147
|
+
|
|
148
|
+
### Escalabilidade
|
|
149
|
+
(Limites conhecidos, estratégia de crescimento, gargalos potenciais.)
|
|
150
|
+
|
|
151
|
+
### Observabilidade
|
|
152
|
+
(Logs estruturados, métricas, alertas, tracing distribuído.)
|
|
153
|
+
|
|
154
|
+
### Resiliência
|
|
155
|
+
(Tratamento de falhas, retry, circuit breaker, graceful degradation.)
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 12. Critérios Técnicos de Aceite
|
|
160
|
+
|
|
161
|
+
- [ ] Implementação cobre todas as regras do PRD
|
|
162
|
+
- [ ] Estruturas de dados criadas e funcionais
|
|
163
|
+
- [ ] Fluxos técnicos implementados e testados
|
|
164
|
+
- [ ] API funcionando conforme especificado
|
|
165
|
+
- [ ] Erros tratados em todas as camadas
|
|
166
|
+
- [ ] Logs/monitoramento implementados
|
|
167
|
+
- [ ] Validações aplicadas (input, negócio, dados)
|
|
168
|
+
- [ ] Código segue padrões e convenções do projeto
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 13. Riscos Técnicos
|
|
173
|
+
|
|
174
|
+
| Risco | Probabilidade | Impacto | Mitigação |
|
|
175
|
+
|-------|--------------|---------|-----------|
|
|
176
|
+
| | | | |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 14. Estratégia de Testes
|
|
181
|
+
|
|
182
|
+
> **Resumo**: X casos de teste | Unitários: Y | Integração: Z | E2E: W
|
|
183
|
+
> **Padrão**: [framework de teste, padrão de mock, convenção de nomes]
|
|
184
|
+
|
|
185
|
+
### Rastreabilidade: Critérios de Aceite → Testes
|
|
186
|
+
|
|
187
|
+
| CA (PRD) | Descrição Resumida | Testes |
|
|
188
|
+
|----------|-------------------|--------|
|
|
189
|
+
| CA-01 | (descrição curta do CA no PRD) | CT-01, CT-10, CT-20, CT-30 |
|
|
190
|
+
| CA-02 | (descrição curta do CA no PRD) | CT-02, CT-22 |
|
|
191
|
+
|
|
192
|
+
<!-- LLM-ONLY: Cada CA-XX do PRD deve ter pelo menos um teste correspondente. Esta tabela deve ser preenchida PRIMEIRO — guia toda a estrategia. -->
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### 14.1 Testes Unitários
|
|
197
|
+
|
|
198
|
+
<!-- LLM-ONLY: Coluna "Objetivo": Descreva em 1 frase O QUE o teste valida e POR QUE importa. Use o padrao: Verbo + comportamento especifico + condicao. Exemplo: "Verificar que apenas categorias com ativo=1 sao retornadas, ordenadas pelo campo 'ordem'". NAO repita o nome do teste — o objetivo deve dar contexto que o nome sozinho nao da. -->
|
|
199
|
+
|
|
200
|
+
#### Service: [NomeService] (`arquivo_test.go`)
|
|
201
|
+
|
|
202
|
+
Mock: [interfaces mockadas]
|
|
203
|
+
|
|
204
|
+
| CT | Teste | CA | Objetivo | Input | Expected | Mock |
|
|
205
|
+
|----|-------|----|----------|-------|----------|------|
|
|
206
|
+
| CT-01 | TestMetodo_Sucesso | CA-01 | Verificar que [comportamento esperado] quando [condição do cenário] | dados válidos | resultado esperado | repo retorna dados |
|
|
207
|
+
| CT-02 | TestMetodo_ErroValidacao | CA-03 | Verificar que [erro específico] é retornado quando [condição inválida] | dados inválidos | ErrEspecifico | — |
|
|
208
|
+
|
|
209
|
+
#### Apresentação: [NomeHandler] (`arquivo_test.go`)
|
|
210
|
+
|
|
211
|
+
Mock: [interfaces mockadas]
|
|
212
|
+
|
|
213
|
+
| CT | Teste | CA | Objetivo | Input | Expected | Mock |
|
|
214
|
+
|----|-------|----|----------|-------|----------|------|
|
|
215
|
+
| CT-10 | TestHandler_Sucesso | CA-01 | Verificar que handler converte [modelo domínio] para [formato response] corretamente | request válido | response proto | service retorna sucesso |
|
|
216
|
+
|
|
217
|
+
### 14.2 Testes de Integração
|
|
218
|
+
|
|
219
|
+
#### [CamadaA + CamadaB] (`arquivo_test.go`)
|
|
220
|
+
|
|
221
|
+
Setup: [banco in-memory, migrações, fixtures]
|
|
222
|
+
|
|
223
|
+
| CT | Teste | CA | Objetivo | Fluxo | Validação |
|
|
224
|
+
|----|-------|----|----------|-------|-----------|
|
|
225
|
+
| CT-20 | TestIntegracao_CRUD | CA-01 | Verificar que dados persistidos são recuperados integralmente via [camada] | Create → Get | dados consistentes |
|
|
226
|
+
| CT-22 | TestIntegracao_Unique | CA-02 | Verificar que constraint unique impede duplicação de [campo] | Insert duplicado | erro constraint |
|
|
227
|
+
|
|
228
|
+
### 14.3 Testes End-to-End (E2E)
|
|
229
|
+
|
|
230
|
+
#### Fluxo: [Nome do Fluxo Crítico] (CT-30)
|
|
231
|
+
- **CA**: CA-01, CA-03, CA-06
|
|
232
|
+
- **Objetivo**: (1 frase descrevendo o que este fluxo E2E valida de ponta a ponta)
|
|
233
|
+
- **Pré-condições**: (estado inicial do sistema)
|
|
234
|
+
- **Passos**:
|
|
235
|
+
1. Cliente envia request X
|
|
236
|
+
2. Sistema processa e retorna Y
|
|
237
|
+
3. Verificar estado do banco
|
|
238
|
+
- **Validações**: (assertions sobre dados e estado final)
|
|
239
|
+
|
|
240
|
+
### 14.4 Cenários de Erro
|
|
241
|
+
|
|
242
|
+
| Cenário | CA | Objetivo | Trigger | Código/Status | Log Esperado |
|
|
243
|
+
|---------|----|----------|---------|---------------|-------------|
|
|
244
|
+
| Dados duplicados | CA-02 | Verificar que [constraint] impede [operação] e retorna erro adequado | Insert duplicado | [erro conflito] | "registro já existe..." |
|
|
245
|
+
| Recurso inexistente | CA-05 | Verificar que acesso a [recurso] inexistente retorna [código] sem expor dados internos | ID não encontrado | [erro not found] | "não encontrado..." |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 15. Arquivos Envolvidos e Ações
|
|
250
|
+
|
|
251
|
+
### 15.1 Arquivos a Criar
|
|
252
|
+
|
|
253
|
+
| Arquivo | Descrição | Camada |
|
|
254
|
+
|---------|-----------|--------|
|
|
255
|
+
| | | |
|
|
256
|
+
|
|
257
|
+
### 15.2 Arquivos a Modificar
|
|
258
|
+
|
|
259
|
+
| Arquivo | Modificação | Motivo |
|
|
260
|
+
|---------|------------|--------|
|
|
261
|
+
| | | |
|
|
262
|
+
|
|
263
|
+
### 15.3 Arquivos de Referência (somente leitura)
|
|
264
|
+
|
|
265
|
+
| Arquivo | Motivo da Consulta |
|
|
266
|
+
|---------|-------------------|
|
|
267
|
+
| | |
|
|
268
|
+
|
|
269
|
+
<!-- LLM-ONLY: Esta secao economiza tokens e scans durante a implementacao, pois lista exatamente quais arquivos serao impactados. -->
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## 16. Checklist Final
|
|
274
|
+
|
|
275
|
+
- [ ] SPEC_TECH cobre todo o PRD
|
|
276
|
+
- [ ] Resumo técnico claro e objetivo (seção 2)
|
|
277
|
+
- [ ] Arquitetura definida com componentes e interações (seção 3)
|
|
278
|
+
- [ ] Estruturas de dados definidas (seção 4)
|
|
279
|
+
- [ ] User Stories mapeadas para definições técnicas (seção 5.1)
|
|
280
|
+
- [ ] Fluxos técnicos descritos com tratamento de erros (seção 6)
|
|
281
|
+
- [ ] Endpoints mapeados com payloads e respostas (seção 7)
|
|
282
|
+
- [ ] Telas e fluxos de frontend/mobile definidos (seção 8)
|
|
283
|
+
- [ ] Banco local/cache especificado se aplicável (seção 9)
|
|
284
|
+
- [ ] Dependências técnicas listadas (seção 10)
|
|
285
|
+
- [ ] Requisitos não funcionais endereçados (seção 11)
|
|
286
|
+
- [ ] Critérios técnicos de aceite definidos (seção 12)
|
|
287
|
+
- [ ] Riscos técnicos identificados com mitigações (seção 13)
|
|
288
|
+
- [ ] Estratégia de testes definida com rastreabilidade CA→testes no topo (seção 14)
|
|
289
|
+
- [ ] Arquivos envolvidos listados — criar, modificar, referência (seção 15)
|
|
290
|
+
- [ ] Pronto para geração das TASKS
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# TECH DIRECTION (Opcional)
|
|
2
|
+
|
|
3
|
+
> Direcionamento técnico inicial para a feature. Serve como ponto de partida para o SPEC_TECH, não como decisão final.
|
|
4
|
+
> O Arquiteto (tech-spec-expert) pode complementar, ajustar ou questionar qualquer item aqui.
|
|
5
|
+
|
|
6
|
+
## Decisões técnicas já tomadas
|
|
7
|
+
- (ex: Usar JWT com refresh token para autenticação)
|
|
8
|
+
- (ex: Criar gateway separado para integração externa)
|
|
9
|
+
|
|
10
|
+
## Tecnologias/Libs sugeridas
|
|
11
|
+
- (ex: biblioteca X para integração com serviço Y)
|
|
12
|
+
- (ex: framework Z para testes)
|
|
13
|
+
|
|
14
|
+
## Padrões ou abordagens preferidas
|
|
15
|
+
- (ex: Seguir o pattern Gateway já usado no projeto)
|
|
16
|
+
- (ex: Implementar como CQRS)
|
|
17
|
+
|
|
18
|
+
## Restrições técnicas
|
|
19
|
+
- (ex: Precisa ser stateless para rodar em k8s)
|
|
20
|
+
- (ex: Não temos message broker disponível)
|
|
21
|
+
|
|
22
|
+
## Observações
|
|
23
|
+
- (qualquer contexto técnico relevante que o arquiteto deve considerar)
|
|
@@ -6,12 +6,8 @@ argument-hint: [pergunta, contexto ou caminho da taskcard]
|
|
|
6
6
|
|
|
7
7
|
Voce e um **Especialista no Framework TaskCard** — o sistema de planejamento e execucao de tasks deste projeto.
|
|
8
8
|
|
|
9
|
-
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `taskcard` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
10
|
-
|
|
11
9
|
Você domina completamente o framework: template, regras, guardrails, convenções de nomenclatura, estrutura de diretórios e fluxos de geração/execução.
|
|
12
10
|
|
|
13
|
-
> **Paths**: Leia `.claude/config/ai-framework-config.yaml` secao `taskcard` antes de salvar artefatos. Os paths abaixo sao exemplos — o path real vem do config.
|
|
14
|
-
|
|
15
11
|
---
|
|
16
12
|
|
|
17
13
|
# Regra de Acentuação
|