Antigravity に React 19 や Next.js 16 のコードを書いてもらうつもりが、なぜか古い useEffect の書き方や、すでに非推奨になった next/router を呼ばれてしまう。これは私自身、この1ヶ月でいちばん多く遭遇した「もう一歩のところで止まる」事象でした。
AI モデルの学習データには必ずカットオフがあります。にもかかわらず、ライブラリ側はその後もバージョンを重ねています。Antigravity は内蔵のウェブ検索やドキュメント参照の仕組みを持っていますが、何も指示しないとモデルは「自分が知っている範囲」で書こうとしてしまうのが現実です。ここでは私が個人開発で実際に使っている、最新ドキュメントをモデルに読ませるための3つの仕組みを順番に紹介します。仰々しい構成ではなく、明日からそのまま組み込める粒度で書いています。
まず確認したいこと:問題の正体は「知らない」ではなく「思い出さない」
実装に入る前に、問題の整理を1つだけしておきたいと思います。
Antigravity 内部の Gemini 系モデルや、外部から接続した Claude などは、訓練時点では最新のドキュメントを部分的に学習していることが多いです。しかし会話文脈の中で何度も「以前のバージョン」のスニペットを与えられると、モデルはそちらに引きずられます。つまり問題は「知らない」のではなく、「会話の中で思い出すきっかけが足りていない」ケースが多いのです。
この前提で対策を見ていくと、やることは明確になります。会話に「最新の情報源」を割り込ませて、モデルがそちらを優先せざるを得ない状態を作る。それだけです。
仕組み1:Context7 MCP でバージョン指定の公式ドキュメントを差し込む
最初に紹介したいのは、Upstash がメンテしている Context7 MCP の活用です。これは「ライブラリ名+バージョン」を渡すと、対応する公式ドキュメントの該当部分を MCP 経由でモデルに供給してくれるサーバーです。
私の Antigravity の mcp.json では次のように登録しています。
// ~/.antigravity/mcp.json
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"],
"env": {}
}
}
}設定後、エージェントへの依頼文に use library docs for nextjs@16 のように一文を添えるだけで、Context7 が対応するドキュメントを引いてきます。実体としては「会話に最新ドキュメントを差し込む」だけなので、思考の流れを邪魔しないのが気に入っています。
期待する動き(私の手元で確認した例)です。
You: Next.js 16 の App Router で、サーバーサイドで Cookie を読み取る最小例を書いて。use library docs for nextjs@16
Agent: (Context7 が next.js v16 のドキュメントから cookies() の仕様を取得)
→ 16.x で安定した非同期 cookies() を使ったコードを返答
詳しい設定や、複数ライブラリを同時に渡す書き方は Antigravity と Context7 MCP を連携させてライブラリ情報を最新に保つ にまとめています。
仕組みの注意点
- すべてのライブラリが Context7 のインデックスにあるわけではありません。マイナーなライブラリは見つからないことがあります
- バージョン指定を省くと、Context7 側が「最新」と判断するバージョンが返ります。意図と違うことがあるため、私は必ず
library@version形式で渡しています
仕組み2:公式 URL を直接エージェントに手渡す
Context7 でカバーできないとき、私が次に取るのが「公式ドキュメントの URL を直接ペーストする」シンプルな方法です。Antigravity のエージェントは URL を見つけると、内蔵の Web 取得ツールでその場で読みに行ってくれます。
Read https://nextjs.org/docs/app/api-reference/functions/cookies and update src/lib/auth.ts to follow the v16 async API.
この一行だけでも、エージェントは対象ページを取得して、そこに書かれている書式に沿ってコードを修正してきます。コツは「URL を貼る前に、何を変えてほしいかを具体的に書く」ことです。「読んで」とだけ書くと要点を取らずに長文を返してくるので、目的を先に固定します。
私はこの手順を、ブログ記事や個人開発のリリースノートを書くときによく使います。例えば iOS 26 SDK に関するアップデートを記事にするときは、Apple Developer の公式 What's New ページを直接渡してから「日本語で簡潔に要約して」と頼むのが1番速いと感じています。
落とし穴:URL は1〜2本に絞る
実体験として、URL を5本以上同時に貼ると、エージェントの注意がぼやけます。「このページの第3章を中心に」のように、範囲も一緒に伝えるほうが質が安定します。
仕組み3:AGENTS.md にプロジェクトの「現在地」を書いておく
3つ目は、ほぼ毎日効いてくる地味な対策です。プロジェクト直下に置く AGENTS.md に、依存関係のバージョンと「使ってほしくない API」を明示します。
# AGENTS.md
## このプロジェクトの環境
- Next.js: 16.0.x(App Router 専用、Pages Router は使わない)
- React: 19.0.x(Server Components 中心、`use client` は最小限)
- Tailwind: v4 系
- TypeScript: 5.6 以上
## 使ってはいけないもの
- `next/router`(v16 で削除済み)
- `useEffect` 内での fetch(Server Components で完結させる)
- `getServerSideProps` / `getStaticProps`(App Router に置き換える)
## コード生成時のルール
- import パスは `@/` プレフィックスを使う
- ファイル末尾に空行を1つ残す
- すべての非同期処理はトップレベル await を許可このファイルは Antigravity が会話のたびに自動で読み込みます。つまり、毎回「Next.js 16 で書いて」と書く必要がなくなる、というのが本質的な恩恵です。私は AGENTS.md を「プロジェクトの履歴書」として捉えていて、メジャーバージョンを上げるたびにここを真っ先に更新します。
書き方の詳細は AGENTS.md でプロジェクト固有のコンテキストを Antigravity に教える と、もう少し踏み込んだ Antigravity のカスタムルールでプロジェクト設定を体系化する を併読すると、運用イメージがつかみやすいかもしれません。
3つの組み合わせ方 — 私の現在のデフォルト
ここまでの3つは、どれか1つだけ使うものではなく、役割が違います。私のデフォルトは次のようにしています。
- 普段の機能追加:
AGENTS.md(仕組み3)に書いてあるバージョン指定だけで足りる - 新しいライブラリを導入する日:Context7 MCP(仕組み1)でドキュメントを引いてから着手
- ライブラリのメジャーアップデート対応:公式 URL の手渡し(仕組み2)でリリースノートを直接読ませる
- 原因不明のエラー調査:検索結果の URL とスタックトレースを併用すると、MCP や
AGENTS.md単独より精度が出やすい
仕組み3が常に効いているおかげで、仕組み1・2を呼び出す機会は意外と少なくなります。逆に言えば、AGENTS.md を整備していないとモデルは毎回ゼロから推測し直すことになり、古い API に引きずられる頻度が一気に増える、というのが体感です。
長いセッションで効く小さな習慣
セッションが長くなり、エージェントが古いパターンに寄り始めたな、と感じた瞬間にやることが2つあります。1つは AGENTS.md に「このとき間違えた一行」を追記すること。もう1つはその場で正規ドキュメントの URL を1本だけ貼り直して、文脈を再アンカーすることです。どちらも30秒以内で終わる作業ですが、その後のセッションをまるごと救ってくれることが多いです。これをサボると、同じコードを2回・3回と書き直す羽目になり、AI IDE で得られたはずの時間がそのまま溶けていきます。
今日からできる最初の一歩
ここまで読んでくださってありがとうございます。3つすべてを一度に揃える必要はないと思っています。最も投資対効果が高いのは、間違いなく AGENTS.md の整備です。
開いているプロジェクトのルートに AGENTS.md を作って、package.json の dependencies から主要なライブラリ名とバージョンを5〜6行コピーします。それだけで、明日からエージェントが「自分が知っている古いバージョン」に勝手に逃げる頻度が目に見えて減ります。Context7 や URL 手渡しは、そのあとで困ったときに足していけば充分です。
タイトルどおり「設計から運用まで」をひと続きで扱う構成で、本記事のように小さなプロジェクトレベルから読み解ける具体例も多く、参考になる場面が多いと思います。