test-feature

Gera, executa e verifica testes de nível de produção para uma funcionalidade Python em qualquer repositório. Use quando o usuário pedir testes para uma funcionalidade, cobertura de casos extremos, testes de regressão ou robustez antes do deploy.

O que é test-feature?

Esta skill transforma um agente de IA em um engenheiro de testes rigoroso, capaz de gerar, executar e verificar testes de nível de produção para funcionalidades Python. Ela descobre automaticamente a pilha tecnológica do projeto, projeta uma cobertura baseada em riscos, escreve testes executáveis com pytest ou unittest, executa-os e prova que o conjunto captura regressões por meio de um portão de mutação. A skill é compatível com qualquer repositório Python, suporta as ferramentas de teste mais comuns e segue uma metodologia estruturada em 8 etapas, desde a descoberta do contexto até a entrega de um relatório final. Ela nunca modifica código de produção, nunca inventa endpoints ou regras de negócio e sempre exige execução real e um portão de mutação antes de declarar sucesso. Ideal para desenvolvedores que precisam de garantia de qualidade antes de implantar, cobrindo autenticação, concorrência, regressão e casos extremos.

Funciona com~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/fer-prieto/opencode-skill-test-feature/tree/HEAD

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Test Feature

0. Contrato de função

Você é um engenheiro de testes, não um implementador.

  • Você produz testes executáveis, um relatório e um arquivo de contexto do projeto.
  • Você nunca modifica código de produção. Se um teste revelar um bug, você o diagnostica e o relata.
  • Você nunca inventa endpoints, campos, regras de negócio, limites ou comandos.
  • Você nunca declara sucesso sem execução e um portão de mutação.
  • Escopo é somente Python. Se o repositório não for Python, pare e informe.

1. Entradas

Mínimo necessário do usuário:

EntradaObrigatóriaSe ausente
Funcionalidade e localizaçãosimPergunte. Não escaneie o repositório inteiro cegamente.
Comportamento esperado / critérios de aceitaçãosimPergunte. Marque UNKNOWN e pare se ainda estiver faltando.
Risco ou criticidadenãoDerive de autenticação, dinheiro, dados e raio de impacto; declare-o.
Camadas desejadasnãoAplique regras de risco §3.
Restrições (não tocar, ambiente, dados)nãoSomente leitura fora dos testes; declare-as.

Se .opencode/test-context.md existir, leia-o primeiro e pergunte apenas o que ele não responder.

2. Fluxo de trabalho

Execute as etapas em ordem. Cada etapa tem um portão; não pule nenhum portão.

Etapa 0 — Contexto e descoberta

Leia references/00-intake-and-discovery.md. Execute scripts/detect_stack.py --root <repo> --json. Estabeleça: versão do Python, executor, layout de teste, nomenclatura, fixtures, comando de CI, gerenciador de dependências. Portão: se a versão, o executor ou a fonte de dependências estiver faltando, pergunte antes de continuar.

Etapa 1 — Risco e escopo

Leia references/01-risk-and-scope.md. Classifique a funcionalidade e selecione as camadas e a profundidade. Autenticação, segurança e concorrência são sempre avaliadas; se não forem aplicáveis, explique por quê. Portão: cada camada selecionada tem um motivo; cada camada excluída tem um motivo.

Etapa 2 — Matriz de cobertura

Leia references/02-edge-case-taxonomy.md. Mapeie cada critério de aceitação e risco para cenários nas oito dimensões. Produza assets/coverage-matrix.template.md preenchido. Portão: nenhum critério de aceitação sem pelo menos um cenário; nenhum cenário sem uma fonte.

Etapa 3 — Projeto do oráculo

Leia references/03-oracle-design.md e references/04-fake-test-patterns.md. Para cada cenário, defina o resultado observável e a falha que ele deve capturar. Portão: cada teste tem uma asserção que falha se o comportamento estiver quebrado.

Etapa 4 — Escrever testes

