AIエージェントの挙動を変えたいとき、多くの開発者はスキル文書(Markdownファイル)を手で直しています。しかし試行錯誤のままでは、改善したのか悪化したのか判断できません。Microsoft ResearchがMITライセンスで公開したSkillOptは、モデルの重みを触らずにスキル文書そのものを「訓練対象」として最適化するフレームワークです。

この記事では、SkillOptがどんな課題を解くのか、仕組みと使い方、既存手法との違いまで整理します。

この記事でわかること

  • SkillOptが解決するスキル最適化の3つの失敗パターン
  • 深層学習の概念をテキスト編集に応用した訓練ループの流れ
  • ベンチマーク結果とCodex CLI・Claude Codeへの転用性
  • 導入時のコスト感と向いているタスクの条件

https://github.com/microsoft/SkillOpt

スキル文書の手直しが抱える限界

エージェントスキルとは、ドメインのヒューリスティック、ツール利用方針、出力フォーマット、既知の失敗パターンなどを自然言語でまとめた手順書です。Claude CodeやCodex CLIなどのコーディングエージェントでは、フォルダ内のMarkdownファイルとしてコンテキストに読み込まれ、モデルの重みを変えずに振る舞いをカスタマイズできます。

問題は、スキル文書の改善方法に数学的な規律がないことです。Microsoft Research AsiaのYifan Yang氏はVentureBeatの取材で、「変更できるかどうかではなく、変更が改善であることを保証できないことがボトルネックだ」と指摘しています(参考)。

同氏が挙げる代表的な失敗は次の3つです。

  • ステップサイズの制御がない — 一度に大きく書き換え、スキルがドリフトする
  • 検証がない — 読み手には妥当に見える修正が、実際の精度を下げる
  • 負の記憶がない — 失敗した編集を繰り返す

検証なしの書き換えがどれほど危険か、論文チームの例ではGPT-5.5のSpreadsheetBenchスコアが41.8から41.1へ下がったと報告されています。多段ステップのワークフローでは、ゼロショットの弱点が手続きの厳守(フォーマット、自己検証、ツール方針)に現れやすく、手作業のスキル調整では再現性を確保しにくい状況です。

SkillOptが行うこと

SkillOptは、凍結したターゲットモデル(実行側)と別のオプティマイザモデル(編集提案側)を分離し、スキル文書を反復的に改善します。最終的にbest_skill.mdというコンパクトな成果物が出力され、デプロイ時に追加の推論コールは不要です(公式プロジェクトページ)。

訓練ループの流れは次のとおりです。

  1. ターゲットモデルが現行スキルでタスクを実行し、軌跡(trajectory)を収集する
  2. オプティマイザが成功・失敗のミニバッチを分析し、追加・削除・置換の編集案を提案する
  3. 重複や矛盾を除去し、期待効用でランク付けする
  4. 編集予算(テキスト版の学習率)の範囲内で候補スキルを生成する
  5. ホールドアウト検証セットで評価し、スコアが改善した場合のみ採用する
  6. 却下された編集はバッファに蓄積し、同じ失敗を繰り返さない

エポック終了時には、前エポックとの比較によるスローアップデート(モメンタムに相当)も行い、短期的な編集と長期的な手続き知識を分離します。

ベンチマークで示された効果

論文と公式リポジトリによると、6つのベンチマーク、7つのターゲットモデル、3つの実行ハーネス(直接チャット、Codex CLI、Claude Code CLI)の計52セルすべてで、SkillOptは最良または同率最良の結果を記録しています。

GPT-5.5では、スキルなしベースライン比で直接チャットで平均+23.5ポイント、Codexループ内で+24.8ポイント、Claude Code内で+19.1ポイントの改善が報告されています。小規模モデルでも相対的な伸びが大きく、GPT-5.4-nanoはマルチモーダル文書QAでスコアがほぼ2倍、エンボディド対話タスクでは約3倍になったとされています。

