15 ポイント 投稿者 GN⁺ 2026-01-31 | 4件のコメント | WhatsAppで共有
  • Next.js 16 API を対象とした評価で、プロジェクトルートに含まれる AGENTS.md ドキュメントインデックス が skills ベースのアプローチより高い精度を記録
  • skills はエージェントが必要に応じて呼び出す ドメイン知識パッケージ の形だが、呼び出しが不安定で デフォルト設定では53%の通過率 にとどまる
  • 一方、8KBに圧縮された AGENTS.md インデックス は、すべてのテスト(Build, Lint, Test)で 100%の通過率 を達成
  • この方式は 判断ポイントの排除・常時利用可能・順序問題の解消 により、能動的な呼び出しより安定した結果を示す
  • フレームワークのメンテナーは バージョン一致のドキュメントインデックスを AGENTS.md に含める ことで、コード生成の精度を高められる

問題の背景

  • AI コーディングエージェントには、学習データが旧バージョン API に基づいている ため、最新フレームワークを正確に扱えないという限界がある
    • Next.js 16 の 'use cache'connection()forbidden() などは既存モデルの学習データに含まれていない
  • 逆に旧バージョンのプロジェクトでは、モデルが 存在しない最新 API を提案してしまう 問題も発生する
  • これを解決するため、バージョン一致ドキュメントへのアクセス方式 を実験した

2つのアプローチ

  • Skills: プロンプト・ツール・ドキュメントを束ねた オープン標準パッケージ で、必要時にエージェントが呼び出して使う
  • AGENTS.md: プロジェクトルートに置かれる 継続的コンテキストファイル で、すべての対話ターンで常に参照可能
  • 同じ Next.js ドキュメントを基に、両方式を比較評価した

Skills アプローチの限界

  • 評価の結果、56%のテストで skill が呼び出されず、基本の通過率は 53%で改善なし
  • 一部項目では、むしろ ベースラインより低いスコア(例: テスト 58% vs 63%) を記録
  • これは現在のモデルが ツール利用を安定して実行できない限界 を示している

明示的指示を追加した実験

  • AGENTS.md に「コードを書く前に skill を呼び出せ」という 明示的な指示文 を追加すると、通過率は79%に上昇
  • しかし 指示文のわずかな表現差 が結果に大きく影響した
    • 「先に skill を呼び出せ」→ ドキュメントのパターンに固定され、プロジェクト文脈が抜け落ちる
    • 「プロジェクトを探索した後に skill を呼び出せ」→ より良い結果
  • このような 言語的な脆弱性 により、実運用での信頼性は低い

信頼できる評価の構築

  • 初期テストは曖昧なプロンプトと重複検証の問題があり、信頼性が不足していた
  • これを改善し、行動ベースの検証Next.js 16 の未学習 API 中心テスト によって強化した
  • 主なテスト対象 API: connection()'use cache'cacheLife()forbidden()proxy.tscookies()headers()after()refresh() など

AGENTS.md アプローチの実験

  • エージェントの選択プロセスを排除し、ドキュメントインデックスを直接 AGENTS.md に挿入
  • インデックスは全文書ではなく、バージョン別ドキュメントパスの一覧 で構成
  • 追加した指示文:
    IMPORTANT: Prefer retrieval-led reasoning over pre-training-led reasoning for any Next.js tasks.
    • モデルが 既存の学習データではなくドキュメントベースの推論 を優先するよう促す

評価結果

  • AGENTS.md にインデックスを挿入した場合、100%の通過率 を達成
    • Build, Lint, Test のすべてで完璧な結果
  • 比較統計:
    • Baseline 53%、Skill 基本 53%、Skill+指示文 79%、AGENTS.md 100%
  • 受動的コンテキスト方式が能動的呼び出しより優れる 理由
    1. 判断ポイントがない — 常に情報が存在する
    2. 一貫した可用性 — 毎ターン、システムプロンプトに含まれる
    3. 順序問題を排除 — ドキュメント探索順序に依存しない

コンテキスト容量問題の解決

  • 初期インデックスは40KBだったが、圧縮により8KBへ縮小(80%削減)
  • パイプ(|)区切り構造で ドキュメントパスとファイル名を最小スペースで保存
  • エージェントは .next-docs/ ディレクトリから必要なファイルだけを読み、正確なバージョン情報を活用 する

適用方法

  • コマンド1行で設定可能
    npx @next/codemod@canary agents-md
    
  • このコマンドは
    1. Next.js のバージョンを検出
    2. そのバージョンのドキュメントを .next-docs/ にダウンロード
    3. 圧縮インデックスを AGENTS.md に挿入
  • Cursor など AGENTS.md を認識するエージェント でも同様に動作する

