← ClaudeAtlas

brancheslisted

Use quando Pedro diz "/branches", "limpa as branches", "quais branches dá pra apagar", "tem branch sobrando", "o deploy tá reclamando de branch aberta", ou quando um projeto acumulou branches de trabalho já terminado. Classifica cada branch em três categorias por CONTEÚDO (não por ancestralidade), entrega um relatório com checkbox pra Pedro escolher, e apaga só o marcado — sempre criando uma tag de resgate antes. O ponto que justifica o plugin é este - o comando `git branch --merged`, que todo mundo usa, mente por omissão, porque squash-merge e rebase produzem sha novo e a branch aparece como não-mergeada mesmo com o conteúdo inteiro no tronco. É por isso que a pilha cresce até o deploy reclamar de 15 branches abertas. Roda em qualquer projeto e também varre uma pasta inteira de projetos de uma vez.
pedroberaldo87/pedro-plugins · ★ 0 · Code & Development · score 58
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