世界を動かす技術を、日本語で。

AGENTS.mdはエージェント評価においてスキルを上回る

2026年1月29日原文(vercel.com)

概要

  • Next.js 16 の新APIに対応するため、AIエージェント向けの知識付与方法を検証
  • skills (スキル)と AGENTS.md (静的Markdown)の2アプローチを比較
  • AGENTS.md への圧縮ドキュメントインデックス埋め込みで100%パス率を達成
  • skillsは明示指示があっても最大79%、指示なしでは効果なし
  • AGENTS.md 方式の利点と導入方法、フレームワーク開発者への提言

Next.js 16のAPI知識をAIエージェントに教える試み

  • AIエージェント の訓練データは古くなりやすい課題
  • Next.js 16 の新API(use cache, connection(), forbidden()など)は現行モデルの訓練データに未収録
  • エージェントがAPIを知らない場合、誤ったコード生成や古いパターンへ退行
  • 逆に古いNext.js利用時に新APIを提案されるリスクも存在
  • 解決策: バージョン一致ドキュメント をエージェントに提供する仕組みの検討

知識付与の2アプローチ

  • skills :ドメイン知識をパッケージ化し、必要時にエージェントが呼び出す標準仕様
    • プロンプト・ツール・ドキュメントを一体化
    • エージェントが必要時に自発的に利用する設計
  • AGENTS.md :プロジェクトルートに配置し、エージェントに 常時文脈 として提供
    • 任意の情報を毎ターン参照可能
    • Claude CodeではCLAUDE.mdを同様用途で使用

skills方式への期待と現実

  • skills での正しいコード生成を期待
  • 実際は 56%のケースでskillsが発動せず
  • デフォルト設定ではパス率 53%(ベースラインと同じ)
  • 一部指標ではskills導入で逆に悪化(例:テストパス率)
  • ツール未活用問題 は現行モデルの既知課題

明示指示の効果と危うさ

  • AGENTS.md に「skillを使え」と明記で発動率95%以上・パス率79%に向上
  • 指示文の微妙な違いで結果が大きく変動
    • 「必ずskillを使え」→プロジェクト文脈無視でドキュメントパターンに固執
    • 「まずプロジェクトを探索し、その後skillを使え」→文脈理解後にドキュメント参照で良好な結果
  • 指示文の脆弱性が運用上の懸念材料

信頼できる評価方法の構築

  • 初期テストは曖昧なプロンプトや訓練データに含まれるAPI中心で不適切
  • Next.js 16の未学習API をターゲットにした行動ベースの評価に刷新
    • connection(), use cache, cacheLife(), forbidden(), proxy.ts, cookies(), headers()などを網羅
  • 各設定で複数回評価し、モデルのばらつきを排除

AGENTS.mdインデックス埋め込みの発見

  • decision point (意思決定ポイント)を排除し、毎ターン情報を提供
  • 圧縮8KBインデックス をAGENTS.mdに埋め込んだだけで 100%パス率
  • 重要指示:「Next.jsタスクはpre-trainingよりretrievalを優先」

驚きの結果とその理由

  • 4パターン比較で AGENTS.mdインデックス埋め込みが圧倒的
    • skills(明示指示あり)でも79%、AGENTS.mdは100%
  • 詳細:Build, Lint, Testすべてで100%達成
  • 理由:
    • 意思決定不要 :常に情報が提示される
    • 一貫した可用性 :skillsは非同期ロード、AGENTS.mdは毎回プロンプトに含まれる
    • 順序問題回避 :skillsは「先に読む/後で読む」問題が発生、AGENTS.mdは不要

コンテキスト肥大化への対策

  • AGENTS.md埋め込みによる コンテキストウィンドウ圧迫 懸念
  • 圧縮率80%(40KB→8KB) でパス率維持
  • パイプ区切り・最小構造でドキュメントインデックス化
    • 例:[Next.js Docs Index]|root: ./.next-docs|...|01-app/01-getting-started:{01-installation.mdx,02-project-structure.mdx,...}
  • 全文埋め込み不要、インデックスとファイルパスのみで十分

導入手順

  • コマンド一発でセットアップ可能
    • npx @next/codemod@canary agents-md
  • 実行内容
    • Next.jsバージョン検出
    • 対応ドキュメントを .next-docs/ にダウンロード
    • 圧縮インデックスをAGENTS.mdに自動挿入
  • Cursor などAGENTS.md対応エージェントで利用可能

