言語を切り替える
テーマを切り替える

エージェントに「専門家の頭脳」を:Antigravity カスタム Agent Skills プラグインの書き方

先週、チームメンバーからまた同じ質問をされました。「この API の認証フローって、結局どうなってるんですか?」

私は埃をかぶった Confluence ページを開き、最終更新が 6 ヶ月前だと気づきました。ドキュメントとコードがまたズレています。ため息をつき、何度も説明してきた内容を手打ちし始めました。

その夜、Antigravity をいじっていたら、偶然 Skills システムを見つけました。要するに、AI エージェントに「専門家の頭脳」を植え付ける仕組みです。特定の知識を覚えさせ、決まった手順を実行させ、専用ツールを呼び出させられます。

2 時間かけて社内 API 用の Skill を書きました。翌日、新人が同じ質問をしてきたとき、Antigravity にこう打ち込みました。「ユーザーサービスの認証フローを調べて」。

エージェントが Skill を呼び出し、30 秒後にはコード例付きの正確な説明が返ってきました。新人はうなずいて、自分で調べ始めました。

その瞬間、確信しました。Skill システムは単なる拡張機能ではなく、チームの協働の仕方そのものを変えるものだと。

この記事では、Antigravity 向けカスタム Skills の書き方を、基礎概念から実践例、外部 API 統合、プライベートナレッジベース接続まで解説します。

Antigravity Skills とは

まず概念を整理しましょう。

Antigravity の Skill システムは、軽量でオープンな拡張フォーマットです。AI エージェントにインストールする「アプリ」のようなもので、各 Skill が特定能力を定義し、シーンに応じてより専門的に動かせます。

Google Codelabs によると、Skills はディレクトリ構造のパッケージで、標準フォーマットによりエージェントが確実に解析・実行できます。典型的な Skill の構成は次のとおりです。

  • skill.yaml:メタデータ、能力説明、使用シーン
  • README.md:機能と使い方の詳細
  • scripts/:実行スクリプト(Python、Bash など)
  • templates/:プロンプトテンプレートや出力テンプレート

Skills は 2 つのスコープで定義できます。

  • グローバルスコープ~/.gemini/antigravity/skills/):プロジェクト横断で使える。例:「JSON 整形」「汎用コードレビュー」
  • プロジェクトスコープ.agent/skills/):当該プロジェクトのみ。例:「チーム API 規約」「業務用コードテンプレート」

汎用はグローバル、業務固有はプロジェクト——この二層設計が使いやすいです。

最初の Skill を書く

では手を動かしましょう。

Git コミットメッセージを自動整形する Skill から始めます。

ステップ 1:ディレクトリ構造を作る

mkdir -p ~/.gemini/antigravity/skills/git-commit-formatter

ステップ 2:skill.yaml を書く

name: git-commit-formatter
description: Format Git commit messages following Conventional Commits spec
version: 1.0.0
author: your-name
triggers:
  - commit
  - git message
  - format commit
actions:
  - name: format_commit
    description: Format a raw commit message to Conventional Commits format
    input:
      raw_message: string
      type: enum[feat, fix, docs, style, refactor, test, chore]
    output:
      formatted_message: string

この YAML で、基本情報・トリガーキーワード・入出力形式を定義します。

ステップ 3:実行スクリプトを書く

scripts/format_commit.py を作成します。

#!/usr/bin/env python3
import sys
import re

def format_commit(raw_message, commit_type):
    # 元メッセージを解析
    scope_match = re.search(r'\(([^)]+)\)', raw_message)
    scope = f"({scope_match.group(1)})" if scope_match else ""

    # 説明文を抽出
    desc = re.sub(r'\([^)]+\):?\s*', '', raw_message).strip()

    # 整形
    formatted = f"{commit_type}{scope}: {desc}"
    return formatted

if __name__ == "__main__":
    raw = sys.argv[1]
    ctype = sys.argv[2]
    print(format_commit(raw, ctype))

ステップ 4:テスト

Antigravity を再起動し、次のように入力してみてください。

「git-commit-formatter でこのコミットを整形して:ユーザーログインのバグを修正した」

正常なら、エージェントが Skill を呼び出し、fix(auth): ユーザーログインのバグを修正した のような出力を返します。

シンプルです。これが Skill の骨格です。

外部 API 統合:GitHub + Jira 実践

ローカルだけの Skill は練習に留まります。本番で効くのは外部システムとつながる Skill です。

Jira チケット処理を自動化する Skill を作りましょう。

シーン:チームは毎日、Jira でステータス更新や工数入力に時間を取られています。この定型作業をエージェントに任せます。

ステップ 1:API 認証を準備

Jira の API トークンとドメインが必要です。機密情報は環境変数に置くのがおすすめです。

export JIRA_API_TOKEN="your-token"
export JIRA_DOMAIN="your-domain.atlassian.net"
export JIRA_EMAIL="your-email@example.com"