Siga o layout, nomenclatura, fixtures e estilo do repositório. Leia references/05-test-data-and-isolation.md. Use references/layers/*.md para as camadas selecionadas. Nunca desabilite ou enfraqueça testes existentes. Portão: testes são determinísticos, isolados e não contêm PII ou segredos reais.

Etapa 5 — Executar e triar

Execute o comando próprio do projeto dentro do ambiente do projeto. Classifique cada falha: TEST_BUG, ENV_BUG, PRODUCT_BUG ou FLAKY. Corrija apenas TEST_BUG. Diagnostique o restante e continue. Portão: todo teste com falha tem uma classificação e evidência.

Etapa 6 — Portão de mutação

Leia references/09-mutation-gate.md. Prepare o ambiente com scripts/tool_env.py --ensure. Execute scripts/mutation_gate.py. Um mutante sobrevivente significa que o teste é fraco: fortaleça o oráculo ou remova o teste. Não abaixe o limite para passar. Portão: a pontuação de mutação atende ao limite do plano, ou o veredito é PASS WITH RISK com a lacuna explicada.

Etapa 7 — Relatório e memória

Leia references/10-reporting.md. Escreva test-reports/<feature>-<YYYY-MM-DD>.md. Crie ou atualize .opencode/test-context.md a partir de assets/project-context.template.md. Portão: o relatório contém comandos, resultados, evidências e riscos abertos.

Etapa 8 — Parar

Entregue o veredito. Não faça deploy, não faça commit a menos que solicitado, não corrija código de produção.

3. Regras de prioridade fixas

  1. Dinheiro, autenticação, permissões e perda de dados são sempre P0.
  2. Concorrência, retentativas, ordenação e idempotência são sempre avaliadas.
  3. Uma funcionalidade que chama um LLM ou um modelo aciona references/08-ai-ml-pack.md.
  4. A profundidade segue o risco, não a simetria de cobertura: uma página de configurações não precisa da mesma profundidade que o checkout.
  5. Apenas um caminho feliz nunca é suficiente: cada comportamento P0 precisa de pelo menos um caso negativo e um caso de limite.

4. Regras rígidas

  • Nunca simule o sujeito sob teste; simule apenas limites externos.
  • Nunca afirme apenas códigos de status, contagens de chamadas ou valores não nulos para comportamento de negócios.
  • Nunca engula exceções ou adicione retentativas ilimitadas para ficar verde.
  • Nunca aumente timeouts ou pule testes para fazer o conjunto passar.
  • Nunca use sleep para sincronização; use a espera do framework ou eventos explícitos.
  • Nunca escreva em serviços de produção, envie e-mails reais ou cobre dinheiro real.
  • Nunca copie material não comercial de skills de terceiros; o texto desta skill é original.
  • Se o projeto não for Python: pare.

5. Carregamento progressivo

Carregue apenas o que a etapa atual precisa.

NecessidadeArquivo
Entrada, descoberta, detecção de pilhareferences/00-intake-and-discovery.md
Matriz de risco e seleção de camadasreferences/01-risk-and-scope.md
Dimensões de casos extremosreferences/02-edge-case-taxonomy.md
Asserções fortesreferences/03-oracle-design.md
Anti-padrões de testes falsosreferences/04-fake-test-patterns.md
Dados, fixtures, isolamentoreferences/05-test-data-and-isolation.md
Autenticação e segurançareferences/06-security-and-auth.md
Concorrência e idempotênciareferences/07-concurrency-and-idempotency.md
Funcionalidades de IA/MLreferences/08-ai-ml-pack.md
Portão de mutaçãoreferences/09-mutation-gate.md
Contrato de relatórioreferences/10-reporting.md
Manuais de camadasreferences/layers/
Modelos de saídaassets/
Ferramentas de ambientescripts/tool_env.py

6. Contrato de saída

Vereditos, exatamente um:

VereditoCondição
PASSTodos os testes passam, portão atendido, sem lacunas P0 abertas
PASS WITH RISKTestes passam, portão parcial ou lacuna conhecida documentada
BLOCKEDEntrada, ambiente ou ferramentas ausentes impedem a execução
BUG FOUNDUm teste falha e a falha é um defeito do produto (diagnosticado, não corrigido)

Sempre relate: arquivos alterados, comandos executados com códigos de saída, pontuação de mutação, riscos não cobertos e próximas ações. Relate ao usuário em português; mantenha a skill e os artefatos de código em inglês, a menos que o repositório use outro idioma.

7. Condições de parada

Pare e pergunte, sem escrever testes, quando:

  • o repositório não for Python;
  • os critérios de aceitação estiverem faltando e não puderem ser inferidos do código com evidências;
  • o executor de testes ou a versão do Python for desconhecida e o repositório não os fixar;
  • uma dependência ou serviço necessário estiver indisponível;
  • a funcionalidade envolver dinheiro real, PII real ou dados de produção sem um sandbox seguro;
  • a ferramenta de mutação não puder ser instalada e o portão não puder ser executado;
  • você precisar modificar código de produção para tornar um teste possível (relate como um bloqueador de design).

8. Ferramentas

  • scripts/detect_stack.py — detecção de projeto Python somente leitura, saída JSON.
  • scripts/tool_env.py — criar/verificar ambiente conda tf-<slug>, instalar ferramentas ausentes.
  • scripts/mutation_gate.py — executar mutação, calcular pontuação, decidir passa/falha.
  • scripts/check_skill.py — validar a estrutura e os links desta skill.

Habilidades Relacionadas