Communitygithub.com

haotianteng/FreeSpace

캐시와 오래된 설치 파일을 정리하여 디스크 공간을 확보하는 에이전트 스킬. 사용자는 삭제 대상과 확보 용량을 투명하게 확인하고 제어할 수 있습니다.

FreeSpace란 무엇인가요?

FreeSpace는 리눅스 머신에서 안전하게 디스크 공간을 확보할 수 있도록 설계된 AI 에이전트 스킬입니다. 사용자가 삭제할 항목과 그로 인해 확보되는 용량을 사전에 확인한 후, 직접 선택적으로 실행할 수 있도록 합니다. 기본적으로 `--dry-run` 모드로 미리보기를 제공하며, 사용자 명시적 동의 없이 `--yes` 플래그를 사용하지 않습니다. 퓨리(fury) 스크립트를 사용하여 apt/Ubuntu, dnf/Fedora 등 다양한 배포판을 지원하고, pip, npm, 도커 빌더 캐시, 저널 로그, 오래된 로그, CUDA 관련 파일 등 여러 항목을 정리할 수 있습니다. 작업은 사용자 수준과 sudo 필요 작업으로 나뉘며, AI는 사용자에게 sudo 명령어를 직접 실행하도록 안내합니다. 정리 실행 후에는 `df -h /` 결과를 보여주어 확보된 실제 공간을 보고합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add haotianteng/FreeSpace

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

FreeSpace 스킬

사용자가 리눅스 머신에서 디스크 공간을 안전하게 확보할 수 있도록 돕습니다. 사용자는 항상 무엇이 정리되고 얼마나 확보되는지를 삭제 전에 확인해야 합니다.

엄격한 규칙

  1. 기본값은 건식 실행(Dry-run)입니다. 대화 중 첫 번째 호출은 반드시 --dry-run이어야 합니다. 사용자에게 건식 실행 보고서를 보여주기 전에 파괴적인 정리를 실행하지 마십시오.
  2. 사용자의 명시적 요청 없이 --yes를 사용하지 마십시오. 사용자가 명확히 동의하지 않은 경우(예: "그냥 다 지워", "네 다 해줘", "프롬프트 생략") --yes / -y를 전달하지 마십시오. 기본적으로 --task <이름>을 통한 작업별 확인을 사용합니다.
  3. 용량을 보여주고, 물어보십시오. 건식 실행 후, 사용자에게 요약 정보를 제공하십시오: 각 작업 이름, 대상, 확보될 용량. 사용자가 실제로 실행할 항목을 선택할 때까지 기다리십시오.
  4. 작업별 실행. 한 번에 모든 작업을 실행하는 것보다 --task <이름>을 선호합니다. 사용자가 선택합니다.
  5. sudo에 대한 가정 금지. 작업에 루트 권한이 필요하면, 사용자에게 sudo가 필요하다고 알리고 해당 작업을 다시 실행하도록 안내하십시오.
  6. 출력을 숨기는 도구로 파이프하지 마십시오. 사용자가 스크립트의 출력을 확인할 수 있어야 합니다. 포그라운드에서 실행하십시오.

배포판 감지

실행할 스크립트를 찾습니다:

. /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 "지원되지 않음: ID=$ID ID_LIKE=$ID_LIKE" >&2 ;;
esac

스크립트는 이 SKILL.md와 같은 위치에 있습니다:

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

배포판이 지원되지 않으면, 사용자에게 지원되는 배포판 목록을 알리고 중단하십시오. 즉석에서 스크립트를 변환하려고 시도하지 마십시오.

기본 워크플로

1. 배포판 감지 → 스크립트 선택
2. 실행: bash <스크립트> --dry-run
3. 출력을 파싱하여 사용자에게 깔끔한 요약 테이블을 보여줍니다:
     - 작업 이름
     - 대상 경로
     - 확보될 용량
     - sudo 필요 여부
4. 질문: "실제로 실행할 작업을 선택해주세요."
5. 사용자가 선택한 각 작업에 대해:
     - 사용자 수준 작업: bash <스크립트> --task <이름>
     - sudo 필요 작업: 사용자에게 정확한 명령어를 알려주고 직접 실행하도록 안내합니다.
6. 선택된 모든 작업이 완료된 후, `df -h /`를 실행하고 확보된 공간을 보고합니다.

인수 치트 시트

스크립트는 동일한 플래그를 허용합니다:

플래그효과
--dry-run미리보기만, 변경 없음. 먼저 이것을 사용하십시오.
--list사용 가능한 작업 이름 목록 표시
--task <이름>하나의 작업만 실행
--yes / -y작업별 확인 생략. 사용자가 명시적으로 요청하지 않으면 사용하지 마십시오.
--help스크립트 도움말 표시

사용 가능한 작업 이름은 스크립트 간에 공통됩니다: pip, npm, trash, docker_builder, journal, oldlogs, cuda_repos, cuda_old, crash. 배포판별 작업: apt (Ubuntu/Debian), dnf (Fedora/RHEL), abrt (Fedora/RHEL).

호스트의 공식 목록을 보려면 bash <스크립트> --list를 실행하십시오.

Sudo 처리

사용자 수준 작업(pip, npm, trash, docker_builder)은 사용자 권한으로 실행됩니다.

시스템 수준 작업에는 sudo가 필요합니다. 허락 없이 사용자 대신 sudo를 호출하지 마십시오. 대신 다음과 같이 안내하십시오:

journal 작업에는 sudo가 필요합니다. 직접 실행해주세요: sudo bash <경로>/<스크립트> --task journal

사용자가 이미 sudo bash 세션 안에 있고 명시적으로 sudo가 필요한 모든 작업을 실행해달라고 요청했다면, 각 작업에 대해 --task를 연결하여 실행할 수 있습니다.

결과 보고

모든 정리 실행 후, 사용자에게 다음을 보여줍니다:

  • 성공적으로 실행된 작업.
  • 건너뛰어진 작업과 그 이유.
  • 이전/이후 df -h / 결과로 실제 확보된 공간을 확인할 수 있도록 합니다.

문제 발생 시

  • 건식 실행에서 작업의 Size: 0이 보고되면 언급은 하되, 반복적으로 문의하지 마십시오.
  • du가 경로에서 오류를 발생시키면(권한 거부), 사용자에게 알리십시오. 보통 sudo가 필요함을 의미합니다.
  • 작업이 실행 중간에 실패하면, 배치를 중단하고 실패한 작업을 보고한 후 계속 진행합니다.

하지 말아야 할 것

  • 사용자 상황에 따라 rm -rf /something/else를 추가하도록 스크립트를 수정하지 마십시오. 스크립트가 사용자의 사용 사례를 다루지 못하면, 그 사실을 알리고 사용자가 결정하도록 하십시오.
  • 스크립트가 정의한 대상 외부의 디렉토리를 정리하지 마십시오.
  • 사용자가 특별히 요청하지 않는 한 더 적극적인 정리(/tmp 삭제, snap 캐시, 커널 등)를 제안하지 마십시오. 그리고 그런 경우에도 더 안전한 대안(apt autoremove --purge 등)을 가리키는 것을 선호하십시오.
  • 스크립트의 출력을 숨기지 마십시오. 가시성이 핵심입니다.

관련 스킬