HARNESS ENGINEERING ・ MASTER SHEET

ハーネスエンジニアリング マスターシート

2つの学習ノートと実装済み2スキルを統合した、ハーネス型スキルを作るための設計リファレンス。12ファイルの中身を1枚に圧縮しています。

格納 04_AI/07_harness/ハーネスエンジニアリング_マスターシート ファイル 12 構成パターン 6 完成チェック 20項目 更新 2026/08/01
125 ドル/1本
生成 91.5%
評価 8.3%
計画 0.4%
ITERATION
5〜15回
原典の反復前提。
跳ねるのは後半
GATE
全軸AND
1軸でも未達なら
総合点に関係なく不合格
DEFAULT
falseから
受入基準は全部不合格
スタート。証拠で解錠
導入段階の効果
評価者を1体置く ルーブリック hookで強制 段階1だけで効果の大半が出る
01
MAP

マスターシートの地図

12ファイルは役割で3層に分かれている。判断の土台(01〜02)/コピペ資産(03〜05)/実装仕様(06〜07)、それに手順書(08)と運用(09〜11)。入口は3つだけ覚えればよい。

新しいスキルを作る 入口A 既存スキルに評価者を足す 入口B(最も安い) なぜこう作るのか確認 入口C 08 スキル化プレイブック 設計シート/8ステップ/完成チェック20項目 02 パターンP1 + 05 ルーブリック 既存フローに検査と差し戻しを1周足す 01 原理 失敗モード/非対称性/境界/部品=仮説 コピペ資産 03 / 04 / 05 エージェント定義/契約と受入基準/ルーブリック 実装仕様 06 / 07 ループ制御/.claude配置・workflow 運用 09 / 10 / 11 コストとキャリブレーション / 落とし穴カタログ約50件 / 出典と統合の履歴 回してみて詰まったら運用層に戻る
02
WHY

効く理由は「非対称性」にある

「別のAIに見せれば客観的になる」という話ではない。生成側も評価側も本質的には甘い。違うのは立場によってチューニングのしやすさが変わる点。

A失敗モード:終盤の息切れ

文脈の上限が近づくと焦って強引にまとめる。実際の上限に達していなくても起きる。対処は圧縮ではなくコンテキストリセット+ハンドオフ成果物。モデル世代で解消しつつある部品。

B失敗モード:自己評価の甘さ

自分の成果物を採点させると、破綻していても自信を持って絶賛する。正解が数値化できない仕事で深刻。人が指摘すれば直すが自分では気づけない。これが設計の主題。
要因生成側が自己評価する場合独立した評価側の場合
文脈「なぜこう作ったか」の正当化が全部入っている作った過程を一切見ていない。あるのは成果物だけ
コミットメント自分の判断を否定すると直前の出力と矛盾する否定してもコストがない。むしろ否定が仕事
役割の整合性「完成させる」と「粗を探す」が同一プロンプト内で衝突「粗を探す」だけ。役割が純粋になる
サンクコスト長時間かけた成果を作り直せと言いにくいかけた時間を知らない
構造的制約直せる立場なので、直しながら甘く判断できる書き込みツールを外せば直せない。判断しかできない
分離の価値は「客観性」ではなく、役割プロンプトを純粋にできること権限を構造的に剥がせること。だから「厳しく自己評価せよ」と書いても効かない(厳しい言葉で書かれた甘い評価が返る/些末な欠点3つを挙げて中核の破綻を見逃す/通るテストを書く)。
03
ROLES

4つの役と、その正式名称

ハーネスの構成要素は役割で呼び分ける。この名前が .claude/agents/ のファイル名になるので、最初に語彙を固定する。最小構成は前の3つ(プランナー/ジェネレーター/エバリュエーター)で、インテグレーターは分担型・競作型で足す4体目。

