1. はじめに
既存のエージェントに機能(新しいデータベース ベースの機能)を追加するには、通常、ボイラープレートの作成、統合の接続、コードベースにすでに存在するパターンとの一貫性の維持が必要です。Antigravity は、このプロセスのすべての段階を加速します。コードベースを分析して必要なコンテキストを構築し、レビュー用の構造化された仕様と実装計画を作成し、コード変更を実行します。これらはすべて、再利用可能なスキルとしてキャプチャするドメイン知識と、交渉不可能な原則を適用するプロジェクト憲章によってガイドされます。この Codelab では、spec-kit を参照する仕様ドキュメントを大幅に強化する新しいサイクルを導入することで、Antigravity 仕様駆動開発パラダイムを強化する方法を紹介します。
作成するアプリの概要
完全な SDD サイクルを通じて予約機能が追加された、ローカルで実行されるレストラン コンシェルジュ アプリケーション:
- 予約 - 新しい MCP ツールボックス データベース ツールと Cloud SQL
reservationsテーブルを基盤として、ゲストがテーブルを予約し、予約を確認します。 - (チャレンジ)– エージェント用の独自の UI を開発する
- (チャレンジ)– Antigravity エージェントを使用して Google Cloud にデプロイする
スターター コードは、メニュー検索(キーワード + MCP ツールボックスによるセマンティック)と食事の好みトラッキング(ToolContext による)を備えた動作可能な ADK エージェントを提供します。アプリケーション コードを手動で記述することなく拡張できます。Antigravity は、ユーザーの仕様に基づいて実装を処理します。

