背景
Claude CodeにRemote Controlが追加されました。ローカルで動いているClaude Codeのセッションに、スマホやブラウザからアクセスして操作を続けられる待望の公式機能です。
つまり、PCでタスクを投げてから、食卓に移動し、家族とディナーを楽しんでいるふりをしながらスマホでゴリゴリ仕事ができてしまうわけです。
ただ、1つ問題があって、Remote ControlはあくまでローカルのClaude Codeを動かすためのものなのでPCがスリープしてしまったらClaude Codeがリモートから操作できなくなってしまいます。
そこでmacOS標準のcaffeinateコマンドを設定/解除するスキル(プラグイン)を作ってPCの睡眠を邪魔することにしました。
経緯
最初は、/remote-controlとcaffeinateの両方をいい感じに実行するスキルを作ろうとしましたが、どうやら/rcのようなClaude Codeの組み込みコマンドはスキルから呼び出すことはできないようだったのでとりあえずcaffeinateをいい感じに設定/解除するプラグインを作ってしばらく運用してみることにしました。(組み込みコマンドもスキル内で実行できるようにならないかなー
なぜスキルではなくプラグインなのか
caffeinateを起動するだけならスキルで十分ですが、停止し忘れを防止したかったのでhookで自動停止する機能をつけるためにプラグインにしました。
プラグインはplugin.jsonにhookの設定を書いておけばプラグインをインストールしただけで自動的にhookが設定されるようになっているので今回作成したcaffeinateプラグインではSessionEndにcaffeinateを停止するスクリプトを実行するようにhookを設定しています。
{
"hooks": {
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "bash ${CLAUDE_PLUGIN_ROOT}/skills/caffeinate/caffeinate.sh stop"
}
]
}
]
}
}
これでセッション終了時にcaffeinateプロセスが自動で停止します。手動で止め忘れても安心です。
使い方
インストール
claude plugin marketplace add hiroro-work/claude-plugins
claude plugin install caffeinate@hiropon-plugins
コマンド
/caffeinate # スリープ防止を開始
/caffeinate stop # 停止
/caffeinate status # 状態確認
Remote Controlと合わせて使う場合は:
/caffeinate
/rc
ターミナルでcaffeinateを直接叩けばいいじゃんという話もありますが、「あ、caffeinate忘れた、RC経由で実行できる/caffeinate入れておいてよかったー」ってなる未来がきっと来るはず!
セッション終了時にcaffeinateは自動停止するので、止め忘れても安心です!
ちなみにRemote Controlには全セッションで自動的に有効にする設定があり、/configから「Enable Remote Control for all sessions」をtrueにしておけば/rcを毎回打つ必要がなくなることをこのプラグインを作ってから知りました。
この設定とcaffeinateプラグインを組み合わせれば、当初考えていた/rcと/caffeinateの両方を実行するスキルは実現できなくても問題ないので今のところはまぁ結果オーライかなと思っています。
リポジトリ: https://github.com/hiroro-work/claude-plugins
caffeinateプラグイン: https://github.com/hiroro-work/claude-plugins/tree/main/plugins/caffeinate
この記事はZenn/Qiitaにクロスポストしています