ステップ 2:Skill 設定を書く

name: jira-assistant
description: Automate Jira workflows - search issues, update status, add worklogs
triggers:
  - jira
  - ticket
  - issue
  - worklog
actions:
  - name: search_issues
    description: Search Jira issues by JQL query
  - name: add_worklog
    description: Add time spent to an issue
  - name: transition_issue
    description: Move issue to a different status

ステップ 3:コアスクリプトを書く

#!/usr/bin/env python3
import os
import requests
from base64 import b64encode

class JiraClient:
    def __init__(self):
        self.domain = os.getenv('JIRA_DOMAIN')
        self.email = os.getenv('JIRA_EMAIL')
        self.token = os.getenv('JIRA_API_TOKEN')
        self.auth = self._get_auth()

    def _get_auth(self):
        credentials = f"{self.email}:{self.token}"
        return b64encode(credentials.encode()).decode()

    def search(self, jql):
        url = f"https://{self.domain}/rest/api/2/search"
        headers = {
            "Authorization": f"Basic {self.auth}",
            "Content-Type": "application/json"
        }
        response = requests.get(url, headers=headers, params={"jql": jql})
        return response.json()

    def add_worklog(self, issue_key, time_spent, comment):
        url = f"https://{self.domain}/rest/api/2/issue/{issue_key}/worklog"
        headers = {
            "Authorization": f"Basic {self.auth}",
            "Content-Type": "application/json"
        }
        data = {
            "timeSpent": time_spent,
            "comment": comment
        }
        return requests.post(url, headers=headers, json=data)

# CLI 入口
if __name__ == "__main__":
    import sys
    client = JiraClient()

    if sys.argv[1] == "search":
        result = client.search(sys.argv[2])
        for issue in result.get('issues', []):
            print(f"{issue['key']}: {issue['fields']['summary']}")

    elif sys.argv[1] == "worklog":
        client.add_worklog(sys.argv[2], sys.argv[3], sys.argv[4])
        print(f"Worklog added to {sys.argv[2]}")

ステップ 4:使い方

Antigravity では次のように指示できます。

「In Progress の Jira チケットを全部出して」

「PROJ-123 に 2 時間工数を記録。コメントは『ユーザーモジュールのリファクタリング完了』」

「PROJ-456 のステータスを Done にして」

エージェントが Jira API を呼ぶので、重い Jira UI を開く必要がなくなります。

GitHub も同様です。PyGithub や requests で GitHub API を叩けば、PR 自動作成、CI 状態確認、コードレビューまで Skill 化できます。

プライベートナレッジベース接続:NotebookLM + Antigravity

ここがいちばんワクワクする部分です。

XDA Developers の事例が面白いです。著者はプロジェクトドキュメントを NotebookLM に読み込ませ、技術仕様を生成し、それを Antigravity Skill に変換しました。結果、エージェントがプロジェクト文書に基づいて直接コードを書けるようになったのです。

実装の考え方

NotebookLM は対話を構造化ドキュメントとしてエクスポートできます。

  1. NotebookLM にプロジェクト知識(設計書、API 仕様、アーキテクチャ決定)を蓄積
  2. 対話機能で「知識サマリー」を整理
  3. サマリーを Skill の context や templates に変換

もっと直接的には、MCP(Model Context Protocol)で NotebookLM を Antigravity に接続します。

GitHub の notebooklm-antigravity-skill は nlm CLI でこの統合を実装しています。

name: notebooklm-knowledge
description: Query project knowledge from NotebookLM
triggers:
  - 查文档
  - 看规范
  - 项目知识
actions:
  - name: query_knowledge
    description: Query NotebookLM for project-specific knowledge

スクリプトから NotebookLM API を呼べば、エージェントがプライベートナレッジベースをリアルタイム照会できます。

こんなやり取りが可能になります。

新人:「プロジェクトのエラー処理規約って?」
あなた:(Antigravity で)「NotebookLM のエラー処理規約を調べて」
エージェント:「プロジェクトドキュメントによると:1. カスタム例外クラスを使う… 2. ログに traceback を含める… 3. ユーザー向けエラーは i18n 対応…」

眠っていたドキュメントが、エージェントの「専門家の頭脳」になります。

上級テクニック:Rules と Skill の組み合わせ

Skills に加え、Antigravity には Rules システムもあります。組み合わせると威力が跳ね上がります。

Rules はグローバルまたはプロジェクトレベルの行動制約です。例:

# .agent/rules/code-review.md

コードレビュー時:
1. ユニットテストのカバレッジが十分か確認
2. ハードコードされた機密情報がないか確認
3. エラー処理が適切か検証
4. チームの TypeScript 規約に準拠しているか確認

Rule は「いつ何をすべきか」、Skill は「具体的にどうやるか」を担います。

Atlassian の開発者ブログでは、app-deployment ルールと Jira Skills を組み合わせ、デプロイフローを自動化した事例が紹介されています。