学習内容
- Antigravity が既存のコードベースを理解できるようにプロジェクト コンテキストをブートストラップする方法
- Antigravity スキルを作成し、再利用のためにドメイン知識(ADK ドキュメント、サードパーティ スキルなど)をパッケージ化する MCP を構成する方法
- SDD ワークフローが計画と分析の際に検証するプロジェクト憲章を設定する方法
- Antigravity で仕様駆動開発(SDD)ワークフローを使用して体系的に機能を追加する方法
- MCP ツールボックスを使用して新しいデータベース バックエンド ツールで ADK エージェントを拡張する方法
前提条件
- ローカルマシンに Google Antigravity と
gitがインストールされている - 有効な請求先アカウントが有効になっている Google Cloud アカウント
- ユースケースのコンテキストを理解するには、前提条件となる 4 つの ADK Codelab(または同等の知識)を事前に修了しておくことをおすすめします。
- ADK を使用した AI エージェントの構築: 基礎
- ADK を使用して AI エージェントを構築する: ツールによる強化
- ADK と CloudSQL を使用して永続的な AI エージェントを構築する
- Cloud Run で ADK エージェントをデプロイ、管理、モニタリングする
- ツールとしてのデータベース: ADK、MCP ツールボックス、Cloud SQL を使用したエージェント RAG
2. 環境をセットアップする
この手順では、スターター リポジトリのクローンを作成し、Google Cloud で認証を行い、Cloud SQL データベースをプロビジョニングして、ローカルの Antigravity 環境を準備します。
前提条件をインストールする
システムに次の CLI 実行可能ファイルがあることを確認します。
インストール手順は、マシンのオペレーティング システムによって異なります。
スターター リポジトリのクローンを作成する
Antigravity(またはシステム ターミナル)でターミナルを開きます。コンパニオン リポジトリのクローンを作成し、ディレクトリに入ります。
git clone https://github.com/alphinside/sdd-adk-antigravity-starter.git sdd-adk-agents-agy
cd sdd-adk-agents-agy
クローンを作成したリポジトリを Antigravity で開きます。[File] -> [Open Folder] -> クローンしたディレクトリ sdd-adk-agents-agy を選択します。
アップストリーム リモートを削除します。SDD ワークフローは、機能仕様の git ブランチを作成します。リモートを削除すると、スターター リポジトリへの誤った push を防ぐことができます。
git remote remove origin
Google Cloud での認証
2 つの認証コマンドを実行します。どちらも OAuth のブラウザを開きます。
gcloud auth login
gcloud auth application-default login
Antigravity をローカルで使用しているため、手動で認証します。auth login が gcloud CLI を認証します。application-default login は、アプリケーションが使用する Google Cloud SDK を認証します。ADK の Vertex AI 呼び出しと Cloud SQL Python コネクタはどちらも、アプリケーションのデフォルト認証情報に依存しています。
Google Cloud プロジェクトを設定する
プロジェクト設定スクリプトを実行する前に、ロケーション変数を .env に書き込みます。
echo "GOOGLE_CLOUD_LOCATION=global" > .env
echo "REGION=us-central1" >> .env
GOOGLE_CLOUD_LOCATION=globalは、Vertex AI / Gemini API 呼び出しに使用されます。REGION=us-central1は、Cloud SQL やその他の GCP インフラストラクチャで使用されます。
プロジェクト設定スクリプトをダウンロードして実行します。トライアル課金で Google Cloud プロジェクトを作成または検証し、プロジェクト ID を .env に保存して、ソースを取得します。
curl -sL https://raw.githubusercontent.com/alphinside/cloud-trial-project-setup/main/setup_verify_trial_project.sh -o setup_verify_trial_project.sh
bash setup_verify_trial_project.sh && source .env
API を有効にしています
必要な API を有効にします。
gcloud services enable \
aiplatform.googleapis.com \
sqladmin.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com
依存関係のインストール
Python プロジェクト マネージャーとして uv を使用します。uv は、Rust で記述された高速な Python パッケージおよびプロジェクト管理ツールです(ドキュメント)。この Codelab では、高速性と簡便性を実現するためにこれを使用します。Python 依存関係をインストールします。
uv sync
次に、プロジェクトの構成で ADK エージェントの .env ファイルを更新します。
cat > restaurant_concierge/.env <<EOF
GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT}
GOOGLE_CLOUD_LOCATION=global
GOOGLE_GENAI_USE_VERTEXAI=True
EOF
データベース インフラストラクチャとデータを準備する
データベース パスワードを設定し、.env に追加します。
export DB_PASSWORD=codelabpassword
echo "DB_PASSWORD=${DB_PASSWORD}" >> .env
次に、scripts/setup_database.sh スクリプトを実行して、必要なすべてのインフラストラクチャを準備します。次の処理が行われます。
- Cloud SQL インスタンスを作成
- インスタンスの準備が完了しているかどうかを確認する
- Vertex AI 権限を付与する
- データベースを作成
- シード データベース
- MCP ツールボックス サービスをバックグラウンドで実行する
chmod +x scripts/setup_database.sh
./scripts/setup_database.sh > database_setup.log 2>&1 &
このコマンドはバックグラウンドでセットアップを実行します。database_setup.log ファイルで出力を定期的に確認できます。
これで、必要なスターター ADK エージェント リポジトリがすべて揃い、作業を開始できます。準備が整うまで、次のセクションで Antigravity と仕様駆動開発について詳しく説明します。
3. スターター コードを確認し、仕様駆動開発を理解する
このステップでは、スターター コードの構造について説明し、仕様駆動開発の手法を紹介します。また、データベースにシードを挿入し、ベース エージェントが動作することを確認してから、拡張を開始します。
プロジェクトの構造
クローンを作成したリポジトリ プロジェクトを Antigravity エディタで開き、ディレクトリ レイアウトを確認します。
sdd-adk-agents-agy/ ├── .agents/ │ ├── workflows/ # SDD slash commands (/speckit.*) – manual trigger │ │ ├── speckit.specify.md │ │ ├── speckit.clarify.md │ │ ├── speckit.plan.md │ │ ├── speckit.tasks.md │ │ ├── speckit.analyze.md │ │ ├── speckit.implement.md │ │ ├── speckit.checklist.md │ │ └── speckit.constitution.md │ ├── skills/ # Antigravity skills (loaded on demand, agent determined) │ │ ├── mcp-toolbox-postgres/ │ │ │ └── SKILL.md # MCP Toolbox config skill │ │ └── repo-research/ │ │ └── SKILL.md # Repo analysis skill │ └── rules/ # Always-active context ├── .specify/ # spec-kit SDD templates and memory │ ├── memory/constitution.md │ ├── templates/ │ └── scripts/ ├── restaurant_concierge/ # ADK agent package │ ├── __init__.py │ ├── agent.py # LlmAgent + ToolContext tools + Toolbox integration │ └── .env # Vertex AI configuration ├── server.py # FastAPI server wrapping the agent ├── tools.yaml # MCP Toolbox tool definitions ├── scripts/ # Setup scripts └── pyproject.toml
キーファイル
エージェント アプリケーション ファイル
restaurant_concierge/agent.py- コア エージェント。MCP ツールボックスのデータベース ツールとToolContextベースの食事の好みトラッキングを組み合わせたLlmAgent。エージェントは、ツールボックス サーバーからすべてのツールを読み込み、ToolContextを使用して状態を管理する 2 つの Python 関数(save_dietary_preference、get_dietary_preferences)を追加します。tools.yaml- MCP ツールボックスのツール定義。3 つのメニュー検索ツール(キーワード検索(search_menu)、pgvectorを介したセマンティック検索(semantic_search_menu)、カテゴリ フィルタ(get_menu_by_category))が定義されています。予約ツールはまだ存在しません。これらは後で追加します。server.py- 最小限の FastAPI サーバー。FastAPI オブジェクトとして ADK にアクセスする方法を示します。ADK のget_fast_api_app()は、SSE ストリーミングとセッション管理 API 用の/run_sseなどの組み込みエンドポイントを提供します。
Antigravity ファイル
.agents/skills/mcp-toolbox-postgres/SKILL.md- MCP ツールボックス用の適切な tools.yaml 構成を作成する方法を Antigravity に指示するスキル。このスキルでは、適切な RAG パイプラインの構築に必要なsources、tools、embeddingModels構成に関連する構成について説明します。このスキルは、Antigravity で認識される適切な YAML フロントマターを追加するまで有効になりません。.agents/skills/repo-research/SKILL.md- リポジトリを増分的に分析し、構造化されたプロジェクト コンテキスト ドキュメントを生成する方法を Antigravity に教えるスキル。4 フェーズのアプローチ(サーフェス スキャン(ディレクトリ ツリーのみ)、構成ファイルとメタデータ ファイル、エントリ ポイントとデータモデル、ターゲットを絞った詳細分析)を使用します。各フェーズは、次のフェーズに進む前に停止して結果を書き込みます。また、後で YAML フロントマターを追加するまで非アクティブになります。有効にしたら、呼び出して.agents/rules/project-context.mdを生成します。これは、アーキテクチャ、ランタイムの依存関係、API サーフェス、ドメイン用語集を網羅した包括的なオンボーディング ドキュメントです。
仕様駆動開発: Antigravity の組み込みプランニングから構造化された SDD まで
AI コーディング アシスタントを使用すると、プロンプトからコードを簡単に生成できます。リスク: 1 つの機能を 1 文で説明すると、アシスタントが数百行のコードを生成し、それが正しいように見えるため、そのまま受け入れてしまう。これは「バイブ コーディング」と呼ばれることもあります。つまり、感覚で操縦し、動作するかどうかで出力を受け入れたり拒否したりします。プロトタイプや使い捨てスクリプトには高速です。コードベースが大きくなった場合、機能が相互作用する場合、数週間後にコードを再確認したときに決定の理由を再構築できない場合などに、この原則は破られます。

