{"id":"f1522992-5a38-42f1-aeb2-fd994652f9d4","shortId":"vWCdta","kind":"skill","title":"Rover","tagline":"Skills skill by Apollographql","description":"# Apollo Rover CLI Guide\n\nRover is the official CLI for Apollo GraphOS. It helps you manage schemas, run composition locally, publish to GraphOS, and develop supergraphs on your local machine.\n\n## Quick Start\n\n### Step 1: Install\n\n```bash\n# macOS/Linux\ncurl -sSL https://rover.apollo.dev/nix/latest | sh\n\n# npm (cross-platform)\nnpm install -g @apollo/rover\n\n# Windows PowerShell\niwr 'https://rover.apollo.dev/win/latest' | iex\n```\n\n### Step 2: Authenticate\n\n```bash\n# Interactive authentication (opens browser)\nrover config auth\n\n# Or set environment variable\nexport APOLLO_KEY=your-api-key\n```\n\n### Step 3: Verify Installation\n\n```bash\nrover --version\nrover config whoami\n```\n\n## Core Commands Overview\n\n| Command | Description | Use Case |\n|---------|-------------|----------|\n| `rover subgraph publish` | Publish subgraph schema to GraphOS | CI/CD, schema updates |\n| `rover subgraph check` | Validate schema changes | PR checks, pre-deploy |\n| `rover subgraph fetch` | Download subgraph schema | Local development |\n| `rover supergraph compose` | Compose supergraph locally | Local testing |\n| `rover dev` | Local supergraph development | Development workflow |\n| `rover graph publish` | Publish monograph schema | Non-federated graphs |\n\n## Graph Reference Format\n\nMost commands require a graph reference in the format:\n\n```\n<GRAPH_ID>@<VARIANT>\n```\n\nExamples:\n- `my-graph@production`\n- `my-graph@staging`\n- `my-graph@current` (default variant)\n\nSet as environment variable:\n```bash\nexport APOLLO_GRAPH_REF=my-graph@production\n```\n\n## Subgraph Workflow\n\n### Publishing a Subgraph\n\n```bash\n# From schema file\nrover subgraph publish my-graph@production \\\n  --name products \\\n  --schema ./schema.graphql \\\n  --routing-url https://products.example.com/graphql\n\n# From running server (introspection)\nrover subgraph publish my-graph@production \\\n  --name products \\\n  --schema <(rover subgraph introspect http://localhost:4001/graphql) \\\n  --routing-url https://products.example.com/graphql\n```\n\n### Checking Schema Changes\n\n```bash\n# Check against production traffic\nrover subgraph check my-graph@production \\\n  --name products \\\n  --schema ./schema.graphql\n```\n\n### Fetching Schema\n\n```bash\n# Fetch from GraphOS\nrover subgraph fetch my-graph@production --name products\n\n# Introspect running server\nrover subgraph introspect http://localhost:4001/graphql\n```\n\n## Supergraph Composition\n\n### Local Composition\n\nCreate `supergraph.yaml`:\n\n```yaml\nfederation_version: =2.9.0\nsubgraphs:\n  products:\n    routing_url: http://localhost:4001/graphql\n    schema:\n      file: ./products/schema.graphql\n  reviews:\n    routing_url: http://localhost:4002/graphql\n    schema:\n      subgraph_url: http://localhost:4002/graphql\n```\n\nCompose:\n```bash\nrover supergraph compose --config supergraph.yaml > supergraph.graphql\n```\n\n### Fetch Composed Supergraph\n\n```bash\nrover supergraph fetch my-graph@production\n```\n\n## Local Development with `rover dev`\n\nStart a local Router with automatic schema composition:\n\n```bash\n# Start with supergraph config\nrover dev --supergraph-config supergraph.yaml\n\n# Start with GraphOS variant as base\nrover dev --graph-ref my-graph@staging --supergraph-config local.yaml\n```\n\n### With MCP Integration\n\n```bash\n# Start with MCP server enabled\nrover dev --supergraph-config supergraph.yaml --mcp\n```\n\n## Reference Files\n\nDetailed documentation for specific topics:\n\n- [Subgraphs](references/subgraphs.md) - fetch, publish, check, lint, introspect, delete\n- [Graphs](references/graphs.md) - monograph commands (non-federated)\n- [Supergraphs](references/supergraphs.md) - compose, fetch, config format\n- [Dev](references/dev.md) - rover dev for local development\n- [Configuration](references/configuration.md) - install, auth, env vars, profiles\n\n## Common Patterns\n\n### CI/CD Pipeline\n\n```bash\n# 1. Check schema changes\nrover subgraph check $APOLLO_GRAPH_REF \\\n  --name $SUBGRAPH_NAME \\\n  --schema ./schema.graphql\n\n# 2. If check passes, publish\nrover subgraph publish $APOLLO_GRAPH_REF \\\n  --name $SUBGRAPH_NAME \\\n  --schema ./schema.graphql \\\n  --routing-url $ROUTING_URL\n```\n\n### Schema Linting\n\n```bash\n# Lint against GraphOS rules\nrover subgraph lint --name products ./schema.graphql\n\n# Lint monograph\nrover graph lint my-graph@production ./schema.graphql\n```\n\n### Output Formats\n\n```bash\n# JSON output for scripting\nrover subgraph fetch my-graph@production --name products --format json\n\n# Plain output (default)\nrover subgraph fetch my-graph@production --name products --format plain\n```\n\n## Ground Rules\n\n- ALWAYS authenticate before using GraphOS commands (`rover config auth` or `APOLLO_KEY`)\n- ALWAYS use the correct graph reference format: `graph@variant`\n- PREFER `rover subgraph check` before `rover subgraph publish` in CI/CD\n- USE `rover dev` for local supergraph development instead of running Router manually\n- NEVER commit `APOLLO_KEY` to version control; use environment variables\n- USE `--format json` when parsing output programmatically\n- SPECIFY `federation_version` explicitly in supergraph.yaml for reproducibility\n- USE `rover subgraph introspect` to extract schemas from running services","tags":["rover","skills","apollographql"],"capabilities":["skill","source-apollographql","category-skills"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/apollographql/skills/rover","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under apollographql/skills","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T18:40:54.835Z","embedding":null,"createdAt":"2026-04-18T20:36:34.453Z","updatedAt":"2026-04-22T18:40:54.835Z","lastSeenAt":"2026-04-22T18:40:54.835Z","tsv":"'/graphql':223,248 '/nix/latest':47 '/products/schema.graphql':309 '/schema.graphql':217,267,459,475,493,503 '/win/latest''':62 '1':39,445 '2':65,460 '2.9.0':300 '3':87 '4001/graphql':242,290,306 '4002/graphql':314,319 'alway':538,550 'api':84 'apollo':6,16,80,191,452,468,548,583 'apollo/rover':56 'apollographql':5 'auth':74,436,546 'authent':66,69,539 'automat':349 'base':368 'bash':41,67,90,189,203,252,270,321,331,352,385,444,483,506 'browser':71 'case':102 'category-skills' 'chang':119,251,448 'check':116,121,249,253,259,409,446,451,462,562 'ci/cd':111,442,568 'cli':8,14 'command':97,99,162,416,543 'commit':582 'common':440 'compos':135,136,320,324,329,422 'composit':24,292,294,351 'config':73,94,325,356,361,380,395,424,545 'configur':433 'control':587 'core':96 'correct':553 'creat':295 'cross':51 'cross-platform':50 'curl':43 'current':182 'default':183,524 'delet':412 'deploy':124 'descript':100 'detail':400 'dev':142,343,358,370,392,426,429,571 'develop':30,132,145,146,340,432,575 'document':401 'download':128 'enabl':390 'env':437 'environ':77,187,589 'exampl':170 'explicit':601 'export':79,190 'extract':611 'feder':156,298,419,599 'fetch':127,268,271,276,328,334,407,423,513,527 'file':206,308,399 'format':160,169,425,505,520,534,556,592 'g':55 'graph':149,157,158,165,173,177,181,192,196,212,233,262,279,337,372,376,413,453,469,497,501,516,530,554,557 'graph-ref':371 'grapho':17,28,110,273,365,486,542 'ground':536 'guid':9 'help':19 'iex':63 'instal':40,54,89,435 'instead':576 'integr':384 'interact':68 'introspect':227,240,283,288,411,609 'iwr':59 'json':507,521,593 'key':81,85,549,584 'lint':410,482,484,490,494,498 'local':25,34,131,138,139,143,293,339,346,431,573 'local.yaml':381 'localhost':241,289,305,313,318 'machin':35 'macos/linux':42 'manag':21 'manual':580 'mcp':383,388,397 'monograph':152,415,495 'my-graph':171,175,179,194,210,231,260,277,335,374,499,514,528 'name':214,235,264,281,455,457,471,473,491,518,532 'never':581 'non':155,418 'non-feder':154,417 'npm':49,53 'offici':13 'open':70 'output':504,508,523,596 'overview':98 'pars':595 'pass':463 'pattern':441 'pipelin':443 'plain':522,535 'platform':52 'powershel':58 'pr':120 'pre':123 'pre-deploy':122 'prefer':559 'product':174,197,213,215,234,236,255,263,265,280,282,302,338,492,502,517,519,531,533 'products.example.com':222,247 'products.example.com/graphql':221,246 'profil':439 'programmat':597 'publish':26,105,106,150,151,200,209,230,408,464,467,566 'quick':36 'ref':193,373,454,470 'refer':159,166,398,555 'references/configuration.md':434 'references/dev.md':427 'references/graphs.md':414 'references/subgraphs.md':406 'references/supergraphs.md':421 'reproduc':605 'requir':163 'review':310 'rout':219,244,303,311,477,479 'router':347,579 'routing-url':218,243,476 'rover':1,7,10,72,91,93,103,114,125,133,141,148,207,228,238,257,274,286,322,332,342,357,369,391,428,449,465,488,496,511,525,544,560,564,570,607 'rover.apollo.dev':46,61 'rover.apollo.dev/nix/latest':45 'rover.apollo.dev/win/latest''':60 'rule':487,537 'run':23,225,284,578,614 'schema':22,108,112,118,130,153,205,216,237,250,266,269,307,315,350,447,458,474,481,612 'script':510 'server':226,285,389 'servic':615 'set':76,185 'sh':48 'skill':2,3 'source-apollographql' 'specif':403 'specifi':598 'ssl':44 'stage':178,377 'start':37,344,353,363,386 'step':38,64,86 'subgraph':104,107,115,126,129,198,202,208,229,239,258,275,287,301,316,405,450,456,466,472,489,512,526,561,565,608 'supergraph':31,134,137,144,291,323,330,333,355,360,379,394,420,574 'supergraph-config':359,378,393 'supergraph.graphql':327 'supergraph.yaml':296,326,362,396,603 'test':140 'topic':404 'traffic':256 'updat':113 'url':220,245,304,312,317,478,480 'use':101,541,551,569,588,591,606 'valid':117 'var':438 'variabl':78,188,590 'variant':184,366,558 'verifi':88 'version':92,299,586,600 'whoami':95 'window':57 'workflow':147,199 'yaml':297 'your-api-key':82","prices":[{"id":"7f0eed26-7e50-42da-a0f5-cc83c1d26010","listingId":"f1522992-5a38-42f1-aeb2-fd994652f9d4","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"apollographql","category":"skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:36:34.453Z"}],"sources":[{"listingId":"f1522992-5a38-42f1-aeb2-fd994652f9d4","source":"github","sourceId":"apollographql/skills/rover","sourceUrl":"https://github.com/apollographql/skills/tree/main/skills/rover","isPrimary":false,"firstSeenAt":"2026-04-18T22:17:27.468Z","lastSeenAt":"2026-04-22T12:56:31.805Z"},{"listingId":"f1522992-5a38-42f1-aeb2-fd994652f9d4","source":"skills_sh","sourceId":"apollographql/skills/rover","sourceUrl":"https://skills.sh/apollographql/skills/rover","isPrimary":true,"firstSeenAt":"2026-04-18T20:36:34.453Z","lastSeenAt":"2026-04-22T18:40:54.835Z"}],"details":{"listingId":"f1522992-5a38-42f1-aeb2-fd994652f9d4","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"apollographql","slug":"rover","source":"skills_sh","category":"skills","skills_sh_url":"https://skills.sh/apollographql/skills/rover"},"updatedAt":"2026-04-22T18:40:54.835Z"}}