nzw.jp トップへ

Loop Engineering Field Guide

ループエンジニアリング実践ガイド

2026年、AI コーディングの主戦場は「良いプロンプトを書くこと」から 「エージェントにプロンプトを出し続ける仕組みを設計すること」へ移りました。 これが Loop Engineering(ループエンジニアリング)です。 本ページは、その解剖・自律レベル・実装レシピ・停止条件・コスト・そして最大のリスクである「理解の負債」までを、 一次情報に当たって整理したものです。後半には、ループの中身として使うプロンプト23本を収録しています。

このページの検証ステータス

事実関係

検証済

ループエンジニアリングの由来・構成要素・コマンド仕様は、原典(Addy Osmani)・リファレンス実装・Claude Code 公式ドキュメントに当たって確認しました。裏が取れなかった主張は本文で「未検証」と明記しています。

論理の一貫性

整合

「単一の生成の中に検証を閉じ込めない」という前提と、ループ設計の方針(実装者と検証者を分ける)・掲載プロンプトの設計は一貫させています。

情報の網羅性

部分的

ループの実装例は Claude Code を中心にしています。Codex / Cursor / Devin などの同等機能には触れていますが、実機で検証したものではありません。

偏りの有無

偏りあり

Anthropic / OpenAI / GitHub という提供元自身の発信を多く含みます。「ループは有効だ」という結論に有利な情報が集まりやすい構造にあります。

確信度:ループエンジニアリングという設計思想の妥当性については約 85%です。 一方で「導入すれば生産性が何%上がる」という定量効果は測定していません(推測を含みます)。 公開されている効果報告は個人・小規模チームの体験談が中心で、対照実験による裏付けは確認できていません。 むしろ本ページでは、効果よりも副作用(理解の負債)のほうが定量的に測られているという現状を重視しています。

なぜ「プロンプトの次」がループなのか

2026年6月、ある投稿がきっかけで「もう自分でプロンプトを打っていない」という話が一気に広がりました。 Google の Addy Osmani がこれを Loop Engineering という名前で整理し、用語として定着します。 中心にあるのは、Anthropic で Claude Code を率いる Boris Cherny の一言です。

“I don't prompt Claude anymore. I have loops running that prompt Claude.”

(もう Claude にプロンプトを打っていない。Claude にプロンプトを打つループを走らせている)— Boris Cherny, Anthropic

これは自動化の自慢話ではなく、設計対象が変わったという宣言です。 プロンプトを書く人間が、プロンプトを書くシステムの設計者に移動しました。 これまでの流れに並べると、位置がはっきりします。

Layer 01Prompt Engineering

設計対象:1回のプロンプト文。人間の関与:ターンごとに必須。状態:持たない。

「どう話しかけるか」の設計。良い指示を書けば良い出力が返る、という前提に立ちます。

Layer 02Context Engineering

設計対象:モデルに見せる情報の構成。人間の関与:応答ごとに必須。状態:セッション内。

「何を見せるか」の設計。プロンプトの巧拙より、渡す文脈の質と量が効くと分かってきた段階です。

Layer 03Harness Engineering

設計対象:モデルを取り囲む足場(ツール・権限・フック・フィードバック)。状態:セッション内。

「何をさせられるか」の設計。テストを走らせる権限、失敗を返す経路、禁止する操作。ここまでは、まだ人間が起動します。

Layer 04Loop Engineering

設計対象:起動・実行・検証・停止を含むシステム全体。人間の関与:例外と承認ゲートのみ。状態:セッションをまたいでディスクに残す。

「いつ・何をきっかけに・誰が起動し、どうなったら止まるか」の設計。人間がループの中から出て、ループの外側に立ちます。

重要なのは、下の層が不要になるわけではないことです。 ループの1周ごとに実行されるのは、結局プロンプトです。 ループが速く回るほど、中身の粗さは増幅されて出てきます。 だから本ページは、Part 1 でループの器を、Part 2 でその中身を扱います。

ReAct との違い

「推論して行動する」というエージェントの1サイクル(ReAct)は以前から定義されていました。 ループエンジニアリングが新しいのは、そのサイクルを何が起動し、複数のサイクルをどう統治するかという一段上のレイヤを扱う点です。 1周の賢さではなく、何周まわしてよいか・どこで止めるか・誰が採点するかが設計対象になります。

ループの解剖:6つの部品

Osmani の原典は、ループを5つの部品に分解し、そこに「記憶」を足しています。 道具の名前は環境によって変わりますが、この6つのどれかが欠けているループは、必ずそこで壊れます

部品 役割 欠けるとどうなるか Claude Code での実体
1. トリガー
(Automations)
ループを起動する。定時、イベント、条件のいずれか。 結局あなたが起動する。それはループではなく、いつもの作業。 /loop、Routines(クラウド定期実行)、GitHub Actions の schedule
2. 隔離
(Worktrees)
試行を本流から切り離す。並列実行でファイルが衝突しないようにする。 失敗した試行が作業ツリーを汚す。並列にすると壊れる。 claude --worktree <name>、サブエージェントの isolation: worktree
3. 知識
(Skills)
プロジェクト固有の手順を、毎回説明しなくてよい形で外に置く。 毎周ゼロから説明することになり、周回ごとに品質がぶれる。 SKILL.md.claude/skills/)、CLAUDE.md
4. 接続
(Plugins / MCP)
チケット、CI、Slack など、外の世界の状態を読み書きする。 ループが自分の出力しか見られず、現実とずれたまま回り続ける。 MCP サーバ、GitHub App、コネクタ
5. 分離
(Sub-agents)
実装する主体と検証する主体を分ける(Maker–Checker)。 自分の宿題を自分で採点する。ループが速いほど、誤りが速く積み上がる。 .claude/agents/ のサブエージェント定義、編集権限を与えないレビュー役
6. 記憶
(Memory / State)
周回をまたいで「どこまでやったか」を残す。会話の中ではなくディスクに置く。 毎周やり直す、あるいは同じ修正を何度も当てる。 STATE.md などのファイル、git 履歴、Issue / PR 本体

6番の「記憶」がいちばん軽視されます。 エージェントは忘れますが、リポジトリは忘れません。進捗はコンテキストではなくファイルに置く、というのがループ設計の第一原則です。

この6つを1周の流れに並べると、こうなります。

01 TRIGGER

起動する

定時/イベント/前周の未達。人間の気分では起動しない。

02 CONTEXT

状態を読む

STATE.md・git・CI ログ。前周が何を残したかを先に読む。

03 ACT

実装する

隔離された worktree の中で1件だけ手を入れる。

04 VERIFY

検証する

別エージェント+機械的判定(テスト・ビルドの終了コード)。

05 RECORD

記録する

結果と未達をディスクに書く。会話の中に残さない。

06 DECIDE

止めるか、もう1周か

達成/試行上限/コスト上限のいずれかで必ず止まる。

HUMAN

人間のゲート

承認・例外処理・週次の読み合わせ。ここを空にするとループは壊れる。

自律レベル L1 → L2 → L3

ループ導入の失敗はほぼ全部、最初から L3(無人運用)を狙うことから起きます。 リファレンス実装では、自律度を3段階に切って、実績が出た分だけ上げていく進め方が推奨されています。 L3 はゴールではなく、条件を満たしたときにだけ選べる選択肢です。

L1

報告だけ(Report)

ループは読むだけ。書き込みも修正もしない。出すのは「見つけたこと」の一覧のみ。

  • 失敗しても被害ゼロ
  • ここで指摘の精度を測る
  • 誤検知率が下がるまで居座ってよい
  • トークン消費も小さい
L2

修正案まで(Assisted)

ループが修正を作るが、適用は人間の承認が要る。PR を開くところまで。

  • マージは必ず人間
  • 変更できるパスを allowlist で縛る
  • 試行回数の上限を必ず置く
  • ここが実務上の着地点になることが多い
L3

無人運用(Unattended)