仕様駆動開発(SDD)は、このループに構造を追加します。コードを生成する前に、仕様(機能の内容、対象ユーザー、成功基準)を記述します。AI アシスタントは仕様に基づいて動作します。出力結果を確認する際も、仕様に基づいて確認します。仕様はインテントの信頼できる唯一の情報源になります。コードが仕様から逸脱している場合は、レビューで検出します。要件が変更された場合は、まず仕様を更新してから再生成します。決定は即興ではなく、文書化されます。
トレードオフは実際に存在します。SDD はバイブレーション コーディングよりも機能あたりの速度が遅くなります。コードを記述する前にドキュメントを作成します。しかし、その効果は複合的に現れます。コードベースの今後の変更にはすべてコンテキストがあり、AI によって生成された実装にはすべてレビュー可能なコントラクトがあり、共同作業者(人間または AI)をオンボーディングする際に、決定を記憶から説明するのではなく、仕様を参照させることができます。
Antigravity はすでに仕様駆動開発の原則に沿っています。エージェントをプランニング モードに設定すると、コードを記述する前に次の 2 つのアーティファクトが生成されます。
- 実装計画 - 提案された技術的アプローチ、ファイルの変更、アーキテクチャの決定の概要

- タスクリスト - 作業項目の構造化された内訳

