skills/05-qa-testing/SKILL.md
Skill do QA Engineer para testes unitarios, integracao e E2E. Use quando precisar escrever testes, validar regressao, revisar cobertura, configurar estrategia de QA, ou evidenciar qualidade antes de release. Trigger em: "teste", "test", "QA", "Playwright", "Vitest", "Jest", "E2E", "coverage", "mock", "fixture", "regressao", "teste de integracao", "testing library".
npx skillsauth add felvieira/claude-skills-fv qa-testingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
⚠ Esta é a SKILL 05 (playbook de QA). Não confundir com o subagent
dev-team-kit-fv:test-engineer.
- Carregar este playbook:
Skill({ skill: "dev-team-kit-fv:05-qa-testing" })- Despachar subagent isolado (turno novo):
Agent({ subagent_type: "dev-team-kit-fv:test-engineer", ... })- Diferença:
policies/skills-vs-agents.md
O QA garante que o comportamento entregue continua correto antes de avancar no pipeline.
Inspiração: Birgitta Böckeler — "Mutation and structural testing are computational feedback sensors that have been underused in the past, but are now having a resurgence." Ver
docs/inspiration/harness-engineering.md.
Coverage normal mente: "80% das linhas têm pelo menos 1 teste passando por elas". Mas isso não diz se os testes detectam bugs. Testes ruins (asserções fracas, sem assertions) inflam coverage sem aumentar confiança.
Mutation testing detecta isso: ferramenta gera "mutações" no código (troca > por >=, deleta linha, inverte boolean) e roda os testes. Se os testes não falham após mutação, eles são fracos.
| Situação | Recomendação | |---|---| | Coverage > 60% mas bugs ainda escapam | ✅ Forte — sinal claro de testes fracos | | Lógica complexa de negócio (cálculos, regras) | ✅ Forte — todo edge case importa | | Greenfield, time aprendendo TDD | ✅ Médio — ensina a escrever assertions melhores | | Prototype/spike throwaway | ❌ Skip — overhead > ganho | | Coverage < 40% | ❌ Skip antes — coverage primeiro, mutation depois | | CI lento (>10min) | 🟡 Cuidado — mutation roda em paralelo a coverage |
| Linguagem | Tool | Notas |
|---|---|---|
| JS/TS | Stryker Mutator | @stryker-mutator/core — config via stryker.config.json |
| Python | mutmut | pip install mutmut, simples |
| Python | Cosmic Ray | Mais sofisticado, configurável |
| Java | PIT (Pitest) | Padrão de mercado JVM |
| .NET | Stryker.NET | mesma família do JS |
| Rust | cargo-mutants | Maduro, integra com cargo |
| Go | go-mutesting | Menos popular mas funciona |
| Ruby | mutant | Tipo gold standard pra Ruby |
1. Tem coverage instalado? Se não, comece por isso (skill 05 normal flow)
2. Coverage > 60%? Se não, focar em coverage antes
3. Sim → adicione mutation tool ao package.json/equivalent
4. Roda primeiro full: `npx stryker run` (vai demorar)
5. Analisa "mutation score" — % de mutações detectadas
- >85%: excelente
- 70-85%: aceitável
- <70%: testes fracos — refactor priority
6. Identifica "survived mutants" (mutações não detectadas) — bug-equivalentes
7. Pra cada survived, escreva teste que mata o mutante
8. Plug no CI:
- Diário (não cada commit — caro)
- Threshold mínimo (não regression)
Esta skill (05) deve automaticamente sugerir mutation testing quando detectar:
package.json com coverage > 60%pyproject.toml com pytest + coverageSugestão padrão:
"Coverage está em X% — bom suficiente pra adicionar mutation testing.
Roda uma vez:
<comando específico>
Mutation score < 70% indica testes fracos. Veja policies/quality-gates.md."
Skill 37 (TDD) usa approved fixtures para behaviour harness gap. Skill 05 (esta) usa mutation testing para detectar testes fracos em código existente.
Complementares: TDD garante que testes sejam escritos certo desde o início. Mutation garante que testes continuem detectando bugs ao longo do tempo.
Esta skill segue GLOBAL.md, policies/execution.md, policies/handoffs.md, policies/quality-gates.md, policies/token-efficiency.md, policies/tool-safety.md, policies/evals.md e policies/verification-before-completion.md (gate obrigatório — toda claim "tests pass" precisa output verificável).
Para setups completos e exemplos longos, consultar docs/skill-guides/qa-testing.md apenas quando necessario.
Quando a validacao exigir browser real com navegacao e screenshots, esta skill pode configurar ou reutilizar Playwright MCP localmente.
Usar Playwright MCP quando a tarefa exigir:
Isso complementa os testes e2e formais e ajuda especialmente em verificacoes visuais ou exploratorias.
Windows mantém lock em arquivos SQLite WAL/SHM por alguns ms após db.close(). Cleanup síncrono em afterAll falha com EBUSY. Use retry diferido:
afterAll(() => {
db.close();
setTimeout(() => {
const tryUnlink = (p) => { try { if (fs.existsSync(p)) fs.unlinkSync(p); } catch {} };
[TEST_DB, TEST_DB + '-wal', TEST_DB + '-shm'].forEach(tryUnlink);
}, 200);
});
Descoberto em eval-bench/Teste 2 (2026-05-23). Pattern não é Windows-only — também previne problema em CI Linux com discos lentos.
Para output estruturado e persona detalhada com tipos de cenário, coverage analysis e template de relatório, ver personas/test-engineer.md.
Entregar:
Codigo deve priorizar clareza. Comentarios so fazem sentido quando explicam contexto nao obvio, restricoes externas ou workarounds temporarios.
Se você reconhece um desses pensamentos, PARE e siga o processo. Ver policies/anti-rationalization.md.
| Racionalização | Realidade | |---|---| | "Vou adicionar testes depois" | Código sem teste é código que não funciona até prova em contrário | | "É refactor, não muda comportamento" | Refactor sem teste é aposta. Testes provam que comportamento não mudou | | "Coverage já está boa o suficiente" | Coverage mede linhas executadas, não cenários cobertos. Verifique edge cases | | "Esse código é trivial demais pra testar" | Código trivial que quebra em produção causa vergonha desproporcional | | "Mock resolve, não preciso de teste de integração" | Mock prova que seu mock funciona. Integração prova que o sistema funciona |
development
Skill compositora que pega texto/assunto e gera post de blog HTML completo no repo {blog_repo_path} ({github_user_repo_url}), com imagens (via skill 17 fal.ai ou skill 42 Playwright screenshot), commit+push automático, retorna URL pública via GitHub Pages. Trigger em: "post no blog", "publicar post", "escrever post", "blog post", "publish blog", "gera post", "criar post", "novo post no meu blog".
tools
Audita o peso de contexto carregado na sessão — CLAUDE.md, agents, MCP descriptions, rules ativas, skills invocadas e histórico acumulado. Estima tokens por componente, reporta headroom disponível e emite alertas de overflow. Distinto do cost-tracker (skill 30) que rastreia tokens gastos em completions runtime. Trigger em: "contexto inchado", "context overflow", "quanto contexto estou usando", "peso do contexto", "context budget", "tokens carregados", "sessao lenta", "respostas degradadas", "headroom de contexto", "custo fixo de contexto", "overhead de rules", "overhead dos agents", "impacto do MCP no contexto", "espaco no context window", "quanto cabe no context window"
development
Coleta e organiza informacao tecnica multi-fonte antes de escrever docs, PRDs, ADRs ou artigos. Busca em: docs oficiais, GitHub (repos + issues), Stack Overflow, papers e blogs de referencia. Ranqueia fontes por autoridade (oficial 40% + recencia 30% + profundidade 20% + comunidade 10%). Output: memory/research/<slug>.md pronto para alimentar skill 10 (documenter), skill 01 (po-feature-spec), skill 26 (prompt-engineer) ou skill 41 (blog-publisher). Trigger em: "pesquisa tecnica", "levanta informacao", "coleta docs", "busca referencias", "preciso de fontes", "research antes de escrever", "levanta o que existe sobre", "benchmark de solucoes", "o que existe sobre X", "quero entender o estado da arte", "compara abordagens", "levanta referencias", "faz um research de", "coleta fontes sobre", "pesquisa sobre", "quero saber o que existe de", "monta um dossie tecnico", "background tecnico", "due diligence tecnica", "levantamento de alternativas".
development
Extrai e codifica os padroes de coding do projeto existente (naming, estrutura de arquivos, error handling, testing style, import style, API design, async patterns) e usa esses padroes como restricao sobre novo codigo. Garante que o agente code "igual ao resto do projeto" em vez de inventar convencoes proprias. Produce um "code style map" salvo em memory/patterns.md que todas as skills de geracao de codigo devem consultar. Trigger em: "segue o padrao do projeto", "coda igual ao resto", "nao reinventa padrao", "detecta padroes do codebase", "code style do projeto", "padrao do projeto", "convencao do projeto", "coda consistente", "mesma convencao", "sem reinventar roda", "padrao de codigo", "patterns do codebase", "pattern enforcement", "conformidade de padrao", "convencoes de naming", "padrao de tratamento de erro", "mesma estrutura do projeto", "detecta as convencoes", "extrai padroes de coding", "como o projeto estrutura".