skills/worktree/SKILL.md
ワークツリーのライフサイクル管理スキル。一覧表示、マージ済みワークツリーの自動削除、手動削除、ゾンビエージェントプロセスの kill を行う。「/worktree list」「/worktree clean」「/worktree remove」「/worktree kill-zombies」と言った時に使用。
npx skillsauth add hirokimry/vibecorp worktreeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
[!IMPORTANT] このスキルは git worktree のライフサイクルを管理する(一覧 / マージ済み自動削除 / 手動削除 / ゾンビ tmux エージェント kill)。 結果のみを簡潔に返す。途中経過は出力しない。 未コミット変更があるワークツリー・メインワークツリーは 削除対象から除外 する。
git worktree のライフサイクルを管理する。
/vibecorp:worktree list
/vibecorp:worktree clean
/vibecorp:worktree remove <ブランチ名>
/vibecorp:worktree kill-zombies
| サブコマンド | 用途 |
|---|---|
| list | 全ワークツリーの状態を表示する |
| clean | マージ済み / 孤立ワークツリーを自動削除し、ゾンビ tmux エージェントも掃除する |
| remove <ブランチ名> | 指定したワークツリーを手動削除する |
| kill-zombies | ゾンビ tmux エージェントだけを kill する |
全ワークツリーの状態を表示する。
git worktree list
各ワークツリーについて、ブランチ名でタイプを判定し、対応する情報を取得する。
| パターン | タイプ | PR 確認 |
|---------|--------|---------|
| worktree-agent-* | Agent worktree | 不要(PR なし) |
| dev/* 等 | 通常 worktree | PR 状態を確認 |
gh pr list --head <ブランチ名> --state all --json number,state,title --jq 'if length > 0 then .[0] | ("#" + (.number | tostring)) + " " + (.state | ascii_downcase) + " " + .title else "- - -" end'
# 未コミット変更の有無
git -C <worktree_path> status --porcelain
# ベースブランチとの差分の有無
git -C <worktree_path> diff HEAD..origin/main --quiet
| 状態 | 条件 |
|---|---|
| agent (孤立) | 未コミット変更なし + 差分なし |
| agent (作業中) | 未コミット変更あり or 差分あり |
| パス | ブランチ | PR | 状態 |
|------|---------|-----|------|
| /path/to/worktree | dev/62_xxx | #123 | open |
| /path/to/worktree2 | dev/99_yyy | #456 | merged |
| .claude/worktrees/agent-abc123 | worktree-agent-abc123 | - | agent (孤立) |
| .claude/worktrees/agent-def456 | worktree-agent-def456 | - | agent (作業中) |
マージ済みの PR に対応するワークツリー、および孤立した Agent worktree を自動削除する。
削除完了後、消えた worktree を見続けるゾンビ tmux エージェントも自動 kill する(kill-zombies と同じ動作)。
git worktree list で全ワークツリーを取得(メインを除く)。dev/* 等)の処理merged 状態の PR に対応するワークツリーを削除対象とする。# 未コミット変更の確認(worktree のパスで実行)
git -C <worktree_path> status --porcelain
git worktree remove <worktree_path>
git branch -d <ブランチ名>
worktree-agent-*)の処理Agent worktree は PR を持たないため、以下の条件で削除を判定する。
git -C <worktree_path> status --porcelain
git -C <worktree_path> diff HEAD..origin/main --quiet
git worktree remove <worktree_path>
git branch -d <ブランチ名>
ワークツリー削除ステップが完了したら、kill-zombies サブコマンドと同じ手順でゾンビエージェントを掃除する(後述「kill-zombies — ゾンビ tmux エージェントの自動 kill」参照)。
削除: dev/62_xxx (/path/to/worktree)
削除: worktree-agent-abc123 (.claude/worktrees/agent-abc123) [Agent]
スキップ: dev/100_zzz (未コミット変更あり)
スキップ: worktree-agent-def456 (作業中) [Agent]
Killed: ship-parallel-20260405/ship-243 pane=%176 worktree=/path/to/missing
---
削除: 2件, スキップ: 2件, Killed: 1件, Skipped: 0件
指定したブランチ名のワークツリーを削除する。
git worktree list から指定ブランチのパスを特定する。git worktree remove <worktree_path>
git branch -d <ブランチ名>
-d で削除できない場合(未マージ)はユーザーに報告して停止する。-D は使用しない。
削除: <ブランチ名> (<worktree_path>)
ship-parallel が tmux ペインで起動した Agent は、対応する worktree が削除されると cd: no such file or directory のループに入り CPU を消費し続ける(Issue #253)。
このサブコマンドは ~/.claude/teams/*/config.json を走査し、worktree が消えた tmux 連動エージェントの tmux ペインを検出して kill する。
実装は .claude/lib/zombie_agent.sh に集約されている。スキル実行時はこのスクリプトを呼び出すだけでよい。
bash "$CLAUDE_PROJECT_DIR/.claude/lib/zombie_agent.sh" kill
スクリプトの動作:
~/.claude/teams/*/config.json を全走査する。backendType == "tmux" かつ tmuxPaneId 非空のメンバーを抽出する。prompt から worktree パス: <path> をパースして worktree 絶対パスを取得する。tmux kill-pane -t <paneId>。bash "$CLAUDE_PROJECT_DIR/.claude/lib/zombie_agent.sh" list
<team>\t<member-name>\t<tmuxPaneId>\t<missing-worktree-path> 形式で tab 区切り出力する。
Killed: ship-parallel-20260405/ship-243 pane=%176 worktree=/path/to/missing
Skipped: ship-parallel-20260405/ship-244 pane=%177 (既に消滅 or tmux 未起動) worktree=/path/to/missing2
---
Killed: 1, Skipped: 1
\(...) を使わない — Bash 上で \ がエスケープ文字、() がサブシェルとして解釈され、意図しない展開やパースエラーを引き起こすため。必ず + で結合する。2>/dev/null、|| echo、; echo 等のリダイレクトやフォールバックを付加しない(根拠)。git branch -D(強制削除)は使用しない。.claude/rules/prompt-writing.md.claude/rules/markdown.md.claude/rules/shell.mddata-ai
skills/**/SKILL.md 内に embed された 5 行以上のエージェント呼出プロンプトテンプレ・長文ブロックを .claude/rules/notification-prompt-extraction.md 基準で skills/<skill>/prompts/<name>.md に切り出す migration skill。「/prompts-extract-all」「プロンプト切り出し」「プロンプト extract」「SKILL.md プロンプト migration」と言った時に使用。検出は awk でフェンスコードブロックを抽出して行数カウント、要否判定は LLM が閾値・用途軸・命名規約と照合。diff 提案 → CEO 承認 → 書換の 2 段階で挙動を壊さず適用する。自動マージ禁止、自律ループ対象外。
documentation
.github/workflows/**/*.{yml,yaml} の --body 通知文と hooks/**/*.sh の長文 echo/printf/heredoc を .claude/rules/notification-prompt-extraction.md 基準で個別 .md ファイルに切り出す migration skill。「/notifications-extract-all」「通知文切り出し」「通知文 extract」「workflow 通知 migration」と言った時に使用。検出は grep で機械絞り込み、要否判定は LLM が閾値・命名規約と照合。diff 提案 → CEO 承認 → 書換の 2 段階で挙動を壊さず適用する。自動マージ禁止、自律ループ対象外。
development
`**/*.sh` / `**/*.js` / `**/*.ts` / `**/*.py` / `**/*.rb` / `**/*.go` / 設定ファイル等のコード内コメントを一括棚卸しし、 `.claude/rules/code-comments.md` と機械的に照合する。 diff 提案 → CEO 承認 → 書換の 2 段階で自動マージを禁じる。 生成コード・`node_modules`・`vendor`・`dist`・`build` 等は除外する。 「/vibecorp:comments-rewrite-all」「コメント全書き直し」「コード内コメント棚卸し」 と言った時に使用。
development
skills/**/SKILL.md・agents/*.md・.claude/rules/*.md を .claude/rules/prompt-writing.md 基準で一括書き直し提案するスキル。「/prompts-rewrite-all」「プロンプト書き直し」「スキル一括書き直し」「エージェント書き直し」と言った時に使用。claude-code-guide サブエージェントで Claude Code 公式仕様(docs.claude.com)を確認し、prompt-writing.md の指針 MUST / 禁止パターンと照合する。diff 提案 → CEO 承認 → 書き換えの 2 段階で挙動を壊さず適用する。自動マージ禁止。