Antigravity は、実行前にこれらのアーティファクトを確認して承認するよう求めます。この計画と実装のループが仕様駆動開発の中核です。仕様がコードをガイドし、その逆ではありません。
この Codelab では、spec-kit(GitHub の仕様主導開発フレームワーク)に基づく、独自のバージョン管理されたワークフローを使用して、その基盤をさらに発展させます。すべての機能は、各アーティファクトが git で確認、編集、追跡できるスタンドアロン ドキュメントである、慎重なパイプラインを通過します。パイプラインには、実装上の問題が発生する前に問題を検出する 2 つのオプションの品質ゲートフェーズ(明確化と分析)が含まれています。
フェーズ | アーティファクト | 目的 |
|
| 構築する内容を定義する(ユーザー向け、テクノロジーに依存しない) |
| 更新: | 仕様が明確でない部分を特定し、的を絞った明確化の質問をし、回答を仕様にエンコードする |
|
| 構築方法の設計(技術的アプローチ、データモデル、調査) |
|
| 計画を順序付けられた実行可能なステップに分割する |
| 分析レポート | 実装前に、タスクのリスク、ギャップ、欠落しているエッジケースを確認する |
| コード変更 | タスクを実行し、完了したらチェックマークを付ける |

すべてのアーティファクトは specs/<feature-branch>/ のファイルとして永続化され、git でバージョン管理され、再利用可能です。会話が中断された場合や、後で決定事項を確認したい場合は、仕様書が常に存在します。チャット履歴に埋もれることはありません。
スターター リポジトリには、これらの SDD ワークフローが .agents/workflows/ に、テンプレートが .specify/templates/ に含まれています。これらのビューは、後でエージェントに機能を追加するために使用します。
4. Antigravity を使用してプロジェクト コンテキストをブートストラップする
では、日常業務に「近い」条件でシミュレーションしてみましょう。
- 管理が不十分なリポジトリ
- README が廃止されました
- ドキュメントが頻繁に更新されない
このような状況でまず行うのは、通常、Antigravity に取り組んでほしいプロジェクトの地図やコンテキストを作成することです。このステップでは、リポジトリを分析してプロジェクト コンテキスト ドキュメントを生成するスキルを作成し、Antigravity に既存のコードベースを深く理解させる方法の一例を示します。
また、プロジェクトの構成(SDD ワークフローが検証する交渉不可の原則)も設定します。これらにより、Antigravity は後で SDD サイクルに必要なコンテキストと制約を取得します。
Antigravity コンテキスト階層
Antigravity は、それぞれスコープが異なる 3 つのレベルのコンテキストを使用します。
- ルール(
.agents/rules/): 常に有効な指示。このワークスペースのすべての会話で、このユーザーが確認されます(有効にした場合)。アーキテクチャの決定、コーディング標準、技術スタック情報など、プロジェクト全体のコンテキストにルールを使用します。 - スキル(
.agents/skills/): オンデマンドの知識。Antigravity は、現在のタスクがスキルのdescriptionフィールドと一致する場合にのみスキルを読み込みます。スキルを使用して、ドメイン固有の参照マテリアルを取得します。 - Workflows(
.agents/workflows/):/コマンドでトリガーされる保存済みプロンプト。SDD パイプラインなどの繰り返し可能な複数ステップのプロセスには、ワークフローを使用します。
スキルを有効にする
スターター リポジトリには、.agents/skills/ に 2 つの事前作成されたスキルが含まれています。詳細な手順が含まれていますが、必要な YAML フロントマターではなく TODO(codelab) コメントで始まっています。フロントマターがないと、Antigravity はそれらを検出できません。
反重力スキルには、ファイルの先頭に YAML フロントマター ブロックが必要です。このブロックには次の 2 つのフィールドがあります。
name- スキルの一意の識別子description- 特定のリクエストに対してどのスキルを読み込むかを決定する際に、Antigravity が照合する自然言語の概要
エディタで .agents/skills/mcp-toolbox-postgres/SKILL.md を開きます。先頭の TODO(codelab) コメント行を次のフロントマターに置き換えます。
---
name: mcp-toolbox-postgres
description: Configure MCP Toolbox for PostgreSQL — sources, tools, and embedding models
---
エディタで .agents/skills/repo-research/SKILL.md を開きます。先頭の TODO(codelab) コメント行を次のフロントマターに置き換えます。
---
name: repo-research
description: Analyze a repository's structure, technologies, and patterns to create or update a project context document. Use when asked to research, analyze, or understand a codebase.
---
両方のスキルに有効なフロントマターがあることを確認します。
head -4 .agents/skills/mcp-toolbox-postgres/SKILL.md
head -4 .agents/skills/repo-research/SKILL.md
それぞれに、name: フィールドと description: フィールドを囲む --- 区切り文字が表示されます。区切り文字やフィールドがない場合、Antigravity はスキルを認識しません。
どちらのスキルもオンデマンドで読み込まれます。Antigravity は、リクエストを description フィールドと照合し、関連する場合にのみ完全な手順を取得します。
ADK Docs MCP を構成する
コーディング エージェントが ADK エージェントの開発方法を正しく認識できるようにするには、ADK ドキュメントへの適切なアクセス権が必要です。これは、ADK ドキュメントの MCP サーバーを設定することで有効にできます。
まず、Antigravity エディタで、エージェント ウィンドウの右上にある「省略記号」アイコンを見つけてクリックします。MCP の設定オプションとカスタマイズが表示されます。MCP をクリックします。
\
次に、[Manage MCP servers] ボタンをクリックします。

