brancheslisted
Install: claude install-skill pedroberaldo87/pedro-plugins
# Skill: /branches
O problema nunca foi apagar branch. É saber **quais**.
## A razão de existir, em um número
Medido no `pedro-plugins` em 2026-07-28:
```
BRANCH git branch --merged conteúdo já está na main?
docs/readme NÃO SIM — entrou por squash
```
O `--merged` só enxerga merge por **ancestralidade**. Squash-merge (o botão
padrão do GitHub) e rebase reescrevem os commits com sha novo — a branch
original fica órfã e o comando a declara não-mergeada. Quem confia nele nunca
apaga nada, porque a lista mistura "já foi" com "ainda não foi" sem distinção.
Este plugin compara por **conteúdo** (patch-id, via `git cherry`). É a
diferença entre uma lista em que se confia e uma que se ignora.
## As três categorias
| categoria | o que é | o que fazer |
|---|---|---|
| **merged** | o git já reconhece o merge | apagar é seguro |
| **equivalent** | o conteúdo está no tronco, mas com sha novo (squash/rebase) | apagar é seguro — **e é o que o `--merged` perde** |
| **unique** | tem commit que só existe ali | **NÃO é lixo, é trabalho** |
A terceira é a razão de nada aqui apagar sozinho. Uma limpeza em bloco mataria
justamente o que Pedro esqueceu de mergear — que é o caso que dói.
## Fluxo
```bash
BS="${CLAUDE_PLUGIN_ROOT}/lib/branch_state.py"
# 1. medir (só lê — nunca escreve no repositório)
python3 $BS list # o projeto atual
python3 $BS list --scan ~/PROGRAMACAO # uma pasta inteira de projetos
python3 $BS list --json