Claude Codeのapollo-skillsプラグインでFederationとRouterを扱う
apollo-skillsプラグインは、Federation・Router・Rover・GraphQLスキーマ設計のスキルをClaude Codeに足します。導入手順、スキルの呼び分け、LSPとMCPの同梱内容を説明します。
apollo-skillsは、Apollo GraphQLが配布しているClaude Codeプラグインです。Apollo Federationのサブグラフ設計、Apollo Routerの設定、Rover CLIの操作、GraphQLスキーマの設計指針を、スキルとしてClaude Codeに足します。
Federationのディレクティブやrouter.yamlのバージョン差は、モデルの記憶だけに頼ると外しやすい領域です。このプラグインは、その手順と注意点をスキルに固定して渡します。この記事では、入れ方、スキルの呼び分け、Federation・Router・Roverの各スキルが何を求めてくるか、同梱されるLSPとMCPの扱いを順に説明します。
apollo-skillsプラグインの中身
プラグインの提供元はApollo GraphQLで、ライセンスはMITです。マニフェストの名前は apollo-skills、マーケットプレイス名は apollo-marketplace です。マーケットプレイスの説明文は、Apollo Client、Server、Federation、Connectors、Router、Rover CLI、iOS、Kotlin、Apollo MCP Serverを対象にし、スキーマ設計・クエリ最適化・GraphQLのベストプラクティスを扱うとしています。
リポジトリの直下には、スキル本体の skills/ のほかに、.lsp.json と .mcp.json が置かれています。スキルだけでなく、言語サーバーとMCPサーバーの設定もまとめて入る構成です。
プラグインが運ぶ3種類の部品
スキル
skills/配下のSKILL.mdと参照ドキュメント。作業の手順と禁止事項を渡します。LSP設定
.lsp.jsonがgraphql-lspを起動し、.graphqlなどのファイルに言語サーバーをつなぎます。MCP設定
.mcp.jsonがgraphos-toolsという名前のHTTPサーバーを登録します。
導入手順
プラグインは専用のマーケットプレイス経由で入れます。Claude Codeのセッション内で、マーケットプレイスの追加とインストールを順に実行します。
/plugin marketplace add apollographql/skills
/plugin install apollo-skills@apollo-marketplaceGitHubリポジトリは owner/repo の形でマーケットプレイスとして追加できます。インストール後にパネルが再読み込みを求めたら、/reload-plugins を実行します。
シェルから入れたい場合は、同じ指定を claude plugin サブコマンドに渡します。
claude plugin marketplace add apollographql/skills
claude plugin install apollo-skills@apollo-marketplaceclaude plugin install で入れたプラグインは、次にセッションを始めたときに読み込まれます。
プラグインを使わずにスキルだけ入れる方法
リポジトリのREADMEには、プラグイン以外の入れ方も載っています。
- Skills CLI:
npx skills add apollographql/skillsで、対象のエージェントとスコープを対話で選ぶ - GitHub CLI:
gh skill install apollographql/skills --agent claude-code(preview機能。--scope userで全プロジェクトに、--pin v1.0.0でバージョン固定)
どちらもスキルだけを入れる経路です。LSPとMCPの設定まで欲しいなら、プラグイン経由を選びます。固定したバージョンは gh skill upgrade の対象から外れるため、更新の判断を自分で持てます。
スキルの呼び分け
プラグイン経由で入れたスキルは、名前空間付きのスラッシュコマンドになります。この記事で扱う3つを含め、READMEの一覧は次のとおりです。
| コマンド | 用途 |
|---|---|
/apollo-skills:apollo-federation | 用途サブグラフのスキーマ設計 |
/apollo-skills:apollo-router | 用途Routerの設定と実行 |
/apollo-skills:rover | 用途スキーマ管理とローカル開発 |
/apollo-skills:graphql-schema | 用途スキーマ設計の指針 |
/apollo-skills:graphql-operations | 用途クエリ・ミューテーション・フラグメント |
/apollo-skills:graphos-factory | 用途REST APIからConnectorsサブグラフを作る |
/apollo-skills:apollo-mcp-server | 用途Apollo MCP Serverの設定 |
ほかにapollo-client、apollo-server、apollo-ios、apollo-kotlin、rust-best-practices、skill-creatorがあります。スキルは該当する作業を検知すると自動で働くとされ、明示的に呼ぶときだけスラッシュコマンドを使います。
apollo-connectors は非推奨で、graphos-factory に置き換わっています。READMEは、将来のリリースで削除されると書いています。Connectorsを扱うなら、最初から graphos-factory を選びます。
Federation: サブグラフの設計を任せる
apollo-federation スキルは、サブグラフのスキーマを書くための手順書です。呼ばれる場面は、新しいサブグラフを作るとき、@key でエンティティを定義するとき、@shareable や @override を使うとき、合成エラーを直すときです。
スキル本文は、Federation 2のスキーマが @link での宣言から始まることを前提にしています。
extend schema
@link(url: "https://specs.apollo.dev/federation/v2.12",
import: ["@key", "@shareable", "@external", "@requires", "@provides"])これは公式のスキル本文にある形です。本文には、バージョンの v2.12 は説明用の値だと注記があります。コピーする前に、対応バージョンをFederationの変更履歴で確かめます。
スキルが決めている作法のうち、レビューで効くのは次の4点です。
- 常にFederation 2.xの構文で書き、
@linkでは使うディレクティブだけをimportする - すべてのサブグラフが同じ値を返す保証がないフィールドに
@shareableを付けない - エンティティの識別は、単純なケースでは単一のID項目の
@keyを優先する - ローカルの合成検証には
rover supergraph compose、本番スーパーグラフとの検証にはrover subgraph checkを使う
スキルのfrontmatterでは、許可ツールが Bash(rover:*)、Read、Write、Edit、Glob、Grepに限られています。Roverが入っていれば、設計から合成の確認まで同じ流れで回ります。
試す依頼の例
商品サービスと配送サービスのサブグラフがある状況で、次のように頼みます。
/apollo-skills:apollo-federation
shippingサブグラフのProductに、productsサブグラフのweightを使う
shippingEstimateフィールドを足して。合成まで確認してこのスキルの例では、外部フィールドを使う計算フィールドに @requires を使います。公式の例に沿えば、次のような形になります(例示であり、実際の出力とは限りません)。
type Product @key(fields: "id") {
id: ID!
weight: Int @external
shippingEstimate: String @requires(fields: "weight")
}Claudeの提案が @external と @requires の組になっているか、合成コマンドで確認まで進んだかを見れば、スキルが効いているかを判断できます。
Router: バージョンを先に決めさせる
apollo-router スキルの特徴は、設定を書く前に質問することです。Router v1とv2では、CORSやJWT認証、Connectorsの設定スキーマが非互換な箇所があるため、最初にターゲットのバージョンを選ばせます。
| 選択肢 | スキルの説明 |
|---|---|
| Router v2.x | スキルの説明推奨。現行のLTSで、Connectorsに必須 |
| Router v1.x | スキルの説明レガシー。サポート終了が告知され、セキュリティパッチのみ |
| 分からない | スキルの説明判断の目安を表示 |
続いて、本番か開発かを選びます。本番はイントロスペクション・サンドボックス・ホームページを切り、サブグラフのエラーを隠し、認証を必須にする設定です。開発は逆に開いた設定になります。
そのあと、JWT認証、CORS、操作の上限、トラフィック制御、テレメトリ、APQ、永続化クエリのセーフリスト、Connectors、サブスクリプション、ヘッダー伝播、レスポンスキャッシュの中から機能を選びます。
設定を書く前に確認される点
セキュリティに関わる項目は、スキルが利用者に尋ねてから書く作りです。
- CORSの許可オリジンは、本番でワイルドカード
"*"を使わない - JWTの発行者は、v1が単数形の
issuer、v2が複数形のissuers - 宣言的な認可(
@authenticated/@requiresScopes/@policy)は、GraphOSに接続したRouterが前提 - 永続化クエリのセーフリストはAPQと排他で、まず監査モード(
log_unknown: true)で未登録の操作を確かめる - レスポンスキャッシュは、ユーザー固有のデータを返すサブグラフを先に尋ねる
操作の深さの上限は、Routerの既定が100で、スキルは50を出発点として示します。いきなり厳しくせず、warn_only: true で実トラフィックの深さを見てから絞る流れです。
既存の router.yaml がある場合、スキルはRouter v1からv2への自動移行コマンドも案内します。
router config upgrade router.yaml許可ツールは、router、rover、curl、docker のBashコマンドと、Read・Write・Edit・Glob・Grepです。
Rover: スキーマの公開・検証とローカル開発
rover スキルは、GraphOSへのスキーマ公開、ローカルでのスーパーグラフ合成、rover dev による開発、check と lint での検証を扱います。スキル本文は、導入と認証から始まります。
npm install -g @apollo/rover
rover config auth
rover --version
rover config whoamirover config auth の代わりに、環境変数 APOLLO_KEY にAPIキーを入れる方法もあります。グラフの指定は <GRAPH_ID>@<VARIANT> の形で、APOLLO_GRAPH_REF に入れておけば毎回の指定を省けます。
サブグラフの公開と検証は、次のコマンドです。
rover subgraph publish my-graph@production \
--name products \
--schema ./schema.graphql \
--routing-url https://products.example.com/graphql
rover subgraph check my-graph@production \
--name products \
--schema ./schema.graphql公開は本番のスキーマを変えます。check を先に通す順序を、CLAUDE.mdか依頼文で固定しておくと安全です。
グラフの中身を調べさせるときの型
エージェント向けに用意された手順もあります。グラフのスキーマを調べるときは、rover graph fetch の出力を rover schema にパイプします。
rover graph fetch my-graph@production | rover schema describe -
rover graph fetch my-graph@production | rover schema search - "shipping"スキルが定める規則は3つです。
rover supergraph fetchではなくrover graph fetchを使う(前者はjoin__などFederation内部の定義を含む合成SDLを返す)- 取得したSDLを単独で出力して読ませず、必ずパイプに流す。巨大なスキーマでコンテキストが埋まるのを避けるため
rover schema describeとrover schema searchはグラフ参照でなくSDLを受け取る。rover schema describe my-graph@productionは失敗する
同梱のLSPとMCPをどう扱うか
GraphQLの言語サーバー
.lsp.json は、graphql-lsp server -m stream を起動し、.graphql・.gql・.graphqls に結びつけます。再起動の上限は3回です。
Claude Codeのプラグイン仕様では、LSP設定の command は言語サーバーのバイナリを指します。graphql-lsp が実行できる状態かは、導入後に一度確かめます。スキルの利用はLSPと独立しているため、言語サーバーが未導入でもスキルは使えます。
GraphOS MCPサーバー
.mcp.json は、graphos-tools という名前で https://mcp.apollographql.com をHTTPサーバーとして登録します。プラグインを入れると、このMCPもセットで有効になります。
ホスト型のGraphOS MCPサーバー自体の認証や、書き込み系ツールの線引きは別の話題です。ClaudeとApollo GraphOS MCPをつなぐ手順にまとめています。スキル(手順書)とMCP(実行手段)は役割が違い、前者は「どう書くか」、後者は「グラフに何をするか」を担当します。
プラグインがコンテキストに載せる分量が気になるときは、claude plugin detailsでの測り方が使えます。導入済みの一覧はclaude plugin list --jsonで棚卸しできます。
使い分けの目安
| 作業 | 呼ぶスキル | 先に用意するもの |
|---|---|---|
| サブグラフのスキーマを書く | 呼ぶスキルapollo-federation | 先に用意するものRoverがあると合成まで確認できる |
| router.yamlを作る・移行する | 呼ぶスキルapollo-router | 先に用意するもの対象のRouterバージョン、本番か開発か |
| スキーマを公開・検証する | 呼ぶスキルrover | 先に用意するものAPOLLO_KEY、APOLLO_GRAPH_REF |
| RESTをサブグラフにする | 呼ぶスキルgraphos-factory | 先に用意するものREST API(OpenAPI仕様は任意) |
| 型・命名・ページネーションを見直す | 呼ぶスキルgraphql-schema | 先に用意するもの対象スキーマ |
graphos-factory は、初回の使用時に約3MBの graphos-factory バイナリを、同梱するリリースからダウンロードします。ダウンロードが発生する点は、ネットワーク制限のある環境で先に知っておく価値があります。
プラグインを入れても、設計の判断はこちらに残ります。@shareable を付けてよいかや、Routerのキャッシュにどのデータを載せてよいかは、サービスの中身を知る人が決めることです。スキルは、その判断を聞き忘れないための手順として使うのが向いています。