ANTIGRAVITY LABEN
記事一覧/Agents & Manager
Agents & Manager/2026-05-29上級

Antigravity Agent に渡す Negative Spec の設計 — 5,000 万 DL アプリで使っている『触れてはならない領域』リスト

Antigravity の自律エージェントに『やってよいこと』ではなく『絶対に触れてはならない領域』を渡す Negative Spec の実装と、6 本のアプリを並行運営している現場で使っている運用ノウハウを整理しました。

antigravity435agents90negative-specguardrails3agents-md8production-safety

プレミアム記事

アーティスト・個人開発者の廣川政樹です。2014 年から個人でアプリ開発を続けていて、累計 5,000 万 DL を超えた壁紙・癒し・引き寄せ系アプリを 6 本並行で運営しています。2026 年に入ってからは Antigravity の Background Agent と subagent を本格的に運用に組み込んでおり、リリース・アセット差し替え・在庫整理のほぼすべてを Agent 経由で進めています。

最初の数週間で気づいたのは、Agent に「やるべきことのリスト」を渡しても事故は減らない、ということでした。Agent はやるべきことを 1 つ片付けたあと、すぐ近くにある「やるべきではないこと」に触りに行きます。境界線を越えた瞬間に、5,000 万 DL の収益基盤に小さな傷が残ります。AdMob の広告ユニット ID を 1 文字書き換えるだけで、その日の eCPM がゼロに張りつく、というのがその例です。

そこで設計したのが Negative Spec — エージェントに「絶対に触れてはならない領域」を明示的に渡すドキュメントです。これは Antigravity 公式の AGENTS.md と対になる位置づけで、AGENTS.md が「役割」を語るなら、Negative Spec は「役割の外側」を語ります。ここから先は、私が 6 本のアプリと 4 サイトのブログ運営で実際に使っている FORBIDDEN.md のテンプレート、Antigravity の subagent への読み込ませ方、Background Agent への再注入スクリプト、そして 3 週間で止めた破壊的操作 5 件と、その兆候パターンを共有していきます。

なぜ AGENTS.md だけでは足りないのか

Antigravity の AGENTS.md は「このリポジトリで Agent が何をすべきか」を宣言するドキュメントです。テスト実行コマンド、コーディング規約、依存関係の追加方法など、ポジティブな指示が並びます。ここまでは良いのですが、現場では「テストを通すついでに DB マイグレーションを書く」「ビルドが通らないので tsconfig を Agent が勝手に緩める」といった、AGENTS.md には書かれていないが触ってほしくない領域への踏み込みが起こります。

問題の本質は、Agent が「やっていいこと」を書かれた範囲で解釈しないことにあります。LLM は「許可されていないことは禁止されている」ではなく「禁止されていないことは試してよい」と推論します。これは Claude in Chrome の Operator 設定や Gemini の自律実行モードでも同じ傾向です。実際、私が壁紙アプリのリリースを subagent に任せた最初の週、Agent は AGENTS.md にあった「ビルド失敗時はログを残せ」という指示を読んだあと、「ログを残すためには Crashlytics の API キーが要るな」と判断して、Firebase コンソールに新しい API キーを発行しに行きました。これは事故ではなく、合理的な推論の結果として境界を越えた例です。

Negative Spec を導入する目的は、推論のコストを上げて境界線を可視化することです。Agent に「Crashlytics の API キーは絶対に新規発行しない」と明示しておけば、同じ場面で Agent は「API キーが要るが発行禁止だから、別の手段を探すか人間に投げる」という判断をします。境界を超える前に止まる確率が大幅に上がります。

FORBIDDEN.md の最小実装

私の現場では、リポジトリのルートに AGENTS.md と並べて FORBIDDEN.md を置いています。Antigravity の subagent は明示的にこのファイルを cat してから作業に入る、という運用です。最小構成は以下のような形です。

# FORBIDDEN.md — このリポジトリで Agent が絶対に触れてはならない領域
 
このファイルは AGENTS.md とセットで読み込んでください。AGENTS.md にない指示でも、
ここに書かれた領域に触れる可能性があるなら、必ず人間に確認を取ってください。
 
## 1. 認証・課金系の鍵
- .env.production / firebase-adminsdk*.json / GoogleService-Info.plist
- Stripe の sk_live_*, AdMob の ca-app-pub-*, Apple Connect API Key
- いかなる理由でも新規発行・再発行・ローテーションを行わない
 
## 2. 公開済みアセットの破壊的上書き
- public/wallpapers/v3/ 以下の画像(販売中のアセット)
- App Store / Google Play の現行バージョンメタデータ(説明文・スクリーンショット)
- リリース済み App Bundle の差し替え
 
## 3. データベース・マイグレーション
- migrations/ 以下の既存ファイル編集
- production の Cloudflare D1 / KV namespace への書き込み
- 既存テーブルの DROP / TRUNCATE / ALTER
 
## 4. CI/CD パイプライン
- .github/workflows/release-*.yml の編集
- main ブランチへの直接 push
- protected tag (v*) の削除・再作成
 
## 5. 法務・契約・収益分配
- LICENSE / NOTICE / TERMS / PRIVACY の編集
- royalty.json (アセット権利者への分配率)
- legal/ ディレクトリの一切の編集

ポイントは 3 つあります。1 つ目は「カテゴリ単位で書く」こと。個別のファイル名を延々と並べると Agent が読み飛ばします。2 つ目は「理由を書かない」こと。Negative Spec は理由を書くと Agent が「この理由が当てはまらない場合は OK」と解釈します。3 つ目は「曖昧な動詞を避ける」こと。「触らない」「壊さない」ではなく、「編集しない」「発行しない」「書き込まない」と動詞を限定します。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
AGENTS.md と並べて運用する FORBIDDEN.md の最小実装と、6 本の iOS/Android アプリで実際に使っている 12 の禁止カテゴリ
Antigravity の subagent に Negative Spec を読み込ませる順序と、Background Agent に毎回再注入する 30 行のスクリプト
5,000 万 DL のうち稼ぎ頭 3 本を 3 週間 Agent に任せた中で実際に止めた破壊的操作 5 件と、その兆候パターン
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

Agents & Manager2026-05-13
AIエージェントに「なぜ」を伝える — コンテキスト設計5原則で判断ミスを防ぐ
AIエージェントが「正しいコード」で「間違った仕事」をする根本原因は、Whatだけ伝えてWhyを伝えていないことにあります。Antigravityエージェントへの意図コンテキスト設計5原則と、AGENTS.md・タスク指示・エラー診断の3つの実装パターンを解説します。
Agents & Manager2026-04-22
Antigravity で実装するプロンプトインジェクション防御 — LLMアプリの本番運用セキュリティ実装ガイド
LLMアプリの本番運用で避けて通れないプロンプトインジェクション対策を、Antigravityで動く実装コード付きで体系化。直接・間接・多段攻撃への多層防御を一本の記事で完結させます。
Agents & Manager2026-07-15
ls には見えるのに、エージェントが開けない — 日本語ファイル名が macOS と Linux で別物になるとき
エージェントが「そのファイルは存在しません」と言い、ターミナルの ls には確かに写っている。三日かけて同期を疑った末に辿り着いたのは、濁点が一文字ではなかったという事実でした。検出スクリプトと三層ゲートまで残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →