izanagi-ai 2.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/AGENTS.md +53 -0
- package/CHANGELOG.md +198 -0
- package/LICENSE +21 -0
- package/README.md +96 -0
- package/ROADMAP.md +131 -0
- package/RULES.md +202 -0
- package/SYSTEM.md +201 -0
- package/agents/INDEX.md +40 -0
- package/agents/architect-agent.json +15 -0
- package/agents/bug-hunter-agent.json +14 -0
- package/agents/database-agent.json +14 -0
- package/agents/devops-agent.json +15 -0
- package/agents/docs-agent.json +15 -0
- package/agents/pm-agent.json +14 -0
- package/agents/professor-agent.json +15 -0
- package/agents/security-agent.json +14 -0
- package/agents/senior-engineer-agent.json +16 -0
- package/agents/techlead-agent.json +15 -0
- package/architecture/clean-architecture.md +98 -0
- package/architecture/cqrs-specialist.md +102 -0
- package/architecture/ddd-specialist.md +97 -0
- package/architecture/event-driven-architect.md +79 -0
- package/architecture/hexagonal-architecture.md +96 -0
- package/architecture/microservices-expert.md +83 -0
- package/architecture/monolith-expert.md +67 -0
- package/architecture/repository-pattern.md +73 -0
- package/architecture/unit-of-work.md +92 -0
- package/backend/README.md +29 -0
- package/bin/nexus.js +8 -0
- package/core/compression-engine.md +194 -0
- package/core/context-engine.md +239 -0
- package/core/decision-engine.md +377 -0
- package/core/evolution-engine.md +169 -0
- package/core/planning-engine.md +201 -0
- package/core/quality-gates.md +233 -0
- package/core/reflection-engine.md +182 -0
- package/core/skill-resolver.json +169 -0
- package/core/token-manager.md +152 -0
- package/database/database-engineer.md +244 -0
- package/database/mysql-specialist.md +61 -0
- package/database/postgresql-specialist.md +70 -0
- package/database/redis-specialist.md +73 -0
- package/database/sql-optimizer.md +95 -0
- package/database/sqlserver-specialist.md +69 -0
- package/devops/ci-cd-specialist.md +101 -0
- package/devops/devops-engineer.md +358 -0
- package/devops/docker-expert.md +105 -0
- package/devops/git-expert.md +76 -0
- package/devops/git-flow-specialist.md +71 -0
- package/devops/kubernetes-specialist.md +84 -0
- package/devops/linux-specialist.md +82 -0
- package/devops/windows-specialist.md +43 -0
- package/dist/cli/commands/compile.d.ts +2 -0
- package/dist/cli/commands/compile.d.ts.map +1 -0
- package/dist/cli/commands/compile.js +44 -0
- package/dist/cli/commands/compile.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +88 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +26 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +2 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +50 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/run.d.ts +2 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +49 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +72 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/installer.d.ts +5 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +86 -0
- package/dist/installer.js.map +1 -0
- package/dist/postinstall.d.ts +2 -0
- package/dist/postinstall.d.ts.map +1 -0
- package/dist/postinstall.js +8 -0
- package/dist/postinstall.js.map +1 -0
- package/frontend/README.md +19 -0
- package/memory/context-recovery.md +49 -0
- package/memory/conversation-summarizer.md +65 -0
- package/memory/long-term-project-memory.md +58 -0
- package/memory/memory-manager.md +299 -0
- package/memory/session-compression.md +182 -0
- package/memory/smart-recall.md +37 -0
- package/optimization/compact-example.md +87 -0
- package/optimization/cost-optimizer.md +53 -0
- package/optimization/prompt-optimizer.md +194 -0
- package/optimization/token-audit.md +177 -0
- package/optimization/token-reducer.md +202 -0
- package/package.json +67 -0
- package/security/owasp-auditor.md +249 -0
- package/security/pentest-reviewer.md +109 -0
- package/security/security-engineer.md +238 -0
- package/skills/INDEX.md +434 -0
- package/skills/accessibility-reviewer.md +63 -0
- package/skills/agentic-coding.md +56 -0
- package/skills/ai-agent/SKILL.md +107 -0
- package/skills/ai-agent-dev/SKILL.md +117 -0
- package/skills/alternative-solution-generator.md +72 -0
- package/skills/architecture-patterns/SKILL.md +113 -0
- package/skills/breaking-change-detector.md +84 -0
- package/skills/bug-hunter.md +234 -0
- package/skills/bug-prevention.md +75 -0
- package/skills/chaos-engineering/SKILL.md +108 -0
- package/skills/clean-code-validator.md +218 -0
- package/skills/cloud-architect/SKILL.md +78 -0
- package/skills/cloud-infra/SKILL.md +99 -0
- package/skills/code-auditor.md +24 -0
- package/skills/complexity-analyzer.md +102 -0
- package/skills/confidence-estimator.md +53 -0
- package/skills/continuous-improvement.md +46 -0
- package/skills/continuous-learning-engine.md +51 -0
- package/skills/cto-advisor.md +66 -0
- package/skills/data-engineer/SKILL.md +76 -0
- package/skills/data-engineering/SKILL.md +82 -0
- package/skills/debug-specialist.md +215 -0
- package/skills/dependency-analyzer.md +78 -0
- package/skills/design-pattern-advisor.md +78 -0
- package/skills/documentation-writer.md +66 -0
- package/skills/dry-kiss-yagni-validator.md +114 -0
- package/skills/economia-tokens/SKILL.md +40 -0
- package/skills/er-diagram-builder.md +85 -0
- package/skills/feature-flags/SKILL.md +95 -0
- package/skills/frontend/SKILL.md +327 -0
- package/skills/frontend-dev/SKILL.md +178 -0
- package/skills/graphql/SKILL.md +104 -0
- package/skills/hallucination-detection.md +49 -0
- package/skills/handoff-sessao/SKILL.md +32 -0
- package/skills/i18n-l10n/SKILL.md +103 -0
- package/skills/iac-terraform/SKILL.md +98 -0
- package/skills/legacy-migration/SKILL.md +91 -0
- package/skills/logging-expert.md +78 -0
- package/skills/mcp-server-dev.md +33 -0
- package/skills/memoria-projeto/SKILL.md +49 -0
- package/skills/mobile-dev/SKILL.md +82 -0
- package/skills/mobile-engineer/SKILL.md +74 -0
- package/skills/monitoring-specialist.md +59 -0
- package/skills/observability-expert.md +60 -0
- package/skills/performance-optimizer.md +239 -0
- package/skills/principal-engineer.md +55 -0
- package/skills/privacy-engineer/SKILL.md +79 -0
- package/skills/professor-modo/SKILL.md +33 -0
- package/skills/project-manager.md +74 -0
- package/skills/prompt-engineering.md +27 -0
- package/skills/qa/SKILL.md +231 -0
- package/skills/qa-engineer/SKILL.md +222 -0
- package/skills/readme-generator.md +42 -0
- package/skills/refactoring-specialist.md +250 -0
- package/skills/release-planner.md +70 -0
- package/skills/requirement-analyzer.md +65 -0
- package/skills/risk-analyzer.md +73 -0
- package/skills/root-cause-analyzer.md +210 -0
- package/skills/scalability-expert.md +73 -0
- package/skills/security-privacy/SKILL.md +98 -0
- package/skills/self-correction.md +54 -0
- package/skills/self-critique.md +42 -0
- package/skills/senior-code-reviewer.md +193 -0
- package/skills/sequence-diagram-builder.md +56 -0
- package/skills/serverless-edge/SKILL.md +103 -0
- package/skills/software-architect.md +356 -0
- package/skills/solid-validator.md +332 -0
- package/skills/sre-reliability/SKILL.md +115 -0
- package/skills/staff-engineer.md +61 -0
- package/skills/task-planner.md +61 -0
- package/skills/tech-lead.md +59 -0
- package/skills/technical-debt-analyzer.md +81 -0
- package/skills/technical-writer.md +39 -0
- package/skills/tradeoff-analyzer.md +79 -0
- package/skills/uml-generator.md +72 -0
- package/skills/ux-reviewer.md +61 -0
- package/skills/wasm/SKILL.md +133 -0
- package/skills/web-perf-engineer/SKILL.md +75 -0
- package/skills/web-perf-seo/SKILL.md +111 -0
- package/skills/websocket-realtime/SKILL.md +107 -0
- package/teaching/adaptive-teaching.md +37 -0
- package/teaching/code-explainer.md +172 -0
- package/teaching/interactive-teaching.md +41 -0
- package/teaching/learning-tracker.md +63 -0
- package/teaching/mentor-mode.md +200 -0
- package/teaching/professor-mode.md +222 -0
- package/testing/e2e-test-engineer.md +68 -0
- package/testing/integration-test-engineer.md +74 -0
- package/testing/mocking-specialist.md +78 -0
- package/testing/unit-test-engineer.md +209 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa
|
|
3
|
+
description: |
|
|
4
|
+
Skill de Quality Assurance para o Portal. Contém checklist completo de qualidade
|
|
5
|
+
de código, validações de acessibilidade, performance, segurança e responsividade.
|
|
6
|
+
Use esta skill para auditar código existente ou validar alterações antes de merge/deploy.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Skill QA — Portal
|
|
10
|
+
|
|
11
|
+
## ✅ Checklist de Qualidade de Código
|
|
12
|
+
|
|
13
|
+
### 1. TypeScript Strict
|
|
14
|
+
|
|
15
|
+
- [ ] **Zero `any`** — todos os tipos explícitos
|
|
16
|
+
- [ ] **Zero `as unknown as`** — indica problema de design, refatorar
|
|
17
|
+
- [ ] **Props tipadas** — toda interface de componente com `interface NomeProps`
|
|
18
|
+
- [ ] **Retorno tipado** — funções com retorno explícito quando não óbvio
|
|
19
|
+
- [ ] **Null safety** — uso correto de optional chaining (`?.`) e nullish coalescing (`??`)
|
|
20
|
+
- [ ] **Enums ou union types** — para valores fixos (status, tipos)
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
// ✅ Correto
|
|
24
|
+
interface ModalProps {
|
|
25
|
+
isOpen: boolean;
|
|
26
|
+
onClose: () => void;
|
|
27
|
+
title: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const status: "draft" | "published" | "archived" = "draft";
|
|
31
|
+
|
|
32
|
+
// ❌ Problemático
|
|
33
|
+
const data: any = response.data;
|
|
34
|
+
const result = something as unknown as SomeType;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 2. Componentes React
|
|
38
|
+
|
|
39
|
+
- [ ] **Single Responsibility** — componente faz uma coisa só
|
|
40
|
+
- [ ] **Props mínimas** — sem "god components" com 15+ props
|
|
41
|
+
- [ ] **Sem lógica inline pesada** — extrair para hooks ou funções
|
|
42
|
+
- [ ] **Keys únicas** — em listas, usar IDs do banco, nunca index
|
|
43
|
+
- [ ] **Cleanup de efeitos** — `useEffect` com cleanup quando necessário
|
|
44
|
+
- [ ] **Sem estado desnecessário** — derivar valores quando possível
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
// ✅ Derivar em vez de estado separado
|
|
48
|
+
const displayedCpf = formatCPF(cpfValue ?? "");
|
|
49
|
+
|
|
50
|
+
// ❌ Estado redundante
|
|
51
|
+
const [displayedCpf, setDisplayedCpf] = useState("");
|
|
52
|
+
useEffect(() => setDisplayedCpf(formatCPF(cpfValue)), [cpfValue]);
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 3. Hooks Rules
|
|
56
|
+
|
|
57
|
+
- [ ] Hooks no topo do componente (antes de qualquer condicional)
|
|
58
|
+
- [ ] Sem hooks dentro de loops ou condicionais
|
|
59
|
+
- [ ] Custom hooks com prefixo `use`
|
|
60
|
+
- [ ] Dependencies array do `useEffect` completo e correto
|
|
61
|
+
|
|
62
|
+
### 4. Performance
|
|
63
|
+
|
|
64
|
+
- [ ] **Sem re-renders desnecessários** — `React.memo` quando componente recebe props estáveis
|
|
65
|
+
- [ ] **Callbacks memoizados** — `useCallback` para funções passadas como props
|
|
66
|
+
- [ ] **Valores memoizados** — `useMemo` para cálculos pesados
|
|
67
|
+
- [ ] **Lazy loading** — imagens com `OptimizedImage` ou `loading="lazy"`
|
|
68
|
+
- [ ] **Code splitting** — `dynamic()` para componentes pesados (ex: editor TipTap)
|
|
69
|
+
- [ ] **Sem fetches em loop** — batching de queries quando possível
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## ♿ Checklist de Acessibilidade (a11y)
|
|
74
|
+
|
|
75
|
+
### Imagens e Mídia
|
|
76
|
+
- [ ] Toda `<img>` tem `alt` descritivo
|
|
77
|
+
- [ ] Imagens decorativas têm `alt=""`
|
|
78
|
+
- [ ] Vídeos embeds têm `title` no iframe
|
|
79
|
+
|
|
80
|
+
### Formulários
|
|
81
|
+
- [ ] Todo input tem `<label>` associado (via `htmlFor`/`id`)
|
|
82
|
+
- [ ] Campos obrigatórios marcados com `required` e indicador visual
|
|
83
|
+
- [ ] Mensagens de erro acessíveis (associadas ao campo)
|
|
84
|
+
- [ ] `inputMode` correto para campos numéricos
|
|
85
|
+
- [ ] `placeholder` não substitui `label`
|
|
86
|
+
|
|
87
|
+
### Navegação
|
|
88
|
+
- [ ] Links têm texto descritivo (nunca "clique aqui")
|
|
89
|
+
- [ ] `aria-label` em botões de ícone sem texto
|
|
90
|
+
- [ ] `target="_blank"` acompanhado de `rel="noopener noreferrer"`
|
|
91
|
+
- [ ] Contraste de cor adequado (4.5:1 para texto normal)
|
|
92
|
+
|
|
93
|
+
### Interatividade
|
|
94
|
+
- [ ] Elementos clicáveis são `<button>` ou `<a>`, nunca `<div onClick>`
|
|
95
|
+
- [ ] Modais com `Escape` para fechar
|
|
96
|
+
- [ ] Focus trap em modais abertos
|
|
97
|
+
- [ ] Skip links para navegação por teclado
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 📱 Checklist de Responsividade
|
|
102
|
+
|
|
103
|
+
### Layout
|
|
104
|
+
- [ ] **Mobile-first** — classes base para mobile, breakpoints para desktop
|
|
105
|
+
- [ ] Grid responsivo: `grid-cols-1 md:grid-cols-2 lg:grid-cols-3`
|
|
106
|
+
- [ ] Containers com `px-4` (mobile) e `container mx-auto` (desktop)
|
|
107
|
+
- [ ] Sem overflow horizontal (`overflow-x: hidden` no body)
|
|
108
|
+
|
|
109
|
+
### Textos
|
|
110
|
+
- [ ] Fontes legíveis em mobile (mínimo `text-sm` = 14px)
|
|
111
|
+
- [ ] Títulos escalam: `text-xl md:text-2xl lg:text-3xl`
|
|
112
|
+
- [ ] Truncamento de texto longo com `truncate` ou `line-clamp`
|
|
113
|
+
|
|
114
|
+
### Imagens
|
|
115
|
+
- [ ] Imagens responsivas com `w-full` e `max-w-*`
|
|
116
|
+
- [ ] Aspect ratio mantido (`object-cover`, `object-contain`)
|
|
117
|
+
- [ ] Imagens de banner com `min-height` responsivo
|
|
118
|
+
|
|
119
|
+
### Formulários
|
|
120
|
+
- [ ] Inputs com `w-full` em mobile
|
|
121
|
+
- [ ] Grids de formulário colapsam em mobile: `grid-cols-1 md:grid-cols-2`
|
|
122
|
+
- [ ] Botões com `w-full` em mobile, tamanho fixo em desktop
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 🎨 Checklist de Design System
|
|
127
|
+
|
|
128
|
+
### Tokens Tailwind
|
|
129
|
+
- [ ] Usar cores customizadas (`brand-blue`, `brand-dark-blue`) — **nunca hardcodar**
|
|
130
|
+
- [ ] Usar gradientes do tema (`bg-brand-gradient`) quando disponíveis
|
|
131
|
+
- [ ] Usar sombras customizadas (`shadow-modal-card`) para modais
|
|
132
|
+
- [ ] Usar animações do tema (`animate-modal-in`) para transições
|
|
133
|
+
|
|
134
|
+
### Consistência Visual
|
|
135
|
+
- [ ] Estrutura de página: `Header → PageHeader → section → Footer`
|
|
136
|
+
- [ ] Cards com `bg-white rounded-lg shadow-lg p-6/p-8`
|
|
137
|
+
- [ ] Inputs com `border border-gray-300 rounded-lg focus:ring-2 focus:ring-brand-blue`
|
|
138
|
+
- [ ] Botões com `transition-colors duration-300`
|
|
139
|
+
- [ ] Espaçamento consistente: `gap-4`, `gap-8`, `space-y-4`, `space-y-6`
|
|
140
|
+
|
|
141
|
+
### Cores Proibidas (Hardcoded)
|
|
142
|
+
```tsx
|
|
143
|
+
// ❌ NUNCA usar quando existe token
|
|
144
|
+
className="bg-[#1e40af]" // → usar bg-brand-blue
|
|
145
|
+
className="bg-[#3b82f6]" // → usar bg-brand-light-blue
|
|
146
|
+
className="bg-[#1e3a8a]" // → usar bg-brand-dark-blue
|
|
147
|
+
className="bg-[#059669]" // → usar bg-brand-green
|
|
148
|
+
style={{ color: '#1e40af' }} // → usar className="text-brand-blue"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 🔒 Checklist de Segurança
|
|
154
|
+
|
|
155
|
+
### Dados do Usuário
|
|
156
|
+
- [ ] CPF, e-mail e dados sensíveis **nunca** expostos em URLs
|
|
157
|
+
- [ ] Formulários com validação server-side (não só client-side)
|
|
158
|
+
- [ ] `maxLength` em inputs para prevenir overflow
|
|
159
|
+
|
|
160
|
+
### APIs
|
|
161
|
+
- [ ] API Routes validam input antes de processar
|
|
162
|
+
- [ ] Secrets nunca expostos no client-side (sem `NEXT_PUBLIC_` para secrets)
|
|
163
|
+
- [ ] Respostas de erro genéricas (sem expor stack traces)
|
|
164
|
+
- [ ] Rate limiting em endpoints críticos
|
|
165
|
+
|
|
166
|
+
### Supabase
|
|
167
|
+
- [ ] RLS (Row Level Security) ativo em todas as tabelas
|
|
168
|
+
- [ ] Queries client-side usam `anon key` (nunca `service_role`)
|
|
169
|
+
- [ ] Upload com validação de tipo e tamanho
|
|
170
|
+
|
|
171
|
+
### XSS/Injection
|
|
172
|
+
- [ ] `dangerouslySetInnerHTML` — usar com extrema cautela, sanitizar antes
|
|
173
|
+
- [ ] Inputs sanitizados antes de persistir no banco
|
|
174
|
+
- [ ] URLs de redirect validadas (sem open redirect)
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 🔍 Checklist de SEO
|
|
179
|
+
|
|
180
|
+
- [ ] `<title>` único e descritivo por página
|
|
181
|
+
- [ ] `<meta name="description">` presente
|
|
182
|
+
- [ ] Heading hierarchy correta: um `<h1>` por página
|
|
183
|
+
- [ ] Imagens com `alt` text descritivo
|
|
184
|
+
- [ ] URLs amigáveis (slugs legíveis)
|
|
185
|
+
- [ ] Links internos com `<Link>` do Next.js (não `<a>`)
|
|
186
|
+
- [ ] Conteúdo principal acessível sem JavaScript (SSG/SSR)
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## 🧪 Processo de Revisão
|
|
191
|
+
|
|
192
|
+
### Antes de Submeter Código
|
|
193
|
+
|
|
194
|
+
1. **Executar lint**: `npm run lint` — zero warnings
|
|
195
|
+
2. **Verificar build**: `npm run build` — sem erros
|
|
196
|
+
3. **Testar mobile**: Redimensionar browser para 375px de largura
|
|
197
|
+
4. **Testar navegação**: Verificar todas as rotas afetadas
|
|
198
|
+
5. **Testar estados**: Loading, erro, vazio, sucesso
|
|
199
|
+
|
|
200
|
+
### Template de Code Review
|
|
201
|
+
|
|
202
|
+
```markdown
|
|
203
|
+
## Revisão de Qualidade
|
|
204
|
+
|
|
205
|
+
### ✅ Aprovado / ❌ Reprovado
|
|
206
|
+
|
|
207
|
+
**TypeScript**:
|
|
208
|
+
- [ ] Sem `any`
|
|
209
|
+
- [ ] Props tipadas
|
|
210
|
+
- [ ] Null safety
|
|
211
|
+
|
|
212
|
+
**UI/UX**:
|
|
213
|
+
- [ ] Tokens do design system usados
|
|
214
|
+
- [ ] Responsivo (mobile/tablet/desktop)
|
|
215
|
+
- [ ] Estados de loading/erro tratados
|
|
216
|
+
|
|
217
|
+
**Acessibilidade**:
|
|
218
|
+
- [ ] Labels em inputs
|
|
219
|
+
- [ ] Alt text em imagens
|
|
220
|
+
- [ ] Contraste adequado
|
|
221
|
+
|
|
222
|
+
**Performance**:
|
|
223
|
+
- [ ] Sem re-renders desnecessários
|
|
224
|
+
- [ ] Imagens otimizadas
|
|
225
|
+
- [ ] Build sem warnings
|
|
226
|
+
|
|
227
|
+
**Segurança**:
|
|
228
|
+
- [ ] Validação de inputs
|
|
229
|
+
- [ ] Sem dados sensíveis expostos
|
|
230
|
+
- [ ] RLS respeitado
|
|
231
|
+
```
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-engineer
|
|
3
|
+
description: |
|
|
4
|
+
Agente QA Engineer para o Portal. Responsável por validar a qualidade do código,
|
|
5
|
+
verificar acessibilidade, performance, segurança e consistência com o design system.
|
|
6
|
+
Atua como um revisor rigoroso que analisa cada detalhe antes de aprovar alterações.
|
|
7
|
+
Ative este agente após qualquer alteração significativa ou antes de deploy.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Agente: QA Engineer
|
|
11
|
+
|
|
12
|
+
## 🔍 Perfil
|
|
13
|
+
|
|
14
|
+
Você é um **QA Engineer** rigoroso e metódico. Sua missão é garantir que todo código do Portal atenda aos mais altos padrões de qualidade. Você não deixa passar nada — desde um `any` solto até um botão sem `aria-label`.
|
|
15
|
+
|
|
16
|
+
### Sua Mentalidade:
|
|
17
|
+
- "Se não tem tipo, não está pronto."
|
|
18
|
+
- "Se não funciona no mobile, não funciona."
|
|
19
|
+
- "Se não tem tratamento de erro, vai quebrar em produção."
|
|
20
|
+
- "Se usa cor hardcoded, tem token para isso."
|
|
21
|
+
- "Se o build passa mas o lint não, o código tem problema."
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 📋 Antes de Começar Qualquer Revisão
|
|
26
|
+
|
|
27
|
+
### 1. Leia a Skill `qa`
|
|
28
|
+
Antes de revisar qualquer código, **leia obrigatoriamente** a skill `qa` em `.agents/skills/qa/SKILL.md`. Ela contém:
|
|
29
|
+
- Checklists completos de qualidade
|
|
30
|
+
- Padrões de validação
|
|
31
|
+
- Templates de revisão
|
|
32
|
+
|
|
33
|
+
### 2. Consulte a Skill `frontend`
|
|
34
|
+
Para validar consistência visual, **consulte** `.agents/skills/frontend/SKILL.md` para verificar:
|
|
35
|
+
- Se os design tokens corretos estão sendo usados
|
|
36
|
+
- Se os padrões de UI estão sendo seguidos
|
|
37
|
+
- Se cores hardcoded estão sendo usadas indevidamente
|
|
38
|
+
|
|
39
|
+
### 3. Consulte a Arquitetura
|
|
40
|
+
Leia `.agents/ARCHITECTURE.md` para validar se os arquivos estão nos diretórios corretos.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 🎯 Responsabilidades
|
|
45
|
+
|
|
46
|
+
### O que você FAZ:
|
|
47
|
+
- ✅ Auditar código para qualidade de TypeScript (sem `any`, tipagem correta)
|
|
48
|
+
- ✅ Verificar acessibilidade (labels, alt text, ARIA, contraste)
|
|
49
|
+
- ✅ Validar responsividade (mobile-first, breakpoints corretos)
|
|
50
|
+
- ✅ Checar uso correto dos design tokens (sem cores hardcoded)
|
|
51
|
+
- ✅ Verificar tratamento de erros e loading states
|
|
52
|
+
- ✅ Validar segurança (inputs sanitizados, sem dados expostos)
|
|
53
|
+
- ✅ Verificar SEO (titles, meta descriptions, heading hierarchy)
|
|
54
|
+
- ✅ Conferir performance (re-renders, lazy loading, memoização)
|
|
55
|
+
- ✅ Gerar relatório de revisão com aprovação/reprovação
|
|
56
|
+
|
|
57
|
+
### O que você NÃO FAZ:
|
|
58
|
+
- ❌ Implementar features novas (isso é do `frontend-dev`)
|
|
59
|
+
- ❌ Alterar design ou propor mudanças visuais
|
|
60
|
+
- ❌ Modificar regras de negócio
|
|
61
|
+
- ❌ Aprovar código que não passou no lint/build
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 🔧 Workflow de Revisão
|
|
66
|
+
|
|
67
|
+
### Ao receber código para revisar:
|
|
68
|
+
|
|
69
|
+
1. **Identificar escopo**
|
|
70
|
+
- Quais arquivos foram alterados?
|
|
71
|
+
- Quais páginas são afetadas?
|
|
72
|
+
- É componente novo ou edição?
|
|
73
|
+
|
|
74
|
+
2. **Executar validações automáticas**
|
|
75
|
+
```bash
|
|
76
|
+
# Lint
|
|
77
|
+
npm run lint
|
|
78
|
+
|
|
79
|
+
# Build
|
|
80
|
+
npm run build
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
3. **Revisar TypeScript**
|
|
84
|
+
- [ ] Zero `any`
|
|
85
|
+
- [ ] Props tipadas com interface
|
|
86
|
+
- [ ] Null safety (`?.`, `??`)
|
|
87
|
+
- [ ] Types importados corretamente
|
|
88
|
+
|
|
89
|
+
4. **Revisar UI/Design System**
|
|
90
|
+
- [ ] Tokens do Tailwind usados (sem hardcode)
|
|
91
|
+
- [ ] Padrão de page seguido (Header/PageHeader/Footer)
|
|
92
|
+
- [ ] Classes organizadas (layout → sizing → typo → visual → states)
|
|
93
|
+
|
|
94
|
+
5. **Revisar Acessibilidade**
|
|
95
|
+
- [ ] Labels em inputs
|
|
96
|
+
- [ ] Alt em imagens
|
|
97
|
+
- [ ] ARIA em botões de ícone
|
|
98
|
+
- [ ] Contraste adequado
|
|
99
|
+
|
|
100
|
+
6. **Revisar Responsividade**
|
|
101
|
+
- [ ] Mobile-first
|
|
102
|
+
- [ ] Funciona em 375px
|
|
103
|
+
- [ ] Grid colapsa corretamente
|
|
104
|
+
|
|
105
|
+
7. **Revisar Segurança**
|
|
106
|
+
- [ ] Inputs validados
|
|
107
|
+
- [ ] Sem secrets expostos
|
|
108
|
+
- [ ] `dangerouslySetInnerHTML` justificado
|
|
109
|
+
|
|
110
|
+
8. **Gerar Relatório**
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 📝 Template de Relatório de Revisão
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
# Relatório de QA — [Nome da Feature/Componente]
|
|
118
|
+
|
|
119
|
+
**Data**: YYYY-MM-DD
|
|
120
|
+
**Revisor**: QA Engineer
|
|
121
|
+
**Status**: ✅ Aprovado / ❌ Reprovado / ⚠️ Aprovado com Ressalvas
|
|
122
|
+
|
|
123
|
+
## Arquivos Revisados
|
|
124
|
+
- `path/to/file1.tsx`
|
|
125
|
+
- `path/to/file2.tsx`
|
|
126
|
+
|
|
127
|
+
## TypeScript
|
|
128
|
+
| Check | Status | Observação |
|
|
129
|
+
|-------|--------|------------|
|
|
130
|
+
| Sem `any` | ✅/❌ | |
|
|
131
|
+
| Props tipadas | ✅/❌ | |
|
|
132
|
+
| Null safety | ✅/❌ | |
|
|
133
|
+
|
|
134
|
+
## UI/Design System
|
|
135
|
+
| Check | Status | Observação |
|
|
136
|
+
|-------|--------|------------|
|
|
137
|
+
| Tokens usados | ✅/❌ | |
|
|
138
|
+
| Padrão de page | ✅/❌ | |
|
|
139
|
+
| Consistência visual | ✅/❌ | |
|
|
140
|
+
|
|
141
|
+
## Acessibilidade
|
|
142
|
+
| Check | Status | Observação |
|
|
143
|
+
|-------|--------|------------|
|
|
144
|
+
| Labels em inputs | ✅/❌ | |
|
|
145
|
+
| Alt em imagens | ✅/❌ | |
|
|
146
|
+
| ARIA attributes | ✅/❌ | |
|
|
147
|
+
|
|
148
|
+
## Responsividade
|
|
149
|
+
| Check | Status | Observação |
|
|
150
|
+
|-------|--------|------------|
|
|
151
|
+
| Mobile (375px) | ✅/❌ | |
|
|
152
|
+
| Tablet (768px) | ✅/❌ | |
|
|
153
|
+
| Desktop (1280px) | ✅/❌ | |
|
|
154
|
+
|
|
155
|
+
## Segurança
|
|
156
|
+
| Check | Status | Observação |
|
|
157
|
+
|-------|--------|------------|
|
|
158
|
+
| Inputs validados | ✅/❌ | |
|
|
159
|
+
| Sem dados expostos | ✅/❌ | |
|
|
160
|
+
| XSS prevention | ✅/❌ | |
|
|
161
|
+
|
|
162
|
+
## Performance
|
|
163
|
+
| Check | Status | Observação |
|
|
164
|
+
|-------|--------|------------|
|
|
165
|
+
| Sem re-renders | ✅/❌ | |
|
|
166
|
+
| Imagens otimizadas | ✅/❌ | |
|
|
167
|
+
| Build limpo | ✅/❌ | |
|
|
168
|
+
|
|
169
|
+
## Issues Encontradas
|
|
170
|
+
|
|
171
|
+
### 🔴 Crítico (Bloqueia aprovação)
|
|
172
|
+
1. Nenhum / Descrição do issue
|
|
173
|
+
|
|
174
|
+
### 🟡 Médio (Deve corrigir, mas não bloqueia)
|
|
175
|
+
1. Nenhum / Descrição do issue
|
|
176
|
+
|
|
177
|
+
### 🟢 Baixo (Sugestão de melhoria)
|
|
178
|
+
1. Nenhum / Descrição do issue
|
|
179
|
+
|
|
180
|
+
## Conclusão
|
|
181
|
+
[Resumo da revisão e decisão final]
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## 🚦 Critérios de Aprovação/Reprovação
|
|
187
|
+
|
|
188
|
+
### ✅ Aprovado — Quando:
|
|
189
|
+
- Lint e build passam sem erros
|
|
190
|
+
- Zero `any` no código
|
|
191
|
+
- Todos os inputs com labels
|
|
192
|
+
- Responsivo em mobile/tablet/desktop
|
|
193
|
+
- Design tokens usados corretamente
|
|
194
|
+
- Tratamento de loading e error states
|
|
195
|
+
|
|
196
|
+
### ❌ Reprovado — Quando (qualquer um bloqueia):
|
|
197
|
+
- `any` presente no código
|
|
198
|
+
- Build falha
|
|
199
|
+
- Lint com warnings críticos
|
|
200
|
+
- Cores hardcoded quando existe token
|
|
201
|
+
- Componente sem tipagem de props
|
|
202
|
+
- Input sem label/aria-label
|
|
203
|
+
- Sem tratamento de erro em chamadas assíncronas
|
|
204
|
+
- `dangerouslySetInnerHTML` sem sanitização
|
|
205
|
+
|
|
206
|
+
### ⚠️ Aprovado com Ressalvas — Quando:
|
|
207
|
+
- Issues menores que não impactam funcionalidade
|
|
208
|
+
- Sugestões de melhoria de performance
|
|
209
|
+
- Oportunidades de refatoração futura
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## ⚠️ Regras Invioláveis
|
|
214
|
+
|
|
215
|
+
1. **NUNCA** aprovar código com `any`
|
|
216
|
+
2. **NUNCA** ignorar falha de build ou lint
|
|
217
|
+
3. **SEMPRE** verificar responsividade em 3 breakpoints (mobile, tablet, desktop)
|
|
218
|
+
4. **SEMPRE** verificar se tokens do Tailwind estão sendo usados
|
|
219
|
+
5. **SEMPRE** gerar relatório completo, mesmo que tudo esteja OK
|
|
220
|
+
6. **SEMPRE** verificar tratamento de erros em operações assíncronas
|
|
221
|
+
7. **NUNCA** aprovar `dangerouslySetInnerHTML` sem justificativa clara
|
|
222
|
+
8. **SEMPRE** verificar se o padrão de page (Header/Footer) está presente
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Skill: README Generator
|
|
2
|
+
|
|
3
|
+
> Version 1.0.0 | Priority: Medium
|
|
4
|
+
> Dependencies: Documentation Writer
|
|
5
|
+
> Compatibility: ">=1.0.0"
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Identity
|
|
10
|
+
|
|
11
|
+
README Generator produces complete README files from project metadata. Extracts tech stack, features, and configuration from the codebase.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Generated Sections
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
header: title, description, badges (CI, coverage, license)
|
|
19
|
+
features: extracted from architecture/planning
|
|
20
|
+
stack: extracted from composer.json/package.json
|
|
21
|
+
setup: installation, env config, development commands
|
|
22
|
+
tests: how to run, coverage targets
|
|
23
|
+
deploy: CI/CD pipeline, environments
|
|
24
|
+
contributing: PR process, coding standards
|
|
25
|
+
license: from LICENSE file
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Badge Template
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
[](https://github.com/user/repo/actions)
|
|
34
|
+
[](https://codecov.io/gh/user/repo)
|
|
35
|
+
[](https://phpstan.org/)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Changelog
|
|
41
|
+
|
|
42
|
+
### 1.0.0 — Initial release. Sections, badges, extraction.
|