フレームワーク開発者への提言

  • skillsは 垂直的・アクション特化型 ワークフロー向き(例:バージョンアップ、App Router移行)
  • 一般的なフレームワーク知識提供はAGENTS.md方式が有効
  • 推奨事項
    • skills改善を待たず、現時点でAGENTS.mdスニペット提供を推奨
    • 圧縮重視 :全文不要、インデックスで十分
    • evals活用 :訓練データ未収録APIで評価
    • retrieval設計 :エージェントが必要なファイルを容易に見つけられる構造を意識
  • 目的: pre-training主導からretrieval主導 への転換
  • AGENTS.md方式が現状最も信頼できる手法

研究・評価:Jude Gao CLI: npx @next/codemod@canary agents-md

Hackerたちの意見

評価ケースの56%では、そのスキルは一度も使われなかった。エージェントはドキュメントにアクセスできたけど、使わなかったんだ。エージェントはチューリングテストを通過した...

AIですらマニュアルを読まないんだね。

いつも思うんだけど、いろんなプロンプトエンジニアリングを比較するブログ記事って、一回だけテストしたのか、それとも何回もやったのか気になるんだよね。LLMは同じタスクに対して一貫性がないからさ。もちろん彼らもそれに気づいてると思うけど、テスト方法についての詳細が全然足りないんだよね。

これには本当にイライラする。反証不可能で非決定論的な結果ばかり。これらのことは(せいぜい)逸話や雰囲気が科学やエンジニアリングとして提示されてるだけなんだよ。

この理由で、ベンチマークを取るときはいつもたくさんの重複実行をする習慣があるんだ。自分がバカみたいだなと思うのは、リアルな信頼区間で1回ベンチマークを取ってる間に、10回のクソみたいなベンチマークを取ったり、1回のクソみたいなベンチマークと9倍のブログスパムを作れたってこと。歪んだインセンティブが私たちを支配してるね。

何か見落としてる?明らかに、システムプロンプトみたいなものでコンテキストを直接含めれば、100%の確率で文脈に入るよね。エージェントのスキルを全部取り込んで、それをエージェントに渡せば(システムプロンプトとかで)、もっと確実に指示に従うはず。でも、ある時点でスキルを使わなきゃいけないんだ。毎回コンテキストに含めるのは無駄だし、できないこともあるからね。これが、Anthropicが高度なツール使用を進めてる理由でもあるんだ。参照: https://www.anthropic.com/engineering/advanced-tool-use。すべてはコンテキストとコストのトレードオフだよ。明らかに、コンテキストの予算があれば、できるだけ直接含めればいいんだ(この場合、AGENTS.mdに圧縮する)。

スキルが登場する前から、約1年間シンボリックエージェントファイルをハッキーなワークアラウンドとして使ってたんだけど、異なるタスクのために追加の「コンテキスト」を読み込むのに役立つかもしれない。正直、これがうまくいってるから、あまり変更する必要を感じてないんだよね。

これがRLMメソッドがうまく機能する理由の一つなんだ。全体の環境で必要なだけの情報にアクセスできるけど、現在のタスクに関連するものだけが文脈に入るんだ。それが100%の確率で出てくる。損失のある「メモリ」圧縮や要約技術、確率的エージェントスキルの実装とは違ってね。エージェントが自分のコンテキストを管理するのは、非推論から推論チャットへの飛躍と同じくらい非常に役立つんだ。まだメモリや統合、他のLLMの弱点には問題があるけど、エージェントは今年すごく役立つようになると思うよ。

明らかに、システムプロンプトのようなものでコンテキストを直接含めれば、100%の確率で文脈に入るよね。スキルがモデルにどうやって通知されると思う?何らかの形でコンテキストに含まれてるんだ。この部分が面白いのは、AGENTS.mdに情報を(比較的単純に)圧縮するだけで、スキルが実装されるよりも良く機能するように見えることだね。

あなたの言ってることは間違ってないよ。両方を少しずつ求めてるんだよね。1. 特定のコンテキストを強制的に入れたい、質問や非決定性はなしで(インデックスやスパークノーツみたいに)。これは条件付きでできるけど、アクセスされるファイルや他の「コンテキスト」に基づいてルールを作る必要がある。2. クリーンに保ち、必要なときだけ有用なコンテキストを提供したい(スキル、検索、MCP; そしてこれら全ての周りに探査/クエリ/圧縮メカニズムが必要。ラルフ・ウィグガムが一例だね)。

私の読みでは、ドキュメントの目次をマークダウンでコピーしてリンクを付ける方が、目次へのリンクを渡して読むように指示するよりもかなり効果的だった。これは納得できるよね。そして、それを証明する数字もある。

同感だわ。Vercelはスキルとコンテキストの設定を混同してると思う。だから、評価が全然誤解を招くもので、全く異なる2つのユースケースをテストしてるんだよね。要するに、Vercelは両方のファイルを使うべき。agents.mdはスキルと組み合わせて使うものだし、両方の機能には全く違う目的があるんだ。

Hacker Newsで議論の続きを見る