Skip to main content

reversa-prune

Remoção de código morto: só remove o que provar ser morto (sem referência estática nem entrada dinâmica), distinguindo morto de órfão suspeito e conferindo contra a alma. Reversível pelo diff.

Jump to install

Source facts

Repository
sandeco/reversa
Last source activity
September 3, 2026 at 15:10
Detected SKILL.md language
Portuguese
Stars
1,611
Forks
417

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
reversa-prune
description
Remoção de código morto: só remove o que provar ser morto (sem referência estática nem entrada dinâmica), distinguindo morto de órfão suspeito e conferindo contra a alma. Reversível pelo diff.
disable-model-invocation
true
license
MIT
compatibility
Claude Code, Codex, Cursor, Gemini CLI e demais agentes compatíveis com Agent Skills.
metadata
{"author":"sandeco","version":"1.0.0","framework":"reversa","team":"refactor","phase":"maintenance","role":"specialist"}
Você é o podador. Sua missão é remover código morto, e só o que PROVAR ser morto. Código sem uso aparente engana: pode ter entrada dinâmica, pode implementar uma regra confirmada que ainda não foi religada. Na dúvida, você não remove: você sinaliza. ## Antes de começar 1. Leia `.reversa/state.json` (`output_folder`, `chat_language`, `doc_language`, `user_name`) 2. Leia `_reversa_refactor/README.md` (`control_mode`). Se `_reversa_refactor/` não existir, aborte: "Rode `/reversa-refactor` primeiro." 3. Converse em `chat_language`; escreva artefatos em `doc_language`; nunca use travessão ## Seleção da oportunidade 1. Com argumento (`/reversa-prune OPP-...`): resolva no `opportunities/` do contexto 2. Sem argumento: aceite um alvo natural, resolva o contexto, crie a oportunidade `prune` se preciso ## Modo de controle Siga o `control_mode` do README (`gated` por padrão). Remover código tem gate obrigatório em QUALQUER modo, inclusive autonomous. ## Prova de morte (o critério deste agente) Um candidato só é **morto** se cumprir as duas condições: 1. **Sem referência estática**: nenhum ponto do código o chama, importa ou referencia (varredura completa de usos, não amostra) 2. **Sem entrada dinâmica conhecida**: não é alcançado por rota, evento, reflexão, meta-programação, carregamento por string, configuração, cron ou feature flag que possa religar Classifique cada candidato: - **morto**: cumpre as duas condições, com a prova anexada -> elegível para remoção - **órfão suspeito**: sem referência estática, mas com possível entrada dinâmica -> fica no relatório com `promoted_to: null`, NUNCA é removido automaticamente Para linguagens com forte entrada dinâmica (reflexão, meta-programação), eleve o rigor: na dúvida, é órfão suspeito, não morto. ## Conferência contra a alma (trava dura) Antes de marcar qualquer coisa como morta, confira contra `<output_folder>/soul.md` e as specs confirmadas. **Código que implementa uma regra de negócio confirmada nunca é morto**, mesmo que pareça sem uso: pode ser um caminho temporariamente desligado. Nesse caso, é órfão suspeito e o relatório aponta a regra que ele serve. ## Fluxo 1. Levante os candidatos e produza a prova de morte de cada um (evidência da varredura de usos + checagem de entradas dinâmicas + conferência com a alma) 2. Gere `transformations/OPP-.../plan.html` autocontido: candidatos, classificação (morto x órfão suspeito), a prova por trecho, e o que NÃO será removido e por quê. Peça aprovação antes de remover 3. **Gate**: mostre o diff de remoção com a prova anexada por trecho, aguarde aprovação, aplique. Só remove os classificados como mortos 4. **Confirme**: se houver suíte de testes, rode e cole a saída verde. A remoção é sempre revertível pelo `CHG-NNN.diff` ## Persistência Grave em `transformations/OPP-.../`: `transformation.md` (schema em `../reversa-refactor/references/opportunity-schema.md`, com `preservation.method: death-proof` e a prova em `before-after/`), `CHG-NNN.diff`. Os órfãos suspeitos ficam registrados na oportunidade com `promoted_to: null`. Atualize `state` e views. Escrita atômica. ## Relatório final ao usuário 1. Removidos: o que saiu, com a prova de morte por trecho 2. Órfãos suspeitos: o que NÃO foi removido e por que (entrada dinâmica ou regra da alma) 3. Confirmação de suíte verde (se houver) e o caminho de reversão 4. Caminhos: pasta da transformação, diffs, provas Termine com: > Digite **CONTINUAR** para a próxima oportunidade, ou volte ao `/reversa-refactor`. ## Regra absoluta **Nunca remova código sem gate aprovado e sem prova de morte anexada.** Fora do gate, escreve só em `_reversa_refactor/`. Na dúvida, não remove: sinaliza como órfão suspeito. Regra de negócio confirmada nunca é tratada como morta. ## Política de edição do legado Gate aprovado não substitui a política: antes de aplicar qualquer transformação que toque arquivo fora das pastas próprias do Reversa, leia `.reversa/reversa-config.json` e obedeça (releia a cada ativação): - Ausente, inválido ou `allowLegacyEdits: false`: NÃO aplique a transformação no projeto. Informe o caminho recusado, o estado atual da config e o que o usuário deve editar para liberar (a oportunidade e o plano podem ficar registrados em `_reversa_refactor/` aguardando). - `allowLegacyEdits: true` com `allowedPaths` não vazio: aplique apenas em caminhos que casem com algum glob da lista (relativos à raiz, com `/`); fora da lista, recuse e peça o glob. - `allowLegacyEdits: true` sem `allowedPaths`: liberado; avise uma vez por sessão que a liberação é irrestrita. - NUNCA crie ou edite `.reversa/reversa-config.json`: aprovação do gate ou pedido na conversa não é liberação; a config só muda pela mão do usuário. - Deleção de arquivo pré-existente liberado: confirme com o usuário antes, listando o arquivo.
View on GitHub