メインコンテンツへスキップ
Kanau Tech™ - かなうテック
← ブログ一覧に戻る
AI開発ツール

Claude Code /goal 完了条件の書き方 — 5つのベストプラクティス【Haiku評価器対応】

2026-05-22by DO XUAN HIEN
Claude Code /goal 完了条件の書き方 — 5つのベストプラクティス【Haiku評価器対応】

/goal のアウトプットの質は、ほぼ完了条件の書き方で決まる。Haiku評価器は会話ログだけを読んで判定するため、「ログを見れば30秒で確認できる」レベルの具体性が必要だ。

5つのベストプラクティスを順に解説する。

完了条件とは

完了条件とは、Haiku評価器が「達成された」と判定するために必要な観測可能な証拠を1文で記述したものだ。

/goal の各ターン後、評価器は会話ログを読んでこの条件と照合する。条件が曖昧だと2種類の失敗で終わる:

  • Claudeが「何をもって完了か」を判断できずに同じ作業を繰り返す
  • 評価器が証拠のないまま「完了した」と誤判定する

どちらもトークンの無駄遣いで、作業は進まない。

1. 観測可能な動詞を使う

「きれいにする」「整える」「いい感じにする」のような主観的動詞は評価不能だ。ログに痕跡が残る動作動詞を選ぶ。

❌ 評価不能✅ 観測可能
コードをきれいにするlint エラーが0件になる
テストを整えるnpm test が exit 0 で完了する
ドキュメントを更新するCHANGELOG.md に該当エントリが追加される
パフォーマンスを改善するLighthouse スコアが90以上になる

2. ログから検証できる証拠を要求

評価器は「会話ログの中の証拠」を頼りに判定する。ファイルやログから30秒で確認できる証拠を条件に含める。

# ✅ ログに証拠が残る
/goal coverage.json に total>=80 が記録される
/goal git log --oneline でCHANGELOG関連コミットが確認できる
/goal docs/api.md に POST /users の説明が存在する

# ❌ 証拠が曖昧
/goal カバレッジを改善する
/goal 変更履歴を追加する
/goal API仕様を書く

裁判の証拠のように考えると判断が楽だ。「この条件が満たされた証拠が、会話ログのどこに、どんな形で存在するか」を一文で書ければ良い条件である。

3. 否定形を「do not」ブロックに分離する

完了条件に否定形(〜しない、〜避ける)を混ぜると評価器が混乱する。肯定形だけを done when に置き、否定形は do not ブロックに分離する。

/goal test/auth のテストがすべて通る

context:
src/auth/ 配下の認証モジュールをリファクタリング中

done when:
- test/auth/ 全テストが exit 0 で完了
- coverage が80%以上

do not:
- migrations/ フォルダは触らない
- 既存のAPIエンドポイントの引数を変更しない
- node_modules を変更しない

評価器は done when の条件だけを判定し、do not は Claude本体への指示として効く。

4. progress.md 進捗追跡を必ず指示

長時間の実行では、Claudeが前のターンで何を決定したかを忘れ始め、矛盾した行動を取ることがある。 1時間を超えるタスクでは特に顕著だ。

progress tracking:
completed steps を progress.md に随時記録すること
各ステップに完了時刻・採用した判断・残課題を3行で書く

これを完了条件に組み込むと、progress.md外部メモリとして機能し、実行全体の一貫性が保たれる。

さらに複数時間かかる作業では plan.md(開始前の方針)と decisions.md(なぜその選択をしたか)を追加すると安定する。

5. タイムアウト・上限を併記する

「条件が満たされなくても止まる」安全装置を必ず付ける。

# Nターン上限
/goal test/auth が全件通過する状態, or stop after 10 turns

# 時間上限
/goal リファクタリング完了, or stop after 30 minutes

# 両方
/goal coverage>=80, or stop after 15 turns or 20 minutes

ターン上限なしの /goal は理論上無限ループに陥り得る。Haiku評価器のトークン消費は1ターンあたり数百円分のごく一部だが、暴走させればすぐ100倍規模になる。

📘 コスト爆発の回避戦略は 自律実行のループ&コスト爆発を回避する戦略 を参照。

5つを統合した完全形プロンプト

実務で使う完全形を載せておく。コピペして条件部分だけ書き換えれば即使える。

/goal [達成したいゴール、1文、観測可能な動詞]

context:
[プロジェクトの構成・使用技術・今回の作業背景]

done when:
- [測定可能な完了条件1(ログから検証可能)]
- [測定可能な完了条件2]

do not:
- [触らないファイル・避けるべきアプローチ]

progress tracking:
completed steps を progress.md に随時記録すること

最大10ターンまで、または30分以内に達成すること

よくある質問

完了条件は何文字以内が適切ですか?

公式仕様では条件は最大4,000文字。実務的には1-3文・合計200字以内が読みやすく、長すぎると評価器が要点を見失う。複雑なタスクは Kanau Tech 推奨の4ブロック構造(context / done when / do not / progress tracking)でテンプレ化すると安定する。

「テストが全部通る」は良い完了条件ですか?

不十分だ。「test/auth のテストがすべて通り、npm test が exit 0 で完了する」のように、対象スコープと検証コマンドを明示すべきだ。評価器はログの中に exit code 0 を確認できれば100%確信して停止できる。

否定形(〜しない)はどう書くべきですか?

完了条件には書かず、do not ブロックに分離する。例:done when:「テスト全件通過」、do not:「migrations/フォルダは触らない」。これで評価器は「何が達成されたか」だけを判定すればよくなる。

評価器が誤判定したらどうしますか?

完了条件にもう1つ「証拠」を追加する。例:「テスト通過 + coverage.json の totalが80以上」。複数の独立した証拠を要求することで誤判定率は劇的に下がる。

複数条件を and/or で結合できますか?

可能だ。done when ブロックに箇条書きで並べると and として扱われる。or が必要な場合は「Aが達成、または Bが達成」と明示的に書く。ただし条件は単一の方が安定するため、可能なら or は避けてほしい。

関連記事

参照

御社のDX力、3分でチェックしませんか?

10問の簡単な質問でIT基盤・業務デジタル化・AI活用度を無料診断。改善のヒントもわかります。

無料DX診断を受ける →