MCP サーバーの構成タブが開いたら、View Raw Config ボタンをクリックします。

mcp_config.json ファイルが開きます。この構成をファイルにコピーして貼り付けます。
{
"mcpServers": {
"adk-docs-mcp": {
"command": "uvx",
"args": [
"--from",
"mcpdoc",
"mcpdoc",
"--urls",
"AgentDevelopmentKit:https://adk.dev/llms.txt",
"--transport",
"stdio"
]
}
}
}
この設定により、コーディング エージェントは MCP サーバーを使用して ADK ドキュメントを検索して読み取ることができます。
一般公開スキルをインストールする
以前に、独自に作成したスキル(repo-research スキルと mcp-toolbox-postgres スキル)を検査しました。ただし、ソフトウェア開発のサポートに役立ち、コーディング エージェントに簡単にインストールできるスキルは他にもたくさんあります。
Caveman Skills
トークンの使用量を減らすのに役立つスキルの 1 つに、洞窟人スキルがあります。このスキルは、エージェントから出力トークンをカットできます。このチュートリアルのような完全な仕様駆動開発を利用する場合に、このスキルを組み合わせると効果的です。
npx skills add JuliusBrussee/caveman
以前と同様に、ここでは caveman スキルを選択します。

[Enter] をクリックして、デフォルトのインストールを有効にし、現在のプロジェクトにスキルをインストールします。
これで、4 つのスキルが構成され、SDD の旅を始める準備が整いました。
.agents/skills/ ├── caveman ├── mcp-toolbox-postgres └── repo-research
プロジェクトのコンテキストを生成する
ルール ディレクトリが存在することを確認します。
mkdir -p .agents/rules
Antigravity のエージェント マネージャー/チャット ボックス(エディタモードで ctrl + L を押します)で、新しい会話を開始します。タイプ:
Research this repository and create a project context document, and communicate efficiently
Antigravity は、リクエストを repo-research と caveman のスキル(効率的に通信するためのコマンド)に照合し、コードベースの体系的な分析を開始します。構成ファイル、ソースコード、ドキュメントを読み取り、その結果をプロジェクト コンテキスト テンプレートに入力します。
完了したら、エディタで .agents/rules/project-context.md を開きます。これには、プロジェクトに関する具体的な情報(技術スタック(Python 3.12、ADK、MCP ツールボックス、Cloud SQL)、プロジェクト構造、データモデル(pgvector を含む menu_items テーブル)、外部統合)が含まれています。

