> ## Documentation Index
> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Claude をゴールに向かって動作させ続ける

> /goal でコンプリーション条件を設定すると、Claude はターン間でプロンプトなしに条件が満たされるまで動作し続けます。

<Note>
  `/goal` には Claude Code v2.1.139 以降が必要です。
</Note>

`/goal` コマンドはコンプリーション条件を設定し、Claude はあなたが各ステップをプロンプトすることなく、その条件に向かって動作し続けます。各ターンの後、小さく高速なモデルが条件が成立しているかどうかをチェックします。成立していない場合、Claude はあなたに制御を返す代わりに別のターンを開始します。条件が満たされると、ゴールは自動的にクリアされます。

実質的な作業で検証可能な終了状態がある場合にゴールを使用します。

* モジュールを新しい API に移行し、すべてのコールサイトがコンパイルされてテストが成功するまで
* デザインドキュメントを実装し、すべての受け入れ基準が満たされるまで
* 大きなファイルをフォーカスされたモジュールに分割し、各モジュールがサイズ予算以下になるまで
* ラベル付きの問題バックログを処理し、キューが空になるまで

<h2 id="compare-ways-to-keep-a-session-running">
  セッションを実行し続ける方法の比較
</h2>

3 つのアプローチが、プロンプト間で現在のセッションを実行し続けます。次のターンを開始するべき内容に基づいて選択します。