プランナー planner 何を作るか(What)を決める 書き込み可 ジェネレーター generator / builder どう作るか(How)を1単位ずつ 書き込み可 インテグレーター integrator / synthesizer 結合・比較・機械検証(任意の4体目) 書き込み可 エバリュエーター evaluator 実物を触って合否を出す 書き込み不可 計画 制作 統合 評価 NEEDS_WORK → 場所+観測+期待つきでジェネレーターに差し戻す PASS → 次の単位 or 完成 最小構成は プランナー・ジェネレーター・エバリュエーター の3体
エージェント名やることやってはいけないことtools
プランナーplanner依頼を仕様と作業単位に展開。完了条件を実物で判定できる形で書く実装詳細を決める(後段が仕様の奴隷になる)/スコープを最小に縮めるRead, Write, Edit, Glob, Grep, WebSearch
ジェネレーターgenerator / builder1単位ずつ実装+自己評価。証拠を所定パスに残す合格判定を出す/複数単位の同時実装/テストの削除・編集Read, Write, Edit, Glob, Grep, Bash
インテグレーターintegrator / synthesizer分担型は結合と機械検証、競作型は比較と選択(棄却理由を残す)合格判定を出す/指摘されていない箇所の書き換えRead, Write, Edit, Glob, Grep, Bash
エバリュエーターevaluator / eval-<軸>実物と証拠を見て判定。1行目に PASS / NEEDS_WORK自分で直す/証拠を開かずに合格を出す/合理化して見逃すRead, Glob, Grep(+MCP)

役割は現実の職種に対応させる

プランナー=企画・編集会議、ジェネレーター=制作担当、エバリュエーター=校閲・品質検査。工程ではなく職種の粒度で切るのが原則。

自己評価は捨てない

ジェネレーターの自己評価は安い粗いフィルタ。明らかな未実装を先に落とし、高コストなエバリュエーターのサイクルを節約する。役割は「出す前の見直し(安い・甘い)」対「受入検査(高い・厳しい・拒否権あり)」。

自環境の実在エージェント

viz-planner-* / viz-builder-* / viz-integrator / viz-eval-*(図解13体)、strat-planner-* / strat-generator / strat-synthesizer / strat-eval-*(戦略10体)が既にこの4役の構成。
04
PATTERNS

6つの構成パターンと選び方

エージェントを書き始める前に型を決める。判定は上から順に。最初の関門は「証拠が決まっているか」で、ここが NO なら設計に進めない。

Q1 証拠は決まったか 実物に当たる手段 NO → ここで止める 証拠を決めるのが先の仕事 Q2 生成側は動いているか 既存スキルがあるか YES → P1 評価者だけ足す Q3 正解は1つに収束? 解空間の広さ YES → P3 契約先出し+分担 図解ハーネス型(実装・図解HTML) NO → P4 レンズ別競作+統合 戦略ハーネス型(戦略・企画) 重ねるパターン P5 多軸独立評価 観点が3つ以上あるとき P6 無人ループ 長時間まわしたいとき P2は0から作る素朴なフル構成
P1 +1体・10〜30分

評価者だけ足す

既存の生成フローに検査と差し戻しを1周足すだけ。ここだけで効果の大半が出る。逆にhookから入ると効果が実感できない。
P3 10〜20体

契約先出し+分担

並列実装が壊れない条件は3つ。契約を先に確定/別ファイルに分担/契約外の要素の新設を禁止(必要なら申請させる)。
P4 10〜30体

レンズ別競作+統合

互いを見ない独立案をN本作り、判断基準で比較して1本に統合。足して2で割らない。棄却理由を残すのが価値。
05
EVALUATOR

評価者を成立させる4つの構造

プロンプトの文言より、この4つの構造のほうが効く。お願いではなく構造で縛るのがこの分野の思想そのもの。

ジェネレーター 合格の判定は出せない テストの削除・編集も禁止 権限の壁 成果物+証拠 場所+観測+期待 エバリュエーター Write / Edit を持たない まっさらな文脈で起動 証拠ゲート 一次情報を開いたか 実物を触ったか 未確認は不合格に倒す 判定 1行目に PASS / NEEDS_WORK のみ 評価者の成果物は「点数」ではなく「次の指示」。場所が特定されていない指摘では生成側は動けない 「85点でした」しか返らない評価者は、出力設計に失敗している

1まっさらな文脈