フレームワーク開発者への示唆

  • Skills は依然として有用 だが、一般的なコード生成精度の向上には AGENTS.md 方式のほうが効果的
  • Skills は「バージョンアップグレード」「App Router マイグレーション」など 特定タスク中心のワークフロー に適している
  • 推奨事項:
    • skills の改善を待たず、今すぐ AGENTS.md を活用する
    • ドキュメントインデックスのみを含め、コンテキストを最小化する
    • 学習データにない API 中心の評価 で検証する
    • ドキュメントを 細粒度の検索構造 として設計する
  • 目標は 事前学習中心の推論から検索ベースの推論への移行 であり、AGENTS.md はそれを最も安定して実現する方法である

4件のコメント

 
channprj 2026-01-31

> AIコーディングエージェントには、学習データが旧バージョンのAPIに基づいているため、最新フレームワークを正確に扱えないという限界がある。

Context7 を使うと、上の問題はある程度解決できるようです。

https://context7.com

 
slowandsnow 2026-02-04

context7 が非効率的なので、上の 2 つの方法を使うのです...

 
channprj 2026-02-05

おっしゃりたいことは分かりますが、だからといって毎回 AGENTS.md や Skills に、現在使用中のすべてのフレームワーク/ライブラリの最新ドキュメントへのリンクを一つひとつ整理して入れておくよりは、context7 を補助的に使うのもそれほど悪い選択ではないように思います。

また、GeekNews と Vercel の本文のどちらにも context7 への言及はありません。先生は半歩ほど内容を先回りして解釈されたように思えたので、返信を残します。