プロジェクトの構成を設定する
SDD ワークフローは、計画と分析の際に .specify/memory/constitution.md でプロジェクト憲章を参照します。/speckit.plan ワークフローはこれに対して「憲法チェック」を実行し、/speckit.analyze は違反を重大として報告します。構成がプレースホルダ トークンを含む空白のテンプレートのままの場合、これらのチェックは検証対象がないため、プランと分析はガードレールなしで実行されます。
憲章では、交渉不可能なプロジェクトの原則を定義します。これは 1 人のデベロッパーが管理する小さなリポジトリであるため、その範囲を反映した構成にする必要があります。シンプルで一貫性があり、過剰なエンジニアリングを避けるようにしてください。
Antigravity のエージェント マネージャーで、新しい会話を開始します。構成ワークフローを実行します。
/speckit.constitution This is a small restaurant concierge ADK agent maintained by one developer. Set 3 principles: (1) All database operations go through MCP Toolbox tool definitions in tools.yaml — no raw SQL in Python code, no ORM. (2) Session state uses ADK ToolContext — no custom state management, no external state stores. (3) Keep it simple — follow existing file and naming conventions exactly.
Antigravity は、構成テンプレートに具体的な原則を入力し、バージョン(1.0.0)を割り当て、SDD テンプレート全体で整合性チェックを実行します。
.specify/memory/constitution.md で生成された憲法を確認します。3 つの原則が明記されていることを確認します。

5. SDD サイクル - 予約機能を追加
このステップでは、完全な SDD サイクルを説明し、レストラン コンシェルジュ エージェントに予約を追加します。各フェーズ(指定、明確化、計画、タスク、分析、実装)を通じて Antigravity を推進し、各アーティファクトが前のアーティファクトをどのように基盤としているかを確認します。これが、この Codelab の中心的な学習内容です。
機能を指定する
Antigravity のエージェント マネージャーで、新しい会話を開始します。機能説明を含む /speckit.specify ワークフロー コマンドを入力します。
/speckit.specify Add reservation booking capability to the restaurant concierge agent. Guests should be able to make a table reservation by providing their name, party size, date, and time. They should also be able to check existing reservations. The agent should confirm reservation details before booking and handle special requests (e.g., "window seat", "birthday celebration").
Antigravity は、機能ブランチを作成し、仕様ドキュメントを生成して、品質検証を実行します。Antigravity から確認の質問が提示された場合は、上記の機能の説明に基づいて回答します。
仕様は「どのように」ではなく「何を」と「なぜ」に焦点を当てます。SQL テーブル、tools.yaml、ADK API について言及せずに、ユーザー エクスペリエンス(「ゲストは名前、人数、日付、時間を指定して予約できます」)を説明しています。実装の詳細は計画フェーズで決定します。
生成された仕様を specs/<branch-name>/spec.md で確認します。機能要件と成功基準がキャプチャされていることを確認します。

