Communitygithub.com

haotianteng/FreeSpace

Agent-Fähigkeit, die Festplattenspeicher freigibt, indem sie Caches und alte Installationsdateien löscht – mit vollständiger Transparenz und Kontrolle über das, was entfernt wird.

Was ist FreeSpace?

FreeSpace ist eine Agent-Fähigkeit, die entwickelt wurde, um sicher und kontrolliert Speicherplatz auf Linux-Rechnern freizugeben. Sie unterstützt mehrere Distributionen (Ubuntu/Debian und Fedora/RHEL) und führt den Benutzer durch einen klaren, auf Sicherheit ausgelegten Workflow: Standardmäßig wird ein Probelauf (`--dry-run`) durchgeführt, der eine detaillierte Aufstellung der zu bereinigenden Aufgaben und des freizugebenden Speicherplatzes anzeigt. Der Benutzer entscheidet dann, welche Aufgaben tatsächlich ausgeführt werden sollen – entweder als normaler Benutzer oder mit `sudo`, falls erforderlich. Die Fähigkeit bietet Aufgaben wie das Bereinigen von Paketmanager-Caches (apt, dnf), npm- und pip-Caches, Docker-Builder-Caches, alten Journal-Protokollen und mehr. Sie stellt sicher, dass keine Daten ohne explizite Zustimmung gelöscht werden, und erstellt nach jeder Bereinigung einen Bericht mit dem tatsächlich freigegebenen Speicherplatz.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add haotianteng/FreeSpace

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

FreeSpace-Fähigkeit

Helfen Sie dem Benutzer, sicher Speicherplatz auf einem Linux-Rechner freizugeben. Der Benutzer muss stets sehen, was bereinigt wird und wie viel Speicherplatz es freigibt, bevor etwas gelöscht wird.

Harte Regeln

  1. Probelauf ist Standard. Der erste Aufruf in einer Unterhaltung MUSS --dry-run sein. Führen Sie niemals eine zerstörerische Bereinigung durch, bevor Sie dem Benutzer einen Probelauf-Bericht gezeigt haben.
  2. Nie --yes ohne explizite Benutzeranfrage. Übergeben Sie --yes / -y nur, wenn der Benutzer eindeutig zugestimmt hat („einfach alles bereinigen“, „ja mach alles“, „überspringe die Eingabeaufforderungen“). Standardmäßig sollte eine Bestätigung pro Aufgabe über --task <name> eingeholt werden.
  3. Größen anzeigen, dann fragen. Fassen Sie nach einem Probelauf für den Benutzer zusammen: Name jeder Aufgabe, was sie betrifft und wie viel Speicherplatz sie freigeben würde. Warten Sie, bis der Benutzer auswählt, was tatsächlich ausgeführt werden soll.
  4. Aufgabenweise Ausführung. Bevorzugen Sie --task <name> gegenüber der Ausführung aller Aufgaben auf einmal. Der Benutzer wählt aus.
  5. Keine Annahmen über sudo. Wenn eine Aufgabe Root-Rechte benötigt, teilen Sie dem Benutzer mit, dass sie sudo benötigt, und lassen Sie ihn diese spezifische Aufgabe erneut ausführen.
  6. Ausgabe nicht durch Tools leiten, die sie verstecken. Der Benutzer muss die Ausgabe des Skripts sehen. Führen Sie es im Vordergrund aus.

Distribution erkennen

Das auszuführende Skript finden:

. /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 "nicht unterstützt: ID=$ID ID_LIKE=$ID_LIKE" >&2 ;;
esac

Die Skripte befinden sich neben dieser SKILL.md:

  • ubuntu.sh — Ubuntu, Debian, Pop!_OS, Mint, Elementary (apt-basiert)
  • fedora.sh — Fedora, RHEL, CentOS, Rocky, AlmaLinux (dnf/yum)

Wenn die Distribution nicht unterstützt wird, teilen Sie dem Benutzer mit, welche Distributionen unterstützt werden, und brechen Sie ab. Versuchen Sie nicht, ein Skript spontan anzupassen.

Standard-Workflow

