本文へ移動
cccskills
無料GitHub で公開

run-with-dual-verify-in-pane

別の tmux ペインで動いている Claude Code インスタンスを、このセッションから tmux send-keys / capture-pane で駆動するオーケストレーション。

プランモード投入 → プラン再点検 (1 回目の検証) → ユーザ承認ゲート → auto mode 実装 → レポート未記載追記 → レポート矛盾再チェック (2 回目の検証) の定型フロー。長時間タスクをもう 1 体の claude に「ダブルチェック付きで」実行させ、要所だけ自分が監督したいときに使う。

インストール方法を見る

含まれるファイル(1)

  • SKILL.md13.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

run-with-dual-verify-in-pane スキル

このセッション (オーケストレータ) から、隣の tmux ペインで動く別の Claude Code を tmux send-keys / capture-pane で操作し、プランニング → 実装 → レポート整備まで一気通貫で 駆動する。対象 claude が長時間タスク (例: TX1320 のフルセットアップ) を実行する間、自分は 状態を監視し、承認・質問・矛盾チェックなどの要所だけに介入する。

確立: 2026-06-19。TX1320 PVE ブリッジ構成 + RAID 初期化からのフルセットアップやり直しを、 右ペインの claude にプランモードで計画させ、2 段階の自己点検と人間承認ゲートを挟んで auto mode 実装させ、完了後にレポートの未記載追記 + 矛盾再チェックまで実行した手順を一般化。

大原則 (これだけは外さない)

  1. 入力は必ず 2 段階: ① tmux send-keys -t <pane> -l "本文" でテキストだけ送る → ② capture-pane で入力欄に正しく入っているか目視 → ③ tmux send-keys -t <pane> Enter で確定。 テキストと Enter を 1 回の send-keys に混ぜない (途中改行で誤送信する)。
  2. 送る前に必ず状態確認、送った後も必ず確認。盲打ちしない。対象ペインは人間が別途 操作している可能性もあるので、毎回 capture-pane で「今アイドルか」「入力欄に残骸はないか」を見る。
  3. 対象 claude のターン中に文字を送らない。生成中 (esc to interrupt 表示) に送ると 割り込み or キュー入りで壊れる。必ずアイドル復帰を待ってから送る。
  4. 判断が要る分岐 (プラン承認の可否など) は勝手に進めず人間に確認。本スキルの既定フローでも 「2 回目の承認」は必ず人間ゲート。

0. 対象ペインの特定

tmux list-panes -a -F "#{session_name}:#{window_index}.#{pane_index} #{pane_active} #{pane_current_command} #{pane_width}x#{pane_height} left=#{pane_left}"
  • pane_current_command が claude のペインが対象。left= で左右、pane_active で今フォーカスが どこか分かる。自分 (オーケストレータ) と対象を取り違えないこと。
  • 以降 <pane> は session:window.pane 形式 (例: pvese:0.1)。

1. ペイン状態の読み方 (capture-pane)

読み取りは Bash 禁止事項に触れない tmux capture-pane -t <pane> -p -S -<N> を使う (末尾 N 行。フッターを見るなら -S -6 で十分、ダイアログ全文なら -S -30 等)。

フッター / 末尾行のマーカーで状態を判定する:

表示意味介入可否
esc to interrupt対象が生成中 (思考 or ツール実行)送信不可・待て
· N shell · / ↓ to manage / N shell still running対象が自前のバックグラウンドシェル待ちでターンを yield送信不可・待て (シェル完了で自動再開)
上記いずれも無し + ❯ の空入力欄 + (shift+tab to cycle)真にアイドル (入力待ち)送信可
Would you like to proceed? + 番号付き選択肢プラン承認ダイアログ選択操作
1. Yes ... 2. ... 3. Type something 等質問 (AskUserQuestion)選択操作
1. Yes 2. Yes, and don't ask again 3. No 等権限プロンプト (auto mode 外)選択 or 人間確認

⚠️ (shift+tab to cycle) は生成中でも表示される (... (shift+tab to cycle) · esc to interrupt)。 アイドル判定に単独で使わない。esc to interrupt と shell 系が両方とも無いことが真のアイドル条件。

⚠️ ゴーストサジェスト: 空の入力欄に薄字で過去の入力候補 (❯ ::1 も許可に追加して 等) が 出ることがある。これは未送信テキストではなくサジェスト。1 文字打つと消える。send-keys -l でテキストを送れば上書きされるので無視してよい。迷ったら 1 文字打って確認。

2. テキスト送信の作法

