CommunityEscrita e Ediçãogithub.com

Disciplina de Desenvolvimento

Use ao corrigir um bug, regressão ou teste falho (incluindo bugs funcionais de UI); ao alterar algo que julga a correção (testes, validadores, detectores, limites, CI), fórmulas financeiras ou numéricas, migrações ou autenticação; quando um teste fica verde após uma edição, está instável ou você é tentado a editá-lo, ignorá-lo ou enfraquecê-lo; quando um teste contradiz a especificação; ao repetir uma tentativa malsucedida; ao delegar mudanças de código a um subagente ou aceitar seu relatório e números; ao implantar; quando um bloco de verificação falha.

O que é Disciplina de Desenvolvimento?

A skill 'Disciplina de Desenvolvimento' (dev-discipline) impõe um rigor sistemático no ciclo de desenvolvimento de software para evitar correções superficiais e garantir que as mudanças sejam comprovadamente corretas. Ela é usada ao corrigir bugs, regressões ou falhas em testes, ao alterar qualquer coisa que julgue a correção do sistema (como testes, validadores, limites de CI, fórmulas financeiras, migrações e autenticação), ou ao lidar com testes instáveis e contradições entre teste e especificação. A skill define um laço de 6 passos (medir, corrigir na raiz, provar o teste, criar uma barreira no CI, aceitar o resultado final e fechar com um oráculo independente), além de regras para proteger o oráculo, autonomia do desenvolvedor, relatório de evidências e bandeiras vermelhas para situações comuns de risco. É útil para qualquer plataforma que use agentes de IA (como Claude Code, Cursor ou Codex), pois fornece uma estrutura explícita e auditável que transforma intenções em mudanças verificáveis, evitando que o agente tome atalhos ou ignore verificações.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/volniy082-spec/dev-discipline/tree/HEAD

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

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

Documentação

O que Disciplina de Desenvolvimento faz?

"Feito" é dito por um sinal externo que você não ajustou. Uma regra escrita apenas nomeia uma classe de falha; uma verificação na barreira a impede. Quando uma classe se repete, adicione a verificação no mesmo commit. $DD = a pasta scripts/ ao lado deste arquivo (código de saída 0 SUCESSO, 1 FALHA, 2 NÃO_COMPROVADO).

Rigor por superfície. Ciclo completo para coisas que julgam (testes, validadores, limites, CI), dinheiro e fórmulas numéricas, migrações, autenticação, falhas silenciosas. Uma correção local de ~10 linhas com um literal de especificação: prove_fix.py, 2–3 mutantes escritos à mão da classe de defeito, uma execução em uma entrada que você não usou enquanto trabalhava. Prosa, aparência de UI, documentação, protótipos: execute os testes e um teste de fumaça. Sem testes ou executor: adicione um teste mínimo em seu próprio commit (configuração, não enfraquecimento).

Laço

  1. Meça antes de editar: um comando que você comparará antes e depois. Derive o escopo dos dados brutos, não de resumos ou memória. Liste a classe inteira: cada instância que compartilha a raiz. → references/debugging.md
  2. Corrija a raiz no caminho que o defeito percorreu. Uma guarda no topo não é uma correção. Regressão: git bisect run. Após três tentativas malsucedidas, mude de abordagem ou contexto. Nova entidade, fluxo de dinheiro/dados ou migração: uma nota de design de 5–10 linhas primeiro (debugging.md §10).
  3. Prove o teste: vermelho no pai por uma asserção (ImportError, erro de coleta, pular = NÃO_COMPROVADO), verde na correção, vermelho novamente com a alteração de código revertida: $DD/prove_fix.py. Uma nova verificação dispara em uma entrada ruim e fica quieta em uma entrada boa. Para dinheiro e números, o valor esperado é um literal de especificação (# oracle: <fonte>).
  4. Barreira: o teste é executado no CI no mesmo commit; pular, tempo limite e "0 testes" não são SUCESSO; listas de exclusão apenas diminuem; um laço sobre um glob ou registro afirma quantos itens encontrou. → gate-integrity.md
  5. Aceite na linha de resumo do executor da execução final na árvore exata, não no $? de um pipeline.
  6. Feche com uma verificação que o escritor não ajustou: outros dados, um teste de fumaça de produção somente leitura, um oráculo independente, com a expectativa escrita primeiro. Uma classe que ele encontrar vai para a barreira. → proof-and-oracles.md

O oráculo e sua proteção

  • Um oráculo não compartilha código com o que verifica. Golden e autoparidade provam consistência, não correção.
  • Um script de verificação é código sob teste: execute-o em uma entrada boa e uma ruim; imprima quantos itens examinou.
  • Testes, snapshots, valores esperados e CI mudam apenas por contrato: o briefing ou, trabalhando sozinho, uma solicitação de usuário que nomeia a mudança (nova especificação, ticket, valor) mais uma linha escrita antes de editar (quais testes mudam, de onde vem o novo valor). "Fazer passar" não é contrato: um teste que contradiz a especificação permanece como está e a resposta é SPEC_CONFLICT. Mudanças de valor vão em um commit test: separado. Pulados, asserções excluídas, cobertura reduzida precisam de uma razão declarada. Nunca ajuste código para atingir um número esperado. Julgue o diff final, não a ferramenta de edição: $DD/guard_diff.py (consultivo primeiro). Uma verificação que bloqueia trabalho legítimo é um defeito: relate BLOCKED, nunca ignore. → oracle-protection.md

Autonomia

Siga por padrão. Pergunte apenas sobre o irreversível (segurança, pagamentos, gravação de dados de produção, permissões) ou um conflito com o objetivo. Em uma bifurcação, escolha uma, registre por quê, os números de ambas as leituras e como desfazer, e continue. Bloqueado: termine tudo que é independente, depois termine com uma linha nomeando a ação e o comando necessários.

Relatório

  • Cada critério SUCESSO | FALHA | NÃO_COMPROVADO com comando, código de saída e linha de saída; mais não_verificado.
  • Veredito: CONCLUÍDO, BLOQUEADO(motivo), CONFLITO_DE_ESPECIFICAÇÃO(teste, fonte), IMPOSSÍVEL, NÃO_REPRODUZIDO. Uma saída honesta de não conclusão é um sucesso; um pulo silencioso é um defeito. Nomeie estados parciais ("guarda adicionada, raiz ativa").
  • Cada número vem com seu comando da execução final. Reexecute números que um subagente relata ($DD/reexec_claims.py).
  • Corpo do commit = registro de evidência: medida antes/depois, linha da barreira, o que não está feito e para onde foi.

Bandeiras vermelhas

Eu notoEu faço
Verde sem um vermelho no paiprove_fix.py
Citando o número de um subagente ou minha memóriareexecutar
Editando um teste ou limite sem contratolinha de contrato ou CONFLITO_DE_ESPECIFICAÇÃO
pular, repetir, dormir, noqa para ficar verdeencontrar a causa, tornar determinístico (refactor-flaky.md)
Prestes a perguntar sobre algo reversíveldecidir, registrar, continuar

Mais: delegation.md (subagentes, revisores, briefings), release.md (implantações), process-ledger.md, evidence.md.

Habilidades Relacionadas