| アプローチ                                                               | 次のターンが開始される時期 | 停止する時期                         |
| :------------------------------------------------------------------ | :------------ | :----------------------------- |
| `/goal`                                                             | 前のターンが終了する    | モデルが条件が満たされたことを確認する            |
| [`/loop`](/ja/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop) | 時間間隔が経過する     | あなたが停止するか、Claude が作業が完了したと判断する |
| [Stop hook](/ja/hooks-guide#prompt-based-hooks)                     | 前のターンが終了する    | あなた自身のスクリプトまたはプロンプトが判断する       |

`/goal` と Stop hook は両方とも、すべてのターンの後に実行されます。`/goal` はセッションスコープのショートカットです。条件を入力すると、現在のセッションでのみアクティブになります。Stop hook はあなたの設定ファイルに存在し、そのスコープ内のすべてのセッションに適用され、決定論的なチェックのためにスクリプトを実行するか、モデルで評価されたチェックのためにプロンプトを実行できます。

[自動モード](/ja/auto-mode-config)は、単一のターン内でツール呼び出しを承認しますが、新しいターンを開始しません。Claude は作業が完了したと判断すると停止します。`/goal` は、すべてのターンの後にあなたの条件をチェックする別の評価器を追加するため、コンプリーションは作業を行っているモデルではなく、新しいモデルによって決定されます。この 2 つは相互に補完的です。自動モードはツールごとのプロンプトを削除し、`/goal` はターンごとのプロンプトを削除します。

<Tip>
  上記のアプローチは、現在のセッションを実行し続けます。また、夜間テストや朝のトリアージなど、開いているセッションとは無関係に実行される作業をスケジュールすることもできます。クラウドルーチンとデスクトップスケジュール済みタスクについては、[スケジューリング オプション](/ja/scheduled-tasks#compare-scheduling-options)を参照してください。
</Tip>

<h2 id="use-/goal">
  `/goal` を使用する
</h2>

セッションごとに 1 つのゴールがアクティブになります。同じコマンドが引数に応じてゴールを設定、確認、およびクリアします。

<h3 id="set-a-goal">
  ゴールを設定する
</h3>

`/goal` の後に、満たしたい条件を実行します。ゴールが既にアクティブな場合、新しいゴールがそれを置き換えます。

```text theme={null}
/goal all tests in test/auth pass and the lint step is clean
```

ゴールを設定すると、条件自体をディレクティブとしてターンが直ちに開始されます。別のプロンプトを送信する必要はありません。ゴールがアクティブな間、`◎ /goal active` インジケーターがゴールの実行時間を表示します。

各ターンの後、評価器は条件が満たされているかどうかを説明する短い理由を返します。最新の理由はステータス ビューとトランスクリプトに表示されるため、Claude が次に何に向かって動作しているかを確認できます。

<Note>
  ゴールは条件が満たされるか、`/goal clear` を実行するまで実行され続けます。引数なしで `/goal` を実行して、これまでに費やされたターンとトークンを確認します。
</Note>

<h3 id="write-an-effective-condition">
  効果的な条件を作成する
</h3>

[評価器](#how-evaluation-works)は、Claude が会話で表示した内容に対して条件を判断します。独立してコマンドを実行したりファイルを読み取ったりしないため、Claude 自身の出力が実証できるものとして条件を作成します。「`test/auth` のすべてのテストが成功する」は、Claude がテストを実行し、結果がトランスクリプトに表示されるため、評価器が読み取ることができるため、機能します。

多くのターンにわたって成立する条件には、通常以下が含まれます。

* **1 つの測定可能な終了状態**：テスト結果、ビルド終了コード、ファイル数、空のキュー
* **述べられたチェック**：Claude がそれをどのように証明すべきか、例えば「`npm test` が 0 で終了する」または「`git status` がクリーンである」
* **重要な制約**：その過程で変更されてはならないもの、例えば「他のテスト ファイルは変更されない」

条件は最大 4,000 文字です。

ゴールの実行時間を制限するには、条件に `or stop after 20 turns` などのターンまたは時間句を含めます。Claude はその句に対する進捗を各ターンで報告し、評価器は会話から判断します。

<h3 id="check-status">
  ステータスを確認する
</h3>

引数なしで `/goal` を実行して、現在の状態を確認します。

```text theme={null}
/goal
```

ゴールがアクティブな場合、ステータスは以下を表示します。

* 条件
* 実行時間
* 評価されたターン数
* 現在のトークン支出
* 評価器の最新の理由

ゴールがアクティブではないが、セッションの前半で達成された場合、ステータスは達成された条件とその期間、ターン数、およびトークン支出を表示します。

<h3 id="clear-a-goal">
  ゴールをクリアする
</h3>

`/goal clear` を実行して、条件が満たされる前にアクティブなゴールを削除します。

```text theme={null}
/goal clear
```

`stop`、`off`、`reset`、`none`、および `cancel` は `clear` のエイリアスとして受け入れられます。`/clear` を実行して新しい会話を開始すると、アクティブなゴールも削除されます。

<h3 id="resume-with-an-active-goal">
  アクティブなゴールで再開する
</h3>

セッションが終了したときにまだアクティブだったゴールは、`--resume` または `--continue` でそのセッションを再開すると復元されます。条件は引き継がれますが、ターン数、タイマー、およびトークン支出ベースラインはすべて再開時にリセットされます。既に達成またはクリアされたゴールは復元されません。

<h3 id="run-non-interactively">
  非対話的に実行する
</h3>

`/goal` は[非対話的モード](/ja/headless)、[デスクトップ アプリ](/ja/desktop)、および[リモート コントロール](/ja/remote-control)で機能します。`-p` でゴールを設定すると、ループが単一の呼び出しで完了まで実行されます。

```bash theme={null}
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
```

Ctrl+C でプロセスを中断して、条件が満たされる前に非対話的なゴールを停止します。

<h2 id="how-evaluation-works">
  評価の仕組み
</h2>

`/goal` は、セッションスコープの[プロンプトベースの Stop hook](/ja/hooks#prompt-based-hooks)のラッパーです。Claude がターンを終了するたびに、条件と会話がこれまでのところ、あなたが設定した[小さく高速なモデル](/ja/model-config)に送信されます。デフォルトは Haiku です。モデルはイエスまたはノーの決定と短い理由を返します。「ノー」は Claude に動作を続けるよう指示し、次のターンのガイダンスとして理由を含めます。「イエス」はゴールをクリアし、トランスクリプトに達成されたエントリを記録します。

評価器は、セッションが設定されているプロバイダーで実行されます。ツールを呼び出さないため、Claude が既に会話で表示した内容のみを判断できます。

<Note>
  評価トークンは、プロバイダー用に設定された小さく高速なモデルで課金され、通常はメインターン支出と比べて無視できます。
</Note>

<h2 id="requirements">
  要件
</h2>

`/goal` は、評価器がフック システムの一部であるため、信頼ダイアログを受け入れたワークスペースでのみ実行されます。[`disableAllHooks`](/ja/hooks#disable-or-remove-hooks) がいずれかの設定レベルで設定されている場合、または [`allowManagedHooksOnly`](/ja/settings#hook-configuration) が管理設定で設定されている場合、`/goal` は利用できません。どちらの場合も、コマンドは何もしないのではなく、理由を伝えます。

<h2 id="see-also">
  関連項目
</h2>

* [プロンプトを `/loop` で繰り返し実行する](/ja/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop)：条件が成立するまでではなく、時間間隔で再実行する
* [プロンプトベースの hook](/ja/hooks-guide#prompt-based-hooks)：カスタム評価ロジックが必要な場合は、独自の Stop hook を作成する
* [自動モード](/ja/auto-mode-config)：ツール呼び出しを自動的に承認して、各ゴール ターンが無人で実行されるようにする
* [スケジューリング比較](/ja/scheduled-tasks#compare-scheduling-options)：開いているセッションとは無関係にスケジュールで作業を実行する