サブエージェントか別プロセス。同一セッションで「次は評価者として」は文脈汚染で効果が薄れる。

2書込権限なし

tools: から Write / Edit を外す。Bashを渡した時点で厳密な読み取り専用ではない点も意識する。

3証拠主義

もっともらしさは正しさではない。「たぶん大丈夫」と仮定していると気づいたら止まって証拠を探す

4デフォルトFAIL

全基準を false から開始。証拠ゼロの評価はPASSでも無効化する1行で主要な効果が出る。
// ワークフロー側で default-FAIL を担保する(hookを書かなくてもここで効く) function axisPassed(v) { if (!v || !Array.isArray(v.evidence) || v.evidence.length === 0) return false // 証拠ゼロは不合格 if (v.verdict !== 'PASS') return false return (v.scores || []).every(s => s.score >= s.threshold) // 全軸AND }
06
CONTRACT

契約と受入基準(成否の8割)

評価者を置いても、基準が曖昧なら結局AIの自己判断になる。作り始める前に完了条件を固定するのが要点。実演側のハーネスに無かったのがこれで、「機能が浅い」の原因になった。

着手前に固定する(後から作ると実装に都合よく寄る) つくる側が提案 何を作る/どう検証されたら完了 合意まで往復 検査側がレビュー 正しいものを作ろうとしているか 契約ファイル(全部 false) a1 passes: false a2 passes: false a3 passes: false 証拠 証拠の提示で初めて true 基準を緩める・削ることは禁止 受入基準は5〜8件が適正(3件以下は粗すぎ、15件以上は些末な指摘の山になる)

効かない基準

感想で決まるので、実質AIの自己判断になる。
資料デザインがきれいであること
議事録正確であること
機能ちゃんと動くこと
実装fillRectangleがmouseUpで呼ばれる(手段を縛りすぎ)

効く基準(3条件を満たす)

実物で判定できる/手段を指定しない/曖昧語を含まない。
資料図解要素の面積比が6割以上(実測値を報告)
議事録元発言に無い固有名詞が0件(引用で証明)
機能実データが返る(プレースホルダを含まない)
実装クリック&ドラッグで矩形領域を塗りつぶせる
ドメイン証拠(Playwrightに相当するもの)手段
Webアプリ動作するUIのスクショ、コンソールログ、APIレスポンスmcp__playwright__*
資料・図解レンダリング結果のスクショ、面積比の実測Browser pane / Playwright
議事録元の文字起こし全文(該当箇所を引用させる)Read, Grep
データ分析元データを引き直した再計算、件数の検算シート/DBの読み取り
記事・戦略出典URL、リサーチャーの生出力、過去の振り返り資料Read, WebFetch

共通原則:生成側が用意した要約や自己申告を証拠にしてはいけない。一次情報に自分で当たらせる。この手段が「成果物のテキストを読む」以外に思いつかない業務は、まだハーネス化できない。

07
RUBRIC

主観品質を採点可能にする

コードは「テストが通る/通らない」で判定できるが、デザイン・文章・戦略はできない。そこで4軸に分解し、軸ごとに合格ラインを置いて全軸ANDで判定する。

軸ごとの点数と合格ライン(例:戦略ハーネスの設定) 論理 4 / 5 合格 根拠 4 / 5 合格 実行可能性 3 / 5 未達 頑健性 4 / 5 合格 1軸でも合格ライン未満なら、総合15/20でも不合格(総合点は判定に使わない) 点線=合格ライン
重み:高

部品の寄せ集めでなく、一体感のある全体になっているか。
重み:高

独自性

テンプレ・デフォルト・AIっぽさを超えたカスタムな判断の証拠があるか。
重み:低

丁寧さ

階層・余白・一貫性・表記。放っておいてもできるので配点は低め。
重み:低

機能性

