Skip to content
Apollo Connectors

Apollo Connectors Skill

Apollo's official skill for wrapping REST APIs into a GraphQL supergraph with @source and @connect directives — no resolvers, with compose, run and test steps enforced.

GitHub Docs

Install

Install with the skills CLI

One command for Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf and dozens of other agents. Needs Node.js; the skill is fetched straight from apollographql/skills.

$ npx skills add apollographql/skills --skill apollo-connectors

Run it in a terminal. The CLI finds the agents installed on your machine, asks which ones to add the skill to, and whether to install it into the folder you ran it from or for all your projects.

Other ways to install

Copy the whole skill folder — SKILL.md and any scripts or references beside it — into ~/.claude/skills/apollo-connectors/, where Claude Code picks it up in every project. Only git is needed.

tmp=$(mktemp -d) && \
  git clone --depth 1 --branch main https://github.com/apollographql/skills.git "$tmp" && \
  mkdir -p ~/.claude/skills && \
  cp -R "$tmp"/skills/apollo-connectors ~/.claude/skills/apollo-connectors

No scripts or references next to it? Saving the SKILL.md alone as ~/.claude/skills/apollo-connectors/SKILL.md works too.

Using another agent? Its personal skills folder
Codex
~/.agents/skills/
Cursor
~/.cursor/skills/
GitHub Copilot
~/.copilot/skills/
Gemini CLI
~/.gemini/skills/
Windsurf
~/.codeium/windsurf/skills/
OpenCode
~/.config/opencode/skills/

About

  • Declarative REST-to-GraphQL with @source and @connect, no resolvers
  • Enforced research-implement-compose-run-test sequence
  • Uses GraphOS MCP tools to fetch the Connectors spec before editing
  • Carries exact documentation paths for requests, responses, mapping and entities
  • Requires rover compose, connector run and connector test to pass
  • Recognises connectors schemas by their marker comment

Apollo Connectors let you pull a REST API into a GraphQL supergraph declaratively, with @source and @connect directives in the schema instead of hand-written resolvers. The mapping syntax is unusual enough that a model working from training data tends to produce something plausible that does not compose. This official skill fixes that by making the agent look the spec up and then prove the result works.

A five-step process, with no skipping
  1. Research — understand the API and its response shapes, ask the user for example responses if none were given, and fetch the current documentation. Explicitly: write no code until this is done.
  2. Implement — build the schema from the supplied template, following the documented grammar, mapping methods and variables.
  3. Validate — rover supergraph compose --config ./supergraph.yaml, and fix every composition error before continuing.
  4. Execute — rover connector run --schema <file> -c "<Type.field>" -v "{}" to confirm the connector actually runs.
  5. Test — add or update files under /tests/ and run rover connector test, with coverage for each connector.
Documentation routing

When GraphOS MCP tools are present the skill uses them: connectors-spec to pull the complete Connectors specification before any work begins, plus apollo_docs_search and apollo_docs_read. It carries the documentation paths for each topic — request URL, headers, body and batching; response fields and error handling; mapping including arrays, enums and literals; and entity patterns — so the agent fetches the right page rather than searching blindly.

It also recognises schemas by the marker comment Apollo puts at the top of a connectors file, so an agent that opens one mid-task knows to load the spec before editing.

Requires the rover CLI. MIT licensed, part of Apollo's eleven-skill collection alongside apollo-client, apollo-server, apollo-router, apollo-federation, apollo-mcp-server, apollo-ios and apollo-kotlin.

SKILL.md

The instructions your agent loads, as published by Apollo GraphQL.

SKILL.md
name
apollo-connectors
description
Guide for integrating REST APIs into GraphQL supergraphs using Apollo Connectors with @source and @connect directives. Use this skill when the user: (1) mentions "connectors", "Apollo Connectors", or "REST Connector", (2) wants to integrate a REST API into GraphQL, (3) references @source or @connect directives, (4) works with files containing "# Note to AI Friends: This is an Apollo Connectors schema".
license
MIT
compatibility
Requires rover CLI installed. Works with Claude Code and similar AI coding assistants.
metadata
author: apollographql version: "1.0.0"
allowed-tools
Bash(rover:*) Read Write Edit Glob Grep

Apollo Connectors Schema Assistant

MCP Tools

If GraphOS MCP Tools are available, use them:

  • connectors-spec: Fetch the complete Connectors specification before starting any connector work
  • apollo_docs_search: Search for relevant documentation
  • apollo_docs_read: Read specific documentation pages by slug

Documentation paths by topic:

  • Requests: /graphos/connectors/requests/url, /headers, /body, /batching
  • Responses: /graphos/connectors/responses/fields, /error-handling
  • Mapping: /graphos/connectors/mapping, /arrays, /enums, /literals
  • Entities: /graphos/connectors/entities, /patterns
