install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/gcp-cleanup" ~/.claude/skills/majiayu000-claude-skill-registry-gcp-cleanup && rm -rf "$T"
manifest:
skills/data/gcp-cleanup/SKILL.mdsource content
GCP 리소스 정리 (Read-Only 스캔)
사용하지 않는 GCP 리소스를 탐지만 수행. 삭제는 사용자가 직접 실행.
안전 원칙
- 읽기 전용 - 이 스킬은 조회만 수행, 삭제 명령 실행 안 함
- 명령어 제공 - 삭제가 필요하면 명령어를 출력하고 사용자가 직접 실행
- 보호 규칙 - prod/production 포함 프로젝트는 경고 표시
- 복구 안내 - 프로젝트 삭제는 30일 내 복구 가능함을 안내
수행 작업
1. 프로젝트 목록 조회
gcloud projects list --format="table(projectId,name,lifecycleState)"
2. 각 프로젝트별 리소스 스캔
for PROJECT in $(gcloud projects list --format="value(projectId)" --filter="lifecycleState:ACTIVE"); do echo "=== $PROJECT ===" # TERMINATED VM (중지된 상태로 방치) echo "TERMINATED VMs:" gcloud compute instances list --project=$PROJECT \ --filter="status:TERMINATED" \ --format="table(name,zone,status)" 2>/dev/null || echo " (접근 권한 없음)" # 연결되지 않은 디스크 (orphaned) echo "Orphaned Disks:" gcloud compute disks list --project=$PROJECT \ --filter="-users:*" \ --format="table(name,zone,sizeGb,type)" 2>/dev/null || echo " (접근 권한 없음)" # 예약된 외부 IP (사용 안 함) echo "Unused Static IPs:" gcloud compute addresses list --project=$PROJECT \ --filter="status:RESERVED" \ --format="table(name,region,status)" 2>/dev/null || echo " (접근 권한 없음)" # 리소스 카운트 (빈 프로젝트 판단) VM_COUNT=$(gcloud compute instances list --project=$PROJECT --format="value(name)" 2>/dev/null | wc -l) DISK_COUNT=$(gcloud compute disks list --project=$PROJECT --format="value(name)" 2>/dev/null | wc -l) if [ "$VM_COUNT" -eq 0 ] && [ "$DISK_COUNT" -eq 0 ]; then echo " 빈 프로젝트 (리소스 0개)" fi echo "" done
출력 형식
## GCP 리소스 스캔 결과 ### 정리 검토 대상 | 프로젝트 | 리소스 타입 | 이름 | 위치 | 비고 | |----------|-------------|------|------|------| | test-old | 빈 프로젝트 | - | - | 리소스 0개 | | main-project | Orphaned 디스크 | disk-backup | asia-northeast3-a | 50GB, 미연결 | | dev-project | TERMINATED VM | vm-test | us-central1-a | 중지 상태 | --- ## 직접 실행 필요 아래 명령어는 **복사하여 직접 실행**하세요. 이 스킬은 삭제를 수행하지 않습니다. ### 빈 프로젝트 삭제 \`\`\`bash # test-old 프로젝트 삭제 (30일 내 복구 가능: gcloud projects undelete test-old) gcloud projects delete test-old \`\`\` ### Orphaned 디스크 삭제 \`\`\`bash # 삭제 전 확인: 정말 사용하지 않는 디스크인가? gcloud compute disks describe disk-backup --zone=asia-northeast3-a --project=main-project # 삭제 실행 gcloud compute disks delete disk-backup --zone=asia-northeast3-a --project=main-project \`\`\` ### TERMINATED VM 삭제 \`\`\`bash # VM 삭제 (연결된 디스크도 함께 삭제됨) gcloud compute instances delete vm-test --zone=us-central1-a --project=dev-project \`\`\` --- ## 주의사항 - **prod/production** 포함 프로젝트는 신중히 검토 - 프로젝트 삭제는 30일 내 `gcloud projects undelete PROJECT_ID`로 복구 가능 - 디스크/VM 삭제는 **복구 불가** - 스냅샷 백업 권장
보호 규칙
다음 패턴의 프로젝트는 자동으로 경고 표시:
- 이름에
,prod
,production
,live
포함main - 최근 7일 내 생성된 리소스
- 결제 계정이 연결된 활성 프로젝트
사용 시나리오
사용자: /gcp-cleanup Claude: [스캔 결과 출력] 삭제가 필요하면 위의 명령어를 복사하여 직접 실행하세요. 사용자: (명령어 복사 후 터미널에서 직접 실행)
참고
- 이 스킬은 조회 전용입니다
- 삭제 명령은 사용자가 검토 후 직접 실행해야 합니다
- 비용 추정은 대략적인 참고값입니다 (실제 비용은 GCP 콘솔에서 확인)