目的が伝わり、読者・利用者がタスクを完了できるか。
重みはモデルが苦手な軸に置く。放っておいてもできることに配点しても品質は上がらない。そしてモデルの初期値そのものを減点対象に明記するのが最も効く一手。LLMは平均に回帰するので、平均を罰しないと平均から離れない。
ドメイン減点する「AIっぽさ」を具体語で列挙する
Web / UI白カード+紫グラデーション、角丸12px+薄いshadowの羅列、絵文字アイコン
HTML図解3カラムの箇条書きだけの「図解」、テキスト過多、記号系の装飾
文章「〜ではないでしょうか」「重要です」「以下の3点が挙げられます」、体言止めの羅列
分析「相関が見られました」で終わる、示唆が「注視が必要」
戦略「バランス型」「全方位で強化」「まずは検討する」、担当が「チーム全体」
議事録「活発な議論が行われた」「今後の課題として認識された」(誰が何をするか不明)

加えて、点数内訳つきの採点例を2〜3件埋め込む(few-shot)。とくに「格好いいが機能しない → 不合格」の例を入れると甘さが締まる。ここを省くと必ず甘くなる。

08
LOOP

ループ制御と止め方

停止条件を書き忘れると無限ループとコスト暴走になる。4条件を必ず入れる。差し戻し先も指摘の性質で振り分ける。

プランナー 計画・契約(全部false) ジェネレーター 1単位ずつ生成 インテグレーター 機械検証を違反ゼロまで エバリュエーター 並列N軸・書込権限なし route=plan → 計画・契約から作り直す(基準を全部falseに戻す) route=generate → 成果物だけを直す(指摘されていない箇所は書き換えない) 全軸AND PASS 次の単位 or 完成 INCOMPLETE 上限到達なら 残課題つきで 人間に返す

1契約充足

全基準が true / 全軸がしきい値以上。

2停滞検知

2種類必要。成果物ハッシュの同一性と指摘の同一性。後者が実務で効く。

3予算到達

最大ラウンド数/金額/時間。初期値は3ラウンド

4人間の停止

キルスイッチファイル。走行中の軌道修正は STEER 方式。
// 停滞検知(b):同じ指摘が繰り返されている=直せていない。(a)ハッシュだけでは検出できない const key = allFindings.map(f => f.where + '|' + f.observed).sort().join('||') if (key && key === prevFindingsKey) { stopReason = '同一の指摘が繰り返されており改善していない'; break } prevFindingsKey = key
09
PLAYBOOK

0→1の8ステップ

プレイブックの手順。Step1で証拠が決まらなければ、そこで止めるのが設計ゲート。ここを飛ばして作ったハーネスは机上採点になって効かない。

0判定
やり直しが多い納品物か。年1回の仕事は選ばない
1証拠を決める
テストを読む以外の手段があるか。無ければ中止
2受入基準
5〜8件、全部false、曖昧語なし
3パターン選択
P1〜P6から選ぶ
4エージェント
4役をコピーし4か所だけ差し替える
5ルーブリック
4軸+しきい値+AIっぽさ減点+few-shot
6機械検証
構造と形骸値だけを機械で落とす
7ループ制御
停止条件4つ・route分岐・停滞検知2種
8SKILL.md
雛形に流し込み、2か所に保存

設計シートの必須欄(埋まらない欄=設計の穴)

成果物ファイル1つで表せる形にする
証拠一次情報とその取得手段
基準5〜8件・全部false・実物で判定可能
パターンP1〜P6と選んだ理由
役割接頭辞-役割/tools/書込可否
ゲート軸・しきい値・減点する具体語
検証機械で見る項目と形骸値パターン
停止最大ラウンド・停滞検知・未達時の扱い

差し替えるのは4か所だけ

エージェント定義ライブラリからコピーして、以下だけ変える。他は原典の文言を削らない(各文が特定の失敗モードを潰しているため)。
1description:いつ起動されるべきか(発動精度に直結)
2tools:評価者からWrite/Editを外す
3やらないこと/禁止事項
4出力形式(1行目に判定/JSONスキーマ)
保存先は .claude/skills/04_AI/05_skills/両方。エージェントはVaultルートの .claude/agents/ に置く。
10
COST

コストと反復回数

運用判断はすべて「評価者は安い」という事実から出る。削るなら生成側の反復回数で、評価者を削ってもコストはほとんど減らない。

