Install
$ agentstack add skill-gianverdum-ai-dev-skillset-testing-coverage-quality ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Qualidade e Cobertura de Testes
Use esta skill junto da skill de TDD em qualquer mudança de software.
Regras
- Garanta ao menos 80% de cobertura automatizada para o módulo alterado ou para o projeto quando a ferramenta medir apenas cobertura global.
- Configure o comando de cobertura para falhar abaixo de 80% quando a stack oferecer suporte prático a limiar mínimo.
- Se a ferramenta de cobertura não existir, adicione-a como dependência de desenvolvimento do projeto pelo gerenciador da stack antes de considerar a medição indisponível.
- Para Python, use sempre
uv: adicionecoverage,pytest-covou ferramenta equivalente comuv add --dev, execute comuv rune registre a configuração empyproject.tomlquando aplicável. - Configure a cobertura para medir o pacote ou módulo de produção inteiro, não apenas os arquivos importados acidentalmente pelos testes.
- Não aumente cobertura com testes vazios, snapshots sem asserção relevante ou testes que só exercitam código sem validar comportamento.
- Priorize cobertura de regras de domínio, casos de uso, validações, cálculos, parsing, serialização e fluxos de erro.
- Teste e2e e obrigatorio quando o modulo (a) persiste estado externo — arquivo, banco, fila, cache, message broker, request HTTP de saida — OU (b) expoe entrypoint executavel — CLI, HTTP server, daemon, worker, cron job. Nesses casos, alem de unit e integration, inclua pelo menos um teste e2e do fluxo completo a partir do entrypoint real. Integration sozinho NAO substitui e2e: integration valida o adapter contra o recurso; e2e valida o fluxo cross-command/cross-request inteiro, incluindo parsing, wiring e estado final observavel.
- E2E em CLI: invoque a CLI compilada (ou
main()/runCli()chamada como subprocesso ou in-process) comargv, captureexit code,stdoutestderr, e VERIFIQUE o estado do recurso externo (arquivo, banco) depois de uma sequencia de comandos representativa. Exemplo:add "X"->list->done->list --done, verificando que o arquivo persistido contem a tarefa comstatus: "done". - E2E em HTTP server: suba o servidor (ou use
supertest), chame os endpoints na ordem do fluxo real (criar -> ler -> atualizar -> ler), verifique status e payload de resposta E o estado final do recurso externo. - E2E nao substitui unit/integration. Os tres niveis convivem: unit cobre regras puras com a maior densidade; integration cobre adapters contra recursos reais; e2e cobre o fluxo completo do ponto de entrada ate o estado final.
- E2E nao e so caminho feliz. Um unico e2e do happy path satisfaz o minimo absoluto, mas modulo com autorizacao, validacao cruzada ou multiplos comandos precisa de e2e tambem para os fluxos de erro criticos. No minimo: (1) sequencia feliz cross-command; (2) acesso negado por permissao (
permission_denied); (3) recurso inexistente (not_found); (4) validacao de entrada falhando no entrypoint. Cada e2e verifica exit code, stderr, e estado do recurso externo (nao mutado em caminhos de falha).
Exemplo: e2e suficiente para CLI com permissionamento
Para uma CLI com roles e persistencia, a suite e2e minima cobre quatro cenarios distintos:
// tests/e2e//cli.test.ts
it("admin bootstraps users, creates project, member adds and completes task", async () => {
// happy path cross-command: add admin -> add member -> create project ->
// member cria task -> member completa task -> admin lista
// verifica stdout e estado final do arquivo persistido
});
it("viewer cannot create task", async () => {
// permissao negada: exit 1, stderr "Permission denied.", arquivo NAO mutado
});
it("create task fails when project does not exist", async () => {
// recurso inexistente: exit 1, stderr com codigo project_not_found, arquivo NAO mutado
});
it("rejects invalid role on add-user", async () => {
// validacao de entrada no parser: exit 1, stderr "Invalid role."
});
E2E unico cobrindo so o happy path passa o minimo, mas deixa fluxos de seguranca/erro sem rede. Para modulo com autorizacao, considere a suite acima o piso.
- Cubra caminhos felizes e erros relevantes; não persiga 100% quando isso gerar teste frágil ou acoplado a implementação.
- Exclua artefatos gerados, caches, migrações mecânicas, arquivos de build e glue code trivial quando a ferramenta permitir.
- Mantenha artefatos de cobertura fora do versionamento via
.gitignore. No mínimo:.coverage,.coverage.*,coverage.xml,htmlcov/,coverage/,lcov.info. Se já estiverem versionados, remova do índice comgit rm --cached. - Não escreva percentuais de cobertura fixos em
README.mdnem em outra documentação versionada. Eles envelhecem sem aviso e passam a mentir sobre o estado atual. Documente apenas o comando que produz o relatório e o limiar mínimo configurado.
Fluxo
- Identifique a ferramenta de teste e cobertura usada pela stack.
- Se não houver ferramenta, configure a opção mais simples e idiomática para a linguagem do módulo e adicione as dependências de desenvolvimento necessárias ao manifesto do projeto.
- Escreva ou ajuste testes antes da implementação conforme TDD.
- Execute testes com cobertura ao final da mudança.
- Se a cobertura ficar abaixo de 80%, adicione testes úteis ou explique o bloqueio técnico.
- Documente o comando de teste/cobertura no
README.mdmais próximo quando criar ou alterar a configuração.
Python
- Use
uvcomo único gerenciador de ambiente e dependências. - Crie ou mantenha
pyproject.tomlpara declarar projeto, dependências, scripts e configuração de ferramentas. - Para testes com
unittest, useuv add --dev coveragee valide comuv run coverage run -m unittest discover -s testsseguido deuv run coverage report --fail-under=80. - Para testes com
pytest, useuv add --dev pytest pytest-cove valide comuv run pytest --cov --cov-fail-under=80. - Configure
[tool.coverage.run] source = ["src/"]para incluir o pacote de produção completo no relatório. - Exclua de cobertura apenas glue trivial, arquivos gerados ou entrypoints sem decisão própria; não exclua CLI, parsers, casos de uso ou regras de domínio.
- Testes de CLI em subprocesso podem validar empacotamento, mas adicione também teste direto da função de entrada para que a cobertura do adaptador conte no processo medido.
- Mantenha
uv.lockquando ele for gerado pela instalação. - Para outras linguagens, preserve o padrão local e consulte a rule da linguagem em
.agents/rulespara nomes e localização de testes antes de criar uma estrutura nova.
Layout
- Mantenha testes unitários próximos dos arquivos ou pacotes testados quando esse for um padrão aceito pela linguagem.
- Mantenha testes de integração, contrato, ponta a ponta e fixtures compartilhadas em
tests/no mesmo nível desrc/. - Preserve o padrão existente quando o projeto já tiver uma convenção consistente.
Revisao final
- Apos rodar testes e medir cobertura, execute a skill
quality-revisao-aderenciaantes de encerrar a tarefa. Ela checa arquitetura, tipagem do dominio, localizacao do parsing, codigos de erro estaveis, lint real, idioma do codigo e estrutura de testes; corrige desvios na hora.
Resposta Final
- Informe o comando de testes executado.
- Informe o percentual de cobertura obtido quando a ferramenta reportar esse número, apenas na resposta da conversa. Não persista esse número em arquivos versionados.
- Se não for possível medir cobertura, informe a razão concreta, incluindo a tentativa de configurar a ferramenta ou o bloqueio externo encontrado.
Checklist
- A suíte relevante foi executada.
- Se o modulo persiste estado externo ou expoe entrypoint executavel, existe ao menos um teste e2e do fluxo completo, e ele passa.
- Se o modulo tem autorizacao, validacao cruzada ou multiplos comandos, a suite e2e cobre tambem fluxos criticos de erro (permissao negada, recurso inexistente, validacao de entrada), nao apenas o caminho feliz.
- A cobertura medida ficou em pelo menos 80% ou o bloqueio foi explicado.
- O limiar de 80% foi configurado quando prático.
- A cobertura mede o pacote de produção inteiro, com exclusões justificadas.
- Dependências de cobertura foram adicionadas ao projeto quando estavam ausentes.
- Os testes adicionados validam comportamento observável.
- Artefatos de cobertura (
.coverage,coverage.xml,htmlcov/,lcov.info) estão no.gitignoree não versionados. - Nenhum percentual de cobertura fixo foi escrito em
README.mdou outro arquivo versionado. - O layout dos testes respeita unitários próximos do código e testes amplos em
tests/.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: gianverdum
- Source: gianverdum/ai-dev-skillset
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.