拒否リスト外は自動で実行・マージまで。止めるのは機械的な条件だけ。

  • 検証器がほぼ完璧である場合のみ
  • ロールバック手段が用意されていること
  • 日次コスト上限と自動停止が必須
  • 週次で人間が読む義務とセット

L3 に上げる前に自問する1つの質問

「このループが静かに間違い続けたとして、何周目で気づけるか」—— これに数字で答えられないなら、まだ L2 です。 自動化は品質保証ではありません。検証器が弱いままループを速くすると、速度がそのまま被害の大きさになります。

推奨されるロールアウト速度は、想像よりずっと遅いものです。 1〜2週目は L1 で精度を測り、3〜4週目に小さな自動修正で L2、L3 は2ヶ月目以降に条件を満たした場合のみ。 これはツールの制約ではなく、あなたが誤検知率を実測するのに必要な時間です。

実装レシピ:6段階でループを組む

自律度が低い順に並べています。Step 1 から順に上げてください。 いきなり Step 5・6 から入ると、停止条件の設計を飛ばすことになります。 以下は Claude Code の実際のコマンドで書いていますが、考え方はどのエージェントでも同じです。

手元の while ループで回す

最小構成。停止条件を自分の手で書くところから始めるのが目的です。ここで MAX_ATTEMPTS を書かない癖がつくと、後段でコストが暴走します。

自律度 最小検証済公式ドキュメント / 実践記事
#!/usr/bin/env bash
set -uo pipefail   # -e は付けない(テスト失敗で即死してループが回らない)

MAX_ATTEMPTS=3
for i in $(seq 1 "$MAX_ATTEMPTS"); do
  echo "=== attempt $i / $MAX_ATTEMPTS ==="

  # テスト結果は変数で受ける(パイプで即終了させない)
  OUT="$(npm test 2>&1)" && { echo "PASS"; exit 0; }

  claude -p "以下のテスト失敗を修正してください。
テストコードは書き換えないでください。原因側を直してください。

$OUT" --max-budget-usd 1.00
done

echo "FAILED after $MAX_ATTEMPTS attempts"
exit 1

/loop でセッション内の定期実行にする

間隔を渡すと cron 式に変換されて定期実行、間隔を省くと Claude が毎回「次はいつ見るか」を自分で決めます(ビルド進行中は短く、静かなら長く)。セッションを閉じると止まります。Esc で即停止、放置しても7日で自動失効します。

自律度 低検証済Claude Code 公式
# 固定間隔で回す
/loop 5m デプロイが完了したか確認して、失敗していたらログを要約して

# 間隔を省く → Claude が状況を見て次の待ち時間を決める(1分〜1時間)
/loop CI が通ったか確認し、レビューコメントがあれば対応して

# スキルをループさせることもできる
/loop 20m /review-pr 1234

.claude/loop.md にプロジェクト既定のループを書く

引数なしの /loop が読む既定プロンプトです。「このリポジトリで暇があったら何をすべきか」をリポジトリ自身に書いておく形になります。編集は次の周回から反映されるので、走らせながら直せます。

自律度 低検証済Claude Code 公式
# .claude/loop.md

現在のブランチの PR を1周分だけ面倒を見てください。優先順に:

1. CI が赤ければ、失敗ジョブのログを取得して原因を diff で示す
   - 修正は最小限にとどめ、テストコードは書き換えない
2. 新しいレビューコメントがあれば、1件ずつ対応してスレッドを解決する
3. マージコンフリクトがあれば、解消案を提示する(自動 push はしない)

すべて緑で静かなら「変化なし」と1行だけ返してください。
状況の要約だけを書き、同じ内容を毎周くり返さないでください。

/goal で「時間」ではなく「条件」で回す