main ブランチへのマージを検知すると:

  1. Rule 発火:「デプロイ前チェックを実行」
  2. Skill 呼び出し:Jira の関連チケット状態を確認
  3. Skill 呼び出し:テストスイートを実行
  4. Skill 呼び出し:通過したら Jira ステータス更新とデプロイログ記録

人間が十数ステップかけていた作業が、一言でトリガーできるようになります。

おわりに

要点は一言。Skills で Antigravity は「汎用ツール」から「専門アシスタント」へ進化する

汎用 AI はコードを書けますが、あなたのビジネスは知りません。Skills 経由で業務知識・チーム規約・社内ツールを植え付ければ、エージェントは本当のチームメンバーになれます。

私は Git コミット整形 Skill から始め、今では 20 以上の内部 Skill を蓄積しています。API 照会、コード規約チェック、Jira 処理、新入社員オンボーディング——定型作業を少しずつエージェントに移しています。

怠けているわけではありません。設計、難問解決、新製品づくり——人間がやるべき仕事に集中するためです。繰り返しの知識照会と手作業のフローは、エージェントに任せましょう。

試すなら、小さな痛点から。何度も聞かれる質問、一日十回繰り返す作業——それを解決する Skill を一つ書いてみてください。

エージェントはツールではなく、チームの延長だと気づくはずです。

Skills こそ、専門性を与える鍵です。

FAQ

Antigravity Skills とは?普通の AI プロンプトと何が違うのですか?
Antigravity Skills は軽量で構造化された拡張フォーマットです。普通のプロンプトとの主な違いは次のとおりです。

**Skills は永続的**:一度定義すれば繰り返し使え、エージェントがトリガー条件を自動認識します
**Skills はプログラマブル**:Python/Shell スクリプトを含め、外部 API を呼び出して複雑なロジックを実装できます
**Skills は共有可能**:パッケージ化してチームと共有したり、コミュニティに公開できます

プロンプトは一回限りの指示ですが、Skills はエージェントにインストールする「能力アプリ」で、特定シーンでより専門的に動かせます。
Antigravity Skill を書くにはどの程度の技術基礎が必要ですか?
基礎要件はそれほど高くありません。

**必須スキル**:
• 基礎 YAML 構文(Skill 設定用)
• Python または Shell スクリプトの記述能力
• API 呼び出しの基本概念

**あると便利**:
• 外部 API の認証(OAuth、API Token など)
• エラー処理とログ記録
• 正規表現とテキスト処理

最もシンプルな Skill は skill.yaml ファイル一つで作れます。まず公式サンプルを真似て、徐々に機能を足していくのがおすすめです。
API キーなどの機密情報はどう安全に管理すべきですか?
推奨する安全な運用は次のとおりです。

**環境変数方式**(推奨):
• skill.yaml にキーをハードコードしない
• スクリプトで os.getenv() から環境変数を読み込む
• 利用前に export で環境変数を設定してもらう

**設定ファイル方式**:
• .gitignore で設定ファイルを除外する
• config.example.yaml テンプレートを用意する
• Skill はローカル設定ファイルを読み込む

**絶対にしないこと**:
• キーを Skill スクリプトに直書きする
• キーを含む Skill を公開リポジトリにコミットする

README に必要な環境変数を明記するのも良い習慣です。
Skill と Rule の違いは?どう組み合わせて使いますか?
核心的な違いは次のとおりです。

**Rules(ルール)**:
• 「いつ、何をすべきか」という行動規範を定義
• テキスト形式の制約やチェックリスト
• エージェントの意思決定ロジックに影響

**Skills(スキル)**:
• 「具体的にどうやるか」という実行能力を定義
• 実行可能なスクリプトと設定を含む
• 具体的なツールと能力を提供

**組み合わせ例**:
• Rule:「コードレビュー時は必ずテストカバレッジを確認する」
• Skill:テストフレームワークを呼び出してテストを実行し、レポートを生成する

Rule が判断、Skill が実行を担い、両方で自動化フローが完成します。
NotebookLM のナレッジベースを Antigravity に統合するには?
主に 2 つの方法があります。

**方式 1:エクスポート変換法**:
1. NotebookLM でプロジェクト知識を整理
2. 対話や要約を構造化ドキュメントとしてエクスポート
3. Skill の templates や context ファイルに変換
4. エージェントが照会時に参照

**方式 2:MCP リアルタイム接続法**(nlm CLI が必要):
• notebooklm-mcp-cli をインストール
• MCP サーバーで NotebookLM に接続
• Skill スクリプトから nlm コマンドでリアルタイム照会
• エージェントが最新知識を動的取得

GitHub の notebooklm-antigravity-skill が参考実装です。

3分で読めます · 公開日: 2026年2月27日 · 更新日: 2026年6月8日

関連記事

コメント

GitHubアカウントでログインしてコメントできます