仕様を明確にする(省略可)
明確化ワークフローを実行して、仕様の未指定の領域を特定して解決します。
/speckit.clarify
Antigravity は、仕様の曖昧さ、受け入れ基準の欠落、要件の指定不足をスキャンします。対象を絞った明確化のための質問が提示され、それぞれに短い選択肢またはフレーズで回答できます。回答は仕様に直接エンコードされるため、計画の開始前に仕様の精度を高めることができます。
実装を計画する
プランニング ワークフローを実行します。
/speckit.plan Update the restaurant concierge agent to multi agent architecture which separate responsibilities for handling menu and reservations. Utilize your access to ADK Docs tools and MCP toolbox skill to implement it properly
Antigravity は、次の 2 つのフェーズで技術計画を生成します。
- 調査フェーズ - 既存のコードベースに関する不明な点を解決し、
research.mdを生成します。 - 設計フェーズ -
data-model.md(予約エンティティ定義)を作成し、project-context.mdを更新します。
Antigravity は、計画時に ADK ドキュメントの MCP ツールと MCP ツールボックスのドキュメントのスキルを使用する必要があります。主なアーティファクトを確認します。
specs/<branch-name>/plan.md- 技術的なアプローチ: どのファイルを変更するか、どのようなパターンに従うかspecs/<branch-name>/data-model.md- 予約エンティティの定義(列、型、関係)specs/<branch-name>/research.md- 決定と根拠

タスクを生成する
タスク ワークフローを実行する
/speckit.tasks
Antigravity は、プランを specs/<branch-name>/tasks.md の順序付きタスクリストに分割します。タスクは、ID、優先度マーカー、ファイルパスを含む厳密なチェックリスト形式に従います。例:
- [ ] [T001] [P] Create reservations table schema in scripts/seed_db.py - [ ] [T002] [P] Add create_reservation tool to tools.yaml - [ ] [T003] [P] Add list_reservations tool to tools.yaml - [ ] [T004] [P] Update agent instruction in restaurant_concierge/agent.py
タスクは、セットアップ → 基盤 → ユーザー ストーリー → 仕上げのフェーズに分類されます。タスクリストをスキャンして、作成および変更される内容を確認します。

タスクを分析する(省略可)
分析ワークフローを実行して、リスクとギャップのタスクを確認します。
/speckit.analyze
Antigravity は、仕様と計画に照らしてタスクリストをチェックし、エッジケースの欠落、競合する可能性のあるタスク、仕様の要件と計画された作業の間のギャップを探します。実装前に重大な問題に対処します。
6. 実装
実装ワークフローを実行します。
/speckit.implement
Antigravity は、最終的な実装計画とタスク アーティファクトを提示します。確認して承認し、続行します


Antigravity はタスクを実行し、完了したタスクにチェックマークを付けます。完了すると、完全なチュートリアルが表示されます。

コードの変更をテストする
実装が完了したら、キーの変更が行われたことを確認します。ファイル名とコンテンツは異なる場合がありますが、tools.yaml や agent.py のように、これらのパターンが存在している必要があります。
# Verify reservation tools were added to tools.yaml
grep -i "reservation" tools.yaml
次のような出力が表示されます。
...
get_reservations_by_name:
Retrieve all reservations for a guest by their name. Uses case-insensitive
SELECT id, guest_name, party_size, reservation_datetime, special_requests, created_at
FROM reservations
ORDER BY reservation_datetime DESC
...
agent.py の場合
# Verify agent instruction was updated
grep -i "reservation" restaurant_concierge/agent.py
# Check what files changed
git diff --name-only
次のような変更が見つかることがあります。
...
- **Table Reservations**: Help guests book a table or check their existing reservations.
## Reservation Booking Rules
When a guest wants to make a reservation, collect ALL of the following before confirming:
**IMPORTANT**: Before calling `book_reservation`, you MUST:
- Only call `book_reservation` after the guest says "yes" or "confirm"
## Checking Reservations
When a guest asks to check their reservations:
- Use `get_reservations_by_name` to find their bookings
book_reservation,
...
変更はシード データベース スクリプトに影響します。更新されたスクリプトは、reservations テーブルが存在しない場合は作成する必要があります。新しいテーブルが作成されたことを確認する出力が表示されます(既存の menu_items データは保持されます)。
ここまでの手順がすべて正常に完了したら、ADK エージェントの Dev UI で機能をテストできます。データベースの移行を行って新しいテーブルを組み込み、ツールボックスを再起動して tools.yaml で新しいツールの定義を取得しましょう。既存の Toolbox プロセスを停止してから、新しいプロセスを開始します。
lsof -ti:5000 | xargs kill -9 2>/dev/null; echo "Done"
./scripts/setup_database.sh > database_setup.log 2>&1 &
database_setup.log の出力ログで、Antigravity が正しいコードと構成を生成しているかどうかを確認できます。エラーが発生した場合は、エージェントとやり取りして修正を試してください
すべてがうまくいけば、ADK 開発 UI を開始できます。
uv run adk web .
ブラウザで http://localhost:8000 を開き、次のプロンプトでテストします。
I'd like to book a table for 4 people on Friday at 7pm under the name Timmy
Do I have any upcoming reservations?