ラウンドごとの作業時間(収束の確認:減衰していれば正常) 生成 R1 127分 評価 R1 8.8分 生成 R2 62分 評価 R2 6.8分 生成 R3 11分 評価 R3 9.6分 総額 $124.70 / 3時間50分 生成 91.5% = $113.85 評価 8.3% = $10.39(3ラウンド合計) 計画 0.4% = $0.46 評価者を削るのはコスト削減としてほぼ無意味 計画は最も安く、最も効果が大きい部品(仕様の天井を決める) 1体だけで作ると20分・$9。ただし中核機能が動かない

反復回数

原典は5〜15回前提。前半は線形、後半で段差のように跳ねる(9回目まで普通→10回目で別物)。記事は3〜5回で収束。実務の初期値は3ラウンド+停滞検知。

評価者は必ず甘い

最悪の失敗は問題を検出した上で合理化して握り潰すこと。「意図的かもしれない」「MVPとしては許容」を禁止句として明記し、既知の不良品を投げて締める。

部品は仮説

モデル更新のたびに部品を1つ外して品質が落ちるか確認する。落ちなければもう不要。実績:リセット機構、作業単位分割、単位ごとの評価が順に不要化した。
11
PITFALLS

詰まったらここから探す

カタログには約50件。頻度の高いものを4カテゴリで抜粋。環境系(D)は自環境で実際に踏んだもの

A 設計

症状評価者を置いたのに品質が変わらない
原因基準が曖昧で評価者の裁量になっている
症状成果物が抽象的(項目は埋まっている)
原因形骸値を検出していない → 機械検証に実例を追加(最も効く)
症状特定工程だけ品質が低い
原因その工程の担当を置いていない

B 評価者

症状ほぼ常にPASS
原因初期状態は必ず甘い → 既知の不良品でキャリブレーション
症状問題を挙げた上で見逃す
原因合理化の禁止句を書いていない
症状1枚の証拠で全項目が合格になる
原因証拠を使い切っていない

C ループ

症状少しずつ書き換わるが同じ問題が残る
原因停滞検知が成果物ハッシュだけ → 指摘の同一性も見る
症状差し戻しで全面書き換えされる
原因「指摘されていない箇所は書き換えない」が無い
症状評価者の一部が落ちて素通り
原因期待数と実数を比較するガードが無い

D 環境(Claude Code)

症状エージェントが解決できない
原因worktreeで実行、またはセッション開始時スナップショット
症状作業ディレクトリにアクセスできない
原因iCloud配下はサンドボックス拒否 → /tmp で作業する
症状機械検証が黙ってスキップされる
原因argsが文字列で届きデフォルトに落ちている
hookは教材であってセキュリティ境界ではない。Write/Editしか見ておらず、Bash経由なら素通りする。パス一致はbasenameのみで、どの証拠を読んでもどの行も解錠される。段階8として最後に足すもので、最初から入れる部品ではない。
12
NEXT

次に作るなら、ここから

実装済み:図解ハーネス

viz-* 13体・分担型(P3)。実運転済みで、3ラウンドでINCOMPLETE。未達が明示されたので次の一手が決まった。INCOMPLETEは失敗ではない。

実装済み:戦略ハーネス

strat-* 10体・競作型(P4)。構築・校正済みで本番未実行。ループ制御の実コードはこれが最良の参考

候補:議事録ハーネス

mtg-* 2体。既存スキルに評価者を足すだけ(P1+P5)。費用対効果が最も高い。設計シート記入済みの実例がプレイブックにある。

議事録ハーネスの実装順序

1
30 MIN
網羅性の検査役を1体作る
元の文字起こし全文と突き合わせ、決定事項の取りこぼしを引用つきで指摘させる。tools は Read と Grep のみ。
2
VERIFY
手動で呼んで効果を確認する
過去の議事録に対して回し、取りこぼしが実際に出るか見る。ここで効かないなら設計を見直す。
3
EXPAND
体裁軸を足してループ化
担当・期限・表記の軸を別エージェントに分け、SKILL.md に差し戻しループと停止条件を書く。