delete-environment
container-use環境(コンテナ、ファイル、メタデータ)を完全に削除する手順
When & Why to Use This Skill
This Claude skill provides a comprehensive runbook and automated workflow for the complete decommissioning of development environments. It ensures system hygiene by systematically removing Docker resources (containers, volumes, and networks), cleaning up local filesystem directories or Git worktrees, and synchronizing project metadata by updating GitHub issue labels. This prevents resource leakage and maintains a clean workspace for developers and DevOps teams.
Use Cases
- Post-Task Cleanup: Automatically purging Docker containers and temporary worktrees once a GitHub issue is resolved or a feature is merged.
- Resource Optimization: Identifying and removing orphaned or stale development environments to free up disk space and system memory.
- Environment State Synchronization: Using the automated script to ensure that GitHub issue labels (like 'env:active') are correctly updated or removed when the underlying infrastructure is deleted.
- Troubleshooting & Reset: Force-deleting corrupted container environments that fail to stop through standard commands, ensuring a clean slate for re-deployment.
| name | delete-environment |
|---|---|
| description | container-use環境(コンテナ、ファイル、メタデータ)を完全に削除する手順 |
Environment Deletion (環境削除)
container-use環境(Dockerコンテナ、ファイルシステム、GitHub Issueラベル)を安全かつ完全に削除するためのワークフロー。
概要
環境削除は以下の3つのリソースをクリーンアップする必要があります:
- Docker Resources: 実行中のコンテナ、ネットワーク、ボリューム
- Filesystem: 作業ディレクトリ(Worktree または サブディレクトリ)
- GitHub Issue Labels:
env:*,phase:*ラベルを削除
削除フロー
1. 環境IDとパスの特定
削除対象の env_id とディレクトリパスを特定します。
# アクティブな環境一覧を確認
gh issue list --label "env:active" --json number,title
# 特定のIssueの詳細を取得(env_idはIssue bodyのメタデータから)
gh issue view <issue_number> --json body
2. コンテナの停止・削除
ディレクトリが存在する場合(推奨): Docker Composeを使用してリソースを適切に解放します。
# 作業ディレクトリへ移動
cd <env_dir>
# コンテナとボリュームの削除
docker compose down -v
# 親ディレクトリへ戻る
cd ..
ディレクトリが既にない場合 / 強制削除: 環境IDを含むコンテナを検索して強制削除します。
# env_id を含むコンテナを一括削除
docker rm -f $(docker ps -aq --filter "name=<env_id>")
3. ファイルシステムの削除
作業ディレクトリ(Worktreeまたはフォルダ)を削除します。
# Worktreeの場合
git worktree remove <env_dir> --force
# 通常ディレクトリの場合
rm -rf <env_dir>
4. GitHub Issue ラベルの更新
環境削除後、Issue のラベルを更新します({{skill:github-issue-state-management}} API)。
# マージ完了として更新
bash .opencode/skill/github-issue-state-management/scripts/issue-state.sh merged <issue_number>
自動化スクリプト (推奨)
提供されているスクリプトを使用することで、上記の手順を一括で安全に実行できます。
bash .opencode/skill/delete-environment/scripts/delete_env.sh <env_id> [path_to_delete]
使用例:
# JSONとDockerコンテナのみ削除(ディレクトリ削除なし)
bash .opencode/skill/delete-environment/scripts/delete_env.sh abc-123
# ディレクトリも含めて完全削除
bash .opencode/skill/delete-environment/scripts/delete_env.sh abc-123 .worktrees/issue-123
スクリプトの動作詳細
- Docker掃除:
docker compose down -vおよび ID名マッチによる強制削除 - ファイル掃除: 指定された場合、Worktree解除または
rm -rfを実行 - ラベル更新: GitHub Issue のラベルを手動で更新
エラー対応
docker compose downが失敗する: ネットワークが使用中の場合があります。docker network prune -fを検討してください。- Issue ラベルが既にない: 既に削除されているか、手動で削除された可能性があります。