次に、Ctrl+C を 2 回押して ADK 開発 UI を停止します。
7. 課題(省略可)
これで、SDD のワークフロー全体を理解できました。テストしてみましょう。
- 2 回目の SDD サイクルを実行して、レストラン コンシェルジュのウェブチャット インターフェースを構築します。今回は、ステップバイステップのガイダンスはありません。
- 本番環境シナリオ用に Cloud Run にエージェントをデプロイする
ヒント
- プロジェクトにフロントエンド フレームワークがありません。Antigravity はバニラ HTML/CSS/JS を提案する必要があります。React などを提案した場合は、シンプルにするよう促します(憲法の「シンプルさを保つ」原則がこれをキャッチします)。
- ADK サーバーは、ストリーミング用に
/run_sseを、セッション管理用に/apps/{app_name}/users/{user_id}/sessionsを公開します。Antigravity は、プロジェクト コンテキストからこれらを検出します。 - 実装後、静的ファイルのマウントが機能するように、
uv run uvicorn server:app --host 0.0.0.0 --port 8080(adk webではない)でサーバーを起動します。 http://localhost:8080/static/index.htmlでテストします。- リファレンス Codelabs では、ADK エージェントをデプロイして永続化する方法がすでに示されています。Antigravity にこのリファレンスを渡してください。
8. 完了
レストラン コンシェルジュ ADK エージェントを予約機能で拡張しました。これは、Antigravity の SDD ワークフローを介して完全に実現されており、アプリケーション コードを手動で記述する必要はありません。
構築した内容
- メニュー検索、セマンティック検索、食事の好みに関するトラッキング、予約機能が備わったレストラン コンシェルジュ ADK エージェント
- プロジェクト コンテキスト ドキュメントを生成して維持する、リポジトリ調査用の Antigravity スキル
- 計画と分析の際に交渉不可能な原則を適用するプロジェクト憲章
- SDD の完全なサイクル。指定 → 明確化 → 計画 → タスク → 分析 → 実装のワークフローを示しています
学習した内容
- Antigravity で仕様駆動開発ワークフローを使用して既存のコードベースに体系的に機能を追加する方法
- Antigravity スキルを作成し、会話全体で再利用できるようにドメイン知識をパッケージ化する MCP を構成する方法
- Antigravity がアーキテクチャ、パターン、テクノロジーの選択について十分な情報に基づいて意思決定を行えるように、プロジェクトのコンテキストをブートストラップする方法
- SDD ワークフローが検証するプロジェクト憲章を設定する方法
- MCP ツールボックスを使用して新しいデータベース ベースのツールで ADK エージェントを拡張する方法
クリーンアップ
実行中のローカル プロセス(ツールボックス)を停止します。
lsof -ti:5000 | xargs kill -9 2>/dev/null
継続的な課金を避けるため、Cloud SQL インスタンスを削除します。
gcloud sql instances delete restaurant-db --quiet
必要に応じて、プロジェクト全体を削除します。
gcloud projects delete $GOOGLE_CLOUD_PROJECT