
Skill
apollo-federation
author Apollo Federation subgraph schemas
Description
Guide for authoring Apollo Federation subgraph schemas. Use this skill when: (1) creating new subgraph schemas for a federated supergraph, (2) defining or modifying entities with @key, (3) sharing types/fields across subgraphs with @shareable, (4) working with federation directives (@external, @requires, @provides, @override, @inaccessible), (5) troubleshooting composition errors, (6) any task involving federation schema design patterns.
SKILL.md
Apollo Federation Schema Authoring
Apollo Federation enables composing multiple GraphQL APIs (subgraphs) into a unified supergraph.
Federation 2 Schema Setup
Every Federation 2 subgraph must opt-in via @link:
extend schema
@link(url: "https://specs.apollo.dev/federation/v2.12",
import: ["@key", "@shareable", "@external", "@requires", "@provides"])
Import only the directives your subgraph uses.
Core Directives Quick Reference
| Directive | Purpose | Example |
|---|---|---|
@key | Define entity with unique key | type Product @key(fields: "id") |
@shareable | Allow multiple subgraphs to resolve field | type Position @shareable { x: Int! } |
@external | Reference field from another subgraph | weight: Int @external |
@requires | Computed field depending on external fields | shippingCost: Int @requires(fields: "weight") |
@provides | Conditionally resolve external field | @provides(fields: "name") |
@override | Migrate field to this subgraph | @override(from: "Products") |
@inaccessible | Hide from API schema | internalId: ID! @inaccessible |
@interfaceObject | Add fields to entity interface | type Media @interfaceObject |
Reference Files
Detailed documentation for specific topics:
- Directives - All federation directives with syntax, examples, and rules
- Schema Patterns - Multi-subgraph patterns and recipes
- Composition - Composition rules, error codes, and debugging
Key Patterns
Entity Definition
type Product @key(fields: "id") {
id: ID!
name: String!
price: Int
}
Entity Contributions Across Subgraphs
# Products subgraph
type Product @key(fields: "id") {
id: ID!
name: String!
price: Int
}
# Reviews subgraph
type Product @key(fields: "id") {
id: ID!
reviews: [Review!]!
averageRating: Float
}
Computed Fields with @requires
type Product @key(fields: "id") {
id: ID!
size: Int @external
weight: Int @external
shippingEstimate: String @requires(fields: "size weight")
}
Value Types with @shareable
type Money @shareable {
amount: Int!
currency: String!
}
Entity Stub (Reference Without Contributing)
type Product @key(fields: "id", resolvable: false) {
id: ID!
}
Ground Rules
- ALWAYS use Federation 2.x syntax with
@linkdirective - ALWAYS import only the directives your subgraph uses
- NEVER use
@shareablewithout ensuring all subgraphs return identical values for that field - PREFER
@keywith single ID field for simple entity identification - USE
rover supergraph composeto validate composition locally - USE
rover subgraph checkto validate against production supergraph
More skills from the skills repository
View all 14 skillsapollo-client
build React apps with Apollo Client
Apr 6Apollo GraphQLFrontendGraphQLReactapollo-connectors
integrate REST APIs with Apollo Connectors
Apr 6API DevelopmentApollo GraphQLGraphQLREST APIapollo-ios
build Apple apps with Apollo iOS
Apr 29Apollo GraphQLGraphQLiOSMobile +2apollo-kotlin
build Kotlin apps with Apollo GraphQL
Apr 6AndroidApollo GraphQLGraphQLKotlinapollo-mcp-server
connect MCP agents to GraphQL APIs
Apr 6API DevelopmentApollo GraphQLGraphQLMCPapollo-router
configure Apollo Router for GraphQL federation
Apr 6Apollo GraphQLArchitectureDeploymentGraphQL
More from Apollo GraphQL
View publisherapollo-router-plugin-creator
write Apollo Router Rust plugins
skills
Apr 6Apollo GraphQLGraphQLPlugin DevelopmentRustapollo-server
build GraphQL servers with Apollo Server
skills
Apr 6API DevelopmentApollo GraphQLGraphQLNode.js +1graphql-operations
write GraphQL queries and mutations
skills
Apr 6API DevelopmentApollo GraphQLGraphQLgraphql-schema
design GraphQL schemas
skills
Apr 6API DevelopmentApollo GraphQLArchitectureGraphQLrover
manage GraphQL schemas with Apollo Rover
skills
Apr 6Apollo GraphQLCLIGraphQL