ループには2種類あります。時間で次の周が始まる(/loopのか、条件を満たすまで次の周が始まる(/goalのか。後者は毎ターン後に別の小型モデルが会話を読んで達成判定し、未達なら次のターンを自動で開始します。実体は Stop フックです。

自律度 中検証済Claude Code 公式
/goal test/auth 配下のテストが全て通り、lint が clean であること。
証明方法: `npm test test/auth` と `npm run lint` を実行し、
その出力を会話に貼ること。
制約: test/auth 以外のテストファイルを変更しないこと。
20 ターン経過しても未達なら、残っている失敗を一覧にして停止すること。

判定役はコマンドを実行しません。会話に出てきたものしか見られないので、 「テストが通ること」ではなく「テストを実行し、その出力を会話に貼ること」まで条件に書くのが要点です。 終わりの見えないループを避けるため、条件文の中にターン数の上限を入れておきます。

Maker–Checker に割る(いちばん効く1手)

実装したエージェント自身にレビューさせない、という構造上の分離です。検証役に編集権限を与えないことで、「テストのほうを書き換えて緑にする」という抜け道を仕組みで塞げます。ある並列エージェント事例では「検証器はほぼ完璧でなければならない。さもないと間違った問題を解いてしまう」と報告されています。

自律度 中検証済Claude Code 公式 / 原典
# .claude/agents/checker.md
---
name: checker
description: 変更を書いていない第三者として差分を検証する。実装は一切しない。
tools: Read, Grep, Glob, Bash
isolation: worktree
---

あなたはこの変更を書いていません。実装の意図は聞かされていません。
差分と、テストの実行結果だけを根拠に判定してください。

必ず実行すること:
1. テストスイートを実行し、出力をそのまま貼る
2. 差分の範囲が指示されたスコープに収まっているかを確認する

出力は次の3つだけ:
- VERDICT: PASS / FAIL
- EVIDENCE: 実行したコマンドとその出力
- BLOCKERS: FAIL の場合、直すべき箇所(path:行)と理由

コードは編集しないでください。「たぶん動く」は PASS にしないでください。
指摘が無い場合は無理に作らず、BLOCKERS: なし と書いてください。

セッションの外に出す(クラウド定期実行 / GitHub Actions)

ここから先はあなたの端末が閉じていても回ります。だからこそ、停止条件・予算上限・権限の allowlist が揃っていることが前提です。クラウド定期実行は最短1時間間隔、ローカルの端末側スケジュールやセッション内 /loop は最短1分間隔という違いがあります。

自律度 高検証済Claude Code 公式
# 定番の第一歩: 朝のトリアージを L1(報告のみ)で常駐させる

平日の朝9時に、次を毎日実行してください(読むだけ。修正はしないこと)。

1. 昨日以降に失敗した CI ジョブを一覧化する
2. 失敗を「テストの問題 / 実装の問題 / 環境の問題」に分類する
3. 分類ごとに、最も疑わしいファイルを path:行番号 で1件だけ挙げる
4. 判断できないものは「不明」に置く(推測で埋めないこと)

出力は10行以内。前日と変化がなければ「変化なし」の1行だけ返すこと。
コードの変更、ブランチの作成、PR の作成は一切しないこと。

並列で回すなら、隔離は必須

複数のループを同時に走らせる時点で、ファイルの衝突が最初の障害になります。 worktree はブランチと作業ディレクトリを分けるので、片方が壊れてももう片方に波及しません。 サブエージェント側に isolation: worktree を書いておけば、その役は常に隔離された場所で動きます。 .env のような gitignore 済みファイルは .worktreeinclude に書いておかないと持ち込まれない点に注意してください。

ループ設計テンプレート(コピー可)

ここから先は、ループそのものを定義するためのテンプレートです。 Part 2 のプロンプト集が「1周の中身」なのに対して、こちらは「ループの器」を書くためのものです。 [ ] を自分の状況に置き換えて使ってください。

ループ設計検証済原典 / リファレンス実装

L01. ループ憲章:走らせる前に埋める1枚

ループを書く前に、止まり方から先に決めます。この6項目が埋まらないループは、走らせてはいけないと考えて構いません。埋められない項目があること自体が、まだそのタスクがループ向きでない証拠です。

# LOOP.md — [ループ名]

## 1. 目的(一文で)
[このループが解決する、週1回以上くり返し発生する作業]

## 2. トリガー
[定時 / イベント / 前周の未達] — 頻度: [  ]

## 3. スコープ
- 触ってよいパス: [  ]
- 絶対に触らないパス: [ migrations/ , infra/ , .github/workflows/ など ]
- 作ってよい成果物: [ PR まで / コミットまで / 報告のみ ]

## 4. 検証(機械的に合否が返るもの)
- コマンド: [ npm test / pytest / build ]
- 合格条件: [ 終了コード 0 かつ 既存テストが1件も落ちない ]
- 検証役: [ 編集権限を持たない別エージェント ]

## 5. 停止条件(3つ全部書く)
- 達成: [ 上記の合格条件を満たした ]
- 試行上限: [ 3回 ]
- 予算上限: [ 1日 $X / 1周 $Y ]

## 6. 自律レベル
- 現在: [ L1 報告のみ ]
- 次に上げる条件: [ 2週間の誤検知率が X% 以下 ]
- 上げる判断をする人: [  ]

## 7. 人間のゲート
- 承認が必要な操作: [ マージ / push / 依存追加 ]
- 週次で読む担当: [  ]
ループ設計検証済原典 / 実践記事

L02. 周回をまたぐ記憶(STATE.md)の書式を固定する

ループが迷子になる原因のほとんどは、前周が何をしたかを覚えていないことです。会話ではなくファイルに、しかも書式を固定して残させます。書式を決めないと、STATE.md が肥大化して逆にコンテキストを食い始めます。

各周回の最後に、必ず STATE.md を以下の書式で「上書き」してください。
追記はしないでください(肥大化を防ぐため、常に最新状態だけを保つ)。

# STATE
- 最終更新: [YYYY-MM-DD HH:MM]
- 周回数: [n]
- ステータス: [ IN_PROGRESS / BLOCKED / DONE ]

## 完了したこと(最大5件・古いものから捨てる)
- [  ]

## 次の1手(1件だけ)
- [  ]

## ブロッカー
- [ 無ければ「なし」 ]

## 触ってはいけないと判断した箇所
- [ path:行 — 理由 ]

制約:
- 「頑張ります」「確認中です」のような進捗のない記述は書かないこと
- 前周と状況が変わっていない場合は「変化なし」とだけ書き、他を書き換えないこと
- 推測を STATE に書かないこと。確認した事実だけを書くこと
ループ設計検証済Claude Code 公式 / 実践記事

L03. 検証役への指示(採点者を甘くしない)

ループの品質は検証役の厳しさで決まります。実装役に厳しさを求めても効きません。検証役には「実行結果しか信じるな」「疑わしきは FAIL」を明示します。疑わしいものを PASS にするコストのほうが、FAIL にするコストより高いためです。

あなたはこの変更を書いていない検証役です。コードは編集できません。

判定の材料にしてよいもの:
- 実際に実行したコマンドとその出力
- 差分そのもの

判定の材料にしてはいけないもの:
- 実装者の説明・意図・コミットメッセージ
- 「おそらく動く」「一般的にはこうする」という一般論

必ず次の順で実施してください:
1. [テストコマンド] を実行し、出力をそのまま貼る
2. 差分が [許可されたパス] の外に出ていないか確認する
3. テストが「追加・変更」されている場合、それが仕様の変更なのか
   合格させるための細工なのかを判定する

判定:
- PASS の条件は「1 が終了コード 0」かつ「2 が範囲内」かつ「3 が細工でない」
- 上記のいずれかが確認できない場合は、迷わず FAIL にすること
- 判断がつかない場合も FAIL(UNKNOWN は PASS ではない)

出力は VERDICT / EVIDENCE / BLOCKERS の3項目のみ。
ループ設計経験則本ページの設計

L04. ループの棚卸し(週次レビュー用)

ループの本当のリスクは、失敗ではなく「静かに成功し続けること」です。誰も読まない PR が積み上がっている状態を検出するために、週1回これを走らせます。ループを止める判断材料を、ループ自身に出させるのがねらいです。

直近7日間の [ループ名] の稼働結果を棚卸ししてください。

集計してほしいもの:
1. 起動回数 / 何かを出力した回数 / 人間が承認した回数
2. 出力のうち、実際にマージされたものの割合
3. 誤検知(人間が却下した)の件数と、その内容の傾向
4. 1周あたりの平均トークン消費と、7日間の合計コスト

そのうえで、次の3つを判定してください:
- このループは自律レベルを上げてよいか(根拠は誤検知率の数字で)
- 下げる、または止めるべきか(同上)
- 検証役が見逃していた種類の問題はあったか

最後に、次の質問に答えてください:
「このループが7日間ずっと間違い続けていたとしたら、
 どの時点で誰が気づけたか。気づけないなら、何を足すべきか」

数字が取れない項目は「計測していない」と書いてください。推定値で埋めないでください。
ループ設計経験則本ページの設計 / Anthropic 研究

L05. 理解の負債を返す(週次の読み合わせ)

ループが生んだコードのうち、自分が説明できないものを特定するためのプロンプトです。後述の Anthropic の研究では、理解度が保てた層は「生成させたあとに追加で質問していた」ことが分かっています。これはその質問を、仕組みとして毎週入れるものです。

今週 [ループ名] がマージした変更を対象に、私の理解度を点検してください。

1. 変更されたファイルを、影響の大きい順に5件挙げてください
2. 各ファイルについて、私に対して次の質問をしてください(回答は私がします)
   - この変更が無かった場合、何が壊れますか
   - この実装を選んだ理由は何ですか。他の選択肢は何でしたか
   - この変更が原因で将来壊れるとしたら、どこが壊れますか

3. 私の回答が曖昧だった箇所を記録し、
   「理解できていない領域」として一覧にしてください

制約:
- 私が答えられなかったことを責めないでください。事実として記録してください
- 私の回答が間違っている場合は、遠慮なく指摘してください
- 私が「大丈夫」と言っても、根拠が示されない限り理解済みに分類しないでください

最後に、この一覧のうち「来週までに自分で読むべき1ファイル」を選んでください。

停止条件とガードレール

ループエンジニアリングで最も設計をサボられるのが、この部分です。 停止条件は後付けの安全装置ではなく、ループの定義そのものです。 止まり方が決まっていないものは、ループではなく暴走です。

種類 何で止めるか 置かないとどうなるか
達成による停止 機械的に判定できる完了条件(テストの終了コード、キューが空、ファイル数)。「良い感じになったら」は停止条件にならない。 永遠に「もう少し良くできる」を繰り返す。
試行回数の上限 MAX_ATTEMPTS=3 程度。3回直して直らないものは、指示か前提のほうが間違っている。 同じ PR に5回・10回と自動修正が積まれ、履歴が失敗の山になる。
予算の上限 1周あたりと1日あたりの両方。--max-budget-usd、CI の timeout-minutes、日次上限の80%で一時停止。 寝ている間にコストが尽きる。ループは高頻度なほど当然に高い。
スコープの上限 触ってよいパスの allowlist。migrations/infra/、CI 設定などは常に対象外に置く。 「テストを通す」ために CI 設定やマイグレーションが書き換わる。
時間による失効 忘れられたループが走り続けないようにする。Claude Code のセッション内スケジュールは7日で自動失効する仕様になっている。 存在を忘れたループが、半年後にトークンを食っていることに気づく。

実装時にハマる小さな罠

bash でループを書くとき、set -epipefail を素直に入れると テストが失敗した瞬間にスクリプト自体が終了して、修正フェーズに到達しません。 テストの終了コードは変数で受け、明示的に分岐させてください(Step 1 のテンプレートはその形にしてあります)。

もう1つ。/loop にスキルを渡す場合、モデルが自分で起動してよいスキルしか実行されません/code-review のようにモデル起動を禁止しているスキルは、ただのテキストとして渡るだけで実行されません。

ループの失敗パターン

リファレンス実装とレポートで、インシデント形式で分類されているものを整理しました。 症状だけ見ると別の問題に見えますが、原因はほとんど「検証」か「停止条件」のどちらかに集約します。

症状 本当の原因 対処
同じ PR に自動修正が5回以上積まれる 検証役が弱く、直っていないのに次の周が始まる 試行上限を3回に。3回で直らないものは人間に上げる
CI が赤いのに検証役が PASS を出す テストを実行せず、差分の見た目だけで判定している 「実行結果を貼ること」を PASS の必須条件にする
テストが緑になったが、テスト側が書き換わっていた 実装役と検証役が同一。自分の宿題を自分で採点している 検証役から編集権限を外す(Maker–Checker)
STATE ファイルが肥大化して精度が落ちる 追記し続けている。剪定の設計が無い 上書き方式にし、書式と件数上限を固定する
無限リトライ 試行上限が未設定。「達成」の定義が主観的 機械的な合格条件+回数上限+予算上限の3点セット
コストが想定の数倍になる 頻度と自律度を同時に上げた。予算の見張りが無い 日次上限を置き、80%到達で自動一時停止
複数ループが互いの変更を打ち消し合う 隔離が無く、同じ作業ツリーを共有している worktree で分ける。触ってよいパスも分ける
問題は起きていないが、誰も中身を読んでいない 理解の負債。自動化の速度が、理解の速度を追い越した 週次レビューを義務化する(次節

コストの現実

ループは「人間が打つのをやめる」代わりに「機械が打ち続ける」構造なので、トークン消費は原理的に増えます。 原典の著者自身がこの点に懐疑的で、コストへの注意を促しています。 公開されている実測値は少ないですが、日本語の実践記事に 2026年6月時点の数字があります。

ループの型 実行間隔の目安 推奨開始レベル トークン消費
Daily Triage(朝の一覧化)2時間〜1日L1 報告のみ低(実測で1回あたり $0.01 未満)
Issue Triage(起票の仕分け)2時間〜1日L1 提案のみ
Changelog Drafter1日 / タグ作成時L1 下書き
Post-Merge Cleanup6時間〜1日L1 閑散時
Dependency Sweeper6時間〜1日L2 パッチのみ
PR Babysitter5〜15分L1 監視
CI Sweeper(赤を自動で直す)5〜15分L2 慎重に非常に高
Maker–Checker のフルサイクルタスク単位L2実測で1サイクル $0.71

読むだけのループは安く、直すループは高いという当たり前の傾向が、そのまま数字に出ています。 そして高いループほど、失敗したときの被害も大きい。 「安くて低リスクなものから常駐させる」という順番は、財布の都合と安全の都合が一致している数少ない場面です。

推測を含む部分の明示:上記の金額は特定の環境・特定の時点の実測値であり、 モデル・リポジトリ規模・課金体系によって桁が変わります。自分の環境で1週間 L1 を回して実測してください。 また、エージェント経由の実行が定額プランの枠外で従量課金になるケースが報告されています(2026年6月時点)。 課金体系は変わるため、導入前に必ず現在の条件を確認してください。

理解の負債と「0.5」の思想

ここが本ページで最も伝えたい部分です。 ループエンジニアリングの本当のリスクは、ループが失敗することではなく、ループが静かに成功し続けることにあります。 コードは増え、CI は緑で、PR は片付いていく。それでも、あなたが説明できるコードの割合だけが下がっていきます。 これを Comprehension Debt(理解の負債)と呼びます。技術的負債と違って、警告が出ません

測られているのは、効果ではなく副作用のほう

Anthropic が公開した研究では、主にジュニア層の開発者52名が、誰も知らないライブラリ(Python の Trio)を使って機能を実装しました。 半数は AI 支援あり、半数はなし。直後に、いま自分が書いたばかりのコードについて理解度テストを行っています。

結果、AI 支援ありのグループは理解度テストで 17% 低いスコアでした(成績評価にして約2段階分)。 最も差が開いたのはデバッグ能力。一方で、作業速度の向上は統計的に有意な差には届きませんでした。

ただし決定的な補足があります。AI を使いながら理解度を落とさなかった層が存在したこと、 そして彼らの共通点は「生成させて終わりにせず、追加で質問し、説明を求め、概念的な問いを自分で立てていた」ことです。 AI 依存はひとくくりにできず、使い方が結果を分けています。

原典の著者も同じ懸念を、もっと直接的な言い方で書いています。 「まったく同じループを2人が作っても、結果は正反対になりうる」—— 一方は深く理解している仕事を速く進め、もう一方は理解することそのものを回避する。 ループの設計図は同じでも、設計者の関わり方が違えば、出てくるものは別物になります。

自分の位置を 0 と 1 の間で測る

この問題に、私は別のプロジェクト zerohalf で立てた尺度をそのまま当てています。人間の状態を 0 / 0.5 / 1 の3点で見るものです。 ループエンジニアリングは構造的に 0 へ落ちやすいので、意識して 0.5 に留まる設計が要ります。

0

依存

全部ループに任せ、出てきたものを読まずに承認する。コードは増えるが、自分は何も変わらない。ループを組むほど速く 0 に近づく。

0.5

成長途中

ループに任せながら、出てきたものを説明できる状態を保つ。完成はしない。それでも確実に前に進んでいる。ここが目標地点。

1

完成

全部自分で書き、全部理解している状態。理想に見えるが、AI がある前提では選ばれない。そして完成したものは、それ以上動かない。

ループエンジニアリングの技術的な議論は、ほぼすべて「1 から 0.5 へどう降りるか」の話です。 自分で書く量を減らし、任せる範囲を広げる。ここまでは、この分野が既によく整理しています。 語られていないのは、その先で 0 に落ちない方法のほうです。 上の研究が示したのは、落ちなかった人たちが「追加で質問していた」という一点でした。 つまり 0.5 に留まる作業は、ループの外側ではなくループの中に組み込むしかありません。

0.5 を保つために、ループ自身に仕込む3つのこと

1. 説明を成果物に含める。 「修正した」ではなく「なぜその修正で直るのか」を出力の必須項目にする。読む対象が無ければ、読む習慣は作れません。

2. 週に1回、質問される側に回る。 テンプレート L05 のように、ループが生んだ変更について自分が質問される時間を、仕組みとして確保する。 答えられなかった箇所が、そのまま来週読むべき場所になります。

3. 理解できない変更は、動いていてもマージしない。 これが唯一の実効的なブレーキです。テストが緑であることと、あなたが理解していることは別の指標です。 ループの停止条件に「人間が説明できること」を1行入れるだけで、0 への落下は止まります。

完成しないことが、前進している証拠だ。

zerohalf — 人間は永遠に 0.5

ループは完成させるための道具に見えますが、実際には終わらない作業を終わらせないまま回し続けるための道具です。 止まらないループを設計するのではなく、自分が 0.5 に留まれる速度でループを回す—— それが、この技術の使い方だと考えています。

ループを回してよい4条件

すべての作業がループ向きではありません。 公開されている分析を突き合わせると、この4つが全部そろったときにだけループは効きます。 1つでも欠けている場合、ループ化はコストを増やすだけになります。

1. 週1回以上くり返し発生する作業である

ループの設計コストは、1回きりの作業では回収できません。「毎朝 CI を見る」「毎週依存を上げる」のように、頻度が担保されているものから始めます。1回だけの移行作業は、ループではなく普通のセッションで十分です。

2. 不良を機械的に弾ける(合否が自動で返る)

テスト、ビルドの終了コード、スキーマ検証、スクリーンショット比較。合否が人間の目にしか見えない作業をループ化すると、検証役があなたに戻ってきます。その時点でループの意味は消えます。

3. トークン予算がある

ループは人間が打たない分を機械が打ちます。特に高頻度・高自律のループは、消費が桁で変わります。まず L1 を1週間回して実測し、その数字を見てから頻度と自律度を決めてください。

4. 出てきたものを評価できる人がいる

これが最も外せません。ループは判断を代行しますが、判断が正しいかを判定する能力までは代行しません。評価できる人がいない領域でループを回すと、間違いだけが高速に蓄積します。「まだ自分では判断できない領域」は、ループ化より先に学ぶ対象です。

逆に言えば、この4条件を満たすように作業のほうを整えるのが、ループ導入の実体です。 ツールの選定より、「どの作業をどう区切れば機械的に合否が付くか」という設計のほうが結果を左右します。 ここから先の Part 2 は、その1周の中身——実際にエージェントに渡すプロンプトの話です。

Part 2 — 効くプロンプトは3つの原則に収束します

ここからはループの中身、つまり1周ごとに実行されるプロンプトの話です。 公式ガイドと論文を突き合わせると、細かいテクニックの差より、この3点を満たしているかどうかで結果が変わります。 以降のテンプレートは、すべてこの3原則のいずれかを形にしたものです。 読むと分かるとおり、3つとも、そのままループ設計の原則になっています。 ——検証手段があるからループは自走でき、検証を外に出すから Maker–Checker になり、 フェーズを分けるから途中で止められる。良いプロンプトの条件と、良いループの条件は同じものです。

PRINCIPLE 01

検証手段を渡す

AI は「終わったように見えた時点」で止まります。テスト、ビルドの終了コード、スクリーンショット比較など、 合否が返ってくるものを渡して初めてループが自走します。渡さなければ、検証役はあなたになります。

PRINCIPLE 02

検証はコンテキストの外に出す

自分の出力の誤りを自分で見つける能力は、他人の誤りを見つける能力より明確に劣ります。 レビューは別セッション・別エージェントに、確認は独立したプロンプトに切り出すのが基本形です。

PRINCIPLE 03

探索・計画・実装を分ける

いきなり書かせると、正しく動くが解くべき問題が違うコードが出てきます。 読む → 計画する → 実装する、を別のターンに割ることで、手戻りの単価が下がります。

プロンプト・ライブラリ

[ ] の部分を自分の状況に置き換えて使ってください。カード右上の Copy でそのままコピーできます。 検証済 は一次情報で裏が取れた根拠、経験則 は根拠が実務報告どまりのものです。

探索・仕様検証済Claude Code 公式

01. 読むだけフェーズを明示的に切る

実装を始める前に、対象の構造を言語化させます。この時点で書かせないことが要点です。理解が間違っていれば、コードを1行も書かないうちに修正できます。

まだコードは変更しないでください。調査だけをお願いします。

[対象ディレクトリ / ファイル] を読んで、次を整理してください。
1. 現在の処理フロー(呼び出し順に箇条書き)
2. 状態・設定がどこで管理されているか
3. 外部依存(API・DB・環境変数)の一覧
4. 読んでいて「なぜこうなっているか分からない」と感じた箇所

推測で埋めた部分には必ず「推測」と明記してください。
根拠にしたファイルは path:行番号 の形式で示してください。
探索・仕様検証済Claude Code 公式

02. 逆質問させて仕様を固める(インタビュー方式)

要件を書き出すのが面倒なとき、質問する側を交代させます。自分では思い至らなかった論点が先に出るため、実装後の「そこは想定してなかった」が減ります。出力は別ファイルに落とし、実装は新しいセッションで行うのが定石です。

[作りたいものを1〜2行で] を作りたいです。
実装の前に、あなたから私に詳細をインタビューしてください。

- 技術的な実装方針、UI/UX、エッジケース、懸念、トレードオフについて聞いてください
- 答えが自明な質問はしないでください。私が見落としていそうな難所を掘ってください
- 一度に聞くのは3問までにしてください

論点が出尽くしたと判断したら、合意した内容を SPEC.md に書き出してください。
SPEC.md には「対象ファイル」「やらないこと(スコープ外)」
「完成を判定する検証手順」を必ず含めてください。
探索・仕様検証済GitHub Spec Kit

03. 実装計画を先に出させる(着手前ゲート)

仕様を単一の情報源として先に確定させ、そこからコードを導く進め方です。「計画をレビューするまでコードを触らない」と明示的に禁止するのが効きます。

[実現したいこと] を実装する計画を立ててください。
計画のレビューが終わるまで、コードは編集しないでください。

出力してほしい項目:
1. 現状の処理フローの理解(間違っていたら私が指摘します)
2. 想定している根本的な変更点と、その理由
3. 変更が必要なファイルの一覧(新規/修正/削除の別)
4. 実装手順(レビュー可能な単位に分割)
5. リスクとエッジケース
6. 追加するテストと、その合否条件

不確実な前提があれば、勝手に決めずに質問として挙げてください。
探索・仕様検証済Claude Code 公式

04. 設計の経緯を git 履歴から掘らせる

「なぜこんな API なのか」を現在のコードだけから推測させると、もっともらしい作り話が出ます。答えの在り処を指定することで、推測を調査に変えられます。

[クラス名 / 関数名] が現在の形になった経緯を知りたいです。

git log と git blame を使って、このコードの変更履歴を追い、
「いつ・何のために・どんな制約から」現在の設計になったのかを要約してください。

- 各主張には該当コミットのハッシュを添えてください
- 履歴から読み取れないことは「履歴からは不明」と書いてください
  (そこを推測で埋めないでください)
実装検証済Claude Code 公式

05. 合否が返る検証条件を先に渡す

最も費用対効果が高い1手です。期待値を具体例で示し、実装後に自分で走らせて直すところまでを1回の指示に含めます。これがないと、AI は「動いていそう」で止まります。

[関数名 / 機能] を実装してください。

期待する振る舞い(テストケース):
- 入力 [A] → 出力 [A']
- 入力 [B] → 出力 [B']
- 入力 [異常系 C] → [例外 / エラー内容]

実装したら `[テストコマンド]` を実行し、
落ちたテストがあれば通るまで修正してください。

完了報告には、実行したコマンドとその出力を必ず貼ってください。
「通ったはずです」ではなく、実際の出力で示してください。
実装検証済Claude Code 公式

06. 既存パターンを見本として指定する

コードベースの流儀は、コードを読ませないと伝わりません。「これと同じように書いて」と実在のファイルを1つ指すだけで、レビュー時の指摘がまとめて消えます。使ってよいライブラリの範囲も同時に縛ります。

[新しく作りたいもの] を実装してください。

まず [見本になる既存ファイルのパス] を読んで、
このコードベースでの書き方(命名、ディレクトリ構成、エラー処理、テストの置き場所)を把握してください。

制約:
- 上記の見本と同じ構造・同じ命名規則で書いてください
- 既に使われているライブラリ以外は追加しないでください
- 既存の [共通処理 / ユーティリティ] があれば再実装せず再利用してください

実装前に「見本から読み取った規則」を3行で要約してください。
そこがずれていたら私が止めます。
実装検証済Claude Code 公式

07. 失敗するテストを先に書かせる

テストを先に書き、それが確かに落ちることを確認してから実装に入る手順です。実装に都合よく寄せたテストが生まれるのを防ぎ、修正が本当に効いた証拠が残ります。

テストファーストで進めてください。順番を守ってください。

1. [仕様] を検証するテストを書く(実装はまだしない)
2. テストを実行し、期待どおり「落ちる」ことを確認する
   → この時点で失敗ログを私に見せてください
3. テストを通す最小限の実装をする
   → このときテストコードは書き換えないでください
4. 全テストを実行し、緑になったログを見せる

途中でテストの期待値を変えたくなった場合は、
勝手に変えず「仕様の解釈がずれている可能性がある」と報告してください。
実装検証済Claude Code 公式

08. UI は画像で指定し、画像で検証させる

「いい感じにして」は評価軸がないため収束しません。目標画像とスクリーンショットの差分を列挙させることで、見た目のタスクにも合否のループを持ち込めます。

[目標のデザイン画像を添付]

この画像のとおりに [対象ページ / コンポーネント] を実装してください。

実装後、実際の画面のスクリーンショットを撮り、目標画像と比較して
「一致していない点」を箇条書きで列挙してください(余白・字間・色・角丸など)。
列挙した差分を修正し、再度スクリーンショットを撮って比較してください。

差分が実装上の制約で埋められない場合は、
黙って妥協せず「埋められない理由」を書いてください。
デバッグ検証済Claude Code 公式

09. 症状ではなく根本原因を先に言わせる

「直して」と頼むと、エラーを握り潰す修正が出てきがちです。原因の仮説を先に立てさせ、影響範囲まで言わせてから直させると、同じバグの再発が減ります。

バグの調査をお願いします。まだ修正はしないでください。

- 期待する挙動:[  ]
- 実際の挙動:[  ]
- エラー / スタックトレース:
```
[貼り付け]
```
- 関係しそうな箇所:[ファイルパス]
- すでに試したこと:[  ]

出してほしいもの:
1. 根本原因の仮説(複数あれば確からしい順に、それぞれ根拠つきで)
2. その仮説を確かめる方法(実行するコマンド or 見るべき箇所)
3. 同じ原因が影響していそうな他の箇所
4. 修正方針(対症療法ではなく原因側を直す案)

エラーの握り潰し(try-catch で黙らせる、条件を追加して回避する)は
解決策として提案しないでください。
デバッグ検証済Claude Code 公式

10. 再現テスト → 修正 → 再実行を1本の指示にする

修正の前に再現テストを書かせると、「直った」の判定が主観から自動判定に変わります。回帰テストがそのまま資産として残るのも利点です。

[バグの症状] という不具合が報告されています。
[怪しい箇所] のあたりを確認してください。

手順:
1. この不具合を再現する失敗テストを書く
2. テストが落ちることを確認する(ログを見せる)
3. 原因を修正する
4. テストが通ることと、既存テストが壊れていないことを確認する(ログを見せる)

修正の diff と、なぜその修正で直るのかの説明を最後にまとめてください。
デバッグ検証済arXiv:2507.02778

11. 行き詰まったら「Wait.」で再検討を起動する

自分の誤りを自分で見つけにくい現象(自己修正の盲点)に対し、出力の直後に短い停止トークンを挟むだけで検出率が大きく改善するという報告があります。長い叱責より、短い一言+観点の指定のほうが効きます。

Wait.

いまの回答を、書いた本人ではなく第三者のレビュアーとして読み直してください。

- 事実として間違っている記述はありませんか
- 前半と後半で矛盾している主張はありませんか
- 検証せずに「たぶんこうだろう」で書いた箇所はどこですか

問題が無いなら「問題なし」と一言で答えてください。
無理に修正点を作り出さないでください。
レビュー・検証検証済Claude Code 公式 / arXiv:2507.02778

12. 書いた本人にレビューさせない(別セッション)

同じ会話の続きでレビューさせると、自分の書いたコードを擁護する方向に働きます。新しいセッション(またはサブエージェント)で、差分だけを見せて評価させるのが最も安価な品質対策です。

あなたはこの変更を書いていない、外部のレビュアーです。
実装の意図は聞かされていない前提で、差分だけを見て評価してください。

対象:[ファイルパス / git diff の範囲]

見てほしい観点:
- 正しさに関わる欠陥(境界値、null / 空配列、例外経路、競合状態)
- 既存の実装パターンからの逸脱
- テストが無い分岐

出力形式:
| 深刻度 | 場所(path:行) | 何が問題か | 起きる不具合 |

制約:
- 好みの問題(命名の趣味、書式)は挙げないでください
- 「念のため」の防御的コード追加は提案しないでください
- 指摘が無い観点は「問題なし」と書いてください。数を埋めないでください
レビュー・検証経験則実務ガイド各種

13. 観点を1つに絞って複数回まわす

「全部見て」と1回で頼むより、観点ごとに独立して走らせたほうが深さが出ます。1回のレビューで注意が分散するのを避ける狙いです。観点を変えて2〜4回まわします。

[対象の差分 / ファイル] を、次の観点「だけ」に絞ってレビューしてください。
他の観点には触れないでください。

観点:[認証・認可の抜け / 入力バリデーション / N+1 と計算量 / 例外時のリソース解放 / 並行処理の競合]

各指摘には必ず以下を付けてください:
- 該当行(path:行番号)
- 深刻度(Critical / High / Medium / Low)
- その問題が発火する具体的な入力または状況
- 修正案(diff 形式)

「発火する具体的な状況」を書けない指摘は、確信が持てていないということなので
提出せず削ってください。
レビュー・検証検証済Claude Code 公式

14. 計画と実物の差分を突き合わせる

バグは無いが要件を1つ落としている、という失敗はコードだけ見ても出てきません。計画書を正とし、実装との差を報告させます。スコープ外の変更が混入していないかも同時に確認できます。

[SPEC.md / PLAN.md] を正として、実際の差分と突き合わせてください。

確認項目:
1. 計画に書かれた要件のうち、実装されていないものはどれか
2. 挙げられていたエッジケースのうち、テストが無いものはどれか
3. 計画に無いのに変更されているファイル・振る舞いはあるか
4. 計画時の前提が、実装中に崩れた形跡はあるか

出力は「未達」「過剰」「前提の崩れ」の3見出しに分けてください。
スタイルや設計の好みについての指摘は不要です。
レビュー・検証検証済arXiv:2309.11495 (CoVe)

15. 事実確認を分割して独立に答えさせる(CoVe)

下書きを書かせたあと、検証質問を作らせ、下書きを見せない状態で1問ずつ独立に答えさせる手法です。元の回答に引きずられた「自己弁護」を断ち切れるため、事実誤りの検出率が上がります。以下は2ターンに分けて実行します。

【1ターン目:検証質問の生成】
いまの回答に含まれる「事実として真偽が判定できる主張」を、すべて箇条書きで抜き出してください。
そのうえで、各主張を検証するための独立した質問を作ってください。
質問は、元の回答を読んでいない人でも単体で答えられる形にしてください。
この時点では回答しないでください。

【2ターン目:新しいセッションで実行】
以下の質問に、それぞれ独立して答えてください。
質問どうしの整合性は気にせず、1問ずつ根拠を示して答えてください。
根拠が確認できないものは「確認できず」と答えてください。

[1ターン目で出た質問を貼る]

【3ターン目:元のセッションに戻して実行】
以下が独立検証の結果です。
元の回答と矛盾する点だけを抽出し、その箇所を修正した最終版を出してください。
矛盾が無かった箇所は書き換えないでください。

[2ターン目の回答を貼る]
レビュー・検証検証済Sycophancy 研究

16. 迎合を封じる中立フレーミング

「これで合ってますよね?」と聞くと、正しさよりこちらの信念に同調する回答が返りやすくなります。自分の見解を先に言わない・両論を強制することで、同調バイアスを減らせます。

[判断したいこと] について評価してください。

私はまだ結論を出していません。私の意向を推測して寄せないでください。

必ず次の順で書いてください:
1. この案を採るべき理由(最も強い根拠を3つ)
2. この案を採るべきでない理由(最も強い根拠を3つ)
3. 判断が変わる分岐点になる事実は何か
4. その事実を確かめる方法
5. 現時点での推奨と、その確信度(%)と、確信度がその値である理由

私が後から反論した場合も、
新しい根拠が無い限り結論を変えないでください。
リファクタ・移行検証済Claude Code 公式

17. 大規模移行は「一覧化 → 少数で検証 → 一括」

数百ファイルの移行を1つの会話で流すと、後半になるほど精度が落ちます。対象を先に一覧化し、最初の2〜3件で指示を直してから残りを流すのが安全です。1件ずつ独立して処理させ、成否だけを返させます。

【ステップ1:対象の一覧化】
[移行内容:例 "React クラスコンポーネントを関数コンポーネントへ"] の対象になるファイルを
すべて洗い出し、files.txt に1行1パスで書き出してください。
判断に迷ったファイルは別リストに分けてください。

【ステップ2:試走】
files.txt の先頭3件だけを移行してください。
移行後、各ファイルについて「変換した内容」と「判断に迷った点」を報告してください。
(ここで私が指示を修正します)

【ステップ3:一括】
残りのファイルを1件ずつ独立して移行してください。
各ファイルについて、テストを実行し OK / FAIL のみを返してください。
FAIL のものは修正せず、理由を1行添えて一覧の最後にまとめてください。
リファクタ・移行経験則実務ガイド各種

18. 振る舞いを変えないことを先に担保する

リファクタで最も痛いのは、整理のついでに挙動が変わることです。「今の振る舞いを固定するテスト」を先に用意させてから着手させると、差分の安全性を機械的に確認できます。

[対象コード] をリファクタしたいです。外部から見た振る舞いは一切変えません。

順番を守ってください:
1. 現在の振る舞いを固定するテスト(characterization test)を書く
   - 現状が仕様として正しいかは問わない。「今こうなっている」を記録する
   - 異常系・境界値も含める
2. テストが全て通ることを確認する(この時点ではコードを変えない)
3. リファクタを実施する
4. 手順1のテストを一切書き換えずに再実行し、全て通ることを示す

リファクタ中に「現状の挙動がバグに見える」箇所を見つけた場合、
直さずに別途リストとして報告してください。
メタ・運用検証済Claude Code 公式

19. プロジェクト規約ファイルを剪定させる

CLAUDE.md / AGENTS.md は長くすると守られなくなります。「これを消したら間違いが起きるか?」を基準に、書いた本人ではなく AI に削らせると、思い入れ抜きで削れます。

[CLAUDE.md / AGENTS.md] を剪定してください。

各行について、次を判定してください:
- コードを読めば分かることか(→ 削除候補)
- 一般的な言語慣習として既に知っていることか(→ 削除候補)
- この行を消したら実際に間違いが起きるか(→ 残す)
- 頻繁に変わる情報か(→ 削除候補。参照先リンクに置き換える)

出力:
1. 削除候補の一覧と、それぞれの削除理由
2. 剪定後の全文
3. 「規約ではなく自動実行すべき」もの(lint / フォーマッタ / フックに落とせるもの)の一覧

判断に迷う行は削らず、迷った理由を添えて残してください。
メタ・運用検証済OpenAI GPT-5.1 ガイド

20. プロンプト自体を直させる(メタプロンプト)

意図どおりに動かないとき、どの指示が原因かをモデル自身に指摘させる方法です。人間が推測で書き足すより、余計な指示を減らす方向に働きます。

以下は、私が使っているプロンプトです。

```
[現在のプロンプト]
```

期待した結果:[  ]
実際に返ってきた結果:[  ]

このプロンプトを読んで、次を教えてください:
1. 期待した動きを妨げている指示はどれか(該当箇所を引用して)
2. 曖昧で複数の解釈ができる表現はどれか
3. 削っても結果が変わらない冗長な指示はどれか
4. 上記を反映した改訂版

改訂版は、元より短くしてください。
指示を足して解決するのではなく、誤解の元を取り除く方向で直してください。
メタ・運用検証済OpenAI GPT-5.1 ガイド

21. 出力の長さと形式を数字で縛る

エージェントのシステムプロンプトに入れる断片です。「簡潔に」ではなく文数・箇条書き数で指定するほうが安定します。長時間動く処理では、途中経過の出し方も決めておきます。

## 出力ルール
- 通常の回答:3〜6文、または箇条書き5個以内
- はい/いいえで答えられる質問:2文以内
- 複数手順を伴う作業の報告:概要1段落のあと、以下のラベルつき箇条書き5個以内
  - 変更点 / 対象箇所 / リスク / 次の一手 / 未解決の論点
- コードは差分または該当関数のみを示す。ファイル全文は貼らない

## 長時間の作業中
- ツールを数回実行するごとに、状況が変わったときだけ1〜2文で進捗を報告する
- 最初のツール実行の前に、目的と制約を1文ずつ書く
- 進捗報告には必ず具体的な結果を書く(「確認中です」だけの報告はしない)
メタ・運用検証済Anthropic 公式

22. 「分からない」と言う許可を与える

不足を埋めるより、それらしく作文するほうが自然な出力になってしまいます。沈黙や保留を明示的に許可することで、根拠のない断定を減らせます。

回答する際、次を守ってください。

- 判断に必要な情報が足りない場合は、推測で埋めずに「情報が足りない」と言ってください。
  そのうえで、何があれば判断できるかを書いてください
- 確認せずに書いた箇所には「未確認」と明記してください
- 実際に読んだファイル・実行したコマンドの結果に基づく記述と、
  一般論に基づく記述を分けて書いてください

「分かりません」は許容される回答です。
無理に答えを出すより、そちらを優先してください。
メタ・運用経験則本ページの分析

23. 4項目セルフチェック(外部検証つき改良版)

「事実関係・論理・網羅性・偏り」を自己点検させる定番プロンプトの改良版です。単一の回答内で完結させず、確認手段と未確認の明示を義務づけています。素の自己点検が効きにくい理由は次のセクションで説明します。

回答の前に、以下を実施してください。

【1. 下書き】
まず通常どおり回答を作ってください(まだ出力しません)。

【2. 検証の実行】
下書きに含まれる事実主張を箇条書きで抜き出し、それぞれについて
「どうやって確かめたか」を書いてください。
- 実際に検索・ファイル参照・コマンド実行で確認した → 参照元を示す
- 確認していない → 「未確認」と書く(ここを推測で埋めないでください)

【3. 4項目の点検】
- 事実関係:上記で未確認のまま残った主張はどれか
- 論理の一貫性:前提と結論が飛んでいる箇所はどこか
- 網羅性:問いに対して答えていない論点は何か
- 偏り:私の意向に寄せた(反論を避けた)箇所はどこか

【4. 出力】
点検で見つかった問題を修正した最終版を出してください。
文末に次を必ず付けてください:
- 確信度(%)とその根拠
- 未確認のまま残した事項の一覧
- 推測で書いた箇所の一覧

確信度が 80% を下回る場合は、断定を避けた表現に書き換えたうえで、
何を確認すれば確信度が上がるかを書いてください。

効かないプロンプト・効かない使い方

プロンプトを足すより、先にこちらを止めるほうが効果が大きい場合があります。 以下は公式ドキュメントで名指しされている失敗パターンと、研究で限界が示されているものです。

「間違いがないか確認して」だけで済ませる

他人の誤りは指摘できるのに、同じ誤りが自分の出力にあると見つけられない、という非対称性が報告されています。同じ会話の続きで点検させても、見落としはそのまま残りがちです。

対策:レビューは別セッション・別エージェントに出す(プロンプト12)。同一会話で行うなら、検証質問を独立に答えさせる(プロンプト15)。

確信度を自己申告させて、それを信用する

自然言語で申告される確信度は、実際の正答率とずれます。特に誤答に対して高い確信度を出す過信の傾向が指摘されています。「確信度80%未満なら修正して」という指示は、本人が90%と誤認した時点で素通りします。

対策:確信度は参考値として扱い、判定はテスト・スキーマ検証・別モデルの評価など外側の仕組みで行う。

同じ指摘を3回以上くり返す

2回直しても直らない時点で、会話の履歴が失敗した試行で埋まっています。この状態で指示を足しても、悪化しやすくなります。

対策:会話をクリアし、そこで学んだ制約を最初のプロンプトに書き込んでやり直す。

規約ファイルに何でも書き足す

CLAUDE.md / AGENTS.md が長くなるほど、個々のルールが埋もれて守られなくなります。「ルールがあるのに守らない」ときは、たいてい書き足しすぎです。

対策:削る(プロンプト19)。必ず守らせたいものは文章ではなくフックや lint など、実行される仕組みに落とす。

スコープを切らずに「調査して」と投げる

範囲を指定しない調査依頼は、大量のファイル読み込みでコンテキストを消費し、その後の実装の精度を下げます。

対策:調査対象を明示するか、サブエージェントに切り出して本体の文脈を汚さない。

レビュアーに「問題点を挙げて」と頼む

指摘を求められたモデルは、健全なコードに対しても何かしら挙げます。それを全部つぶすと、不要な抽象化と防御的コードが増えます。

対策:「正しさか要件に影響するものだけ挙げる」「無ければ問題なしと書く」と条件を付ける。

分析:4項目セルフチェックはなぜ単体では足りないのか

「①事実関係 ②論理の一貫性 ③情報の網羅性 ④偏りの有無 を自分でチェックし、確信度80%未満なら修正してから出力せよ」―― このプロンプトは、要求として正しい方向を向いています。問題は、その検証を同じ1回の生成の中で完結させようとする点にあります。 4項目それぞれについて、外側に出す先が研究として存在します。

要求項目 単体プロンプトでの限界 外に出す先
① 事実関係 一度誤った事実を出力すると、後続もその誤りに整合するよう生成が続きます。自分の下書きを見ながらの確認は、その文脈に引きずられます。 Chain-of-Verification(CoVe)。検証質問を作らせ、下書きを見せずに独立して答えさせ、矛盾のみを反映させます。分割型(Factored)ほどバイアスを排除できますが、呼び出し回数は増えます。
② 論理の一貫性 最終的な答えの整合性は見られても、途中の推論のどのステップで飛躍したかは自己申告に頼ることになります。 プロセス監視型報酬モデル(PRM)や、失敗を言語化して次の試行に持ち越す Reflexion 型のループ。ステップ単位で評価する、あるいは実行結果という外部信号を持ち込みます。
③ 情報の網羅性 自分の回答が問いを満たしているかの自己評価は、甘めに出る傾向があります。 RAG Triad(文脈の関連性 / 根拠づけ / 回答の関連性)のように、生成用とは別の独立したプロンプトで採点させる構成。
④ 偏りの有無 ユーザーの前提に同調する迎合バイアスがあるため、「偏っていない」と自己評価しながら偏った回答を出す状態が起こり得ます。 Constitutional AI のように、明示した原則に照らして批判・改訂させる独立ステップ。実務上は、自分の見解を先に言わない中立フレーミング(プロンプト16)が最も安価な対策です。
確信度80%の条件分岐 自己申告の確信度は実際の正答率とずれるため、条件そのものが素通りする可能性があります。 スキーマ検証と自動再試行。確信度を構造化出力の必須項目にし、閾値未満ならプログラム側で弾いてエラー内容を添えて投げ直します(Pydantic + Instructor の reask など)。

なお、自己修正の盲点を扱った研究では、出力の直後に Wait のような短い停止語を挟むだけで見落としが大きく減ったと報告されています。 これは「能力が無い」のではなく「起動していない」ことを示唆しており、実務的には 長い自己批判の指示より、短い区切り+観点の指定のほうが機能しやすいという示唆になります(プロンプト11)。

推測を含む部分の明示:「どの手法を使えば何%改善するか」は、モデルとタスクに強く依存するため本ページでは数値化していません。 各手法の効果は元論文の実験条件下での結果であり、あなたのコードベースでそのまま再現するとは限りません。 また、特定のモデルを名指しで推奨することも避けています。推論特化型モデルの優劣は短期間で入れ替わるためです。

出典

本ページの主張は、以下の一次情報に当たって確認しています。 「経験則」タグを付けたプロンプトは、複数の実務記事で共通して推奨されているものの、 対照実験による裏付けは確認できていません。

Part 1(ループエンジニアリング)

  1. Osmani, A. Loop Engineering(原典・命名)— Elevate. https://addyo.substack.com/p/loop-engineering(構成要素の分解、著者自身によるコスト・理解喪失への懸念)
  2. cobusgreyling/loop-engineering — リファレンス実装。7つの本番パターン、自律ティア L1〜L3、loop-audit / loop-cost などの CLI、失敗モードの分類。https://github.com/cobusgreyling/loop-engineering
  3. Run prompts on a schedule(/loop.claude/loop.md、cron、7日失効、スケジュール方式の比較)— Claude Code Docs. https://code.claude.com/docs/en/scheduled-tasks
  4. Keep Claude working toward a goal(/goal、Stop フックによる達成判定、条件の書き方)— Claude Code Docs. https://code.claude.com/docs/en/goal
  5. Run parallel sessions with worktrees(--worktree、サブエージェントの isolation: worktree.worktreeinclude)— Claude Code Docs. https://code.claude.com/docs/en/worktrees
  6. How AI assistance impacts the formation of coding skills — Anthropic Research. https://www.anthropic.com/research/AI-assistance-coding-skills(開発者52名、未知のライブラリでの実装後の理解度テストで AI 支援群が 17% 低下。デバッグで差が最大。速度差は有意でない)
  7. Loop Engineering入門:AIコーディングエージェントを動かすシステムを設計する — Zenn. https://zenn.dev/suwash/articles/loop-engineering_20260610
  8. Loop Engineering(ループエンジニアリング)とは — Qiita(Harness Engineering との層の整理、検証役の設計). https://qiita.com/y-morimatsu/items/e8563a60c6a5cb94ffe7
  9. Loop EngineeringをClaudeを使って実践してみた — DevelopersIO(bash ループの pipefail 問題、コスト実測値). https://dev.classmethod.jp/articles/claude-loop-engineering-practice/
  10. zerohalf — 人間は永遠に0.5(0 / 0.5 / 1 の尺度). https://zerohalf.jp/

Part 2(プロンプト)

  1. Best practices for Claude Code — Claude Code Docs. https://code.claude.com/docs/en/best-practices
  2. Prompt engineering best practices for 2026 — Anthropic. https://claude.com/blog/best-practices-for-prompt-engineering
  3. Effective context engineering for AI agents — Anthropic. https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
  4. GPT-5.1 Prompting Guide — OpenAI Cookbook. https://developers.openai.com/cookbook/examples/gpt-5/gpt-5-1_prompting_guide
  5. Spec-driven development with AI — The GitHub Blog / Spec Kit. https://github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit/
  6. Tsui, K. Self-Correction Bench: Uncovering and Addressing the Self-Correction Blind Spot in Large Language Models, arXiv:2507.02778. https://arxiv.org/abs/2507.02778(非推論モデル14種で平均64.5%の盲点率、Wait の付加で89.3%減少)
  7. Dhuliawala, S. et al. Chain-of-Verification Reduces Hallucination in Large Language Models, arXiv:2309.11495. https://arxiv.org/abs/2309.11495
  8. Huang, J. et al. Large Language Models Cannot Self-Correct Reasoning Yet, arXiv:2310.01798. https://arxiv.org/abs/2310.01798
  9. Shinn, N. et al. Reflexion: Language Agents with Verbal Reinforcement Learning, arXiv:2303.11366. https://arxiv.org/abs/2303.11366
  10. Sharma, M. et al. Towards Understanding Sycophancy in Language Models, arXiv:2310.13548. https://arxiv.org/abs/2310.13548
  11. Bai, Y. et al. Constitutional AI: Harmlessness from AI Feedback, arXiv:2212.08073. https://arxiv.org/abs/2212.08073
  12. Kadavath, S. et al. Language Models (Mostly) Know What They Know, arXiv:2207.05221. https://arxiv.org/abs/2207.05221
  13. Validation and Reask — Instructor(Pydantic による構造化出力の検証と自動再試行). https://python.useinstructor.com/concepts/reask_validation/
  14. Evaluating RAG with LLM as a Judge(RAG Triad の評価軸)— Mistral AI. https://mistral.ai/news/llm-as-rag-judge/