1. Distribution erkennen → Skript auswählen
2. Ausführen: bash <skript> --dry-run
3. Ausgabe parsen, dem Benutzer eine saubere Zusammenfassungstabelle anzeigen:
     - Aufgabenname
     - Zielpfad(e)
     - Freizugebende Größe
     - Ob sudo benötigt wird
4. Fragen: „Welche Aufgaben möchtest du tatsächlich ausführen?“
5. Für jede vom Benutzer ausgewählte Aufgabe:
     - Wenn auf Benutzerebene: bash <skript> --task <name>
     - Wenn sudo benötigt: Dem Benutzer den genauen Befehl mitteilen und ihn selbst ausführen lassen
6. Nach Abschluss aller ausgewählten Aufgaben: `df -h /` ausführen und den freigegebenen Speicherplatz melden.

Argument-Spickzettel

Die Skripte akzeptieren dieselben Flags:

FlagWirkung
--dry-runNur Vorschau, keine Änderungen. Dies zuerst verwenden.
--listVerfügbare Aufgabennamen auflisten
--task <name>Nur eine Aufgabe ausführen
--yes / -yBestätigung pro Aufgabe überspringen. Nur verwenden, wenn der Benutzer explizit darum bittet.
--helpSkript-Hilfe anzeigen

Verfügbare Aufgabennamen sind über Skripte hinweg gemeinsam: pip, npm, trash, docker_builder, journal, oldlogs, cuda_repos, cuda_old, crash. Distributionsspezifische Aufgaben: apt (Ubuntu/Debian), dnf (Fedora/RHEL), abrt (Fedora/RHEL).

Führen Sie bash <skript> --list aus, um die maßgebliche Liste für den Host zu erhalten.

Sudo-Handhabung

Aufgaben auf Benutzerebene (pip, npm, trash, docker_builder) werden als Benutzer ausgeführt.

Systemweite Aufgaben benötigen sudo. Rufen Sie sudo nicht im Namen des Benutzers auf, ohne zu fragen. Sagen Sie stattdessen:

Aufgabe journal benötigt sudo. Führe dies selbst aus: sudo bash <pfad>/<skript> --task journal

Wenn der Benutzer sich bereits in einer sudo bash-Sitzung befindet und Sie explizit gebeten hat, alle sudo-benötigenden Aufgaben auszuführen, können Sie diese mit --task für jede Aufgabe verketten.

Rückmeldung

Zeigen Sie dem Benutzer nach jedem Bereinigungslauf:

  • Welche Aufgaben erfolgreich ausgeführt wurden.
  • Welche übersprungen wurden und warum.
  • Das Vorher/Nachher von df -h /, damit der tatsächlich freigegebene Speicherplatz sichtbar ist.

Wenn etwas schiefgeht

  • Wenn der Probelauf für eine Aufgabe Größe: 0 meldet, erwähnen Sie es, aber belästigen Sie den Benutzer nicht damit.
  • Wenn du bei einem Pfad einen Fehler meldet (Zugriff verweigert), machen Sie den Benutzer darauf aufmerksam – es bedeutet normalerweise, dass sudo benötigt wird.
  • Wenn eine Aufgabe während der Ausführung fehlschlägt, stoppen Sie den Batch und melden Sie, welche Aufgabe fehlgeschlagen ist, bevor Sie fortfahren.

Was NICHT zu tun ist

  • Bearbeiten Sie die Skripte nicht, um basierend auf der Situation des Benutzers rm -rf /irgendwas/anderes hinzuzufügen. Wenn das Skript seinen Anwendungsfall nicht abdeckt, teilen Sie ihm das mit und lassen Sie ihn entscheiden.
  • Führen Sie keine Bereinigung von Verzeichnissen außerhalb der definierten Ziele des Skripts durch.
  • Schlagen Sie keine aggressiveren Bereinigungen vor (Löschen von /tmp, Snap-Caches, Kernel usw.), es sei denn, der Benutzer fragt explizit danach – und selbst dann bevorzugen Sie sicherere Alternativen (apt autoremove --purge für Kernel usw.).
  • Unterdrücken Sie nicht die Ausgabe des Skripts. Der Sinn ist die Transparenz.

Verwandte Skills