AIエージェント向けの仕様の書き方

Addy Osmaniが2026年2月に公開した記事 How to Write a Good Spec for AI Agents は、AIコーディングエージェントに対する仕様書(spec)の設計方法を整理したものである。

彼の主張は一貫している。巨大な仕様を一度に渡すのではなく、構造化し、分割し、検証可能な形に設計することが重要である。

背景

AIに長大な仕様をそのまま与えると、次の問題が生じやすい。

  • コンテキストウィンドウの制約
  • 注意配分の分散
  • 指示が多すぎることによるミスの増加(指示の呪い(curse of instructions)と呼ばれる)

したがって、必要なのは「網羅的な文書」ではなく、「実行可能な設計図としての仕様」である。

原則1:高レベル仕様から始める

最初は目的と成功条件を簡潔に記述し、詳細な技術仕様はAIに任せる。

手順は次の通りである。

  1. 目的・ユーザー体験・成功条件を記述する
  2. AIに詳細仕様を生成させる
  3. 実装前に計画をレビューする

重要なのは、実装より先に設計を固めることである。仕様は保存し、後続の作業で参照する。

原則2:構造化する

仕様は散文的なメモではなく、明確な章立てを持つ文書とする。

特に重要とされるのは次の6領域である。

  1. Commands(build / test / lint など実行可能なコマンド)
  2. Testing(テスト方法と基準)
  3. Project structure(ディレクトリ構成)
  4. Code style(サンプルコードを含む)
  5. Git workflow(ブランチやコミットの規則)
  6. Boundaries(操作制限):「Always / Ask first / Never」の三層で定義する

仕様は固定文書ではなく、更新され続ける「生きた文書」として扱う。

原則3:タスクを分割する

すべてを一度に処理させるのではなく、作業を小さく分割する。

  • 一度に一つの課題に集中させる
  • 必要な文脈のみを与える
  • 完了後に検証し、次へ進む

仕様が長い場合は、目次を作り、必要な箇所だけ参照させる方法が推奨されている。これにより、コンテキスト消費を抑えつつ全体像を保持できる。

原則4:自己検証と制約を組み込む

仕様は実装指示だけでなく、品質管理の仕組みでもある。

有効な手法として次が挙げられる。

  • 実装後に仕様項目との照合を行う
  • テストやlintを必須化する
  • 別プロンプトでレビューを行う(LLM-as-a-Judge)
  • 仕様由来の適合テストを用意する

また、ドメイン特有の知識や既知の落とし穴を仕様に明示することで、出力の精度が向上する。

原則5:反復と更新を前提とする

仕様は一度書いて終わるものではない。

  • 実装で誤解が生じた場合は仕様を更新する
  • 仕様をバージョン管理する
  • 「Spec → 実装 → テスト → 修正」の循環を維持する

AIの速度や非決定性を前提に、検証工程を組み込むことが必要である。