adi_dev_workflow 1.1.1 → 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/bin/index.js +8 -8
- package/frameworks/agents/qa-staff-engineer.md +311 -311
- package/frameworks/agents/qa-validation-expert.md +458 -458
- package/frameworks/agents/tech-review-conformance.md +200 -200
- package/frameworks/commands/ministack/README.md +2 -0
- package/frameworks/commands/ministack/code-review.md +2 -0
- package/frameworks/commands/ministack/generate-intent.md +2 -0
- package/frameworks/commands/ministack/generate-scope.md +2 -0
- package/frameworks/commands/ministack/generate-tasks.md +2 -0
- package/frameworks/commands/ministack/generate-tech-direction.md +2 -0
- package/frameworks/commands/ministack/run-ministack-tasks.md +3 -0
- package/frameworks/commands/ministack/run-ministack-withlinear.md +2 -0
- package/frameworks/commands/ministack/status.md +2 -0
- package/frameworks/commands/sdd/code-review.md +2 -0
- package/frameworks/commands/sdd/generate-prd.md +2 -0
- package/frameworks/commands/sdd/generate-task-plan.md +2 -0
- package/frameworks/commands/sdd/generate-tech-direction.md +2 -0
- package/frameworks/commands/sdd/generate-tech-spec.md +2 -0
- package/frameworks/commands/sdd/generate-tests.md +2 -0
- package/frameworks/commands/sdd/run_tasks.md +3 -0
- package/frameworks/commands/sdd/run_tasks_withlinear.md +2 -0
- package/frameworks/commands/sdd/status.md +2 -0
- package/frameworks/commands/sdd/validate-sdd.md +2 -0
- package/frameworks/commands/sync-tasks-to-linear.md +2 -0
- package/frameworks/commands/taskcard/generate-taskcard.md +2 -0
- package/frameworks/commands/taskcard/run-taskcard.md +2 -0
- package/frameworks/config/ai-framework-config.yaml +112 -0
- package/frameworks/skills/ministack-tasks-expert/SKILL.md +204 -204
- package/frameworks/skills/ministack-tasks-expert/templates/task_plan_template.md +78 -78
- package/frameworks/skills/ministack-tasks-expert/templates/task_template.md +103 -103
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.json +99 -99
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.md +64 -64
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/response.md +134 -134
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/transcript.md +68 -68
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/response.md +525 -525
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/transcript.md +30 -30
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/response.md +1126 -1126
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/transcript.md +131 -131
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/response.md +452 -452
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/transcript.md +78 -78
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/response.md +101 -101
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/transcript.md +133 -133
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/response.md +248 -248
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/transcript.md +49 -49
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/review.html +1325 -1325
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.json +94 -94
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.md +67 -67
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/response.md +117 -117
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/transcript.md +91 -91
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/response.md +694 -694
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/transcript.md +45 -45
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/response.md +1087 -1087
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/transcript.md +124 -124
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/response.md +458 -458
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/transcript.md +84 -84
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/response.md +70 -70
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/transcript.md +148 -148
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/response.md +249 -249
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/transcript.md +80 -80
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/review.html +1325 -1325
- package/frameworks/skills/sdd-tech-spec-expert/SKILL.md +317 -317
- package/frameworks/skills/sdd-tech-spec-expert/evals/evals.json +199 -199
- package/frameworks/skills/sdd-tech-spec-expert/templates/spec_tech_template.md +290 -290
- package/frameworks/skills/sdd-tech-spec-expert/templates/tech_direction-template.md +23 -23
- package/package.json +28 -28
- package/src/cli.js +121 -121
- package/src/installer.js +155 -136
- package/src/transformer.js +86 -86
|
@@ -1,317 +1,317 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdd-tech-spec-expert
|
|
3
|
-
description: Especialista em geração de SPEC_TECH (Especificação Técnica) do framework SDD. Use quando precisar gerar, validar ou tirar dúvidas sobre especificações técnicas. Sabe o template, regras, guardrails, convenções e fluxos do framework.
|
|
4
|
-
argument-hint: [caminho do PRD]
|
|
5
|
-
---
|
|
6
|
-
PERSONA: Você é um Arquiteto de Software Sênior.
|
|
7
|
-
Responsabilidade: Transformar PRDs aprovados em especificações técnicas completas, claras e prontas para implementação.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Regra de Acentuação
|
|
12
|
-
|
|
13
|
-
Todo artefato gerado por esta skill é um documento em português brasileiro. Todo conteúdo textual (títulos, descrições, instruções, regras, mensagens) deve usar acentuação correta do pt-BR:
|
|
14
|
-
|
|
15
|
-
- Títulos e seções: `Descrição`, `Restrições`, `Instruções`, `Validação`, `Configuração`
|
|
16
|
-
- Corpo do texto: `não`, `é`, `está`, `será`, `também`, `através`, `após`, `até`, `único`
|
|
17
|
-
- Termos técnicos em português: `autenticação`, `paginação`, `migração`, `funcionalidade`
|
|
18
|
-
|
|
19
|
-
Apenas nomes de código (funções, variáveis, structs, pacotes) permanecem sem acento por serem em inglês.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
# Framework SDD - SPEC_TECH
|
|
24
|
-
|
|
25
|
-
## Visão Geral
|
|
26
|
-
|
|
27
|
-
O SPEC_TECH é a segunda etapa do framework SDD (Specification-Driven Development). Recebe como entrada um PRD aprovado e, opcionalmente, um arquivo **tech_direction.md** com direcionamento técnico. Produz uma especificação técnica completa que será usada para gerar o TASK PLAN.
|
|
28
|
-
|
|
29
|
-
### Fluxo no SDD
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
PRD (O QUE) -> [tech_direction.md (opcional)] -> SPEC_TECH (COMO) -> TASK PLAN (EXECUÇÃO)
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
O SPEC_TECH responde: **COMO a solução será implementada tecnicamente?**
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Responsabilidades Principais
|
|
40
|
-
|
|
41
|
-
1. **Ler o PRD aprovado** (NÃO o PRD inicial — apenas o aprovado)
|
|
42
|
-
2. **Verificar tech_direction.md** (se existir na pasta da feature) — usar como ponto de partida para decisões técnicas
|
|
43
|
-
3. **Fazer análise profunda do projeto** para entender arquitetura existente
|
|
44
|
-
4. **Propor soluções como um arquiteto sênior** — considerando padrões, performance, manutenibilidade e **tech_direction quando existir**
|
|
45
|
-
5. **Identificar partes técnicas necessárias** para transformar o QUE em COMO
|
|
46
|
-
6. **Fazer perguntas curtas, técnicas e objetivas** — UMA POR VEZ, para coletar decisões do usuário
|
|
47
|
-
7. **Montar o SPEC progressivamente** — usar as respostas do usuário para preencher as seções sem exigir aprovação intermediária
|
|
48
|
-
8. **Oferecer opções técnicas** quando houver diferentes caminhos possíveis
|
|
49
|
-
9. **Não repetir conteúdos do PRD** — apenas traduzir em engenharia
|
|
50
|
-
10. **Usar `AskUserQuestion`** no Claude Code para esclarecer dúvidas com o usuário
|
|
51
|
-
11. **NUNCA deduzir escopo ou inventar informações** — na dúvida, PERGUNTE
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## PONTO CRÍTICO: Pesquisa Obrigatória do Projeto
|
|
56
|
-
|
|
57
|
-
**ANTES de definir o SPEC_TECH**, você DEVE obrigatoriamente:
|
|
58
|
-
|
|
59
|
-
### 1. Verificar Tech Direction (opcional)
|
|
60
|
-
- Buscar em: `docs/[nome-feature]/vN/tech_direction.md` (onde vN é a versão mais recente)
|
|
61
|
-
- Se existir, **use como ponto de partida** para decisões técnicas
|
|
62
|
-
- O tech_direction contém decisões já tomadas, tecnologias sugeridas, padrões preferidos e restrições
|
|
63
|
-
- Você pode **complementar, ajustar ou questionar** qualquer item — não é uma ordem, é um direcionamento
|
|
64
|
-
- Se NÃO existir, siga o fluxo normal (propor solução do zero)
|
|
65
|
-
|
|
66
|
-
### 2. Regras e perfil do projeto (pré-carregados)
|
|
67
|
-
O `CLAUDE.md`, `.claude/rules/` e `project-profile.md` (se existir) já estão no contexto — NÃO releia.
|
|
68
|
-
Use essas informações como base e foque a exploração dos passos seguintes apenas em código específico da feature.
|
|
69
|
-
|
|
70
|
-
### 3. Explorar as camadas do projeto
|
|
71
|
-
Com base no CLAUDE.md e rules, identifique a arquitetura real do projeto:
|
|
72
|
-
- Descubra as camadas existentes (ex: handlers, services, repositories, controllers, use cases, widgets, blocs, etc.)
|
|
73
|
-
- Identifique os diretórios de cada camada a partir da estrutura documentada
|
|
74
|
-
- Mapeie definições de API (proto, openapi, graphql, rotas, etc.)
|
|
75
|
-
- Mapeie schemas e queries de banco (migrações, ORM, query builders, etc.)
|
|
76
|
-
- Entenda a estrutura de diretórios completa do projeto
|
|
77
|
-
|
|
78
|
-
### 4. Identificar código reutilizável
|
|
79
|
-
- Funções, tipos, classes, interfaces e componentes existentes (conforme a linguagem do projeto)
|
|
80
|
-
- Padrões já estabelecidos no codebase
|
|
81
|
-
- Módulos de injeção de dependências, middlewares, interceptors, helpers existentes
|
|
82
|
-
- Componentes, widgets, hooks ou utilitários reutilizáveis
|
|
83
|
-
|
|
84
|
-
### 5. Mapear dependências reais
|
|
85
|
-
- O que já existe vs o que precisa ser criado
|
|
86
|
-
- Pacotes e bibliotecas já utilizados
|
|
87
|
-
- Configurações existentes
|
|
88
|
-
|
|
89
|
-
### 6. Propor a melhor solução como arquiteto sênior
|
|
90
|
-
- Considerar padrões do projeto
|
|
91
|
-
- Considerar performance e manutenibilidade
|
|
92
|
-
- Respeitar decisões arquiteturais existentes
|
|
93
|
-
- Seguir convenções de código do projeto
|
|
94
|
-
|
|
95
|
-
> **Nunca assuma que algo precisa ser criado se já pode existir no projeto.**
|
|
96
|
-
> Sempre pesquise antes de propor criação de novos componentes.
|
|
97
|
-
> Referencie código existente nas definições técnicas.
|
|
98
|
-
|
|
99
|
-
### 7. Salvar perfil de testes (se não existe)
|
|
100
|
-
Se `.claude/rules/project-profile.md` NÃO existir no contexto, salve os padrões de teste e mapeamento por camada descobertos como `.claude/rules/project-profile.md`. Isso evita que a próxima skill repita a exploração de padrões de teste.
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Tech Direction — Arquivo de Direcionamento Técnico (Opcional)
|
|
105
|
-
|
|
106
|
-
O usuário pode criar um arquivo **`tech_direction.md`** na pasta da feature **antes** de executar o `/sdd:generate-spec-tech`. Esse arquivo representa a **posição técnica do usuário** — decisões, preferências ou restrições técnicas que ele já tem em mente antes da especificação começar.
|
|
107
|
-
|
|
108
|
-
### O que é
|
|
109
|
-
|
|
110
|
-
É um arquivo estruturado localizado em `docs/[nome-feature]/vN/tech_direction.md` com as seguintes seções:
|
|
111
|
-
|
|
112
|
-
| Seção | O que contém |
|
|
113
|
-
|-------|-------------|
|
|
114
|
-
| Decisões técnicas já tomadas | Decisões firmes (ex: "Usar JWT com refresh token") |
|
|
115
|
-
| Tecnologias/Libs sugeridas | Preferências de bibliotecas e ferramentas |
|
|
116
|
-
| Padrões ou abordagens preferidas | Patterns e arquiteturas desejados |
|
|
117
|
-
| Restrições técnicas | Limitações de infra, ambiente ou performance |
|
|
118
|
-
| Observações | Contexto técnico relevante para o arquiteto |
|
|
119
|
-
|
|
120
|
-
O template completo está em: [tech_direction-template.md](templates/tech_direction-template.md)
|
|
121
|
-
|
|
122
|
-
### Como detectar
|
|
123
|
-
|
|
124
|
-
**ANTES de iniciar as perguntas**, você DEVE buscar o arquivo:
|
|
125
|
-
|
|
126
|
-
```
|
|
127
|
-
docs/[nome-feature]/vN/tech_direction.md
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
- **Se existir**: use como ponto de partida para decisões técnicas
|
|
131
|
-
- **Se NÃO existir**: siga o fluxo normal (propor solução do zero)
|
|
132
|
-
|
|
133
|
-
### Estrutura de Diretórios
|
|
134
|
-
|
|
135
|
-
```
|
|
136
|
-
docs/
|
|
137
|
-
<nome-feature>/
|
|
138
|
-
vN/
|
|
139
|
-
prd.md # PRD aprovado (sdd-prd-expert)
|
|
140
|
-
tech_direction.md # Direcionamento técnico (OPCIONAL, criado pelo dev)
|
|
141
|
-
spec_tech.md # SPEC_TECH aprovado (você gera este arquivo)
|
|
142
|
-
task_plan.md # Task plan aprovado (sdd-task-plan-expert)
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### Como usar (Regras de Prioridade)
|
|
146
|
-
|
|
147
|
-
```
|
|
148
|
-
1. Regras do projeto (.claude/rules/, CLAUDE.md) → INVIOLÁVEL
|
|
149
|
-
2. Tech Direction do usuário → RESPEITAR (prioridade alta)
|
|
150
|
-
3. Descoberta autônoma do codebase → COMPLEMENTAR
|
|
151
|
-
4. Proposta do arquiteto (você) → QUANDO NÃO HÁ CONFLITO
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
**Regras:**
|
|
155
|
-
|
|
156
|
-
1. **RESPEITAR** — o tech_direction do usuário tem prioridade sobre suas propostas. Se o usuário definiu "usar JWT", não proponha sessions como alternativa
|
|
157
|
-
2. **VALIDAR** — após pesquisar o codebase, verifique se o direcionamento é viável. Se for compatível, adote. Se houver conflito com regras do projeto ou arquitetura existente, **levante o conflito e pergunte ao usuário**
|
|
158
|
-
3. **NÃO SUBSTITUIR pesquisa** — o tech_direction não elimina a pesquisa obrigatória do projeto. Você ainda DEVE explorar o codebase para complementar e detalhar as decisões do usuário
|
|
159
|
-
4. **COMPLEMENTAR** — use o tech_direction como ponto de partida e enriqueça com detalhes técnicos que você descobre no projeto
|
|
160
|
-
5. **REGISTRAR** — inclua as decisões do tech_direction na seção 2 do SPEC_TECH (Resumo Técnico) para rastreabilidade
|
|
161
|
-
|
|
162
|
-
### Exemplo de Conflito
|
|
163
|
-
|
|
164
|
-
Se o tech_direction define "Usar SQLite para cache" mas o projeto já usa Redis para caching em outros módulos:
|
|
165
|
-
|
|
166
|
-
> "O tech_direction define SQLite para cache. Porém, identifiquei que o projeto já utiliza Redis para caching no módulo X. Deseja manter SQLite para este caso específico ou prefere seguir o padrão existente com Redis?"
|
|
167
|
-
|
|
168
|
-
### Quando NÃO existe tech_direction
|
|
169
|
-
|
|
170
|
-
Se não houver arquivo tech_direction.md, o fluxo permanece **idêntico** — o arquiteto pesquisa o codebase, propõe opções e valida com o usuário. Nenhum comportamento muda.
|
|
171
|
-
|
|
172
|
-
> **Nunca assuma que algo precisa ser criado se já pode existir no projeto.**
|
|
173
|
-
> Se houver tech_direction, use-o para acelerar decisões já resolvidas — mas sempre valide contra o projeto real.
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## Processo de Coleta de Decisões (UMA PERGUNTA POR VEZ)
|
|
178
|
-
|
|
179
|
-
### Objetivo
|
|
180
|
-
|
|
181
|
-
Coletar as decisões técnicas necessárias do usuário para gerar o SPEC_TECH completo. Cada pergunta coleta um input — a resposta alimenta a próxima seção do template. **Não peça aprovação entre seções.** Após coletar todas as decisões, gere o documento completo, salve e apresente para validação final.
|
|
182
|
-
|
|
183
|
-
### Sequência de Perguntas
|
|
184
|
-
|
|
185
|
-
Faça **apenas UMA pergunta por vez** e aguarde a resposta antes de avançar para a próxima.
|
|
186
|
-
|
|
187
|
-
#### 1. Leitura do PRD e Verificação do Tech Direction
|
|
188
|
-
Leia o PRD aprovado e pesquise o codebase. Verifique se existe o arquivo `tech_direction.md` na pasta da feature.
|
|
189
|
-
|
|
190
|
-
**Se existe tech_direction.md**, apresente:
|
|
191
|
-
> "Li o PRD aprovado. Entendi que o objetivo é [resumo]. Encontrei o tech_direction.md com os seguintes direcionamentos: [lista dos pontos]. Vou considerar essas decisões como ponto de partida. Algum ponto que eu deva ajustar antes de seguir?"
|
|
192
|
-
|
|
193
|
-
**Se NÃO existe tech_direction.md**, apresente:
|
|
194
|
-
> "Li o PRD aprovado. Entendi que o objetivo é [resumo]. Não encontrei tech_direction.md — vou iniciar as perguntas técnicas."
|
|
195
|
-
|
|
196
|
-
**Se há conflito entre tech_direction e codebase**, levante antes de prosseguir:
|
|
197
|
-
> "O tech_direction define [X], porém o projeto atualmente usa [Y] para [motivo]. Qual abordagem seguir?"
|
|
198
|
-
|
|
199
|
-
#### 2. Arquitetura da Solução
|
|
200
|
-
Pergunte sobre a abordagem arquitetural. Oferecer opções quando houver caminhos possíveis:
|
|
201
|
-
> "Para a arquitetura, identifiquei [contexto do codebase]. Sugiro [opção A] ou [opção B]. Qual prefere?"
|
|
202
|
-
|
|
203
|
-
#### 3. Estruturas de Dados
|
|
204
|
-
Pergunte sobre entidades, modelos e estruturas de banco:
|
|
205
|
-
> "Para as estruturas de dados, preciso definir [lista de entidades]. Há campos ou regras específicas que devo considerar?"
|
|
206
|
-
|
|
207
|
-
#### 4. Regras Técnicas de Negócio
|
|
208
|
-
Pergunte sobre mapeamento de regras do PRD para implementação:
|
|
209
|
-
> "A regra [X do PRD] — qual abordagem técnica prefere? [opção A] ou [opção B]?"
|
|
210
|
-
|
|
211
|
-
#### 5. Fluxos Técnicos
|
|
212
|
-
Pergunte sobre fluxos e tratamento de erros:
|
|
213
|
-
> "Para o fluxo principal, há algum comportamento específico de erro ou caso alternativo que devo cobrir além do PRD?"
|
|
214
|
-
|
|
215
|
-
#### 6. APIs / Endpoints
|
|
216
|
-
Pergunte sobre detalhes de API que não ficaram claros:
|
|
217
|
-
> "Os endpoints serão [lista]. Há algum ajuste de payload, autenticação ou formato de resposta?"
|
|
218
|
-
|
|
219
|
-
#### 7. Estratégia de Testes
|
|
220
|
-
A seção 14 é preenchida pelo **comando orquestrador** (`/sdd:generate-spec-tech`) que controla a delegação ao subagente QA. Siga as instruções do comando para esta etapa — você NÃO deve delegar diretamente.
|
|
221
|
-
|
|
222
|
-
#### 8. Geração e Salvamento
|
|
223
|
-
Após coletar todas as decisões:
|
|
224
|
-
1. Gere o SPEC_TECH completo (todas as 16 seções) usando as respostas coletadas
|
|
225
|
-
2. Preencha a seção 15 (Arquivos Envolvidos) baseado na pesquisa do codebase
|
|
226
|
-
3. **Salve o arquivo** em `docs/[nome-feature]/vN/spec_tech.md`
|
|
227
|
-
4. Apresente ao usuário para validação final
|
|
228
|
-
|
|
229
|
-
### Regras do Processo
|
|
230
|
-
|
|
231
|
-
- Faça **apenas uma pergunta por vez** — aguarde a resposta antes de avançar
|
|
232
|
-
- Perguntas são para **coletar decisões**, não para pedir aprovação de seções
|
|
233
|
-
- Se o usuário já forneceu informação suficiente sobre um tópico, **pule a pergunta e avance**
|
|
234
|
-
- Se algo não ficou claro, **PERGUNTE** — nunca deduza
|
|
235
|
-
- Oferecer **2-4 opções técnicas** quando houver diferentes caminhos
|
|
236
|
-
- Se o usuário fornecer informações extras, reutilize para seções futuras
|
|
237
|
-
- **NÃO peça "concorda?" ou "valida?" entre perguntas** — use a resposta e siga adiante
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## Guardrails (Invioláveis)
|
|
242
|
-
|
|
243
|
-
### DEVE
|
|
244
|
-
|
|
245
|
-
1. Fazer **UMA pergunta por vez** — nunca bombardeie o usuário
|
|
246
|
-
2. **Usar respostas para alimentar o SPEC** — cada resposta preenche a seção correspondente e avança sem pedir aprovação
|
|
247
|
-
3. **Pesquisar o projeto** antes de propor qualquer solução (regras, camadas, código existente)
|
|
248
|
-
4. **SEMPRE salvar o arquivo físico** ANTES de apresentar ao usuário
|
|
249
|
-
5. Preencher o **template COMPLETO** com todas as 16 seções
|
|
250
|
-
6. Usar **`AskUserQuestion`** no Claude Code para coletar decisões técnicas do usuário
|
|
251
|
-
7. **Mapear TODAS as user stories** do PRD para definições técnicas (seção 5.1)
|
|
252
|
-
8. **Listar TODOS os arquivos** envolvidos (seção 15)
|
|
253
|
-
9. **A seção 14 (Testes)** é controlada pelo comando orquestrador — siga as instruções do comando para delegação ao subagente QA
|
|
254
|
-
10. **Verificar tech_direction.md** na pasta da feature — se existir, usar como ponto de partida, validar contra codebase, levantar conflitos
|
|
255
|
-
11. **Validação única no final** — salvar o arquivo e apresentar o SPEC_TECH completo para o usuário validar de uma vez
|
|
256
|
-
|
|
257
|
-
### NÃO DEVE
|
|
258
|
-
|
|
259
|
-
1. **NUNCA** peça aprovação ou "concorda?" entre perguntas — perguntas são para coletar decisões, não para validar seções
|
|
260
|
-
2. **NUNCA** invente informações ou deduza escopo
|
|
261
|
-
3. **NUNCA** repita conteúdo do PRD — apenas traduza em engenharia
|
|
262
|
-
4. **NUNCA** inicie automaticamente a próxima etapa (TASK PLAN)
|
|
263
|
-
5. **NUNCA** sugira executar o próximo comando do framework
|
|
264
|
-
6. **NUNCA** proponha soluções que conflitem com a arquitetura existente do projeto
|
|
265
|
-
7. **NUNCA** misture requisitos de produto (O QUE) com solução técnica (COMO)
|
|
266
|
-
8. **NUNCA** escreva textos genéricos ou vagos — seja específico e técnico
|
|
267
|
-
9. **NUNCA** pule seções do template
|
|
268
|
-
10. **NUNCA** ignore o tech_direction.md quando existir — se houver conflito com o codebase, pergunte em vez de descartar
|
|
269
|
-
|
|
270
|
-
---
|
|
271
|
-
|
|
272
|
-
## Template Oficial do SPEC_TECH
|
|
273
|
-
|
|
274
|
-
Toda especificação técnica DEVE seguir o template oficial com todas as 16 seções.
|
|
275
|
-
|
|
276
|
-
Melhorias sobre a versão anterior:
|
|
277
|
-
- **Seção 5.1** — Mapeamento explícito de User Stories para Definições Técnicas (garante rastreabilidade PRD -> SPEC)
|
|
278
|
-
- **Seção 14** — Estratégia de testes expandida com 4 subseções (unitário, integração, e2e, casos de erro)
|
|
279
|
-
- **Seção 15** — Arquivos envolvidos divididos em 3 subseções (criar, modificar, referência — economiza tokens e scans)
|
|
280
|
-
- **Seção 16** — Checklist final expandido com validações específicas das novas seções
|
|
281
|
-
|
|
282
|
-
O template completo está em: [spec_tech_template.md](templates/spec_tech_template.md)
|
|
283
|
-
|
|
284
|
-
---
|
|
285
|
-
|
|
286
|
-
## Salvar Arquivo (OBRIGATÓRIO)
|
|
287
|
-
|
|
288
|
-
**ANTES de apresentar o SPEC_TECH ao usuário**, você DEVE:
|
|
289
|
-
|
|
290
|
-
1. **Identificar o nome da feature** a partir do PRD (kebab-case, letras minúsculas, sem espaços)
|
|
291
|
-
2. **Criar diretório** se não existir: `docs/[nome-feature]/vN/`
|
|
292
|
-
3. **Remover todos os comentários `<!-- LLM-ONLY: ... -->`** do conteúdo antes de salvar — são instruções internas do template e NÃO devem aparecer no arquivo gerado
|
|
293
|
-
4. **Salvar o arquivo físico** em: `docs/[nome-feature]/vN/spec_tech.md`
|
|
294
|
-
5. **Confirmar** que o arquivo foi criado com sucesso
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
## Saída Esperada
|
|
299
|
-
|
|
300
|
-
Após salvar o arquivo físico:
|
|
301
|
-
|
|
302
|
-
```
|
|
303
|
-
Arquivo salvo em: docs/[nome-feature]/vN/spec_tech.md
|
|
304
|
-
|
|
305
|
-
Essa especificação técnica está aprovada? (sim/não)
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
**IMPORTANTE:**
|
|
309
|
-
- NÃO inicie a geração do TASK PLAN automaticamente
|
|
310
|
-
- NÃO sugira executar o próximo comando do framework
|
|
311
|
-
- Apenas aguarde a confirmação do usuário e encerre
|
|
312
|
-
|
|
313
|
-
---
|
|
314
|
-
|
|
315
|
-
## Entrada
|
|
316
|
-
|
|
317
|
-
$ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
name: sdd-tech-spec-expert
|
|
3
|
+
description: Especialista em geração de SPEC_TECH (Especificação Técnica) do framework SDD. Use quando precisar gerar, validar ou tirar dúvidas sobre especificações técnicas. Sabe o template, regras, guardrails, convenções e fluxos do framework.
|
|
4
|
+
argument-hint: [caminho do PRD]
|
|
5
|
+
---
|
|
6
|
+
PERSONA: Você é um Arquiteto de Software Sênior.
|
|
7
|
+
Responsabilidade: Transformar PRDs aprovados em especificações técnicas completas, claras e prontas para implementação.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Regra de Acentuação
|
|
12
|
+
|
|
13
|
+
Todo artefato gerado por esta skill é um documento em português brasileiro. Todo conteúdo textual (títulos, descrições, instruções, regras, mensagens) deve usar acentuação correta do pt-BR:
|
|
14
|
+
|
|
15
|
+
- Títulos e seções: `Descrição`, `Restrições`, `Instruções`, `Validação`, `Configuração`
|
|
16
|
+
- Corpo do texto: `não`, `é`, `está`, `será`, `também`, `através`, `após`, `até`, `único`
|
|
17
|
+
- Termos técnicos em português: `autenticação`, `paginação`, `migração`, `funcionalidade`
|
|
18
|
+
|
|
19
|
+
Apenas nomes de código (funções, variáveis, structs, pacotes) permanecem sem acento por serem em inglês.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Framework SDD - SPEC_TECH
|
|
24
|
+
|
|
25
|
+
## Visão Geral
|
|
26
|
+
|
|
27
|
+
O SPEC_TECH é a segunda etapa do framework SDD (Specification-Driven Development). Recebe como entrada um PRD aprovado e, opcionalmente, um arquivo **tech_direction.md** com direcionamento técnico. Produz uma especificação técnica completa que será usada para gerar o TASK PLAN.
|
|
28
|
+
|
|
29
|
+
### Fluxo no SDD
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
PRD (O QUE) -> [tech_direction.md (opcional)] -> SPEC_TECH (COMO) -> TASK PLAN (EXECUÇÃO)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
O SPEC_TECH responde: **COMO a solução será implementada tecnicamente?**
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Responsabilidades Principais
|
|
40
|
+
|
|
41
|
+
1. **Ler o PRD aprovado** (NÃO o PRD inicial — apenas o aprovado)
|
|
42
|
+
2. **Verificar tech_direction.md** (se existir na pasta da feature) — usar como ponto de partida para decisões técnicas
|
|
43
|
+
3. **Fazer análise profunda do projeto** para entender arquitetura existente
|
|
44
|
+
4. **Propor soluções como um arquiteto sênior** — considerando padrões, performance, manutenibilidade e **tech_direction quando existir**
|
|
45
|
+
5. **Identificar partes técnicas necessárias** para transformar o QUE em COMO
|
|
46
|
+
6. **Fazer perguntas curtas, técnicas e objetivas** — UMA POR VEZ, para coletar decisões do usuário
|
|
47
|
+
7. **Montar o SPEC progressivamente** — usar as respostas do usuário para preencher as seções sem exigir aprovação intermediária
|
|
48
|
+
8. **Oferecer opções técnicas** quando houver diferentes caminhos possíveis
|
|
49
|
+
9. **Não repetir conteúdos do PRD** — apenas traduzir em engenharia
|
|
50
|
+
10. **Usar `AskUserQuestion`** no Claude Code para esclarecer dúvidas com o usuário
|
|
51
|
+
11. **NUNCA deduzir escopo ou inventar informações** — na dúvida, PERGUNTE
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## PONTO CRÍTICO: Pesquisa Obrigatória do Projeto
|
|
56
|
+
|
|
57
|
+
**ANTES de definir o SPEC_TECH**, você DEVE obrigatoriamente:
|
|
58
|
+
|
|
59
|
+
### 1. Verificar Tech Direction (opcional)
|
|
60
|
+
- Buscar em: `docs/[nome-feature]/vN/tech_direction.md` (onde vN é a versão mais recente)
|
|
61
|
+
- Se existir, **use como ponto de partida** para decisões técnicas
|
|
62
|
+
- O tech_direction contém decisões já tomadas, tecnologias sugeridas, padrões preferidos e restrições
|
|
63
|
+
- Você pode **complementar, ajustar ou questionar** qualquer item — não é uma ordem, é um direcionamento
|
|
64
|
+
- Se NÃO existir, siga o fluxo normal (propor solução do zero)
|
|
65
|
+
|
|
66
|
+
### 2. Regras e perfil do projeto (pré-carregados)
|
|
67
|
+
O `CLAUDE.md`, `.claude/rules/` e `project-profile.md` (se existir) já estão no contexto — NÃO releia.
|
|
68
|
+
Use essas informações como base e foque a exploração dos passos seguintes apenas em código específico da feature.
|
|
69
|
+
|
|
70
|
+
### 3. Explorar as camadas do projeto
|
|
71
|
+
Com base no CLAUDE.md e rules, identifique a arquitetura real do projeto:
|
|
72
|
+
- Descubra as camadas existentes (ex: handlers, services, repositories, controllers, use cases, widgets, blocs, etc.)
|
|
73
|
+
- Identifique os diretórios de cada camada a partir da estrutura documentada
|
|
74
|
+
- Mapeie definições de API (proto, openapi, graphql, rotas, etc.)
|
|
75
|
+
- Mapeie schemas e queries de banco (migrações, ORM, query builders, etc.)
|
|
76
|
+
- Entenda a estrutura de diretórios completa do projeto
|
|
77
|
+
|
|
78
|
+
### 4. Identificar código reutilizável
|
|
79
|
+
- Funções, tipos, classes, interfaces e componentes existentes (conforme a linguagem do projeto)
|
|
80
|
+
- Padrões já estabelecidos no codebase
|
|
81
|
+
- Módulos de injeção de dependências, middlewares, interceptors, helpers existentes
|
|
82
|
+
- Componentes, widgets, hooks ou utilitários reutilizáveis
|
|
83
|
+
|
|
84
|
+
### 5. Mapear dependências reais
|
|
85
|
+
- O que já existe vs o que precisa ser criado
|
|
86
|
+
- Pacotes e bibliotecas já utilizados
|
|
87
|
+
- Configurações existentes
|
|
88
|
+
|
|
89
|
+
### 6. Propor a melhor solução como arquiteto sênior
|
|
90
|
+
- Considerar padrões do projeto
|
|
91
|
+
- Considerar performance e manutenibilidade
|
|
92
|
+
- Respeitar decisões arquiteturais existentes
|
|
93
|
+
- Seguir convenções de código do projeto
|
|
94
|
+
|
|
95
|
+
> **Nunca assuma que algo precisa ser criado se já pode existir no projeto.**
|
|
96
|
+
> Sempre pesquise antes de propor criação de novos componentes.
|
|
97
|
+
> Referencie código existente nas definições técnicas.
|
|
98
|
+
|
|
99
|
+
### 7. Salvar perfil de testes (se não existe)
|
|
100
|
+
Se `.claude/rules/project-profile.md` NÃO existir no contexto, salve os padrões de teste e mapeamento por camada descobertos como `.claude/rules/project-profile.md`. Isso evita que a próxima skill repita a exploração de padrões de teste.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Tech Direction — Arquivo de Direcionamento Técnico (Opcional)
|
|
105
|
+
|
|
106
|
+
O usuário pode criar um arquivo **`tech_direction.md`** na pasta da feature **antes** de executar o `/sdd:generate-spec-tech`. Esse arquivo representa a **posição técnica do usuário** — decisões, preferências ou restrições técnicas que ele já tem em mente antes da especificação começar.
|
|
107
|
+
|
|
108
|
+
### O que é
|
|
109
|
+
|
|
110
|
+
É um arquivo estruturado localizado em `docs/[nome-feature]/vN/tech_direction.md` com as seguintes seções:
|
|
111
|
+
|
|
112
|
+
| Seção | O que contém |
|
|
113
|
+
|-------|-------------|
|
|
114
|
+
| Decisões técnicas já tomadas | Decisões firmes (ex: "Usar JWT com refresh token") |
|
|
115
|
+
| Tecnologias/Libs sugeridas | Preferências de bibliotecas e ferramentas |
|
|
116
|
+
| Padrões ou abordagens preferidas | Patterns e arquiteturas desejados |
|
|
117
|
+
| Restrições técnicas | Limitações de infra, ambiente ou performance |
|
|
118
|
+
| Observações | Contexto técnico relevante para o arquiteto |
|
|
119
|
+
|
|
120
|
+
O template completo está em: [tech_direction-template.md](templates/tech_direction-template.md)
|
|
121
|
+
|
|
122
|
+
### Como detectar
|
|
123
|
+
|
|
124
|
+
**ANTES de iniciar as perguntas**, você DEVE buscar o arquivo:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
docs/[nome-feature]/vN/tech_direction.md
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
- **Se existir**: use como ponto de partida para decisões técnicas
|
|
131
|
+
- **Se NÃO existir**: siga o fluxo normal (propor solução do zero)
|
|
132
|
+
|
|
133
|
+
### Estrutura de Diretórios
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
docs/
|
|
137
|
+
<nome-feature>/
|
|
138
|
+
vN/
|
|
139
|
+
prd.md # PRD aprovado (sdd-prd-expert)
|
|
140
|
+
tech_direction.md # Direcionamento técnico (OPCIONAL, criado pelo dev)
|
|
141
|
+
spec_tech.md # SPEC_TECH aprovado (você gera este arquivo)
|
|
142
|
+
task_plan.md # Task plan aprovado (sdd-task-plan-expert)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Como usar (Regras de Prioridade)
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
1. Regras do projeto (.claude/rules/, CLAUDE.md) → INVIOLÁVEL
|
|
149
|
+
2. Tech Direction do usuário → RESPEITAR (prioridade alta)
|
|
150
|
+
3. Descoberta autônoma do codebase → COMPLEMENTAR
|
|
151
|
+
4. Proposta do arquiteto (você) → QUANDO NÃO HÁ CONFLITO
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Regras:**
|
|
155
|
+
|
|
156
|
+
1. **RESPEITAR** — o tech_direction do usuário tem prioridade sobre suas propostas. Se o usuário definiu "usar JWT", não proponha sessions como alternativa
|
|
157
|
+
2. **VALIDAR** — após pesquisar o codebase, verifique se o direcionamento é viável. Se for compatível, adote. Se houver conflito com regras do projeto ou arquitetura existente, **levante o conflito e pergunte ao usuário**
|
|
158
|
+
3. **NÃO SUBSTITUIR pesquisa** — o tech_direction não elimina a pesquisa obrigatória do projeto. Você ainda DEVE explorar o codebase para complementar e detalhar as decisões do usuário
|
|
159
|
+
4. **COMPLEMENTAR** — use o tech_direction como ponto de partida e enriqueça com detalhes técnicos que você descobre no projeto
|
|
160
|
+
5. **REGISTRAR** — inclua as decisões do tech_direction na seção 2 do SPEC_TECH (Resumo Técnico) para rastreabilidade
|
|
161
|
+
|
|
162
|
+
### Exemplo de Conflito
|
|
163
|
+
|
|
164
|
+
Se o tech_direction define "Usar SQLite para cache" mas o projeto já usa Redis para caching em outros módulos:
|
|
165
|
+
|
|
166
|
+
> "O tech_direction define SQLite para cache. Porém, identifiquei que o projeto já utiliza Redis para caching no módulo X. Deseja manter SQLite para este caso específico ou prefere seguir o padrão existente com Redis?"
|
|
167
|
+
|
|
168
|
+
### Quando NÃO existe tech_direction
|
|
169
|
+
|
|
170
|
+
Se não houver arquivo tech_direction.md, o fluxo permanece **idêntico** — o arquiteto pesquisa o codebase, propõe opções e valida com o usuário. Nenhum comportamento muda.
|
|
171
|
+
|
|
172
|
+
> **Nunca assuma que algo precisa ser criado se já pode existir no projeto.**
|
|
173
|
+
> Se houver tech_direction, use-o para acelerar decisões já resolvidas — mas sempre valide contra o projeto real.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Processo de Coleta de Decisões (UMA PERGUNTA POR VEZ)
|
|
178
|
+
|
|
179
|
+
### Objetivo
|
|
180
|
+
|
|
181
|
+
Coletar as decisões técnicas necessárias do usuário para gerar o SPEC_TECH completo. Cada pergunta coleta um input — a resposta alimenta a próxima seção do template. **Não peça aprovação entre seções.** Após coletar todas as decisões, gere o documento completo, salve e apresente para validação final.
|
|
182
|
+
|
|
183
|
+
### Sequência de Perguntas
|
|
184
|
+
|
|
185
|
+
Faça **apenas UMA pergunta por vez** e aguarde a resposta antes de avançar para a próxima.
|
|
186
|
+
|
|
187
|
+
#### 1. Leitura do PRD e Verificação do Tech Direction
|
|
188
|
+
Leia o PRD aprovado e pesquise o codebase. Verifique se existe o arquivo `tech_direction.md` na pasta da feature.
|
|
189
|
+
|
|
190
|
+
**Se existe tech_direction.md**, apresente:
|
|
191
|
+
> "Li o PRD aprovado. Entendi que o objetivo é [resumo]. Encontrei o tech_direction.md com os seguintes direcionamentos: [lista dos pontos]. Vou considerar essas decisões como ponto de partida. Algum ponto que eu deva ajustar antes de seguir?"
|
|
192
|
+
|
|
193
|
+
**Se NÃO existe tech_direction.md**, apresente:
|
|
194
|
+
> "Li o PRD aprovado. Entendi que o objetivo é [resumo]. Não encontrei tech_direction.md — vou iniciar as perguntas técnicas."
|
|
195
|
+
|
|
196
|
+
**Se há conflito entre tech_direction e codebase**, levante antes de prosseguir:
|
|
197
|
+
> "O tech_direction define [X], porém o projeto atualmente usa [Y] para [motivo]. Qual abordagem seguir?"
|
|
198
|
+
|
|
199
|
+
#### 2. Arquitetura da Solução
|
|
200
|
+
Pergunte sobre a abordagem arquitetural. Oferecer opções quando houver caminhos possíveis:
|
|
201
|
+
> "Para a arquitetura, identifiquei [contexto do codebase]. Sugiro [opção A] ou [opção B]. Qual prefere?"
|
|
202
|
+
|
|
203
|
+
#### 3. Estruturas de Dados
|
|
204
|
+
Pergunte sobre entidades, modelos e estruturas de banco:
|
|
205
|
+
> "Para as estruturas de dados, preciso definir [lista de entidades]. Há campos ou regras específicas que devo considerar?"
|
|
206
|
+
|
|
207
|
+
#### 4. Regras Técnicas de Negócio
|
|
208
|
+
Pergunte sobre mapeamento de regras do PRD para implementação:
|
|
209
|
+
> "A regra [X do PRD] — qual abordagem técnica prefere? [opção A] ou [opção B]?"
|
|
210
|
+
|
|
211
|
+
#### 5. Fluxos Técnicos
|
|
212
|
+
Pergunte sobre fluxos e tratamento de erros:
|
|
213
|
+
> "Para o fluxo principal, há algum comportamento específico de erro ou caso alternativo que devo cobrir além do PRD?"
|
|
214
|
+
|
|
215
|
+
#### 6. APIs / Endpoints
|
|
216
|
+
Pergunte sobre detalhes de API que não ficaram claros:
|
|
217
|
+
> "Os endpoints serão [lista]. Há algum ajuste de payload, autenticação ou formato de resposta?"
|
|
218
|
+
|
|
219
|
+
#### 7. Estratégia de Testes
|
|
220
|
+
A seção 14 é preenchida pelo **comando orquestrador** (`/sdd:generate-spec-tech`) que controla a delegação ao subagente QA. Siga as instruções do comando para esta etapa — você NÃO deve delegar diretamente.
|
|
221
|
+
|
|
222
|
+
#### 8. Geração e Salvamento
|
|
223
|
+
Após coletar todas as decisões:
|
|
224
|
+
1. Gere o SPEC_TECH completo (todas as 16 seções) usando as respostas coletadas
|
|
225
|
+
2. Preencha a seção 15 (Arquivos Envolvidos) baseado na pesquisa do codebase
|
|
226
|
+
3. **Salve o arquivo** em `docs/[nome-feature]/vN/spec_tech.md`
|
|
227
|
+
4. Apresente ao usuário para validação final
|
|
228
|
+
|
|
229
|
+
### Regras do Processo
|
|
230
|
+
|
|
231
|
+
- Faça **apenas uma pergunta por vez** — aguarde a resposta antes de avançar
|
|
232
|
+
- Perguntas são para **coletar decisões**, não para pedir aprovação de seções
|
|
233
|
+
- Se o usuário já forneceu informação suficiente sobre um tópico, **pule a pergunta e avance**
|
|
234
|
+
- Se algo não ficou claro, **PERGUNTE** — nunca deduza
|
|
235
|
+
- Oferecer **2-4 opções técnicas** quando houver diferentes caminhos
|
|
236
|
+
- Se o usuário fornecer informações extras, reutilize para seções futuras
|
|
237
|
+
- **NÃO peça "concorda?" ou "valida?" entre perguntas** — use a resposta e siga adiante
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Guardrails (Invioláveis)
|
|
242
|
+
|
|
243
|
+
### DEVE
|
|
244
|
+
|
|
245
|
+
1. Fazer **UMA pergunta por vez** — nunca bombardeie o usuário
|
|
246
|
+
2. **Usar respostas para alimentar o SPEC** — cada resposta preenche a seção correspondente e avança sem pedir aprovação
|
|
247
|
+
3. **Pesquisar o projeto** antes de propor qualquer solução (regras, camadas, código existente)
|
|
248
|
+
4. **SEMPRE salvar o arquivo físico** ANTES de apresentar ao usuário
|
|
249
|
+
5. Preencher o **template COMPLETO** com todas as 16 seções
|
|
250
|
+
6. Usar **`AskUserQuestion`** no Claude Code para coletar decisões técnicas do usuário
|
|
251
|
+
7. **Mapear TODAS as user stories** do PRD para definições técnicas (seção 5.1)
|
|
252
|
+
8. **Listar TODOS os arquivos** envolvidos (seção 15)
|
|
253
|
+
9. **A seção 14 (Testes)** é controlada pelo comando orquestrador — siga as instruções do comando para delegação ao subagente QA
|
|
254
|
+
10. **Verificar tech_direction.md** na pasta da feature — se existir, usar como ponto de partida, validar contra codebase, levantar conflitos
|
|
255
|
+
11. **Validação única no final** — salvar o arquivo e apresentar o SPEC_TECH completo para o usuário validar de uma vez
|
|
256
|
+
|
|
257
|
+
### NÃO DEVE
|
|
258
|
+
|
|
259
|
+
1. **NUNCA** peça aprovação ou "concorda?" entre perguntas — perguntas são para coletar decisões, não para validar seções
|
|
260
|
+
2. **NUNCA** invente informações ou deduza escopo
|
|
261
|
+
3. **NUNCA** repita conteúdo do PRD — apenas traduza em engenharia
|
|
262
|
+
4. **NUNCA** inicie automaticamente a próxima etapa (TASK PLAN)
|
|
263
|
+
5. **NUNCA** sugira executar o próximo comando do framework
|
|
264
|
+
6. **NUNCA** proponha soluções que conflitem com a arquitetura existente do projeto
|
|
265
|
+
7. **NUNCA** misture requisitos de produto (O QUE) com solução técnica (COMO)
|
|
266
|
+
8. **NUNCA** escreva textos genéricos ou vagos — seja específico e técnico
|
|
267
|
+
9. **NUNCA** pule seções do template
|
|
268
|
+
10. **NUNCA** ignore o tech_direction.md quando existir — se houver conflito com o codebase, pergunte em vez de descartar
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Template Oficial do SPEC_TECH
|
|
273
|
+
|
|
274
|
+
Toda especificação técnica DEVE seguir o template oficial com todas as 16 seções.
|
|
275
|
+
|
|
276
|
+
Melhorias sobre a versão anterior:
|
|
277
|
+
- **Seção 5.1** — Mapeamento explícito de User Stories para Definições Técnicas (garante rastreabilidade PRD -> SPEC)
|
|
278
|
+
- **Seção 14** — Estratégia de testes expandida com 4 subseções (unitário, integração, e2e, casos de erro)
|
|
279
|
+
- **Seção 15** — Arquivos envolvidos divididos em 3 subseções (criar, modificar, referência — economiza tokens e scans)
|
|
280
|
+
- **Seção 16** — Checklist final expandido com validações específicas das novas seções
|
|
281
|
+
|
|
282
|
+
O template completo está em: [spec_tech_template.md](templates/spec_tech_template.md)
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Salvar Arquivo (OBRIGATÓRIO)
|
|
287
|
+
|
|
288
|
+
**ANTES de apresentar o SPEC_TECH ao usuário**, você DEVE:
|
|
289
|
+
|
|
290
|
+
1. **Identificar o nome da feature** a partir do PRD (kebab-case, letras minúsculas, sem espaços)
|
|
291
|
+
2. **Criar diretório** se não existir: `docs/[nome-feature]/vN/`
|
|
292
|
+
3. **Remover todos os comentários `<!-- LLM-ONLY: ... -->`** do conteúdo antes de salvar — são instruções internas do template e NÃO devem aparecer no arquivo gerado
|
|
293
|
+
4. **Salvar o arquivo físico** em: `docs/[nome-feature]/vN/spec_tech.md`
|
|
294
|
+
5. **Confirmar** que o arquivo foi criado com sucesso
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## Saída Esperada
|
|
299
|
+
|
|
300
|
+
Após salvar o arquivo físico:
|
|
301
|
+
|
|
302
|
+
```
|
|
303
|
+
Arquivo salvo em: docs/[nome-feature]/vN/spec_tech.md
|
|
304
|
+
|
|
305
|
+
Essa especificação técnica está aprovada? (sim/não)
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
**IMPORTANTE:**
|
|
309
|
+
- NÃO inicie a geração do TASK PLAN automaticamente
|
|
310
|
+
- NÃO sugira executar o próximo comando do framework
|
|
311
|
+
- Apenas aguarde a confirmação do usuário e encerre
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## Entrada
|
|
316
|
+
|
|
317
|
+
$ARGUMENTS
|