ハーネス間の転用性も検証されています。Codexループ内で訓練したスプレッドシートスキルを、そのままClaude Codeに移したところ、Claude Code単体ベースライン比で+59.7ポイントの改善が得られたと公式プロジェクトページに掲載されています。GPT-5.4向けに最適化したスキルをGPT-5.4-miniやGPT-5.4-nanoへ展開しても正の効果が確認されており、学習済み手続きが特定モデルの癖ではなく再利用可能なワークフローとして機能していることが示されています。

成果物のサイズは実用的です。全ベンチマークで最終スキルは2,000トークン以下、中央値は約920トークン。人間が数分でレビューできる監査可能なテキストとして残ります。

使い方とコスト感

Python 3.10以上が必要です。PyPIからpip install skilloptでインストールでき、2026年6月2日にv0.1.0が公開されています。OpenAI、Azure OpenAI、Anthropic、Qwen、MiniMaxなど複数バックエンドに対応し、訓練用CLIはscripts/train.pyから実行します。

コスト面では、学術ベンチマークでは再スコアリングの都合で訓練トークンが最大2億に達するケースもありますが、実務ではもっと軽量です。Yang氏は「本当の初期工数は検証器と代表的なホールドアウト分割の設計にある」と述べ、GBrainなどのコミュニティフレームワークではClaude Sonnet上で単一タスクのスキル訓練が平均1〜5ドル程度と説明しています(参考)。最適化コストは一度きりで、デプロイ後は追加費用が発生しません。

一方で、SkillOptが効く条件も明確です。数十件規模の代表例と、自動採点できるフィードバック信号が必要です。主観的・オープンエンドなタスクには向きません。採点器の安定性も設計時に確認が必要です。

SkillOpt-Sleepとエコシステム

研究用の訓練ループとは別に、SkillOpt-Sleepというデプロイ向けの仕組みも同リポジトリに含まれています。Claude Code、Codex、Copilot向けプラグインとして、夜間にセッション履歴を振り返り、繰り返しタスクをオフラインで再生し、検証ゲートを通したスキルと長期メモリを提案する「睡眠サイクル」を提供します。gbrainやdarwin-skillなどの外部プロジェクトもSkillOptを統合済みです。

既存のオーケストレーション層との共存も想定されています。DSPyが宣言的パイプラインの構造を最適化するのに対し、SkillOptは凍結エージェントが読み込む外部スキル状態を最適化する、という棲み分けです。両方を併用できます。

既存手法との違い

スキル最適化の周辺には、いくつかの関連アプローチがあります。

手法 特徴 SkillOptとの違い
TextGrad / GEPA 単一プロンプトを軌跡フィードバックで進化 永続的なスキル成果物の生成に焦点を当てない
EvoSkill / Trace2Skill 実行経験からスキルライブラリを構築・進化 学習率・検証ゲート・モメンタムなど深層学習的制御がない
手作業のプロンプトエンジニアリング 即座に試せる 改善の保証と再現性が弱い

SkillOptの差別化は、テキスト編集に深層学習の訓練規律(編集予算、ホールドアウト検証、却下バッファ、スローアップデート)をそのまま持ち込んだ点にあります。論文チームはこの類推を「装飾ではなく実装上の設計原則」と位置づけています。

導入を検討する開発者へ

SkillOptは、モデルファインチューニングやRAGの代替ではなく、凍結モデルに手続き知識を外部ファイルで与える既存のスキル運用を、検証付きで自動化する枠組みです。契約書や請求書から数値を正確に抜き出すような、フォーマット厳守と自己検証が求められる業務タスクで、特に効果が大きいと報告されています。

すでにCodex CLIやClaude Codeでスキルファイルを運用しているチームなら、代表タスクと採点器を用意したうえでSkillOptの訓練ループを回し、検証済みのbest_skill.mdをそのまま本番ハーネスへ載せ替える、という導入パスが現実的です。モデル重みに触れず、数百〜2,000トークンのテキストだけでエージェントの手続きを底上げできる点が、SkillOptの実務的な価値です。