Process

Follow this 5-step process. DO NOT skip any steps.

Step 1: Research
  • [ ] Understand the API being called and the structure of responses
  • [ ] Ask the user for example API responses if not provided
  • [ ] Fetch relevant documentation from MCP tools or reference files
  • [ ] DO NOT write any code until research is complete
Step 2: Implement
  • [ ] Create the schema using the template below
  • [ ] Follow the grammar, methods, and variables in the reference files
  • [ ] Ask clarifying questions if unsure about requirements
Step 3: Validate (Compose)
  • [ ] Run rover supergraph compose --config ./supergraph.yaml
  • [ ] Fix any composition errors before proceeding
Step 4: Execute
  • [ ] Run rover connector run --schema <file> -c "<Type.field>" -v "{}"
  • [ ] Verify the connector executes correctly
Step 5: Test
  • [ ] Create or update test files under /tests/
  • [ ] Run rover connector test
  • [ ] Ensure full test coverage for each connector
Schema Template
# Note to AI Friends: This is an Apollo Connectors schema. You should use your connectors-spec MCP tool if you have it available before editing this file.

extend schema
  @link(url: "https://specs.apollo.dev/federation/v2.12")
  @link(url: "https://specs.apollo.dev/connect/v0.3", import: ["@source", "@connect"])

@source(name: "api_name", http: { baseURL: "https://api.example.com" })

type Query {
  example(id: ID!): Example
    @connect(
      source: "api_name"
      http: { GET: "/example/{$args.id}" }
      selection: """
      id
      name
      """
    )
}

type Example {
  id: ID!
  name: String
}

Version Requirements: Always use federation/v2.12 and connect/v0.3 unless specified otherwise.

Reference Files

Before implementing connectors, read the relevant reference files:

  • [Grammar](references/grammar.md) - Selection mapping EBNF syntax
  • [Methods](references/methods.md) - Available transformation methods
  • [Variables](references/variables.md) - Available mapping variables
  • [Entities](references/entities.md) - Entity patterns and batching
  • [Validation](references/validation.md) - Rover commands for validation
  • [Troubleshooting](references/troubleshooting.md) - Common errors and solutions
Key Rules
Selection Mapping
  • Prefer sub-selections over ->map for cleaner mappings
  • Do NOT use $ when selecting fields directly from root
  • Field aliasing: newName: originalField (only when renaming)
  • Sub-selection: fieldName { ... } (to map nested content)
# DO - Direct sub-selection for arrays
$.results {
  firstName: name.first
  lastName: name.last
}

# DO NOT - Unnecessary root $
$ {
  id
  name
}

# DO - Direct field selection
id
name
Entities
  • Add @connect on a type to make it an entity (no @key needed)
  • Create entity stubs in parent selections: user: { id: userId }
  • When you see an ID field (e.g., productId), create an entity relationship
  • Each entity should have ONE authoritative subgraph with @connect
Literal Values

Use $() wrapper for literal values in mappings:

$(1)              # number
$(true)           # boolean
$("hello")        # string
$({"a": "b"})     # object

# In body
body: "$({ a: $args.a })"  # CORRECT
body: "{ a: $args.a }"     # WRONG - will not compose
Headers
http: {
  GET: "/api"
  headers: [
    { name: "Authorization", value: "Bearer {$env.API_KEY}" },
    { name: "X-Forwarded", from: "x-client" }
  ]
}
Batching

Convert N+1 patterns using $batch:

type Product @connect(
  source: "api"
  http: {
    POST: "/batch"
    body: "ids: $batch.id"
  }
  selection: "id name"
) {
  id: ID!
  name: String
}
Ground Rules
  • NEVER make up syntax or directive values not in this specification
  • NEVER use --elv2-license accept (for humans only)
  • ALWAYS ask for example API responses before writing code
  • ALWAYS validate with rover supergraph compose after changes
  • ALWAYS create entity relationships when you see ID fields
  • Prefer $env over $config for environment variables
  • Use rover dev for running Apollo Router locally
Install

Skill: Apollo MCP Server

by Apollo GraphQL

Sets up Apollo MCP Server so an AI agent can call a GraphQL API as MCP tools — defining tools from named operations, or exposing introspect/search/validate/execute for open-ended schemas.

Featured

Shopify's official skill for writing Admin GraphQL queries and mutations — it searches the live API docs and validates every operation against the schema before handing you code.

Skill: geo-sleuth

by Oldcircle

Featured

Find where a photo was taken: EXIF, OCR, OpenStreetMap, skyline and satellite matching, with coordinates, error radius and evidence images.

1183 views 420 copies
Browse all skills →