# ① テキストだけ送る (日本語 OK。-l = literal でキーシーケンス解釈を抑止)
tmux send-keys -t <pane> -l "送りたいプロンプト本文"
# ② 入力欄を確認
tmux capture-pane -t <pane> -p -S -4
# ③ 問題なければ Enter で確定
tmux send-keys -t <pane> Enter
# ④ 送信できたか (生成が始まったか) を確認
tmux capture-pane -t <pane> -p -S -4
  • 複数行プロンプトは 1 行に畳む (改行をスペースに)。生の改行を送ると途中で確定する。 どうしても改行を保ちたいなら本文は 1 回で送らず工夫が要るが、基本は 1 行化で十分。
  • 制御キーは send-keys: Enter / Escape / BTab (= Shift+Tab) / Down / Up / Tab。

3. モード切替 (Shift+Tab = BTab)

BTab を 1 回送るごとにモードが循環する。送るたびに capture-pane -S -3 でフッターを確認:

auto mode on  --BTab-->  (通常 / ? for shortcuts)  --BTab-->  accept edits on  --BTab-->  plan mode on  --BTab--> (auto mode on に戻る)
  • 目標モードのフッター文字列 (⏸ plan mode on 等) が出るまで 1 回ずつ送って確認する。 循環順は版で変わりうるので回数を決め打ちせず、毎回確認。

4. ダイアログ操作 (承認 / 質問 / 権限)

  • 選択肢は ❯ が現在位置。Down / Up で移動し Enter で確定。番号直打ちより Down で目的の行に ❯ を移動 → capture-pane で確認 → Enter が確実。
  • プラン承認ダイアログ (Would you like to proceed?):
    • 1. Yes, and use auto mode … 承認して auto 実行
    • 2. Yes, manually approve edits … 承認するが編集ごと確認
    • 4. Tell Claude what to change … 承認せずフィードバックを返す (これを選ぶと自由入力欄が開く)
    • → プランを「承認せず再点検させたい」ときは 4 を選んでフィードバック本文を送る。
  • 質問ダイアログで自由記述したいときは Type something. を選択 → 質問ダイアログが閉じ 通常の入力欄に戻るので、そこに回答を send-keys -l で入力 → Enter。 (選択直後の capture では User declined to answer questions と出るが、これは「定型選択肢を選ばず 自由入力に切り替えた」の意で正常。)

5. アイドル / 完了待ち (バックグラウンド監視)

対象がアイドル復帰 or ダイアログ停止するまで待つ監視スクリプトを tmp/<sid>/ に書いて run_in_background: true で回す (.claude/ 配下は Bash 実行がブロックされるため skill 内には 置かず、下記を都度 tmp に展開する)。完了すると harness が自動で呼び戻す。

# tmp/<sid>/pane-wait.sh — 対象ペインが「真にアイドル」になるまで待つ
#   usage: sh tmp/<sid>/pane-wait.sh <pane> [streak] [poll_secs] [max_secs]
#   busy = 生成中(esc to interrupt) OR 自前のバックグラウンドシェル稼働中(N shell / to manage)
#!/bin/sh
set -u
PANE="${1:?usage: pane-wait.sh <pane> [streak] [poll] [max]}"
STREAK_TARGET="${2:-3}"   # 連続アイドル確認回数 (誤検知防止)
POLL="${3:-15}"           # ポーリング間隔秒
MAX="${4:-7200}"          # 上限秒 (長時間タスクは大きめに)
elapsed=0; streak=0
while [ "$elapsed" -lt "$MAX" ]; do
  snap=$(tmux capture-pane -t "$PANE" -p -S -6)
  busy=0
  printf '%s' "$snap" | grep -q "esc to interrupt" && busy=1
  printf '%s' "$snap" | grep -q "to manage" && busy=1
  printf '%s' "$snap" | grep -Eq "[0-9]+ shell" && busy=1
  if [ "$busy" -eq 1 ]; then streak=0; else streak=$((streak+1)); fi
  if [ "$streak" -ge "$STREAK_TARGET" ]; then echo "IDLE_OR_DIALOG"; exit 0; fi
  sleep "$POLL"; elapsed=$((elapsed+POLL))
done
echo "TIMEOUT"; exit 0
  • 監視が IDLE_OR_DIALOG で返ったら 必ず capture-pane -S -30 で中身を見る。 「タスク完了 (空入力欄)」「承認/質問ダイアログ」「権限プロンプト」のどれかを判別してから次手を打つ。
  • ダイアログ専用に待ちたい場合は grep 条件を keep planning / Would you like to proceed / Type something 等に変えた別スクリプトにする。
  • ❗ 誤完了に注意: 対象が sol-monitor 等のバックグラウンドシェルを起動してターンを yield すると一瞬アイドルに見える。N shell / to manage を busy 扱いにしているのはこのため。 それでも疑わしいときは中身を読んで「完了サマリが出ているか」を確認する。

6. 既定オーケストレーションフロー (今回実施した手順)

