create-genia-os 2.1.0 → 2.2.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/README.md +154 -106
- package/bin/index.js +240 -240
- package/package.json +42 -37
- package/template/.claude/CLAUDE.md +215 -215
- package/template/.claude/agent-memory/analyst/MEMORY.md +20 -20
- package/template/.claude/agent-memory/architect/MEMORY.md +20 -20
- package/template/.claude/agent-memory/dev/MEMORY.md +20 -20
- package/template/.claude/agent-memory/devops/MEMORY.md +20 -20
- package/template/.claude/agent-memory/pm/MEMORY.md +20 -20
- package/template/.claude/agent-memory/po/MEMORY.md +20 -20
- package/template/.claude/agent-memory/qa/MEMORY.md +20 -20
- package/template/.claude/agent-memory/reviewer/MEMORY.md +20 -20
- package/template/.claude/agent-memory/sm/MEMORY.md +20 -20
- package/template/.claude/hooks/enforce-git-push-authority.py +70 -70
- package/template/.claude/hooks/metrics-tracker.cjs +65 -0
- package/template/.claude/hooks/precompact-session-digest.cjs +87 -87
- package/template/.claude/hooks/sql-governance.py +65 -65
- package/template/.claude/hooks/synapse-engine.cjs +122 -122
- package/template/.claude/hooks/write-path-validation.py +59 -59
- package/template/.claude/rules/agent-authority.md +39 -39
- package/template/.claude/rules/agent-handoff.md +71 -71
- package/template/.claude/rules/agent-memory.md +61 -61
- package/template/.claude/rules/ids-principles.md +52 -52
- package/template/.claude/rules/mcp-usage.md +49 -49
- package/template/.claude/rules/new-project.md +157 -0
- package/template/.claude/rules/story-lifecycle.md +87 -87
- package/template/.claude/rules/workflow-execution.md +68 -68
- package/template/.claude/settings.json +58 -58
- package/template/.claude/settings.local.json +14 -14
- package/template/.genia/CONSTITUTION.md +129 -129
- package/template/.genia/contexts/api-patterns.md +134 -134
- package/template/.genia/contexts/nextjs-react.md +210 -210
- package/template/.genia/contexts/projeto.md +18 -18
- package/template/.genia/contexts/supabase.md +152 -152
- package/template/.genia/contexts/whatsapp-cloud.md +176 -176
- package/template/.genia/core-config.yaml +192 -192
- package/template/.genia/development/agents/analyst.md +138 -138
- package/template/.genia/development/agents/architect.md +171 -171
- package/template/.genia/development/agents/dev.md +160 -160
- package/template/.genia/development/agents/devops.md +200 -200
- package/template/.genia/development/agents/pm.md +142 -142
- package/template/.genia/development/agents/po.md +165 -165
- package/template/.genia/development/agents/qa.md +183 -183
- package/template/.genia/development/agents/reviewer.md +198 -198
- package/template/.genia/development/agents/sm.md +230 -230
- package/template/.genia/development/checklists/architecture-review.md +189 -189
- package/template/.genia/development/checklists/pre-commit.md +205 -205
- package/template/.genia/development/checklists/pre-deploy.md +230 -230
- package/template/.genia/development/checklists/qa-gate.md +216 -216
- package/template/.genia/development/checklists/story-dod.md +155 -155
- package/template/.genia/development/tasks/code-review.md +197 -197
- package/template/.genia/development/tasks/criar-prd.md +170 -170
- package/template/.genia/development/tasks/criar-spec.md +188 -188
- package/template/.genia/development/tasks/criar-story.md +185 -185
- package/template/.genia/development/tasks/debug-sistematico.md +230 -230
- package/template/.genia/development/tasks/dev-implement.md +199 -199
- package/template/.genia/development/tasks/qa-review.md +224 -224
- package/template/.genia/development/workflows/brownfield.md +178 -178
- package/template/.genia/development/workflows/delivery.md +208 -208
- package/template/.genia/development/workflows/development.md +189 -189
- package/template/.genia/development/workflows/greenfield.md +166 -166
- package/template/.genia/development/workflows/planning.md +167 -167
- package/template/.genia/development/workflows/qa-loop.md +179 -179
- package/template/.genia/development/workflows/spec-pipeline.md +192 -192
- package/template/.genia/development/workflows/story-development-cycle.md +252 -252
- package/template/.genia/guidelines/clean-code.md +98 -98
- package/template/.genia/guidelines/testing.md +176 -176
- package/template/.genia/skills/design/canvas-design.md +109 -109
- package/template/.genia/skills/design/frontend-design.md +140 -140
- package/template/.genia/skills/dev/mcp-builder.md +172 -172
- package/template/.genia/skills/dev/webapp-testing.md +150 -150
- package/template/.genia/skills/documents/docx.md +153 -153
- package/template/.genia/skills/documents/pdf.md +134 -134
- package/template/.genia/skills/documents/pptx.md +118 -118
- package/template/.genia/skills/documents/xlsx.md +140 -140
- package/template/.synapse/agent-analyst +8 -8
- package/template/.synapse/agent-architect +8 -8
- package/template/.synapse/agent-dev +8 -8
- package/template/.synapse/agent-devops +8 -8
- package/template/.synapse/agent-pm +8 -8
- package/template/.synapse/agent-po +7 -7
- package/template/.synapse/agent-qa +8 -8
- package/template/.synapse/agent-reviewer +7 -7
- package/template/.synapse/agent-sm +7 -7
- package/template/.synapse/constitution +7 -7
- package/template/.synapse/context +8 -8
- package/template/.synapse/global +8 -8
- package/template/.synapse/manifest +14 -14
- package/template/README.md +53 -53
|
@@ -1,205 +1,205 @@
|
|
|
1
|
-
# Checklist: Pré-Commit
|
|
2
|
-
|
|
3
|
-
> Verificações obrigatórias antes de qualquer commit.
|
|
4
|
-
> Executado por @dev. Automatizável via git hooks.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Objetivo
|
|
9
|
-
|
|
10
|
-
Garantir que nenhum commit "sujo" entre no histórico do repositório. Um commit deve ser uma unidade de mudança coesa, funcional e segura. Esta checklist previne problemas que são muito mais custosos de corrigir depois do commit.
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Checklist Completo
|
|
15
|
-
|
|
16
|
-
### Bloco 1 — Qualidade de Código (Obrigatório)
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
npm run lint
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
- [ ] Zero erros de lint
|
|
23
|
-
- [ ] Zero warnings de lint (warnings são erros em potencial)
|
|
24
|
-
- [ ] Nenhuma regra do ESLint desabilitada com `// eslint-disable` sem comentário explicativo
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
npm run typecheck
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
- [ ] Zero erros TypeScript
|
|
31
|
-
- [ ] Nenhum `@ts-ignore` ou `@ts-expect-error` sem explicação no comentário
|
|
32
|
-
- [ ] Sem `any` usado como atalho — tipagem explícita ou `unknown`
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
### Bloco 2 — Testes (Obrigatório)
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
npm run test
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
- [ ] Todos os testes passando
|
|
43
|
-
- [ ] Nenhum teste em `skip` ou `xtest` que foi esquecido
|
|
44
|
-
- [ ] Nenhum `test.only` esquecido (faria outros testes serem ignorados no CI)
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
npm run coverage
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
- [ ] Coverage >= 80% nas linhas modificadas
|
|
51
|
-
- [ ] Se coverage caiu abaixo de 80%: adicionar testes antes de commitar
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
### Bloco 3 — Segurança (Obrigatório)
|
|
56
|
-
|
|
57
|
-
Antes de executar `git add`, verifique todos os arquivos no diff:
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
git diff --staged
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
- [ ] Sem passwords, tokens, API keys ou secrets hardcodados
|
|
64
|
-
- [ ] Sem credenciais de banco de dados no código
|
|
65
|
-
- [ ] Sem URLs de ambiente hardcodadas (usar variáveis de ambiente)
|
|
66
|
-
- [ ] Arquivo `.env` ou `.env.local` NÃO está sendo commitado
|
|
67
|
-
- [ ] Sem chaves privadas (`.pem`, `.key`) no staged
|
|
68
|
-
- [ ] Sem tokens de autenticação em nenhum arquivo
|
|
69
|
-
|
|
70
|
-
**Se encontrar qualquer desses:** remova ANTES de commitar. Secrets no histórico git são permanentes e comprometem a segurança do projeto.
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
### Bloco 4 — Limpeza de Código (Obrigatório)
|
|
75
|
-
|
|
76
|
-
Leia o diff uma vez como se fosse o reviewer:
|
|
77
|
-
|
|
78
|
-
- [ ] Sem `console.log`, `console.debug`, `console.warn` de debug esquecidos
|
|
79
|
-
- [ ] Sem código comentado desnecessariamente (use `git stash` se quiser salvar)
|
|
80
|
-
- [ ] Sem imports não utilizados
|
|
81
|
-
- [ ] Sem variáveis declaradas e não utilizadas
|
|
82
|
-
- [ ] Sem arquivos de teste manual esquecidos (`test.html`, `debug.js`, etc.)
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
### Bloco 5 — Conformidade com Padrões (Obrigatório)
|
|
87
|
-
|
|
88
|
-
- [ ] Todos os imports novos usam paths absolutos com `@/`
|
|
89
|
-
- [ ] Nenhum import relativo com `../../` em arquivos novos
|
|
90
|
-
- [ ] Nomenclatura seguindo os padrões do SPEC-TECNICO (camelCase, PascalCase)
|
|
91
|
-
- [ ] Arquivos criados nas pastas corretas conforme estrutura definida
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
### Bloco 6 — Formato do Commit (Obrigatório)
|
|
96
|
-
|
|
97
|
-
A mensagem de commit deve seguir o formato:
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
tipo(escopo): descrição em imperativo presente
|
|
101
|
-
|
|
102
|
-
[corpo opcional com contexto adicional]
|
|
103
|
-
|
|
104
|
-
Story: STORY-XXX
|
|
105
|
-
Co-Authored-By: GEN.IA OS <genia@bedata.com.br>
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
- [ ] Tipo válido: `feat`, `fix`, `refactor`, `test`, `docs`, `style`, `chore`
|
|
109
|
-
- [ ] Escopo relevante ao módulo modificado
|
|
110
|
-
- [ ] Descrição em imperativo: "adicionar", "corrigir", "implementar" (não "adicionado", "foi corrigido")
|
|
111
|
-
- [ ] Descrição em até 72 caracteres na primeira linha
|
|
112
|
-
- [ ] Story ID incluído quando aplicável
|
|
113
|
-
- [ ] Co-authored-by incluído
|
|
114
|
-
|
|
115
|
-
**Exemplos corretos:**
|
|
116
|
-
```
|
|
117
|
-
feat(auth): implementar formulário de login com validação de email
|
|
118
|
-
fix(api): corrigir erro 500 ao criar usuário sem telefone
|
|
119
|
-
test(payment): adicionar casos de teste para falha de pagamento
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
**Exemplos incorretos:**
|
|
123
|
-
```
|
|
124
|
-
update stuff
|
|
125
|
-
fixing bug
|
|
126
|
-
WIP
|
|
127
|
-
feat: fiz várias coisas no componente de login e também corrigi um bug
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
### Bloco 7 — Atomicidade (Boas Práticas)
|
|
133
|
-
|
|
134
|
-
- [ ] Este commit representa UMA mudança coesa e descritível em uma frase?
|
|
135
|
-
- [ ] Se o commit precisaria de "e também" na descrição, considere dividir em 2 commits
|
|
136
|
-
- [ ] Arquivos não relacionados a esta mudança NÃO estão em stage
|
|
137
|
-
- [ ] Arquivos de configuração pessoal (`.vscode/settings.json` pessoal, etc.) não incluídos
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## Verificação Rápida Final
|
|
142
|
-
|
|
143
|
-
Execute a sequência completa antes de `git commit`:
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
npm run lint && npm run typecheck && npm run test && echo "PRÉ-COMMIT OK ✓"
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
Se este comando terminar com `PRÉ-COMMIT OK ✓`, o commit pode ser feito.
|
|
150
|
-
|
|
151
|
-
Se falhar: corrija o problema identificado antes de commitar.
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
## Automatização com Git Hooks
|
|
156
|
-
|
|
157
|
-
Para automatizar parte desta checklist, adicione o hook em `.git/hooks/pre-commit`:
|
|
158
|
-
|
|
159
|
-
```bash
|
|
160
|
-
#!/bin/sh
|
|
161
|
-
echo "Executando verificações pré-commit..."
|
|
162
|
-
|
|
163
|
-
npm run lint
|
|
164
|
-
if [ $? -ne 0 ]; then
|
|
165
|
-
echo "BLOQUEADO: Lint falhou. Corrija os erros antes de commitar."
|
|
166
|
-
exit 1
|
|
167
|
-
fi
|
|
168
|
-
|
|
169
|
-
npm run typecheck
|
|
170
|
-
if [ $? -ne 0 ]; then
|
|
171
|
-
echo "BLOQUEADO: TypeScript com erros. Corrija antes de commitar."
|
|
172
|
-
exit 1
|
|
173
|
-
fi
|
|
174
|
-
|
|
175
|
-
npm run test
|
|
176
|
-
if [ $? -ne 0 ]; then
|
|
177
|
-
echo "BLOQUEADO: Testes falhando. Corrija antes de commitar."
|
|
178
|
-
exit 1
|
|
179
|
-
fi
|
|
180
|
-
|
|
181
|
-
echo "Verificações pré-commit concluídas. ✓"
|
|
182
|
-
exit 0
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
Tornar executável:
|
|
186
|
-
```bash
|
|
187
|
-
chmod +x .git/hooks/pre-commit
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
**Nota:** @devops é responsável por configurar hooks em nível de projeto (usando Husky ou similar) para que se apliquem a todo o time.
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
## Exceções
|
|
195
|
-
|
|
196
|
-
Em situações excepcionais, @architect pode autorizar um commit que não passa em todas as verificações, com:
|
|
197
|
-
- Registro documentado da exceção
|
|
198
|
-
- Justificativa técnica
|
|
199
|
-
- Issue criada para resolução imediata (no mesmo sprint)
|
|
200
|
-
|
|
201
|
-
**Exceções nunca são a norma.** Se você se pega precisando de exceções frequentemente, o problema é no código ou no processo.
|
|
202
|
-
|
|
203
|
-
---
|
|
204
|
-
|
|
205
|
-
*GEN.IA OS v1.0 — {{TEAM_NAME}} — {{CREATOR_NAME}}*
|
|
1
|
+
# Checklist: Pré-Commit
|
|
2
|
+
|
|
3
|
+
> Verificações obrigatórias antes de qualquer commit.
|
|
4
|
+
> Executado por @dev. Automatizável via git hooks.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
|
|
10
|
+
Garantir que nenhum commit "sujo" entre no histórico do repositório. Um commit deve ser uma unidade de mudança coesa, funcional e segura. Esta checklist previne problemas que são muito mais custosos de corrigir depois do commit.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Checklist Completo
|
|
15
|
+
|
|
16
|
+
### Bloco 1 — Qualidade de Código (Obrigatório)
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm run lint
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
- [ ] Zero erros de lint
|
|
23
|
+
- [ ] Zero warnings de lint (warnings são erros em potencial)
|
|
24
|
+
- [ ] Nenhuma regra do ESLint desabilitada com `// eslint-disable` sem comentário explicativo
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm run typecheck
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
- [ ] Zero erros TypeScript
|
|
31
|
+
- [ ] Nenhum `@ts-ignore` ou `@ts-expect-error` sem explicação no comentário
|
|
32
|
+
- [ ] Sem `any` usado como atalho — tipagem explícita ou `unknown`
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
### Bloco 2 — Testes (Obrigatório)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm run test
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
- [ ] Todos os testes passando
|
|
43
|
+
- [ ] Nenhum teste em `skip` ou `xtest` que foi esquecido
|
|
44
|
+
- [ ] Nenhum `test.only` esquecido (faria outros testes serem ignorados no CI)
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm run coverage
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
- [ ] Coverage >= 80% nas linhas modificadas
|
|
51
|
+
- [ ] Se coverage caiu abaixo de 80%: adicionar testes antes de commitar
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
### Bloco 3 — Segurança (Obrigatório)
|
|
56
|
+
|
|
57
|
+
Antes de executar `git add`, verifique todos os arquivos no diff:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
git diff --staged
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
- [ ] Sem passwords, tokens, API keys ou secrets hardcodados
|
|
64
|
+
- [ ] Sem credenciais de banco de dados no código
|
|
65
|
+
- [ ] Sem URLs de ambiente hardcodadas (usar variáveis de ambiente)
|
|
66
|
+
- [ ] Arquivo `.env` ou `.env.local` NÃO está sendo commitado
|
|
67
|
+
- [ ] Sem chaves privadas (`.pem`, `.key`) no staged
|
|
68
|
+
- [ ] Sem tokens de autenticação em nenhum arquivo
|
|
69
|
+
|
|
70
|
+
**Se encontrar qualquer desses:** remova ANTES de commitar. Secrets no histórico git são permanentes e comprometem a segurança do projeto.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
### Bloco 4 — Limpeza de Código (Obrigatório)
|
|
75
|
+
|
|
76
|
+
Leia o diff uma vez como se fosse o reviewer:
|
|
77
|
+
|
|
78
|
+
- [ ] Sem `console.log`, `console.debug`, `console.warn` de debug esquecidos
|
|
79
|
+
- [ ] Sem código comentado desnecessariamente (use `git stash` se quiser salvar)
|
|
80
|
+
- [ ] Sem imports não utilizados
|
|
81
|
+
- [ ] Sem variáveis declaradas e não utilizadas
|
|
82
|
+
- [ ] Sem arquivos de teste manual esquecidos (`test.html`, `debug.js`, etc.)
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### Bloco 5 — Conformidade com Padrões (Obrigatório)
|
|
87
|
+
|
|
88
|
+
- [ ] Todos os imports novos usam paths absolutos com `@/`
|
|
89
|
+
- [ ] Nenhum import relativo com `../../` em arquivos novos
|
|
90
|
+
- [ ] Nomenclatura seguindo os padrões do SPEC-TECNICO (camelCase, PascalCase)
|
|
91
|
+
- [ ] Arquivos criados nas pastas corretas conforme estrutura definida
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
### Bloco 6 — Formato do Commit (Obrigatório)
|
|
96
|
+
|
|
97
|
+
A mensagem de commit deve seguir o formato:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
tipo(escopo): descrição em imperativo presente
|
|
101
|
+
|
|
102
|
+
[corpo opcional com contexto adicional]
|
|
103
|
+
|
|
104
|
+
Story: STORY-XXX
|
|
105
|
+
Co-Authored-By: GEN.IA OS <genia@bedata.com.br>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
- [ ] Tipo válido: `feat`, `fix`, `refactor`, `test`, `docs`, `style`, `chore`
|
|
109
|
+
- [ ] Escopo relevante ao módulo modificado
|
|
110
|
+
- [ ] Descrição em imperativo: "adicionar", "corrigir", "implementar" (não "adicionado", "foi corrigido")
|
|
111
|
+
- [ ] Descrição em até 72 caracteres na primeira linha
|
|
112
|
+
- [ ] Story ID incluído quando aplicável
|
|
113
|
+
- [ ] Co-authored-by incluído
|
|
114
|
+
|
|
115
|
+
**Exemplos corretos:**
|
|
116
|
+
```
|
|
117
|
+
feat(auth): implementar formulário de login com validação de email
|
|
118
|
+
fix(api): corrigir erro 500 ao criar usuário sem telefone
|
|
119
|
+
test(payment): adicionar casos de teste para falha de pagamento
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Exemplos incorretos:**
|
|
123
|
+
```
|
|
124
|
+
update stuff
|
|
125
|
+
fixing bug
|
|
126
|
+
WIP
|
|
127
|
+
feat: fiz várias coisas no componente de login e também corrigi um bug
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### Bloco 7 — Atomicidade (Boas Práticas)
|
|
133
|
+
|
|
134
|
+
- [ ] Este commit representa UMA mudança coesa e descritível em uma frase?
|
|
135
|
+
- [ ] Se o commit precisaria de "e também" na descrição, considere dividir em 2 commits
|
|
136
|
+
- [ ] Arquivos não relacionados a esta mudança NÃO estão em stage
|
|
137
|
+
- [ ] Arquivos de configuração pessoal (`.vscode/settings.json` pessoal, etc.) não incluídos
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Verificação Rápida Final
|
|
142
|
+
|
|
143
|
+
Execute a sequência completa antes de `git commit`:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npm run lint && npm run typecheck && npm run test && echo "PRÉ-COMMIT OK ✓"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Se este comando terminar com `PRÉ-COMMIT OK ✓`, o commit pode ser feito.
|
|
150
|
+
|
|
151
|
+
Se falhar: corrija o problema identificado antes de commitar.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Automatização com Git Hooks
|
|
156
|
+
|
|
157
|
+
Para automatizar parte desta checklist, adicione o hook em `.git/hooks/pre-commit`:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
#!/bin/sh
|
|
161
|
+
echo "Executando verificações pré-commit..."
|
|
162
|
+
|
|
163
|
+
npm run lint
|
|
164
|
+
if [ $? -ne 0 ]; then
|
|
165
|
+
echo "BLOQUEADO: Lint falhou. Corrija os erros antes de commitar."
|
|
166
|
+
exit 1
|
|
167
|
+
fi
|
|
168
|
+
|
|
169
|
+
npm run typecheck
|
|
170
|
+
if [ $? -ne 0 ]; then
|
|
171
|
+
echo "BLOQUEADO: TypeScript com erros. Corrija antes de commitar."
|
|
172
|
+
exit 1
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
npm run test
|
|
176
|
+
if [ $? -ne 0 ]; then
|
|
177
|
+
echo "BLOQUEADO: Testes falhando. Corrija antes de commitar."
|
|
178
|
+
exit 1
|
|
179
|
+
fi
|
|
180
|
+
|
|
181
|
+
echo "Verificações pré-commit concluídas. ✓"
|
|
182
|
+
exit 0
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Tornar executável:
|
|
186
|
+
```bash
|
|
187
|
+
chmod +x .git/hooks/pre-commit
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Nota:** @devops é responsável por configurar hooks em nível de projeto (usando Husky ou similar) para que se apliquem a todo o time.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Exceções
|
|
195
|
+
|
|
196
|
+
Em situações excepcionais, @architect pode autorizar um commit que não passa em todas as verificações, com:
|
|
197
|
+
- Registro documentado da exceção
|
|
198
|
+
- Justificativa técnica
|
|
199
|
+
- Issue criada para resolução imediata (no mesmo sprint)
|
|
200
|
+
|
|
201
|
+
**Exceções nunca são a norma.** Se você se pega precisando de exceções frequentemente, o problema é no código ou no processo.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
*GEN.IA OS v1.0 — {{TEAM_NAME}} — {{CREATOR_NAME}}*
|