はじめに
Claude Codeに/loopコマンドとスケジュールタスク機能が追加されました。セッション中にプロンプトを定期実行できる仕組みです。
デプロイの監視、ビルドの完了確認、PRレビューの繰り返し。「数分おきに同じ確認をする」作業をClaude Codeに任せられます。この記事では、CLI版の/loopとDesktop版のスケジュールタスクを整理します。
CLIの/loopコマンド
基本的な使い方
/loopはClaude Codeのセッション内で使えるビルトインスキルです。インターバルとプロンプトを渡すだけで、バックグラウンドで定期実行されます。
/loop 5m デプロイが完了したか確認して、結果を教えて
Claudeがインターバルをcron式に変換し、ジョブIDとともに実行スケジュールを表示します。
インターバルの指定方法
インターバルはオプションです。先頭・末尾・省略の3パターンで指定できます。
| 書き方 | 例 | 解釈 |
|---|---|---|
| 先頭に時間 | /loop 30m ビルドを確認 |
30分ごと |
| 末尾にevery句 | /loop ビルドを確認 every 2h |
2時間ごと |
| 省略 | /loop ビルドを確認 |
10分ごと(デフォルト) |
対応する単位はs(秒)、m(分)、h(時間)、d(日)の4つです。cronの最小単位は1分のため、秒指定は繰り上げになります。7mや90mのようなきりの悪い値は、最も近いきりのよい間隔に丸められます。
実用的なユースケース
デプロイ監視やビルド確認以外にも、さまざまな使い方があります。
/loop 10m テストスイートを実行して、失敗があれば修正を試みて
/loop 30m git statusを確認して、未コミットの変更があれば一覧を表示して
/loop 20m /review-pr 1234
3つ目の例のように、他のコマンドやスキルを/loopから呼び出すこともできます。/review-pr 1234が20分ごとに自動実行されます。
ワンショットリマインダー
繰り返しではなく一度だけの通知がほしい場合は、/loopを使わず自然言語で指示します。
3時にリリースブランチをプッシュするようリマインドして
45分後にインテグレーションテストが通ったか確認して
Claudeがcron式で実行時刻を設定し、1回実行後に自動削除します。
タスクの管理
自然言語で一覧表示やキャンセルができます。
今のスケジュールタスクを一覧表示して
デプロイ監視のジョブをキャンセルして
内部的には以下の3つのツールが動いています。
| ツール | 役割 |
|---|---|
CronCreate |
新しいタスクを作成する。cron式、プロンプト、繰り返し/ワンショットを指定 |
CronList |
スケジュール済みタスクの一覧を表示する |
CronDelete |
IDを指定してタスクをキャンセルする |
各タスクには8文字のIDが付与されます。セッションあたり最大50タスクまで保持できます。
Desktop版のスケジュールタスク
CLI版の/loopはセッション内で完結しますが、Desktop版ではGUIからより永続的なスケジュールタスクを設定できます。
タスクの作成
サイドバーの「Schedule」から「+ New task」をクリックし、以下のフィールドを設定します。
| フィールド | 説明 |
|---|---|
| Name | タスクの識別名。ケバブケースに変換されディスク上のフォルダ名になる |
| Description | タスク一覧に表示する短い説明 |
| Prompt | タスク実行時にClaudeへ送られる指示 |
| Frequency | 実行頻度(Weekly / Weekdays / Daily / Hourly / Manual) |
自然言語での作成もできます。
毎朝9時にコードレビューを実行するタスクを設定して
実行頻度
| 頻度 | 説明 |
|---|---|
| Weekly | 時刻と曜日を選択 |
| Weekdays | 平日のみ(土日除く) |
| Daily | 時刻を選択(デフォルト9:00 AM) |
| Hourly | 毎時実行 |
| Manual | 手動実行のみ。プロンプトの保存用途 |
ピッカーにない頻度(15分ごと、月初など)は、自然言語でClaudeに設定を依頼できます。
実行の仕組み
Desktop版のスケジュールタスクには、CLI版にはないいくつかの特徴があります。
- タスクはローカルマシンで実行される(アプリが起動中かつPCがスリープしていない場合)
- 実行時にデスクトップ通知が表示され、サイドバーに新しいセッションとして表示される
- タスク間のAPI負荷を分散するため、最大10分の固定オフセットが入る(タスクごとに決定論的に算出され、毎回同じ遅延になる)
- 直近7日以内のミスしたタスクは、復帰時に1回だけキャッチアップ実行される
9時にスケジュールしたタスクが、PCスリープの影響で23時に実行される場合もあります。時刻に依存する処理では、プロンプト内にガードレールを入れておくと安全です。
例: 「今日のコミットだけレビューして。17時を過ぎていたらスキップして」
権限の管理
スケジュールタスクには個別の権限モードを設定できます。Ask モードで実行中に未許可のツールが必要になるとタスクが停止し、承認を待ちます。
初回実行時に「Run now」で手動実行し、権限プロンプトで「always allow」を選んでおくと、以降の実行がスムーズになります。
技術的な詳細
cron式
CronCreateは標準的な5フィールドcron式を受け付けます。
分 時 日 月 曜日
| 例 | 意味 |
|---|---|
*/5 * * * * |
5分ごと |
0 * * * * |
毎時0分 |
0 9 * * * |
毎日9時 |
0 9 * * 1-5 |
平日9時 |
30 14 15 3 * |
3月15日 14:30 |
ワイルドカード(*)、ステップ(*/15)、範囲(1-5)、カンマ区切り(1,15,30)に対応しています。時刻はすべてローカルタイムゾーンです。
L、W、?やMON、JANのようなエイリアスには対応していません。
ジッター
大量のセッションが同時にAPIを叩くことを防ぐため、小さなオフセットが加えられます。
- 繰り返しタスク: 周期の最大10%(上限15分)の遅延
- ワンショットタスク: 正時・30分ちょうどの場合、最大90秒の前倒し
オフセットはタスクIDから決定論的に算出されます。同じタスクは常に同じオフセットです。
3日間の有効期限
CLI版の繰り返しタスクは、作成から3日後に自動で失効します。忘れたループが延々と動き続けることを防ぐ安全策です。長期間の繰り返しにはDesktop版かGitHub Actionsを使います。
CLI版 vs Desktop版の使い分け
| 観点 | CLI /loop
|
Desktop スケジュールタスク | GitHub Actions |
|---|---|---|---|
| 永続性 | セッション終了で消滅 | 設定は持続(実行はアプリ起動中のみ) | 永続 |
| 設定方法 | コマンド1行 | GUI / 自然言語 | YAMLファイル |
| 最大期間 | 3日間 | 制限なし | 制限なし |
| ミス時のキャッチアップ | なし | 7日以内なら1回 | なし |
| 適したユースケース | ビルド監視、PR確認 | 日次レビュー、定期レポート | CI/CD、無人実行 |
実践的な活用パターン
パターン1: デプロイ後の動作監視
/loop 5m ステージング環境のヘルスチェックエンドポイントを叩いて、
ステータスコードが200以外なら詳細を報告して。
200が3回連続したらこのループを停止して。
パターン2: PRの自動レビュー
Desktop版で以下のようなスケジュールタスクを作成します。GitHubコネクタの設定と適切な権限の付与が前提です。
GitHubで自分がアサインされているオープンPRを確認して、
新しいコミットがあればコードレビューを実施して。
セキュリティ上の問題や明らかなバグがあればコメントを残して。
パターン3: 依存関係の定期チェック
package.jsonの依存関係をチェックして、
セキュリティアドバイザリが出ているパッケージがあれば一覧にして。
重大度がhigh以上のものだけ報告して。
制限事項
スケジュールタスクにはいくつかの制約があります。
- CLI版はセッション終了で消滅する。ターミナルを閉じると全タスクがキャンセルされる
- Claude Codeが応答中のとき、タスクは現在のターンが終わるまで待機する
- ミスした実行のキャッチアップは行われない(CLI版)。Desktop版は7日以内のミスに対して1回だけ実行する
- セッション再起動で全タスクがクリアされる(CLI版)
スケジュールタスクを完全に無効化したい場合は、環境変数を設定します。
export CLAUDE_CODE_DISABLE_CRON=1
まとめ
スケジュールタスク機能は、「数分おきに同じ確認をする」地味だけど時間を取られる作業を解消してくれます。
- 手軽に試すなら → CLI版の
/loop - 日常的に使うなら → Desktop版のスケジュールタスク
- 無人で回すなら → GitHub Actions
/loop 5m テストを実行して結果を教えてのような使い方から試してみてください。セッション内で完結するので気軽です。