autoresearch について
Claude Code のスキル用プロンプトを、反復する採点実験で最適化するスキルです。二値の評価基準に基づいて変更を絞り込み、結果をログ、変更履歴、ライブダッシュボードに記録します。
主な機能
- 01出力品質を測る二値チェックを定義
- 02サンプル入力でスキルを繰り返しテスト
- 03評価基準に沿って出力を採点
- 04対象を絞ったプロンプト変更を採用または撤回
- 05ログとダッシュボードで実験を追跡
活用シーン
- 01出力にばらつきがあるスキルを改善
- 02異なるシナリオでスキルをテスト
- 03プロンプト変更と評価結果を追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ olelehmann1337/ autoresearch-skill --skill autoresearchインストール後、Claude Code で/autoresearchを入力して読み込まれたか確認します。
同梱ファイルeval-guide.md
詳細
スキルの自動研究
ほとんどのスキルは約70%の確率でうまく機能します。残りの30%では、ひどい結果が返ってきます。解決策は、スキルを一から書き直すことではありません。エージェントに何十回も実行させ、すべての出力を評価し、失敗する30%がなくなるまでプロンプトを調整することです。
このスキルは、Andrej Karpathy の自動研究手法(自律的な実験ループ)を Claude Code スキルに応用したものです。ML のトレーニングコードではなく、スキルのプロンプトを最適化します。
主な作業
既存のスキルを取り上げ、「良い出力」とは何かを二択のチェック項目で定義し、自律的なループを実行します。
- テスト入力を使って、スキルから出力を生成する
- すべての出力を評価基準に照らして採点する
- 失敗を修正するためにスキルのプロンプトを変更する
- スコアが向上する変更を採用し、それ以外は破棄する
- スコアが上限に達するか、ユーザーが停止するまで繰り返す
出力: 改善された SKILL.md、results.tsv ログ、試みたすべての変更を記録した changelog.md、およびブラウザーで確認できるリアルタイム HTML ダッシュボード。
開始前:コンテキストを集める
停止してください。以下のすべての項目をユーザーに確認するまで、実験を実行してはいけません。不足している項目があれば、先に質問してください。
- 対象スキル — どのスキルを最適化しますか?(SKILL.md の正確なパスが必要です)
- テスト入力 — どのようなプロンプトやシナリオを3~5種類テストしますか?(多様性が重要です。1つのシナリオに過剰適合しないよう、異なるユースケースを対象にする入力を選んでください)
- 評価基準 — 良い出力を定義する二択のチェック項目を3~6個挙げてください。(これらは「テストの質問」です。良い評価項目の作成方法については、references/eval-guide.md を参照してください)
- 実験あたりの実行回数 — 変更1回につき、スキルを何回実行しますか?デフォルト:5回。(実行回数を増やすほどスコアの信頼性が上がりますが、時間とコストも増えます。ほとんどのスキルでは5回が最適です)
- 実行間隔 — 実験をどのくらいの頻度で繰り返しますか?デフォルト:2分ごと。(間隔を短くするほど反復は速くなりますが、コストが増えます)
- 予算上限 — 任意。停止するまでの実験サイクルの最大回数です。デフォルト:上限なし(ユーザーが停止するまで実行)。
ステップ1:スキルを読む
何も変更する前に、対象スキルを最後まで読み、内容を理解してください。
- SKILL.md ファイル全体を読む
- スキルが参照している
references/内のファイルを読む - スキルの主な作業、プロセスの手順、出力形式を特定する
- スキルにすでに含まれている品質チェックやアンチパターンを確認する
この手順を省略しないでください。改善する前に、スキルの動作を理解する必要があります。
ステップ2:評価スイートを作成する
ユーザーの評価基準を、構造化されたテストに変換します。各チェック項目は二択、つまり合格か不合格でなければなりません。段階評価は不可です。
評価項目はそれぞれ次の形式にしてください:
EVAL [number]: [Short name]
Question: [Yes/no question about the output]
Pass condition: [What "yes" looks like — be specific]
Fail condition: [What triggers a "no"]
良い評価項目のルール:
- 二択のみ。「はい」か「いいえ」です。「1~7で評価」のような尺度は使いません。尺度はばらつきを増幅させ、信頼できない結果につながります。
- 一貫した評価ができるほど具体的にします。「文章は読みやすいですか?」では曖昧すぎます。「すべての単語の綴りが正しく、文が途中で切れていませんか?」ならテストできます。
- スキルが評価項目に合わせて不正に最適化するほど、狭い内容にしないでください。「200語未満であること」では、ほかのすべてを犠牲にして簡潔さを最適化することになります。
- 3~6項目が最適です。それ以上になると、スキルは実際に改善するのではなく、評価基準をそのまま繰り返し始めます。
良い評価項目と悪い評価項目の詳しい例については、references/eval-guide.md を参照してください。
最大スコアの計算:
max_score = [number of evals] × [runs per experiment]
例:評価項目4個 × 5回の実行 = 最大スコア20。
ステップ 3:ライブダッシュボードを生成する
実験を実行する前に、autoresearch-[skill-name]/dashboard.html にライブ HTML ダッシュボードを作成し、ブラウザーで開きます。
ダッシュボードには以下を表示する必要があります。
- 10 秒ごとに自動更新する(
results.tsvを読み込みます) - スコアの推移を折れ線グラフで表示する(X 軸は実験番号、Y 軸は合格率 %)
- 各実験を色付きのバーで表示する:緑 = 維持、赤 = 破棄、青 = ベースライン
- すべての実験を次の項目とともに表で表示する:実験番号、スコア、合格率、ステータス、説明
- 評価項目ごとの内訳を表示する:全実行を通じて最も合格数の多い/少ない評価項目
- 現在のステータスを表示する:「実験 [N] を実行中...」または「待機中」
- 落ち着いた色使い(白背景、パステルカラーのアクセント、すっきりしたサンセリフフォント)で見やすくスタイリングする
CSS と JavaScript をインラインで記述した、単一の自己完結型 HTML ファイルとしてダッシュボードを生成します。折れ線グラフには CDN から読み込んだ Chart.js を使用します。JavaScript は results.json を取得して再描画する必要があります(results.json は各実験後に results.tsv とあわせて更新します)。
作成後、すぐにダッシュボードを開きます。macOS の場合は open dashboard.html を実行して、ユーザーがブラウザーで確認できるようにします。
ダッシュボードを最新の状態に保つため、各実験後に results.json を更新します。JSON の形式:
{
"skill_name": "[name]",
"status": "running",
"current_experiment": 3,
"baseline_score": 70.0,
"best_score": 90.0,
"experiments": [
{
"id": 0,
"score": 14,
"max_score": 20,
"pass_rate": 70.0,
"status": "baseline",
"description": "original skill — no changes"
}
],
"eval_breakdown": [
{"name": "Text legibility", "pass_count": 8, "total": 10},
{"name": "Pastel colors", "pass_count": 9, "total": 10}
]
}
実行が終了したら(ユーザーが停止した場合、または上限に達した場合)、status を "complete" に更新して、ダッシュボードに最終サマリーと「完了」状態を表示します。
ステップ 4:ベースラインを確立する
変更を加える前に、スキルをそのまま実行します。これが実験 #0 です。
- スキルのフォルダー内に作業ディレクトリー
autoresearch-[skill-name]/を作成します - ヘッダー行を含む
results.tsvを作成します results.jsonとdashboard.htmlを作成し、ダッシュボードをブラウザーで開きます- 元の SKILL.md を
SKILL.md.baselineとしてバックアップします - テスト入力を使ってスキルを [N] 回実行します
- すべての出力を、すべての評価項目に照らして採点します
- ベースラインスコアを記録し、
results.tsvとresults.jsonの両方を更新します
results.tsv の形式(タブ区切り):
experiment score max_score pass_rate status description
0 14 20 70.0% baseline original skill — no changes
重要: ベースラインを確立した後、先に進む前にスコアをユーザーに確認します。ベースラインがすでに 90% 以上の場合、スキルの最適化は不要かもしれません。続行するかどうかをユーザーに確認してください。
ステップ 5:実験ループを実行する
これは自動リサーチループの中核です。開始したら、停止されるまで自律的に実行します。
ループ:
-
失敗を分析する。 どの評価で最も多く失敗しているかを確認します。失敗した実際の出力を読みます。パターンを特定します。書式の問題ですか?指示の不足ですか?それとも指示が曖昧ですか?
-
仮説を立てる。 変更することを1つ選びます。一度に5つ変更してはいけません。何が効果をもたらしたのか分からなくなります。
効果的な変更:
- 最も多い失敗に対処する具体的な指示を追加する
- 曖昧な指示を、より明確に言い換える
- 繰り返し発生するミスに対して、アンチパターン(「Xをしてはいけません」)を追加する
- 埋もれている指示をスキル内のより上位に移動する(優先度 = 位置)
- 正しい動作を示す例を追加または改善する
- 他のことを犠牲にして1つのことを過剰に最適化する原因となっている指示を削除する
効果のない変更:
- スキル全体を一から書き直す
- 一度に新しいルールを10個追加する
- 具体的な理由もなくスキルを長くする
- 「改善してください」や「もっと創造的に」といった曖昧な指示を追加する
-
変更を加える。 SKILL.md を編集し、対象を絞った変更を1つ加えます。
-
実験を実行する。 同じテスト入力でスキルを [N] 回実行します。
-
採点する。 すべての出力をすべての評価にかけます。合計スコアを計算します。
-
採用するか破棄するかを決める。
- スコアが向上した → 採用。 記録します。これを新たなベースラインとします。
- スコアが変わらなかった → 破棄。 SKILL.md を以前のバージョンに戻します。変更によって複雑さが増しただけで、改善はありませんでした。
- スコアが低下した → 破棄。 SKILL.md を以前のバージョンに戻します。
-
結果を results.tsv に記録する。
-
繰り返す。 ループのステップ1に戻ります。
絶対に停止しないでください。 ループを開始したら、続けるべきかユーザーに確認するために一時停止してはいけません。ユーザーがコンピューターから離れている可能性があります。次のいずれかに該当するまで、自律的に実行します。
- ユーザーが手動で停止する
- 予算の上限(設定されている場合)に達する
- 95%以上の合格率を実験3回連続で達成する(効果が逓減するため)
アイデアが尽きた場合: 失敗した出力をもう一度読みます。以前の惜しい変更を2つ組み合わせてみます。同じ問題にまったく異なるアプローチを試します。追加するのではなく、削除してみます。スコアを維持したまま単純化できれば成功です。
ステップ 6:変更履歴を書く
採用・破棄にかかわらず、実験のたびに changelog.md に追記します。
## Experiment [N] — [keep/discard]
**Score:** [X]/[max] ([percent]%)
**Change:** [One sentence describing what was changed]
**Reasoning:** [Why this change was expected to help]
**Result:** [What actually happened — which evals improved/declined]
**Failing outputs:** [Brief description of what still fails, if anything]
この変更履歴は、最も価値のある成果物です。今後のエージェント(または将来のより賢いモデル)が引き継いで続行できる、調査記録です。
ステップ 7:結果を提示する
ユーザーが戻ったとき、またはループが停止したとき、次の内容を提示します。
- スコアの概要: ベースラインスコア → 最終スコア(改善率)
- 実行した実験の合計数: 試した変更の数
- 採用率: 採用した変更と破棄した変更の数
- 特に効果があった変更トップ3(変更履歴から)
- 残っている失敗パターン(スキルがまだ間違える点があれば)
- 改善済みの SKILL.md(すでに所定の場所に保存済み)
- 参照用の results.tsv と changelog.md の場所
出力形式
このスキルは autoresearch-[skill-name]/ に4つのファイルを作成します。
autoresearch-[skill-name]/
├── dashboard.html # live browser dashboard (auto-refreshes)
├── results.json # data file powering the dashboard
├── results.tsv # score log for every experiment
├── changelog.md # detailed mutation log
└── SKILL.md.baseline # original skill before optimization
さらに、改善済みの SKILL.md を元の場所に保存します。
results.tsv の例:
experiment score max_score pass_rate status description
0 14 20 70.0% baseline original skill — no changes
1 16 20 80.0% keep added explicit instruction to avoid numbering in diagrams
2 16 20 80.0% discard tried enforcing left-to-right layout — no improvement
3 18 20 90.0% keep added color palette hex codes instead of vague "pastel" description
4 18 20 90.0% discard added anti-pattern for neon colors — no improvement
5 19 20 95.0% keep added worked example showing correct label formatting
例:図表生成スキルの最適化
収集したコンテキスト:
- 対象スキル:
~/.claude/skills/diagram-generator/SKILL.md - テスト入力:「OAuth フロー図」、「CI/CD パイプライン」、「マイクロサービスアーキテクチャ」、「ユーザーオンボーディングファネル」、「データベーススキーマのリレーションシップ」
- 評価項目:(1)すべてのテキストが読みやすく、スペルも正しいか?(2)パステルカラー/柔らかな色だけを使用しているか?(3)左から右、または上から下への直線的なレイアウトか?(4)数字、序数、順序を示す表現がないか?
- 実験ごとの実行回数:10
- 最高スコア:40
ベースライン実行(実験 0): 図を 10 点生成しました。それぞれを 4 つの評価項目で採点しました。結果:32/40(80%)。 よく見られた失敗:3 点の図に手順番号があり、2 点の図に鮮やかな赤の要素があり、3 点の図で小さな文字が読みにくくなっていました。
実験 1 — 採用(35/40、87.5%): 変更:「図に手順番号、序数(1st、2nd)、または順序を示す数値表現を絶対に含めないでください」をアンチパターンのセクションに追加しました。 結果:番号に関する失敗が 3 件から 1 件に減りました。他の評価項目は維持されました。
実験 2 — 破棄(34/40、85%): 変更:「すべての文字のフォントサイズを最低 14px にしてください」を追加しました。 結果:読みやすさは 1 点改善しましたが、色の遵守度が 2 点低下しました。変更を元に戻しました。
実験 3 — 採用(37/40、92.5%):
変更:「パステルカラー」という曖昧な指示を、具体的な 16 進数カラーコードに置き換えました:#A8D8EA, #AA96DA, #FCBAD3, #FFFFD2, #B5EAD7。
結果:色の評価が 8/10 から 10/10 に上がりました。他の評価項目は維持されました。
実験 4 — 破棄(37/40、92.5%): 変更:「赤(#FF0000)、オレンジ(#FF8C00)、またはネオングリーン(#39FF14)を使わないでください」というアンチパターンを追加しました。 結果:変化なし。実験 3 のカラーコードですでに色の問題が解決していました。スキルをシンプルに保つため、変更を元に戻しました。
実験 5 — 採用(39/40、97.5%): 変更:適切に書式設定されたラベル(数字なし、パステルカラーの塗りつぶし、左から右への流れ、読みやすい文字)を備えた正しい図の作成例を追加しました。 結果:39/40 に到達しました。残った失敗は、複雑な図でラベルが重なった 1 件です。改善効果が薄れてきたため、ここで終了しました。
最終結果:
- ベースライン:32/40(80%)→ 最終:39/40(97.5%)
- 実験 5 回、採用 3 回、破棄 2 回
- 主な変更点:色の具体的な 16 進数コード、番号を禁止する明確なルール、作成例
- 残った問題:非常に複雑な図では、まれにラベルが重なることがあります(失敗率 1/40)
他のスキルとの連携
autoresearch に入力されるもの:
- 最適化が必要な既存のスキル
- ユーザー定義の評価基準(または評価ガイドを使った評価項目の定義支援)
autoresearch から出力されるもの:
- 改善されたスキルが元のスキルに置き換わります
- 変更履歴を将来のモデルに渡し、最適化を続けることができます
- 評価スイートは、スキルを更新するたびに再利用できます
テスト
優れた autoresearch の実行では、次のことが行われます。
- ベースラインから開始する — 開始時点を測定する前に、何も変更しません
- 二値の評価項目だけを使う — 尺度や主観的な評価、「1〜10 で評価してください」は使いません
- 一度に 1 つだけ変更する — どの変更が効果をもたらしたのかを正確に把握できます
- 完全なログを残す — 採用・破棄にかかわらず、すべての実験を記録します
- スコアを改善する — ベースラインから最終結果まで、測定可能な改善を実現します
- 過学習しない — 特定のテスト入力に合格するだけでなく、スキルが実際のタスクをより適切にこなせるようにします
- 自律的に実行する — 実験の合間に許可を求めて停止しません
スキルがすべての評価項目に「合格」しても、実際の出力品質が改善していない場合は、スキルではなく評価項目に問題があります。手順 2 に戻り、より適切な評価項目を作成してください。