「もう 1 体の claude にプランニングから実装・レポート整備まで任せ、要所を監督する」標準レシピ。

  1. (任意) 既存セッションを終了して作り直す: 対象が生成中なら Escape で中断 → アイドル確認 → send-keys -l "/exit" → capture-pane で候補に Exit the CLI を確認 → Enter。シェルに戻ったら send-keys -l "claude" → Enter で再起動。起動完了 (バナー + 入力欄) を確認。
  2. プランモードへ: BTab を 1 回ずつ送り、⏸ plan mode on を確認 (§3)。
  3. メインプロンプト送信 (§2)。送信後 Considering… 等で生成が始まったことを確認。
  4. 質問が出たら (§4): 定型選択肢で足りなければ Type something → 通常入力欄で回答 → Enter。 回答内容が要件を変えるなら勝手に決めず人間に確認。
  5. 1 回目の承認ダイアログ → 自己点検させる: 4. Tell Claude what to change を選び、 「再度、計画に矛盾がないか確認してください」を送る (承認せずプランを磨かせる)。
  6. 2 回目の承認ダイアログ → 人間ゲート: プラン全文を Read で読み (パスはフッターの Planning: ~/.claude/plans/....md) 要約して人間に承認を求める。承認が出たら 1. Yes, and use auto mode を確定。修正指示なら 4 でフィードバック。
  7. 実装を待つ (§5, MAX を十分大きく)。長時間タスクは複数回 yield するので N shell を busy 扱いした監視で「真の完了」だけ拾う。途中で質問/権限プロンプトで停止したら人間に取り次ぐ。
  8. 完了後: レポート未記載の追記: アイドル確認 → 「発見された事実でレポートに未記載の事項が ないか確認してください。追記する価値があるものは追記してください (価値判断は対象 claude に委ねる)」 を送る → 完了待ち。
  9. 最後: レポート矛盾の再チェック: 「再度、レポートに矛盾がないか確認してください」を送る → 完了待ち → 結果 (修正点) を人間に報告。

7. 進捗の見える化

各ステップ後に「何を送り、対象が今どの状態か」を人間に短く報告する。長時間待機に入る前に 「完了 or 停止で通知する」と伝えておく。停止 (質問/権限) を検知したらその画面の内容を引用して 人間の判断を仰ぐ。

落とし穴・既知の注意

  • 送信のテキスト+Enter 混在で誤送信 → 必ず分離 (§2)。
  • (shift+tab to cycle) をアイドル指標に使う誤り → esc to interrupt と shell 系の不在で判定 (§1)。
  • バックグラウンドシェル yield を完了と誤判定 → N shell / to manage を busy 扱い (§5)。
  • ゴーストサジェストを未送信テキストと誤認 → 1 文字で消える/上書きされる (§1)。
  • .claude/ 配下のスクリプトを sh で直接実行するとセンシティブパスでブロック → 監視スクリプトは tmp/<sid>/ に Write して実行 (§5)。
  • モード循環の回数決め打ち → 版差で順序が変わる。毎回フッター確認 (§3)。
  • 対象ペインを人間も触っている前提で、送信前後に必ず状態を読む。取り違え防止に §0 で pane_active / left= を確認。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

bios-setup

無料日本語概要

Supermicro X11DPU/X10DRT-P BIOS Setup 操作。KVM スクリーンショット + キーストロークで BIOS メニューを操作する。BIOS 設定変更、確認、保存を行う。4-6号機 + 10号機対応。

miminashi/pvese182026年7月6日 更新

dell-fw-download

無料日本語概要

Dell ファームウェアダウンロード。Playwright で dl.dell.com から BIN を取得し firmimg.d7 を抽出する。

miminashi/pvese182026年7月6日 更新

ib-switch

無料日本語概要

Mellanox SX6036 InfiniBand スイッチのシリアルコンソール操作。ステータス確認、show コマンド、IB 設定、FW 管理を行う。

miminashi/pvese182026年7月6日 更新

idrac7

無料日本語概要

iDRAC7 基本操作。SSH 経由で racadm コマンドを実行し、サーバ管理を行う。

miminashi/pvese182026年7月6日 更新

idrac7-fw-update

無料日本語概要

iDRAC7 ファームウェアアップデート。段階的アップグレードパスに従い TFTP 経由で適用する。

miminashi/pvese182026年7月6日 更新

irmc-bios-raid

無料日本語概要

Fujitsu iRMC S4 (TX1320 M3 等) の電源・BIOS・RAID 操作 + BIOS 設定リファレンス。Redfish (HTTPS + SECLEVEL=0) 経由の電源/ブート操作 + iRMC Web UI/KVM 経由の手動 BIOS/RAID 操作手順 + 全 BIOS 設定項目の網羅リファレンス (bios/)。training-tx1320 対応。

miminashi/pvese182026年7月6日 更新

miminashi のスキルをすべて見る

このスキルの問題を報告する