Skill FreeSpace
Ajude o usuário a recuperar espaço em disco em uma máquina Linux com segurança. O usuário deve sempre ver o que será limpo e quanto será liberado antes de qualquer exclusão.
Regras rígidas
- Dry-run é o padrão. A primeira invocação em qualquer conversa DEVE ser
--dry-run. Nunca execute uma limpeza destrutiva antes de mostrar um relatório de dry-run ao usuário. - Nunca use
--yessem solicitação explícita do usuário. Não passe--yes/-ya menos que o usuário tenha optado claramente por isso ("limpe tudo", "sim, faça tudo", "pule as confirmações"). O padrão é confirmação por tarefa via--task <nome>. - Mostre tamanhos, depois pergunte. Após um dry-run, resuma para o usuário: cada nome de tarefa, o que ela atinge e o tamanho que liberaria. Aguarde o usuário escolher o que realmente executar.
- Execução por tarefa. Prefira
--task <nome>a executar tudo de uma vez. O usuário escolhe. - Sem suposições sobre sudo. Se uma tarefa precisar de root, informe o usuário que ela precisa de
sudoe deixe-o executar essa tarefa específica novamente. - Não redirecione a saída por ferramentas que a escondam. O usuário deve ver a saída do script. Execute-o em primeiro plano.
Detecte a distribuição
Encontre o script a ser executado:
. /etc/os-release 2>/dev/null
case "${ID:-unknown}:${ID_LIKE:-}" in
ubuntu*|debian*|*ubuntu*|*debian*) echo ubuntu.sh ;;
fedora*|rhel*|centos*|*fedora*|*rhel*) echo fedora.sh ;;
*) echo "não suportado: ID=$ID ID_LIKE=$ID_LIKE" >&2 ;;
esac
Os scripts ficam próximos a este SKILL.md:
ubuntu.sh— Ubuntu, Debian, Pop!_OS, Mint, Elementary (baseados em apt)fedora.sh— Fedora, RHEL, CentOS, Rocky, AlmaLinux (baseados em dnf/yum)
Se a distribuição não for suportada, informe ao usuário quais são suportadas e pare. Não tente adaptar um script em tempo real.
Fluxo de trabalho padrão
1. Detecte a distribuição → escolha o script
2. Execute: bash <script> --dry-run
3. Analise a saída, mostre ao usuário uma tabela resumo clara:
- Nome da tarefa
- Caminho(s) alvo
- Tamanho que seria liberado
- Se precisa de sudo
4. Pergunte: "Quais tarefas você gostaria que eu realmente executasse?"
5. Para cada tarefa escolhida pelo usuário:
- Se for de nível de usuário: bash <script> --task <nome>
- Se precisar de sudo: informe ao usuário o comando exato a ser executado e deixe-o executar
6. Após todas as tarefas selecionadas serem concluídas, execute `df -h /` e informe o espaço liberado.
Folha de dicas de argumentos
Os scripts aceitam as mesmas flags:
| Flag | Efeito |
|---|---|
--dry-run | Apenas pré-visualização, sem alterações. Use esta primeiro. |
--list | Lista os nomes das tarefas disponíveis |
--task <nome> | Executa apenas uma tarefa |
--yes / -y | Pula a confirmação por tarefa. Não use a menos que o usuário peça explicitamente. |
--help | Mostra a ajuda do script |
Os nomes das tarefas disponíveis são comuns entre os scripts: pip, npm, trash, docker_builder, journal, oldlogs, cuda_repos, cuda_old, crash. Tarefas específicas da distribuição: apt (Ubuntu/Debian), dnf (Fedora/RHEL), abrt (Fedora/RHEL).
Execute bash <script> --list para obter a lista autoritativa para o host.
Tratamento de sudo
Tarefas de nível de usuário (pip, npm, trash, docker_builder) são executadas como o usuário.
Tarefas de nível de sistema precisam de sudo. Não invoque sudo em nome do usuário sem perguntar. Em vez disso, diga a ele:
A tarefa
journalprecisa de sudo. Execute você mesmo:sudo bash <caminho>/<script> --task journal
Se ele já estiver dentro de uma sessão sudo bash e pediu explicitamente para você executar todas as tarefas que precisam de sudo, você pode encadeá-las com --task para cada uma.
Relatório de retorno
Após cada execução de limpeza, mostre ao usuário:
- Quais tarefas foram executadas com sucesso.
- Quais foram ignoradas e por quê.
- O
df -h /antes/depois para que ele veja o espaço real liberado.
Quando algo dá errado
- Se o dry-run relatar
Size: 0para uma tarefa, mencione, mas não insista. - Se
duder erro em um caminho (permissão negada), informe o usuário — normalmente significa que ele precisa de sudo. - Se uma tarefa falhar durante a execução, pare o lote e informe qual tarefa falhou antes de continuar.
O que NÃO fazer
- Não edite os scripts para adicionar
rm -rf /algum/outro/caminhobaseado na situação do usuário. Se o script não cobrir o caso de uso dele, informe e deixe-o decidir. - Não execute limpeza em diretórios fora dos alvos definidos pelo script.
- Não sugira limpeza mais agressiva (excluir
/tmp, caches do snap, kernels, etc.) a menos que o usuário peça especificamente — e mesmo assim, prefira apontar para alternativas mais seguras (apt autoremove --purgepara kernels, etc.). - Não suprima a saída do script. O objetivo é a visibilidade.