Communitygithub.com

haotianteng/FreeSpace

Skill de agente que libera espaço em disco limpando caches e arquivos de instalação antigos, com total visibilidade e controle sobre o que será removido.

O que é FreeSpace?

O skill FreeSpace permite que um agente de IA (como Claude Code, Cursor ou Codex) libere espaço em disco de forma segura em máquinas Linux. Ele executa scripts de limpeza pré-definidos que removem caches de pacotes (apt/dnf), logs antigos, lixeira, caches do pip, npm, Docker, entre outros, sempre com uma abordagem de 'dry-run' primeiro para que o usuário veja exatamente o que será limpo e quanto espaço será recuperado antes de qualquer exclusão. O skill detecta automaticamente a distribuição Linux (Ubuntu/Debian ou Fedora/RHEL) e seleciona o script apropriado. O usuário mantém controle total: escolhe quais tarefas executar, uma a uma, e é informado quando privilégios sudo são necessários. O foco é em transparência e segurança, evitando suposições sobre comandos destrutivos ou edição dos scripts de limpeza.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add haotianteng/FreeSpace

Perguntar na sua IA favorita

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

Documentação

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

  1. 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.
  2. Nunca use --yes sem solicitação explícita do usuário. Não passe --yes / -y a 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>.
  3. 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.
  4. Execução por tarefa. Prefira --task <nome> a executar tudo de uma vez. O usuário escolhe.
  5. Sem suposições sobre sudo. Se uma tarefa precisar de root, informe o usuário que ela precisa de sudo e deixe-o executar essa tarefa específica novamente.
  6. 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:

FlagEfeito
--dry-runApenas pré-visualização, sem alterações. Use esta primeiro.
--listLista os nomes das tarefas disponíveis
--task <nome>Executa apenas uma tarefa
--yes / -yPula a confirmação por tarefa. Não use a menos que o usuário peça explicitamente.
--helpMostra 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 journal precisa 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: 0 para uma tarefa, mencione, mas não insista.
  • Se du der 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/caminho baseado 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 --purge para kernels, etc.).
  • Não suprima a saída do script. O objetivo é a visibilidade.

Habilidades Relacionadas