(参考までに申し上げると、よく書かれた Skills や AGENTS.md によってトークン削減が可能であることは、よく知られた事実であり、私も十分承知しています。)

 
GN⁺ 2026-01-31
Hacker Newsの意見
  • モデルはAGIではない。単なるテキスト生成器であり、ファイル編集やツール呼び出しのような効果を引き起こすよう学習されているだけ
    モデルがユーザーのスキルを「理解」して使うのではなく、人間が作った例や利用ログに基づく強化学習(RL)のおかげでそうしたテキストを生成しているだけ
    スキルを常に使わない理由は、まだそのような事例が十分に学習されていないから。RLで強制すると、かえってモデルがより愚かになる可能性がある
    今はスキル利用ログを蓄積し、将来のモデルがいつスキルを使うべきかをよりうまく学べるようにしているところ
    AGENTS.mdは単なる
    コンテキスト
    。モデルは最初期からコンテキストに従うよう訓練されてきた

    • AGENTS.mdとスキルの違いは、結局コンテキストにどう挿入されるかの問題
      スキルのfrontmatterも結局コンテキストに含まれるため、AGENTS.mdのほうがうまく機能するなら、それはスキル情報を抽出・注入する方法の違いによるもの
      一部のエージェントは小さなモデル(例: Haiku)を使って、どのスキル情報を大きなモデル(例: Sonnet, Opus)に渡すかを決めることもある
      結局のところ核心は、どんな情報が「生のプロンプト」に入るかという点
    • AGIではない。実質的には強化されたオートコンプリートの水準
      有用ではあるが完璧ではない。GPT技術自体はすでに性能停滞局面に入ったように見える
      今後改善される部分はスキルのような補助システム。ただし現在実装されているスキル機能は、AGENTS.mdを直接使うより劣る
    • 私も似た実験をしてみた。システムプロンプトでは関連スキルを事前に読み込ませ、ユーザープロンプトでは必要なときに読み込ませる形でテスト中
    • RLとは何かという質問があった
    • 「モデルはAGIではない」という発言に、GNU/Linux名称論争をなぞらえたユーモアコメントもあった
  • 評価では56%のケースでスキルが一度も呼び出されなかったという結果があった。文書は持っていたが使わなかったという意味。「チューリングテストには合格したね…」という冗談付き

    • 「AIもRTFM(マニュアルを読まない)」という気の利いた反応があった
    • 私も笑ったが、真面目に言えば人間も信頼できないことが多い
      違いがあるとすれば、AIはプライドなく修正指示を受け入れること
      まだシニア開発者の水準ではないが、ジュニアよりは指示に従うほう
  • 核心的な発見は、文書ポインタの圧縮(compression)が効果的だという点
    人間が読むには難しいが、LLMにとっては直接的で効率的な参照構造
    今後はagents.md/claude.md/skills.mdのようなヒューリスティックの代わりに、常時ロードされる
    圧縮インデックス形式
    が標準化される可能性が高い
    APIテストスイートをLLMコード性能検証に再利用できるかもしれない
    LLM導入が広がるほど、ライブラリやAPIもそれに合わせて進化する必要がある

    • もう一つの教訓は、「まずプロジェクトを探索してからスキルを呼び出す」ほうが、「とにかくスキルを使え」より優れているという点
      Antigravity(=GEMINI.mdベース)でAGENTS.mdルールに従うようにしたが無視された
      その代わり、「プロジェクトにAGENTS.mdがあるか確認せよ」というプロンプトは常に機能した
      以前「let’s think step by step」がチェーン・オブ・ソートを誘導していた時期のような不思議な現象
    • 「圧縮」といっても、実際にはminifyレベルではないかという反応もあった
    • パイプではなく改行を使えば、もっと読みやすかっただろうという意見もあった
  • AGENTS.mdをシステムプロンプトに直接含めれば、常にコンテキストに入る
    しかしすべてのスキルを毎回含めるのは無駄。だからAnthropicのadvanced tool useのように、必要な瞬間だけ呼び出すアプローチが必要
    結局はコンテキストとコストのバランスの問題。余裕があるなら、AGENTS.mdに圧縮して入れるのが効率的

    • スキルも結局コンテキスト内で宣言される。単にAGENTS.mdに圧縮して入れるほうがうまく機能するようだ
    • Vercelはスキルとコンテキスト設定を混同したように見える。両者はまったく目的が異なるので、両方を一緒に使うべき
    • RLMアプローチがうまく機能する理由もここにある。必要な情報だけをコンテキストに入れ、残りは環境に残しておく構造
      こうした自己コンテキスト管理型エージェントは今年大きく進展しそう
    • 結局どちらも必要。一部は強制的にコンテキストに入れ(index/sparknotes)、一部は探索・検索ベースで動的に追加すべき
    • 個人ユーザーはシステムプロンプトだけ修正すればよいが、チーム単位ではコードスタイルのような標準化のためにスキルを使う必要がある
      Claudeのスキル遵守率は低い
  • 私も似た領域で作業している。プロジェクトのスキャフォールディング構造がClaude Code/Opencodeの結果にどのような影響を与えるかを評価しようとしている
    ただしVercelのテスト方法が明確でないため比較が難しい

  • AGENTS.mdはスキルと完全に別物ではなく、スキルの単純化された形
    核心はスキル設計の品質、つまりAIが正しい情報を見つけるまでに経るステップ数を最小化すること
    ステップが少ないほどエラーの蓄積は減る

    • 私も二つに分けて管理している
      1. ルールベースでシステムプロンプトに強制挿入されるもの
      2. エージェントが必要なときに探索するもの
        そしてトークンの無駄を減らすため、大きなファイルはシステムプロンプトに一度だけ入れる
  • ブログでプロンプトエンジニアリング比較を見るたびに気になるのは、1回だけ実行したのか、それとも複数回繰り返したのかという点
    LLMは同じ入力でも結果が一定しない

    • こうした非決定的な結果を科学のように発表するのはもどかしい
      たいていは逸話レベルのデータを科学っぽく包装しているように感じる
    • 私はいつも複数回繰り返し実行して信頼区間を計算する
      だが丁寧にベンチマークすると閲覧数は少なく、雑にやるとブログトラフィックが9倍に増える
      歪んだインセンティブ構造が問題
  • AGENTS.mdより良い方法もある
    .contextフォルダを作り、プロジェクト関連文書(README、依存関係文書など)をシンボリックリンクで入れて、常にコンテキストにロードされるようにする方法
    こうするとLLMが最初から必要な情報をすべて持てるため、性能向上とコスト削減が可能になる

    • ただし依存関係文書は大きな差を生まない。その代わりソースコード自体_vendorフォルダに入れるほうがはるかに有用
      LLMが直接コードを分析して動作を理解できる
    • すべての文書を毎回ロードするのは非効率。むしろClaude.mdやAgents.mdに場所だけ明記し、必要なときに読ませるほうがよいという意見もあった
    • コンテキストを不必要に膨らませるべきではない。代わりに文書インデックスだけを圧縮して入れる方式のほうが効率的
    • 大きなファイルを毎回入れるのはトークンの浪費。Claude Codeブログでも同じ警告があった
  • 自分のカスタムエージェントを作りながら得た経験

    1. Claude Codeの抽出ガイドラインを参考にした
    2. AGENTS.mdを**目次と要約(sparknotes)**用として自動ロードする
    3. トピック別のMarkdownファイルをスキルとして管理する
    4. MCPとスキルは概念的に似ているので、良いツールを作ることが核心
    5. 実験を続け、楽しみながら改善している
      read/write_fileを状態に入れ、システムプロンプトに表示するよう変えたところ、ずっとよく機能した
      今はこれを**定量評価(evals)**で証明しようとしている。体感では非常に性能が高い