create-genia-os 1.0.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 +210 -0
- package/package.json +39 -0
- package/template/.claude/CLAUDE.md +215 -0
- package/template/.claude/agent-memory/analyst/MEMORY.md +20 -0
- package/template/.claude/agent-memory/architect/MEMORY.md +20 -0
- package/template/.claude/agent-memory/dev/MEMORY.md +20 -0
- package/template/.claude/agent-memory/devops/MEMORY.md +20 -0
- package/template/.claude/agent-memory/pm/MEMORY.md +20 -0
- package/template/.claude/agent-memory/po/MEMORY.md +20 -0
- package/template/.claude/agent-memory/qa/MEMORY.md +20 -0
- package/template/.claude/agent-memory/reviewer/MEMORY.md +20 -0
- package/template/.claude/agent-memory/sm/MEMORY.md +20 -0
- package/template/.claude/hooks/enforce-git-push-authority.py +70 -0
- package/template/.claude/hooks/precompact-session-digest.cjs +87 -0
- package/template/.claude/hooks/sql-governance.py +65 -0
- package/template/.claude/hooks/synapse-engine.cjs +122 -0
- package/template/.claude/hooks/write-path-validation.py +59 -0
- package/template/.claude/rules/agent-authority.md +39 -0
- package/template/.claude/rules/agent-handoff.md +71 -0
- package/template/.claude/rules/agent-memory.md +61 -0
- package/template/.claude/rules/ids-principles.md +52 -0
- package/template/.claude/rules/mcp-usage.md +49 -0
- package/template/.claude/rules/story-lifecycle.md +87 -0
- package/template/.claude/rules/workflow-execution.md +68 -0
- package/template/.claude/settings.json +58 -0
- package/template/.claude/settings.local.json +14 -0
- package/template/.genia/CONSTITUTION.md +129 -0
- package/template/.genia/contexts/api-patterns.md +134 -0
- package/template/.genia/contexts/nextjs-react.md +210 -0
- package/template/.genia/contexts/projeto.md +18 -0
- package/template/.genia/contexts/supabase.md +152 -0
- package/template/.genia/contexts/whatsapp-cloud.md +176 -0
- package/template/.genia/core-config.yaml +192 -0
- package/template/.genia/development/agents/analyst.md +138 -0
- package/template/.genia/development/agents/architect.md +171 -0
- package/template/.genia/development/agents/dev.md +160 -0
- package/template/.genia/development/agents/devops.md +200 -0
- package/template/.genia/development/agents/pm.md +142 -0
- package/template/.genia/development/agents/po.md +165 -0
- package/template/.genia/development/agents/qa.md +183 -0
- package/template/.genia/development/agents/reviewer.md +198 -0
- package/template/.genia/development/agents/sm.md +230 -0
- package/template/.genia/development/checklists/architecture-review.md +189 -0
- package/template/.genia/development/checklists/pre-commit.md +205 -0
- package/template/.genia/development/checklists/pre-deploy.md +230 -0
- package/template/.genia/development/checklists/qa-gate.md +216 -0
- package/template/.genia/development/checklists/story-dod.md +155 -0
- package/template/.genia/development/tasks/code-review.md +197 -0
- package/template/.genia/development/tasks/criar-prd.md +170 -0
- package/template/.genia/development/tasks/criar-spec.md +188 -0
- package/template/.genia/development/tasks/criar-story.md +185 -0
- package/template/.genia/development/tasks/debug-sistematico.md +230 -0
- package/template/.genia/development/tasks/dev-implement.md +199 -0
- package/template/.genia/development/tasks/qa-review.md +224 -0
- package/template/.genia/development/workflows/brownfield.md +178 -0
- package/template/.genia/development/workflows/delivery.md +208 -0
- package/template/.genia/development/workflows/development.md +189 -0
- package/template/.genia/development/workflows/greenfield.md +166 -0
- package/template/.genia/development/workflows/planning.md +167 -0
- package/template/.genia/development/workflows/qa-loop.md +179 -0
- package/template/.genia/development/workflows/spec-pipeline.md +192 -0
- package/template/.genia/development/workflows/story-development-cycle.md +252 -0
- package/template/.genia/guidelines/clean-code.md +98 -0
- package/template/.genia/guidelines/testing.md +176 -0
- package/template/.genia/skills/design/canvas-design.md +109 -0
- package/template/.genia/skills/design/frontend-design.md +140 -0
- package/template/.genia/skills/dev/mcp-builder.md +172 -0
- package/template/.genia/skills/dev/webapp-testing.md +150 -0
- package/template/.genia/skills/documents/docx.md +153 -0
- package/template/.genia/skills/documents/pdf.md +134 -0
- package/template/.genia/skills/documents/pptx.md +118 -0
- package/template/.genia/skills/documents/xlsx.md +140 -0
- package/template/.synapse/agent-analyst +8 -0
- package/template/.synapse/agent-architect +8 -0
- package/template/.synapse/agent-dev +8 -0
- package/template/.synapse/agent-devops +8 -0
- package/template/.synapse/agent-pm +8 -0
- package/template/.synapse/agent-po +7 -0
- package/template/.synapse/agent-qa +8 -0
- package/template/.synapse/agent-reviewer +7 -0
- package/template/.synapse/agent-sm +7 -0
- package/template/.synapse/constitution +7 -0
- package/template/.synapse/context +8 -0
- package/template/.synapse/global +8 -0
- package/template/.synapse/manifest +14 -0
- package/template/README.md +53 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Workflow: Spec Pipeline
|
|
2
|
+
|
|
3
|
+
> Transforma requisitos brutos em especificações técnicas executáveis.
|
|
4
|
+
> Ordem de execução: @analyst → @pm → @architect → @qa → @po
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Visão Geral
|
|
9
|
+
|
|
10
|
+
O Spec Pipeline é o processo obrigatório que antecede qualquer desenvolvimento. Ele garante que o time nunca implementa com base em requisitos vagos, PRDs incompletos ou especificações técnicas ausentes. Projetos que pulam este pipeline invariavelmente sofrem com retrabalho, scope creep e dívida técnica.
|
|
11
|
+
|
|
12
|
+
**Duração estimada:** 2-5 dias úteis (dependendo da complexidade)
|
|
13
|
+
**Ativador:** `@analyst iniciar spec-pipeline [nome-do-projeto]`
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Fase 1 — Briefing (@analyst)
|
|
18
|
+
|
|
19
|
+
**Responsável:** Ana (@analyst)
|
|
20
|
+
**Input:** Requisitos brutos do cliente/stakeholder (pode ser uma conversa, email, documento informal)
|
|
21
|
+
**Output:** `docs/[projeto]/BRIEFING.md`
|
|
22
|
+
|
|
23
|
+
### O que acontece:
|
|
24
|
+
1. @analyst conduz sessão de discovery com stakeholders
|
|
25
|
+
2. Coleta requisitos, regras de negócio, restrições e objetivos
|
|
26
|
+
3. Identifica personas de usuário
|
|
27
|
+
4. Documenta o não-escopo explicitamente
|
|
28
|
+
5. Mapeia integrações necessárias
|
|
29
|
+
6. Identifica riscos de negócio
|
|
30
|
+
|
|
31
|
+
### Critérios de saída:
|
|
32
|
+
- [ ] BRIEFING.md criado e completo
|
|
33
|
+
- [ ] Todas as ambiguidades identificadas e resolvidas
|
|
34
|
+
- [ ] Requisitos validados com pelo menos um stakeholder
|
|
35
|
+
- [ ] Não-escopo documentado
|
|
36
|
+
- [ ] Riscos de negócio identificados
|
|
37
|
+
|
|
38
|
+
**→ Passa para @pm**
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Fase 2 — PRD (@pm)
|
|
43
|
+
|
|
44
|
+
**Responsável:** Marina (@pm)
|
|
45
|
+
**Input:** `docs/[projeto]/BRIEFING.md`
|
|
46
|
+
**Output:** `docs/[projeto]/PRD.md`
|
|
47
|
+
|
|
48
|
+
### O que acontece:
|
|
49
|
+
1. @pm revisa o briefing e levanta dúvidas com @analyst
|
|
50
|
+
2. Define visão de produto e proposta de valor
|
|
51
|
+
3. Organiza funcionalidades em Épicos
|
|
52
|
+
4. Prioriza usando framework MoSCoW
|
|
53
|
+
5. Define métricas de sucesso do produto
|
|
54
|
+
6. Documenta roadmap e milestones
|
|
55
|
+
|
|
56
|
+
### Critérios de saída:
|
|
57
|
+
- [ ] PRD.md criado com todos os Épicos
|
|
58
|
+
- [ ] Priorização MoSCoW aplicada
|
|
59
|
+
- [ ] Métricas de sucesso definidas
|
|
60
|
+
- [ ] Não-escopo atualizado
|
|
61
|
+
- [ ] Stakeholders consultados
|
|
62
|
+
|
|
63
|
+
**→ Passa para @architect**
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Fase 3 — Avaliação Técnica (@architect)
|
|
68
|
+
|
|
69
|
+
**Responsável:** Arqui (@architect)
|
|
70
|
+
**Input:** `docs/[projeto]/PRD.md`
|
|
71
|
+
**Output:** Avaliação formal com riscos, viabilidade e recomendações de stack
|
|
72
|
+
|
|
73
|
+
### O que acontece:
|
|
74
|
+
1. @architect lê o PRD e identifica implicações técnicas
|
|
75
|
+
2. Avalia viabilidade de cada épico
|
|
76
|
+
3. Identifica riscos técnicos e dependências
|
|
77
|
+
4. Propõe stack tecnológica inicial
|
|
78
|
+
5. Sinaliza itens que precisam de mais esclarecimento
|
|
79
|
+
6. Pode exercer veto técnico sobre funcionalidades inviáveis
|
|
80
|
+
|
|
81
|
+
### Critérios de saída:
|
|
82
|
+
- [ ] Avaliação de viabilidade documentada
|
|
83
|
+
- [ ] Riscos técnicos mapeados
|
|
84
|
+
- [ ] Stack proposta com justificativas
|
|
85
|
+
- [ ] Vetos (se houver) formalizados com alternativas
|
|
86
|
+
- [ ] @pm alinhado sobre qualquer mudança de escopo
|
|
87
|
+
|
|
88
|
+
**→ Passa para criação do SPEC-TECNICO**
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Fase 4 — Especificação Técnica (@architect)
|
|
93
|
+
|
|
94
|
+
**Responsável:** Arqui (@architect)
|
|
95
|
+
**Input:** `docs/[projeto]/PRD.md` + avaliação técnica
|
|
96
|
+
**Output:** `docs/[projeto]/SPEC-TECNICO.md` + ADRs iniciais
|
|
97
|
+
|
|
98
|
+
### O que acontece:
|
|
99
|
+
1. @architect cria o SPEC-TECNICO.md completo
|
|
100
|
+
2. Define arquitetura de alto nível
|
|
101
|
+
3. Documenta modelagem de dados
|
|
102
|
+
4. Especifica APIs e contratos de integração
|
|
103
|
+
5. Define estratégia de testes
|
|
104
|
+
6. Registra decisões arquiteturais como ADRs
|
|
105
|
+
7. Define padrões de código e estrutura de pastas
|
|
106
|
+
|
|
107
|
+
### Critérios de saída:
|
|
108
|
+
- [ ] SPEC-TECNICO.md completo
|
|
109
|
+
- [ ] Arquitetura documentada com diagrama
|
|
110
|
+
- [ ] Modelagem de dados definida
|
|
111
|
+
- [ ] APIs e integrações especificadas
|
|
112
|
+
- [ ] Estratégia de testes definida
|
|
113
|
+
- [ ] ADRs iniciais registrados
|
|
114
|
+
|
|
115
|
+
**→ Passa para @qa**
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Fase 5 — Revisão Crítica (@qa)
|
|
120
|
+
|
|
121
|
+
**Responsável:** Quinn (@qa)
|
|
122
|
+
**Input:** `docs/[projeto]/PRD.md` + `docs/[projeto]/SPEC-TECNICO.md`
|
|
123
|
+
**Output:** Relatório crítico de revisão
|
|
124
|
+
|
|
125
|
+
### O que acontece:
|
|
126
|
+
1. @qa lê o PRD e o SPEC-TECNICO em busca de inconsistências
|
|
127
|
+
2. Identifica requisitos não-testáveis
|
|
128
|
+
3. Verifica se os acceptance criteria futuros serão verificáveis
|
|
129
|
+
4. Questiona pontos de falha não cobertos
|
|
130
|
+
5. Propõe estratégia de testes de alto nível
|
|
131
|
+
|
|
132
|
+
### Critérios de saída:
|
|
133
|
+
- [ ] Inconsistências entre PRD e SPEC-TECNICO identificadas
|
|
134
|
+
- [ ] Requisitos não-testáveis sinalizado
|
|
135
|
+
- [ ] Estratégia de testes de alto nível documentada
|
|
136
|
+
- [ ] @architect respondeu a todos os pontos críticos
|
|
137
|
+
|
|
138
|
+
**→ Passa para @po**
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Fase 6 — Aprovação Final (@po)
|
|
143
|
+
|
|
144
|
+
**Responsável:** Pax (@po)
|
|
145
|
+
**Input:** PRD.md + SPEC-TECNICO.md revisados
|
|
146
|
+
**Output:** Aprovação formal para início do desenvolvimento
|
|
147
|
+
|
|
148
|
+
### O que acontece:
|
|
149
|
+
1. @po revisa o backlog de épicos e funcionalidades
|
|
150
|
+
2. Confirma que é possível criar stories claras para cada item
|
|
151
|
+
3. Alinha priorização com @pm
|
|
152
|
+
4. Emite aprovação formal para start do desenvolvimento
|
|
153
|
+
5. Solicita @sm para iniciar criação de stories do primeiro épico
|
|
154
|
+
|
|
155
|
+
### Critérios de saída:
|
|
156
|
+
- [ ] PRD.md aprovado por @po e @pm
|
|
157
|
+
- [ ] SPEC-TECNICO.md aprovado por @architect
|
|
158
|
+
- [ ] Zero ambiguidades pendentes
|
|
159
|
+
- [ ] @sm acionado para criar stories do Sprint 1
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Critérios Globais de Saída do Spec Pipeline
|
|
164
|
+
|
|
165
|
+
Para que o Spec Pipeline seja considerado concluído:
|
|
166
|
+
|
|
167
|
+
- [ ] `docs/[projeto]/BRIEFING.md` — completo e validado
|
|
168
|
+
- [ ] `docs/[projeto]/PRD.md` — aprovado por @pm e @po
|
|
169
|
+
- [ ] `docs/[projeto]/SPEC-TECNICO.md` — aprovado por @architect
|
|
170
|
+
- [ ] ADRs iniciais registrados em `docs/adr/`
|
|
171
|
+
- [ ] Zero ambiguidades de negócio pendentes
|
|
172
|
+
- [ ] Zero riscos técnicos não-mitigados documentados
|
|
173
|
+
- [ ] Stack tecnológica definida e aprovada
|
|
174
|
+
- [ ] Time alinhado sobre o que será construído
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Como Ativar
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
@analyst iniciar spec-pipeline [nome-do-projeto]
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Ou retomar de uma fase específica:
|
|
185
|
+
```
|
|
186
|
+
@pm criar-prd a partir do briefing em docs/[projeto]/BRIEFING.md
|
|
187
|
+
@architect criar spec-técnico a partir do PRD em docs/[projeto]/PRD.md
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
*GEN.IA OS v1.0 — {{TEAM_NAME}} — {{CREATOR_NAME}}*
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# Workflow: Story Development Cycle (SDC)
|
|
2
|
+
|
|
3
|
+
> Ciclo completo de desenvolvimento de uma story, da criação ao merge.
|
|
4
|
+
> Ordem: @sm → @po → @dev → @qa → @reviewer → @devops
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Visão Geral
|
|
9
|
+
|
|
10
|
+
O Story Development Cycle (SDC) é o coração do GEN.IA OS. Cada story percorre um ciclo rigoroso de criação, validação, desenvolvimento, revisão e entrega. Nenhuma etapa pode ser pulada. O SDC garante rastreabilidade completa de cada funcionalidade entregue.
|
|
11
|
+
|
|
12
|
+
**Duração típica:** 1-5 dias por story (dependendo do tamanho)
|
|
13
|
+
**Pré-requisito:** Spec Pipeline concluído (PRD.md + SPEC-TECNICO.md aprovados)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Estados da Story
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Draft → Ready → InProgress → InQA → InReview → InPR → Done
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
| Estado | Responsável | Significado |
|
|
24
|
+
|--------|-------------|-------------|
|
|
25
|
+
| Draft | @sm | Story criada, aguardando validação |
|
|
26
|
+
| Ready | @po | Story validada, pronta para sprint |
|
|
27
|
+
| InProgress | @dev | Em desenvolvimento |
|
|
28
|
+
| InQA | @qa | Em revisão de qualidade |
|
|
29
|
+
| InReview | @reviewer | Em code review |
|
|
30
|
+
| InPR | @devops | PR criado, aguardando merge |
|
|
31
|
+
| Done | @po | Story aceita e entregue |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Fase 1 — Draft (@sm)
|
|
36
|
+
|
|
37
|
+
**Responsável:** Sami (@sm)
|
|
38
|
+
**Input:** Épico do PRD + SPEC-TECNICO para contexto técnico
|
|
39
|
+
**Output:** `docs/stories/STORY-XXX.md` em status Draft
|
|
40
|
+
|
|
41
|
+
### O que acontece:
|
|
42
|
+
1. @sm identifica próxima story a ser criada com base no backlog priorizado por @po
|
|
43
|
+
2. Cria o arquivo STORY-XXX.md seguindo o template padrão
|
|
44
|
+
3. Escreve a User Story no formato correto
|
|
45
|
+
4. Define mínimo 3 Acceptance Criteria mensuráveis e testáveis
|
|
46
|
+
5. Documenta o não-escopo explicitamente
|
|
47
|
+
6. Adiciona notas técnicas relevantes do SPEC-TECNICO
|
|
48
|
+
7. Estima esforço (P/M/G/XG)
|
|
49
|
+
|
|
50
|
+
### Critérios de saída:
|
|
51
|
+
- [ ] STORY-XXX.md criado com template completo
|
|
52
|
+
- [ ] User Story no formato "Como... quero... para..."
|
|
53
|
+
- [ ] Mínimo 3 ACs mensuráveis
|
|
54
|
+
- [ ] Não-escopo documentado
|
|
55
|
+
- [ ] Épico pai referenciado
|
|
56
|
+
- [ ] Status: Draft
|
|
57
|
+
|
|
58
|
+
**→ Passa para @po**
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Fase 2 — Validate (@po)
|
|
63
|
+
|
|
64
|
+
**Responsável:** Pax (@po)
|
|
65
|
+
**Input:** `docs/stories/STORY-XXX.md` em Draft
|
|
66
|
+
**Output:** Story aprovada (Ready) ou devolvida para revisão
|
|
67
|
+
|
|
68
|
+
### O que acontece:
|
|
69
|
+
1. @po executa checklist de validação 10-point
|
|
70
|
+
2. Se aprovada: altera status para Ready e define prioridade no sprint
|
|
71
|
+
3. Se reprovada: devolve para @sm com feedback específico e items a corrigir
|
|
72
|
+
4. @sm ajusta e resubmete (sem limite de tentativas nesta fase)
|
|
73
|
+
|
|
74
|
+
### Critérios de aprovação (10-point checklist):
|
|
75
|
+
- [ ] Formato correto: "Como [persona], quero [ação], para [benefício]"
|
|
76
|
+
- [ ] Persona identificada e definida no PRD
|
|
77
|
+
- [ ] Valor explícito e mensurável
|
|
78
|
+
- [ ] Mínimo 3 ACs, todos testáveis
|
|
79
|
+
- [ ] Independente ou dependências mapeadas
|
|
80
|
+
- [ ] Tamanho adequado para uma sprint
|
|
81
|
+
- [ ] Estimável com as informações disponíveis
|
|
82
|
+
- [ ] Não-escopo explícito
|
|
83
|
+
- [ ] Épico pai identificado
|
|
84
|
+
- [ ] DoD aplicável à story
|
|
85
|
+
|
|
86
|
+
**Score mínimo: 9/10**
|
|
87
|
+
|
|
88
|
+
**→ Status muda para Ready**
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Fase 3 — Ready (@po + @sm)
|
|
93
|
+
|
|
94
|
+
**Responsável:** @po (prioridade) + @sm (sprint)
|
|
95
|
+
**Status:** Ready
|
|
96
|
+
|
|
97
|
+
A story está validada e entra no sprint backlog. @sm inclui na sprint planning e atribui ao @dev. Nenhum desenvolvimento começa sem story em Ready.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Fase 4 — Develop (@dev)
|
|
102
|
+
|
|
103
|
+
**Responsável:** Dev (@dev)
|
|
104
|
+
**Input:** `docs/stories/STORY-XXX.md` em Ready + SPEC-TECNICO.md
|
|
105
|
+
**Output:** Código implementado, testes escritos, commits locais
|
|
106
|
+
|
|
107
|
+
### O que acontece:
|
|
108
|
+
1. @dev lê completamente a story e o SPEC-TECNICO
|
|
109
|
+
2. Cria o branch: `git checkout -b feat/STORY-XXX-descricao`
|
|
110
|
+
3. Implementa o código seguindo os padrões arquiteturais
|
|
111
|
+
4. Escreve testes unitários (coverage >= 80%)
|
|
112
|
+
5. Executa lint, typecheck e testes localmente
|
|
113
|
+
6. Comita com mensagem formatada (nunca faz push — exclusivo de @devops)
|
|
114
|
+
7. Atualiza status da story para InProgress
|
|
115
|
+
8. Ao concluir, notifica @qa
|
|
116
|
+
|
|
117
|
+
### Critérios de saída:
|
|
118
|
+
- [ ] Todos os ACs implementados
|
|
119
|
+
- [ ] Testes unitários escritos (coverage >= 80%)
|
|
120
|
+
- [ ] Lint passando sem warnings
|
|
121
|
+
- [ ] Typecheck passando
|
|
122
|
+
- [ ] Commits atômicos e bem descritos
|
|
123
|
+
- [ ] Status: InQA
|
|
124
|
+
|
|
125
|
+
**→ Passa para @qa**
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Fase 5 — QA Review (@qa)
|
|
130
|
+
|
|
131
|
+
**Responsável:** Quinn (@qa)
|
|
132
|
+
**Input:** Branch com código implementado
|
|
133
|
+
**Output:** Relatório QA — APROVADO ou REPROVADO com bugs
|
|
134
|
+
|
|
135
|
+
### O que acontece:
|
|
136
|
+
1. @qa verifica cada Acceptance Criterion da story
|
|
137
|
+
2. Executa testes (unitários, integração se houver)
|
|
138
|
+
3. Verifica casos de borda e cenários negativos
|
|
139
|
+
4. Documenta bugs encontrados com severidade
|
|
140
|
+
5. Emite veredicto: APROVADO ou REPROVADO
|
|
141
|
+
|
|
142
|
+
**QA Loop (máximo 5 iterações):**
|
|
143
|
+
```
|
|
144
|
+
@qa revisa → REPROVADO → @dev corrige → @qa re-revisa → ...
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Se após 5 iterações ainda reprovado: escalar para @architect + @pm
|
|
148
|
+
|
|
149
|
+
### Critérios de aprovação:
|
|
150
|
+
- [ ] Todos os ACs verificados e passando
|
|
151
|
+
- [ ] Zero bugs CRÍTICOS
|
|
152
|
+
- [ ] Máximo 2 bugs ALTOS (documentados para correção futura)
|
|
153
|
+
- [ ] Testes passando (>= 80% coverage)
|
|
154
|
+
- [ ] Lint sem warnings
|
|
155
|
+
- [ ] Status: InReview
|
|
156
|
+
|
|
157
|
+
**→ Passa para @reviewer**
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Fase 6 — Code Review (@reviewer)
|
|
162
|
+
|
|
163
|
+
**Responsável:** Rev (@reviewer)
|
|
164
|
+
**Input:** Branch aprovado pelo @qa
|
|
165
|
+
**Output:** LGTM (aprovado) ou mudanças solicitadas
|
|
166
|
+
|
|
167
|
+
### O que acontece:
|
|
168
|
+
1. @reviewer lê o diff completo da story
|
|
169
|
+
2. Verifica corretude, arquitetura, segurança, legibilidade
|
|
170
|
+
3. Emite aprovação (LGTM) ou lista de mudanças bloqueantes
|
|
171
|
+
4. @dev corrige mudanças bloqueantes e notifica @reviewer
|
|
172
|
+
5. @reviewer re-aprova
|
|
173
|
+
|
|
174
|
+
### Critérios de aprovação:
|
|
175
|
+
- [ ] Sem issues de segurança
|
|
176
|
+
- [ ] Arquitetura consistente com SPEC-TECNICO
|
|
177
|
+
- [ ] Imports absolutos usados
|
|
178
|
+
- [ ] Código legível e manutenível
|
|
179
|
+
- [ ] Testes de qualidade (testam comportamento, não implementação)
|
|
180
|
+
- [ ] Status: InPR
|
|
181
|
+
|
|
182
|
+
**→ Passa para @devops**
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Fase 7 — Push e PR (@devops)
|
|
187
|
+
|
|
188
|
+
**Responsável:** Gate (@devops)
|
|
189
|
+
**Input:** Branch aprovado por @qa e @reviewer
|
|
190
|
+
**Output:** PR criado no repositório remoto
|
|
191
|
+
|
|
192
|
+
### O que acontece:
|
|
193
|
+
1. @devops verifica checklist pré-push
|
|
194
|
+
2. Faz `git push -u origin feat/STORY-XXX-descricao`
|
|
195
|
+
3. Cria Pull Request com template completo
|
|
196
|
+
4. Atribui reviewers para merge
|
|
197
|
+
5. Monitora CI/CD pipeline
|
|
198
|
+
6. Faz merge após aprovação do PR e CI verde
|
|
199
|
+
|
|
200
|
+
### Critérios de saída:
|
|
201
|
+
- [ ] Push realizado sem erros
|
|
202
|
+
- [ ] PR criado com descrição completa
|
|
203
|
+
- [ ] CI/CD pipeline verde
|
|
204
|
+
- [ ] PR mergeado para main
|
|
205
|
+
- [ ] Status: Done
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Fase 8 — Done (@po)
|
|
210
|
+
|
|
211
|
+
**Responsável:** Pax (@po)
|
|
212
|
+
**Output:** Story marcada como Done, backlog atualizado
|
|
213
|
+
|
|
214
|
+
### O que acontece:
|
|
215
|
+
1. @po verifica que todos os ACs foram entregues conforme especificado
|
|
216
|
+
2. Aceita a story formalmente (marca como Done)
|
|
217
|
+
3. Atualiza o backlog
|
|
218
|
+
4. Informa @pm sobre o progresso do épico
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Diagrama do Fluxo
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
@sm cria story (Draft)
|
|
226
|
+
↓
|
|
227
|
+
@po valida (Ready) ←── @sm corrige ──← REPROVADO
|
|
228
|
+
↓
|
|
229
|
+
@dev implementa (InProgress)
|
|
230
|
+
↓
|
|
231
|
+
@qa revisa (InQA) ←── @dev corrige ──← REPROVADO (max 5x)
|
|
232
|
+
↓
|
|
233
|
+
@reviewer revisa (InReview) ←── @dev corrige ──← CHANGES
|
|
234
|
+
↓
|
|
235
|
+
@devops push + PR (InPR)
|
|
236
|
+
↓
|
|
237
|
+
@po aceita (Done)
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Regras Invioláveis do SDC
|
|
243
|
+
|
|
244
|
+
1. Nunca pular a validação de @po — story não-validada não pode ser desenvolvida
|
|
245
|
+
2. @dev nunca faz push — exclusivo de @devops
|
|
246
|
+
3. QA Loop tem máximo 5 iterações — após isso, escalar
|
|
247
|
+
4. Code review é obrigatório antes do push — sem exceção
|
|
248
|
+
5. Story só vai para Done quando @po aceitar formalmente
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
*GEN.IA OS v1.0 — {{TEAM_NAME}} — {{CREATOR_NAME}}*
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Guideline: Clean Code
|
|
2
|
+
|
|
3
|
+
> Padroes de codigo pragmaticos - conciso, direto, sem over-engineering.
|
|
4
|
+
|
|
5
|
+
## Principios Core
|
|
6
|
+
|
|
7
|
+
| Principio | Regra |
|
|
8
|
+
|-----------|-------|
|
|
9
|
+
| **SRP** | Single Responsibility - cada funcao/classe faz UMA coisa |
|
|
10
|
+
| **DRY** | Don't Repeat Yourself - extrair duplicatas, reusar |
|
|
11
|
+
| **KISS** | Keep It Simple - solucao mais simples que funciona |
|
|
12
|
+
| **YAGNI** | You Aren't Gonna Need It - nao construir features nao usadas |
|
|
13
|
+
| **Boy Scout** | Deixar codigo mais limpo do que encontrou |
|
|
14
|
+
|
|
15
|
+
## Regras de Naming
|
|
16
|
+
|
|
17
|
+
| Elemento | Convencao |
|
|
18
|
+
|----------|-----------|
|
|
19
|
+
| **Variaveis** | Revelar intencao: `userCount` nao `n` |
|
|
20
|
+
| **Funcoes** | Verbo + substantivo: `getUserById()` nao `user()` |
|
|
21
|
+
| **Booleans** | Forma de pergunta: `isActive`, `hasPermission`, `canEdit` |
|
|
22
|
+
| **Constantes** | SCREAMING_SNAKE: `MAX_RETRY_COUNT` |
|
|
23
|
+
|
|
24
|
+
> **Regra:** Se voce precisa de um comentario para explicar o nome, renomeie.
|
|
25
|
+
|
|
26
|
+
## Regras de Funcao
|
|
27
|
+
|
|
28
|
+
| Regra | Descricao |
|
|
29
|
+
|-------|-----------|
|
|
30
|
+
| **Pequena** | Max 20 linhas, idealmente 5-10 |
|
|
31
|
+
| **Uma Coisa** | Faz uma coisa, faz bem |
|
|
32
|
+
| **Um Nivel** | Um nivel de abstracao por funcao |
|
|
33
|
+
| **Poucos Args** | Max 3 argumentos, preferir 0-2 |
|
|
34
|
+
| **Sem Side Effects** | Nao mutar inputs inesperadamente |
|
|
35
|
+
|
|
36
|
+
## Estrutura de Codigo
|
|
37
|
+
|
|
38
|
+
| Padrao | Aplicar |
|
|
39
|
+
|--------|---------|
|
|
40
|
+
| **Guard Clauses** | Early returns para edge cases |
|
|
41
|
+
| **Flat > Nested** | Evitar nesting profundo (max 2 niveis) |
|
|
42
|
+
| **Composicao** | Funcoes pequenas compostas |
|
|
43
|
+
| **Colocacao** | Manter codigo relacionado proximo |
|
|
44
|
+
|
|
45
|
+
## Estilo de Codigo AI
|
|
46
|
+
|
|
47
|
+
| Situacao | Acao |
|
|
48
|
+
|----------|------|
|
|
49
|
+
| Usuario pede feature | Escrever diretamente |
|
|
50
|
+
| Usuario reporta bug | Corrigir, nao explicar |
|
|
51
|
+
| Requisito nao claro | Perguntar, nao assumir |
|
|
52
|
+
|
|
53
|
+
## Anti-Patterns
|
|
54
|
+
|
|
55
|
+
| NAO Fazer | Fazer |
|
|
56
|
+
|-----------|-------|
|
|
57
|
+
| Comentar cada linha | Deletar comentarios obvios |
|
|
58
|
+
| Helper para one-liner | Inline o codigo |
|
|
59
|
+
| Factory para 2 objetos | Instanciacao direta |
|
|
60
|
+
| utils.ts com 1 funcao | Colocar onde usado |
|
|
61
|
+
| "First we import..." | Apenas escrever codigo |
|
|
62
|
+
| Deep nesting | Guard clauses |
|
|
63
|
+
| Magic numbers | Named constants |
|
|
64
|
+
| God functions | Dividir por responsabilidade |
|
|
65
|
+
|
|
66
|
+
## Antes de Editar Qualquer Arquivo
|
|
67
|
+
|
|
68
|
+
| Pergunta | Por que |
|
|
69
|
+
|----------|---------|
|
|
70
|
+
| **O que importa este arquivo?** | Pode quebrar |
|
|
71
|
+
| **O que este arquivo importa?** | Mudanca de interface |
|
|
72
|
+
| **Quais testes cobrem isso?** | Testes podem falhar |
|
|
73
|
+
| **E um componente compartilhado?** | Multiplos lugares afetados |
|
|
74
|
+
|
|
75
|
+
> **Regra:** Editar arquivo + todos dependentes na MESMA tarefa.
|
|
76
|
+
|
|
77
|
+
## Self-Check Antes de Completar
|
|
78
|
+
|
|
79
|
+
| Check | Pergunta |
|
|
80
|
+
|-------|----------|
|
|
81
|
+
| **Objetivo alcancado?** | Fiz exatamente o que usuario pediu? |
|
|
82
|
+
| **Arquivos editados?** | Modifiquei todos arquivos necessarios? |
|
|
83
|
+
| **Codigo funciona?** | Testei/verifiquei a mudanca? |
|
|
84
|
+
| **Sem erros?** | Lint e TypeScript passam? |
|
|
85
|
+
| **Nada esquecido?** | Algum edge case perdido? |
|
|
86
|
+
|
|
87
|
+
## Resumo
|
|
88
|
+
|
|
89
|
+
| Fazer | Nao Fazer |
|
|
90
|
+
|-------|-----------|
|
|
91
|
+
| Escrever codigo direto | Escrever tutoriais |
|
|
92
|
+
| Deixar codigo se auto-documentar | Adicionar comentarios obvios |
|
|
93
|
+
| Corrigir bugs imediatamente | Explicar o fix primeiro |
|
|
94
|
+
| Inline coisas pequenas | Criar arquivos desnecessarios |
|
|
95
|
+
| Nomear coisas claramente | Usar abreviacoes |
|
|
96
|
+
| Manter funcoes pequenas | Escrever funcoes 100+ linhas |
|
|
97
|
+
|
|
98
|
+
> **Lembrar: O usuario quer codigo funcionando, nao uma aula de programacao.**
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Guideline: Testing Patterns
|
|
2
|
+
|
|
3
|
+
> Principios para suites de teste confiaveis.
|
|
4
|
+
|
|
5
|
+
## Piramide de Testes
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
/\ E2E (Poucos)
|
|
9
|
+
/ \ Fluxos criticos
|
|
10
|
+
/----\
|
|
11
|
+
/ \ Integration (Alguns)
|
|
12
|
+
/--------\ API, DB queries
|
|
13
|
+
/ \
|
|
14
|
+
/------------\ Unit (Muitos)
|
|
15
|
+
Funcoes, classes
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Padrao AAA
|
|
19
|
+
|
|
20
|
+
| Etapa | Proposito |
|
|
21
|
+
|-------|-----------|
|
|
22
|
+
| **Arrange** | Configurar dados de teste |
|
|
23
|
+
| **Act** | Executar codigo sob teste |
|
|
24
|
+
| **Assert** | Verificar resultado |
|
|
25
|
+
|
|
26
|
+
## Selecao de Tipo de Teste
|
|
27
|
+
|
|
28
|
+
| Tipo | Melhor Para | Velocidade |
|
|
29
|
+
|------|-------------|------------|
|
|
30
|
+
| **Unit** | Funcoes puras, logica | Rapido (<50ms) |
|
|
31
|
+
| **Integration** | API, DB, servicos | Medio |
|
|
32
|
+
| **E2E** | Fluxos criticos do usuario | Lento |
|
|
33
|
+
|
|
34
|
+
## Principios de Unit Test
|
|
35
|
+
|
|
36
|
+
### Bons Unit Tests (FIRST)
|
|
37
|
+
|
|
38
|
+
| Principio | Significado |
|
|
39
|
+
|-----------|-------------|
|
|
40
|
+
| Fast | < 100ms cada |
|
|
41
|
+
| Isolated | Sem deps externos |
|
|
42
|
+
| Repeatable | Mesmo resultado sempre |
|
|
43
|
+
| Self-checking | Sem verificacao manual |
|
|
44
|
+
| Timely | Escritos com o codigo |
|
|
45
|
+
|
|
46
|
+
### O Que Testar
|
|
47
|
+
|
|
48
|
+
| Testar | Nao Testar |
|
|
49
|
+
|--------|------------|
|
|
50
|
+
| Business logic | Codigo do framework |
|
|
51
|
+
| Edge cases | Libs de terceiros |
|
|
52
|
+
| Error handling | Getters simples |
|
|
53
|
+
|
|
54
|
+
## Principios de Integration Test
|
|
55
|
+
|
|
56
|
+
### O Que Testar
|
|
57
|
+
|
|
58
|
+
| Area | Foco |
|
|
59
|
+
|------|------|
|
|
60
|
+
| API endpoints | Request/response |
|
|
61
|
+
| Database | Queries, transactions |
|
|
62
|
+
| External services | Contratos |
|
|
63
|
+
|
|
64
|
+
### Setup/Teardown
|
|
65
|
+
|
|
66
|
+
| Fase | Acao |
|
|
67
|
+
|------|------|
|
|
68
|
+
| Before All | Conectar recursos |
|
|
69
|
+
| Before Each | Resetar estado |
|
|
70
|
+
| After Each | Limpar |
|
|
71
|
+
| After All | Desconectar |
|
|
72
|
+
|
|
73
|
+
## Principios de Mocking
|
|
74
|
+
|
|
75
|
+
### Quando Fazer Mock
|
|
76
|
+
|
|
77
|
+
| Mock | Nao Mock |
|
|
78
|
+
|------|----------|
|
|
79
|
+
| External APIs | Codigo sob teste |
|
|
80
|
+
| Database (unit) | Dependencias simples |
|
|
81
|
+
| Time/random | Funcoes puras |
|
|
82
|
+
| Network | Stores in-memory |
|
|
83
|
+
|
|
84
|
+
### Tipos de Mock
|
|
85
|
+
|
|
86
|
+
| Tipo | Uso |
|
|
87
|
+
|------|-----|
|
|
88
|
+
| Stub | Retornar valores fixos |
|
|
89
|
+
| Spy | Rastrear chamadas |
|
|
90
|
+
| Mock | Definir expectativas |
|
|
91
|
+
| Fake | Implementacao simplificada |
|
|
92
|
+
|
|
93
|
+
## Organizacao de Testes
|
|
94
|
+
|
|
95
|
+
### Naming
|
|
96
|
+
|
|
97
|
+
| Padrao | Exemplo |
|
|
98
|
+
|--------|---------|
|
|
99
|
+
| Should behavior | "should return error when..." |
|
|
100
|
+
| When condition | "when user not found..." |
|
|
101
|
+
| Given-when-then | "given X, when Y, then Z" |
|
|
102
|
+
|
|
103
|
+
### Agrupamento
|
|
104
|
+
|
|
105
|
+
| Nivel | Uso |
|
|
106
|
+
|-------|-----|
|
|
107
|
+
| describe | Agrupar testes relacionados |
|
|
108
|
+
| it/test | Caso individual |
|
|
109
|
+
| beforeEach | Setup comum |
|
|
110
|
+
|
|
111
|
+
## Dados de Teste
|
|
112
|
+
|
|
113
|
+
### Estrategias
|
|
114
|
+
|
|
115
|
+
| Abordagem | Uso |
|
|
116
|
+
|-----------|-----|
|
|
117
|
+
| Factories | Gerar dados de teste |
|
|
118
|
+
| Fixtures | Datasets predefinidos |
|
|
119
|
+
| Builders | Criacao fluente de objetos |
|
|
120
|
+
|
|
121
|
+
### Principios
|
|
122
|
+
- Usar dados realistas
|
|
123
|
+
- Randomizar valores nao essenciais (faker)
|
|
124
|
+
- Compartilhar fixtures comuns
|
|
125
|
+
- Manter dados minimos
|
|
126
|
+
|
|
127
|
+
## Best Practices
|
|
128
|
+
|
|
129
|
+
| Pratica | Por que |
|
|
130
|
+
|---------|---------|
|
|
131
|
+
| Um assert por teste | Razao clara de falha |
|
|
132
|
+
| Testes independentes | Sem dependencia de ordem |
|
|
133
|
+
| Testes rapidos | Rodar frequentemente |
|
|
134
|
+
| Nomes descritivos | Auto-documentacao |
|
|
135
|
+
| Limpar | Evitar side effects |
|
|
136
|
+
|
|
137
|
+
## Anti-Patterns
|
|
138
|
+
|
|
139
|
+
| NAO Fazer | Fazer |
|
|
140
|
+
|-----------|-------|
|
|
141
|
+
| Testar implementacao | Testar comportamento |
|
|
142
|
+
| Duplicar codigo de teste | Usar factories |
|
|
143
|
+
| Setup complexo | Simplificar ou dividir |
|
|
144
|
+
| Ignorar testes flaky | Corrigir causa raiz |
|
|
145
|
+
| Pular cleanup | Resetar estado |
|
|
146
|
+
|
|
147
|
+
## Exemplo de Teste
|
|
148
|
+
|
|
149
|
+
```typescript
|
|
150
|
+
describe('UserService', () => {
|
|
151
|
+
describe('createUser', () => {
|
|
152
|
+
it('should create user with valid data', async () => {
|
|
153
|
+
// Arrange
|
|
154
|
+
const userData = { name: 'John', email: 'john@test.com' };
|
|
155
|
+
|
|
156
|
+
// Act
|
|
157
|
+
const user = await userService.createUser(userData);
|
|
158
|
+
|
|
159
|
+
// Assert
|
|
160
|
+
expect(user.id).toBeDefined();
|
|
161
|
+
expect(user.name).toBe('John');
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it('should throw error when email is invalid', async () => {
|
|
165
|
+
// Arrange
|
|
166
|
+
const userData = { name: 'John', email: 'invalid' };
|
|
167
|
+
|
|
168
|
+
// Act & Assert
|
|
169
|
+
await expect(userService.createUser(userData))
|
|
170
|
+
.rejects.toThrow('Invalid email');
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
> **Lembrar:** Testes sao documentacao. Se alguem nao consegue entender o que o codigo faz pelos testes, reescreva-os.
|