[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-apollo-graphql-rover":3,"mdc--3swqsa-key":34,"related-org-apollo-graphql-rover":3186,"related-repo-apollo-graphql-rover":3352},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":21,"repoUrl":22,"updatedAt":23,"license":24,"forks":25,"topics":26,"repo":29,"sourceUrl":32,"mdContent":33},"rover","manage GraphQL schemas with Apollo Rover","Guide for using Apollo Rover CLI to manage GraphQL schemas and federation. Use this skill when: (1) publishing or fetching subgraph\u002Fgraph schemas, (2) composing supergraph schemas locally or via GraphOS, (3) running local supergraph development with rover dev, (4) validating schemas with check and lint commands, (5) configuring Rover authentication and environment, (6) exploring or searching a graph's schema for agent-driven discovery (rover schema describe \u002F rover schema search).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"apollo-graphql","Apollo GraphQL","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fapollo-graphql.png","apollographql",[13,17,18],{"name":14,"slug":15,"type":16},"GraphQL","graphql","tag",{"name":9,"slug":8,"type":16},{"name":19,"slug":20,"type":16},"CLI","cli",97,"https:\u002F\u002Fgithub.com\u002Fapollographql\u002Fskills","2026-07-30T05:31:52.675547","MIT",11,[27,28,15],"agent-skills","apollo",{"repoUrl":22,"stars":21,"forks":25,"topics":30,"description":31},[27,28,15],"Apollo GraphQL Agent Skills","https:\u002F\u002Fgithub.com\u002Fapollographql\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Frover","---\nname: rover\ndescription: >\n  Guide for using Apollo Rover CLI to manage GraphQL schemas and federation. Use this skill when:\n  (1) publishing or fetching subgraph\u002Fgraph schemas,\n  (2) composing supergraph schemas locally or via GraphOS,\n  (3) running local supergraph development with rover dev,\n  (4) validating schemas with check and lint commands,\n  (5) configuring Rover authentication and environment,\n  (6) exploring or searching a graph's schema for agent-driven discovery (rover schema describe \u002F rover schema search).\nlicense: MIT\ncompatibility: Node.js v18+, Linux\u002FmacOS\u002FWindows\nmetadata:\n  author: apollographql\n  version: \"1.1.2\"\nallowed-tools: Bash(rover:*) Bash(npm:*) Bash(npx:*) Read Write Edit Glob Grep\n---\n\n# 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\u002FLinux\ncurl -sSL https:\u002F\u002Frover.apollo.dev\u002Fnix\u002Flatest | sh\n\n# npm (cross-platform)\nnpm install -g @apollo\u002Frover\n\n# Windows PowerShell\niwr 'https:\u002F\u002Frover.apollo.dev\u002Fwin\u002Flatest' | 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## Explore a Graph's Schema (start here for schema questions)\n\nTo answer \"what's in this graph?\", find a field, or write a query against a GraphOS graph, **fetch the API schema and pipe it into `rover schema`** — this keeps the SDL out of your context and returns only what you need:\n\n```bash\n# What can I query? (compact overview)\nrover graph fetch \u003Cgraph@variant> | rover schema describe -\n\n# Find a field by concept\u002Fkeyword (returns the path from a root operation)\nrover graph fetch \u003Cgraph@variant> | rover schema search - \"\u003Ckeyword>\"\n\n# Zoom into one type or field\nrover graph fetch \u003Cgraph@variant> | rover schema describe - --coord \u003CType.field> --depth 1\n```\n\nThree rules that keep this correct:\n\n- Use **`rover graph fetch`** (the API schema) — **not** `rover supergraph fetch` (that returns composition SDL with federation internals like `join__`\u002F`link__`).\n- **Pipe** it in — never run `rover graph fetch` alone and read the raw SDL (a large schema floods your context; that's exactly what `rover schema` avoids).\n- The `schema` commands read **piped SDL, not a graph ref** — `rover schema describe \u003Cgraph@variant>` fails; you must fetch first and pipe.\n\nFull reference, ranking rules, and the save-once pattern: [Schema Exploration](#schema-exploration-for-agents) and [references\u002Fschema.md](references\u002Fschema.md).\n\n## Core Commands Overview\n\n| Command | Description | Use Case |\n|---------|-------------|----------|\n| `rover subgraph publish` | Publish subgraph schema to GraphOS | CI\u002FCD, 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| `rover schema describe` | Explore a schema by coordinate; **takes SDL via stdin\u002Ffile, not a graph ref** — pipe from `rover graph fetch` | Agent schema discovery |\n| `rover schema search` | Search a schema by keyword; **takes SDL via stdin\u002Ffile, not a graph ref** — pipe from `rover graph fetch` | Agent schema discovery |\n\n## Graph Reference Format\n\nMost commands require a graph reference in the format:\n\n```\n\u003CGRAPH_ID>@\u003CVARIANT>\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 .\u002Fschema.graphql \\\n  --routing-url https:\u002F\u002Fproducts.example.com\u002Fgraphql\n\n# From running server (introspection)\nrover subgraph publish my-graph@production \\\n  --name products \\\n  --schema \u003C(rover subgraph introspect http:\u002F\u002Flocalhost:4001\u002Fgraphql) \\\n  --routing-url https:\u002F\u002Fproducts.example.com\u002Fgraphql\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 .\u002Fschema.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:\u002F\u002Flocalhost:4001\u002Fgraphql\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:\u002F\u002Flocalhost:4001\u002Fgraphql\n    schema:\n      file: .\u002Fproducts\u002Fschema.graphql\n  reviews:\n    routing_url: http:\u002F\u002Flocalhost:4002\u002Fgraphql\n    schema:\n      subgraph_url: http:\u002F\u002Flocalhost:4002\u002Fgraphql\n```\n\n`federation_version` here is the **composition version** — it only needs to be ≥\neach subgraph's `@link` floor, so subgraphs pinned to a lower version compose\nfine. If a subgraph server throws `UNKNOWN_FEDERATION_LINK_VERSION` at startup,\nthat's a client-library lag, not a composition problem. See the apollo-federation\nskill's [Federation versions](..\u002Fapollo-federation\u002Freferences\u002Fcomposition.md#federation-versions-floor-vs-composition).\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> This returns the **supergraph SDL** (federation directives + `join__`\u002F`link__` internals) — use it for composition\u002Frouter work. To **explore what you can query** or write an operation, use `rover graph fetch` (the API schema) instead — see [Explore a Graph's Schema](#explore-a-graphs-schema-start-here-for-schema-questions).\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## Schema Exploration (for Agents)\n\n`rover schema describe` and `rover schema search` let an agent explore a schema **without loading the full SDL into context** — that is the entire point of these commands.\n\n> ⚠️ **Never read the raw SDL into context.** Running `rover graph fetch \u003Cref>` (or `rover graph introspect \u003Curl>`) on its own prints the entire schema — hundreds to tens of thousands of lines — straight into your context, which defeats the purpose of these commands. **Always pipe fetch output into `rover schema describe`\u002F`search`**: the SDL flows through stdin and only the compact overview\u002Fresults reach you. (Fetching to a file is fine when the user actually wants the SDL.)\n>\n> These commands also take SDL on **stdin or a file, NOT a graph ref** — you can't pass `graph@variant` to them. Fetch first, then pipe:\n>\n> ```bash\n> ❌ rover schema describe my-graph@current             # error: looks for a file named that\n> ❌ rover graph fetch my-graph@current                 # dumps the full SDL into your context\n> ✅ rover graph fetch my-graph@current | rover schema describe -\n> ```\n\nTo explore a graph in GraphOS, fetch its schema and pipe it in. **Use `rover graph fetch` (the API schema) for \"what can I query?\" exploration** — it omits federation internals. Reach for `rover supergraph fetch` only when you need composition details (`join__`\u002F`link__` types, subgraph structure):\n\n```bash\n# Overview of a GraphOS graph\nrover graph fetch my-graph@current | rover schema describe -\n\n# Find fields by keyword (results include paths from root operations)\nrover graph fetch my-graph@current | rover schema search - \"playback\"\n\n# Zoom into a coordinate, expanding referenced types one level\nrover graph fetch my-graph@current | rover schema describe - --coord \u003CType.field> --depth 1\n```\n\n**Coordinate forms:** `--coord` accepts a type (`User`), a field (`User.posts`), a field argument (`Type.field(arg:)`), or a directive (`@deprecated`) — omit it for the overview.\n\n**`search` vs `describe`:** reach for `rover schema search` first when matching a concept or keyword and you don't yet know the field name — it finds **nested** fields and shows the path from a root operation. The `describe` overview lists only root fields, so `search` is how you locate fields buried deeper. Use `describe` for the overview or once you know the type\u002Ffield coordinate.\n\nThis enables a closed-loop workflow — search → describe → write a query — with no MCP server setup. See [Schema Exploration](references\u002Fschema.md) for the full command reference, ranking rules, and the save-once pattern for large schemas.\n\n**Running the generated operation:** Rover does **not** execute queries — it only manages and inspects schemas. To actually run a generated query you need the graph's endpoint:\n\n- **Single-subgraph graph:** `rover subgraph list \u003Cgraph@variant>` prints the **Routing Url** — send the query there with `curl`.\n- **Multi-subgraph \u002F federated:** the client endpoint is the **router** URL (find it in GraphOS Studio; for a GraphOS cloud router, `rover cloud config fetch \u003Cgraph@variant>`), not the per-subgraph routing URLs.\n- Don't try to discover the endpoint via the GraphOS Platform API — Rover keeps the API key in its profile\u002Fkeychain, not `$APOLLO_KEY`, so ad-hoc API calls will come back unauthenticated.\n\n## Reference Files\n\nDetailed documentation for specific topics:\n\n- [Subgraphs](references\u002Fsubgraphs.md) - fetch, publish, check, lint, introspect, delete\n- [Graphs](references\u002Fgraphs.md) - monograph commands (non-federated)\n- [Supergraphs](references\u002Fsupergraphs.md) - compose, fetch, config format\n- [Dev](references\u002Fdev.md) - rover dev for local development\n- [Schema Exploration](references\u002Fschema.md) - describe, search, agent schema discovery workflows\n- [Configuration](references\u002Fconfiguration.md) - install, auth, env vars, profiles\n\n## Common Patterns\n\n### CI\u002FCD Pipeline\n\n```bash\n# 1. Check schema changes\nrover subgraph check $APOLLO_GRAPH_REF \\\n  --name $SUBGRAPH_NAME \\\n  --schema .\u002Fschema.graphql\n\n# 2. If check passes, publish\nrover subgraph publish $APOLLO_GRAPH_REF \\\n  --name $SUBGRAPH_NAME \\\n  --schema .\u002Fschema.graphql \\\n  --routing-url $ROUTING_URL\n```\n\n### Schema Linting\n\n```bash\n# Lint against GraphOS rules\nrover subgraph lint --name products .\u002Fschema.graphql\n\n# Lint monograph\nrover graph lint my-graph@production .\u002Fschema.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\u002FCD\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\n- USE `rover schema search` \u002F `rover schema describe` (piped from a `fetch`) to explore large schemas instead of loading the full SDL into context\n- NEVER fetch a full schema into context just to explore it — pipe `rover graph fetch`\u002F`introspect` into `rover schema describe`\u002F`search` (a bare `fetch` is only for when the user wants the SDL file itself)\n",{"data":35,"body":40},{"name":4,"description":6,"license":24,"compatibility":36,"metadata":37,"allowed-tools":39},"Node.js v18+, Linux\u002FmacOS\u002FWindows",{"author":11,"version":38},"1.1.2","Bash(rover:*) Bash(npm:*) Bash(npx:*) Read Write Edit Glob Grep",{"type":41,"children":42},"root",[43,52,58,65,72,221,227,299,305,340,346,365,624,629,733,754,760,990,996,1001,1011,1016,1048,1053,1081,1087,1093,1278,1284,1350,1356,1436,1442,1448,1461,1613,1653,1658,1702,1708,1735,1785,1796,1801,1883,1889,1928,1934,1957,2136,2174,2377,2426,2483,2494,2510,2581,2587,2592,2659,2665,2671,2801,2807,2888,2894,2997,3003,3180],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"apollo-rover-cli-guide",[49],{"type":50,"value":51},"text","Apollo Rover CLI Guide",{"type":44,"tag":53,"props":54,"children":55},"p",{},[56],{"type":50,"value":57},"Rover 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.",{"type":44,"tag":59,"props":60,"children":62},"h2",{"id":61},"quick-start",[63],{"type":50,"value":64},"Quick Start",{"type":44,"tag":66,"props":67,"children":69},"h3",{"id":68},"step-1-install",[70],{"type":50,"value":71},"Step 1: Install",{"type":44,"tag":73,"props":74,"children":79},"pre",{"className":75,"code":76,"language":77,"meta":78,"style":78},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# macOS\u002FLinux\ncurl -sSL https:\u002F\u002Frover.apollo.dev\u002Fnix\u002Flatest | sh\n\n# npm (cross-platform)\nnpm install -g @apollo\u002Frover\n\n# Windows PowerShell\niwr 'https:\u002F\u002Frover.apollo.dev\u002Fwin\u002Flatest' | iex\n","bash","",[80],{"type":44,"tag":81,"props":82,"children":83},"code",{"__ignoreMap":78},[84,96,128,138,147,171,179,188],{"type":44,"tag":85,"props":86,"children":89},"span",{"class":87,"line":88},"line",1,[90],{"type":44,"tag":85,"props":91,"children":93},{"style":92},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[94],{"type":50,"value":95},"# macOS\u002FLinux\n",{"type":44,"tag":85,"props":97,"children":99},{"class":87,"line":98},2,[100,106,112,117,123],{"type":44,"tag":85,"props":101,"children":103},{"style":102},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[104],{"type":50,"value":105},"curl",{"type":44,"tag":85,"props":107,"children":109},{"style":108},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[110],{"type":50,"value":111}," -sSL",{"type":44,"tag":85,"props":113,"children":114},{"style":108},[115],{"type":50,"value":116}," https:\u002F\u002Frover.apollo.dev\u002Fnix\u002Flatest",{"type":44,"tag":85,"props":118,"children":120},{"style":119},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[121],{"type":50,"value":122}," |",{"type":44,"tag":85,"props":124,"children":125},{"style":102},[126],{"type":50,"value":127}," sh\n",{"type":44,"tag":85,"props":129,"children":131},{"class":87,"line":130},3,[132],{"type":44,"tag":85,"props":133,"children":135},{"emptyLinePlaceholder":134},true,[136],{"type":50,"value":137},"\n",{"type":44,"tag":85,"props":139,"children":141},{"class":87,"line":140},4,[142],{"type":44,"tag":85,"props":143,"children":144},{"style":92},[145],{"type":50,"value":146},"# npm (cross-platform)\n",{"type":44,"tag":85,"props":148,"children":150},{"class":87,"line":149},5,[151,156,161,166],{"type":44,"tag":85,"props":152,"children":153},{"style":102},[154],{"type":50,"value":155},"npm",{"type":44,"tag":85,"props":157,"children":158},{"style":108},[159],{"type":50,"value":160}," install",{"type":44,"tag":85,"props":162,"children":163},{"style":108},[164],{"type":50,"value":165}," -g",{"type":44,"tag":85,"props":167,"children":168},{"style":108},[169],{"type":50,"value":170}," @apollo\u002Frover\n",{"type":44,"tag":85,"props":172,"children":174},{"class":87,"line":173},6,[175],{"type":44,"tag":85,"props":176,"children":177},{"emptyLinePlaceholder":134},[178],{"type":50,"value":137},{"type":44,"tag":85,"props":180,"children":182},{"class":87,"line":181},7,[183],{"type":44,"tag":85,"props":184,"children":185},{"style":92},[186],{"type":50,"value":187},"# Windows PowerShell\n",{"type":44,"tag":85,"props":189,"children":191},{"class":87,"line":190},8,[192,197,202,207,212,216],{"type":44,"tag":85,"props":193,"children":194},{"style":102},[195],{"type":50,"value":196},"iwr",{"type":44,"tag":85,"props":198,"children":199},{"style":119},[200],{"type":50,"value":201}," '",{"type":44,"tag":85,"props":203,"children":204},{"style":108},[205],{"type":50,"value":206},"https:\u002F\u002Frover.apollo.dev\u002Fwin\u002Flatest",{"type":44,"tag":85,"props":208,"children":209},{"style":119},[210],{"type":50,"value":211},"'",{"type":44,"tag":85,"props":213,"children":214},{"style":119},[215],{"type":50,"value":122},{"type":44,"tag":85,"props":217,"children":218},{"style":102},[219],{"type":50,"value":220}," iex\n",{"type":44,"tag":66,"props":222,"children":224},{"id":223},"step-2-authenticate",[225],{"type":50,"value":226},"Step 2: Authenticate",{"type":44,"tag":73,"props":228,"children":230},{"className":75,"code":229,"language":77,"meta":78,"style":78},"# Interactive authentication (opens browser)\nrover config auth\n\n# Or set environment variable\nexport APOLLO_KEY=your-api-key\n",[231],{"type":44,"tag":81,"props":232,"children":233},{"__ignoreMap":78},[234,242,259,266,274],{"type":44,"tag":85,"props":235,"children":236},{"class":87,"line":88},[237],{"type":44,"tag":85,"props":238,"children":239},{"style":92},[240],{"type":50,"value":241},"# Interactive authentication (opens browser)\n",{"type":44,"tag":85,"props":243,"children":244},{"class":87,"line":98},[245,249,254],{"type":44,"tag":85,"props":246,"children":247},{"style":102},[248],{"type":50,"value":4},{"type":44,"tag":85,"props":250,"children":251},{"style":108},[252],{"type":50,"value":253}," config",{"type":44,"tag":85,"props":255,"children":256},{"style":108},[257],{"type":50,"value":258}," auth\n",{"type":44,"tag":85,"props":260,"children":261},{"class":87,"line":130},[262],{"type":44,"tag":85,"props":263,"children":264},{"emptyLinePlaceholder":134},[265],{"type":50,"value":137},{"type":44,"tag":85,"props":267,"children":268},{"class":87,"line":140},[269],{"type":44,"tag":85,"props":270,"children":271},{"style":92},[272],{"type":50,"value":273},"# Or set environment variable\n",{"type":44,"tag":85,"props":275,"children":276},{"class":87,"line":149},[277,283,289,294],{"type":44,"tag":85,"props":278,"children":280},{"style":279},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[281],{"type":50,"value":282},"export",{"type":44,"tag":85,"props":284,"children":286},{"style":285},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[287],{"type":50,"value":288}," APOLLO_KEY",{"type":44,"tag":85,"props":290,"children":291},{"style":119},[292],{"type":50,"value":293},"=",{"type":44,"tag":85,"props":295,"children":296},{"style":285},[297],{"type":50,"value":298},"your-api-key\n",{"type":44,"tag":66,"props":300,"children":302},{"id":301},"step-3-verify-installation",[303],{"type":50,"value":304},"Step 3: Verify Installation",{"type":44,"tag":73,"props":306,"children":308},{"className":75,"code":307,"language":77,"meta":78,"style":78},"rover --version\nrover config whoami\n",[309],{"type":44,"tag":81,"props":310,"children":311},{"__ignoreMap":78},[312,324],{"type":44,"tag":85,"props":313,"children":314},{"class":87,"line":88},[315,319],{"type":44,"tag":85,"props":316,"children":317},{"style":102},[318],{"type":50,"value":4},{"type":44,"tag":85,"props":320,"children":321},{"style":108},[322],{"type":50,"value":323}," --version\n",{"type":44,"tag":85,"props":325,"children":326},{"class":87,"line":98},[327,331,335],{"type":44,"tag":85,"props":328,"children":329},{"style":102},[330],{"type":50,"value":4},{"type":44,"tag":85,"props":332,"children":333},{"style":108},[334],{"type":50,"value":253},{"type":44,"tag":85,"props":336,"children":337},{"style":108},[338],{"type":50,"value":339}," whoami\n",{"type":44,"tag":59,"props":341,"children":343},{"id":342},"explore-a-graphs-schema-start-here-for-schema-questions",[344],{"type":50,"value":345},"Explore a Graph's Schema (start here for schema questions)",{"type":44,"tag":53,"props":347,"children":348},{},[349,351,363],{"type":50,"value":350},"To answer \"what's in this graph?\", find a field, or write a query against a GraphOS graph, ",{"type":44,"tag":352,"props":353,"children":354},"strong",{},[355,357],{"type":50,"value":356},"fetch the API schema and pipe it into ",{"type":44,"tag":81,"props":358,"children":360},{"className":359},[],[361],{"type":50,"value":362},"rover schema",{"type":50,"value":364}," — this keeps the SDL out of your context and returns only what you need:",{"type":44,"tag":73,"props":366,"children":368},{"className":75,"code":367,"language":77,"meta":78,"style":78},"# What can I query? (compact overview)\nrover graph fetch \u003Cgraph@variant> | rover schema describe -\n\n# Find a field by concept\u002Fkeyword (returns the path from a root operation)\nrover graph fetch \u003Cgraph@variant> | rover schema search - \"\u003Ckeyword>\"\n\n# Zoom into one type or field\nrover graph fetch \u003Cgraph@variant> | rover schema describe - --coord \u003CType.field> --depth 1\n",[369],{"type":44,"tag":81,"props":370,"children":371},{"__ignoreMap":78},[372,380,441,448,456,524,531,539],{"type":44,"tag":85,"props":373,"children":374},{"class":87,"line":88},[375],{"type":44,"tag":85,"props":376,"children":377},{"style":92},[378],{"type":50,"value":379},"# What can I query? (compact overview)\n",{"type":44,"tag":85,"props":381,"children":382},{"class":87,"line":98},[383,387,392,397,402,407,412,417,421,426,431,436],{"type":44,"tag":85,"props":384,"children":385},{"style":102},[386],{"type":50,"value":4},{"type":44,"tag":85,"props":388,"children":389},{"style":108},[390],{"type":50,"value":391}," graph",{"type":44,"tag":85,"props":393,"children":394},{"style":108},[395],{"type":50,"value":396}," fetch",{"type":44,"tag":85,"props":398,"children":399},{"style":119},[400],{"type":50,"value":401}," \u003C",{"type":44,"tag":85,"props":403,"children":404},{"style":108},[405],{"type":50,"value":406},"graph@varian",{"type":44,"tag":85,"props":408,"children":409},{"style":285},[410],{"type":50,"value":411},"t",{"type":44,"tag":85,"props":413,"children":414},{"style":119},[415],{"type":50,"value":416},">",{"type":44,"tag":85,"props":418,"children":419},{"style":119},[420],{"type":50,"value":122},{"type":44,"tag":85,"props":422,"children":423},{"style":102},[424],{"type":50,"value":425}," rover",{"type":44,"tag":85,"props":427,"children":428},{"style":108},[429],{"type":50,"value":430}," schema",{"type":44,"tag":85,"props":432,"children":433},{"style":108},[434],{"type":50,"value":435}," describe",{"type":44,"tag":85,"props":437,"children":438},{"style":108},[439],{"type":50,"value":440}," -\n",{"type":44,"tag":85,"props":442,"children":443},{"class":87,"line":130},[444],{"type":44,"tag":85,"props":445,"children":446},{"emptyLinePlaceholder":134},[447],{"type":50,"value":137},{"type":44,"tag":85,"props":449,"children":450},{"class":87,"line":140},[451],{"type":44,"tag":85,"props":452,"children":453},{"style":92},[454],{"type":50,"value":455},"# Find a field by concept\u002Fkeyword (returns the path from a root operation)\n",{"type":44,"tag":85,"props":457,"children":458},{"class":87,"line":149},[459,463,467,471,475,479,483,487,491,495,499,504,509,514,519],{"type":44,"tag":85,"props":460,"children":461},{"style":102},[462],{"type":50,"value":4},{"type":44,"tag":85,"props":464,"children":465},{"style":108},[466],{"type":50,"value":391},{"type":44,"tag":85,"props":468,"children":469},{"style":108},[470],{"type":50,"value":396},{"type":44,"tag":85,"props":472,"children":473},{"style":119},[474],{"type":50,"value":401},{"type":44,"tag":85,"props":476,"children":477},{"style":108},[478],{"type":50,"value":406},{"type":44,"tag":85,"props":480,"children":481},{"style":285},[482],{"type":50,"value":411},{"type":44,"tag":85,"props":484,"children":485},{"style":119},[486],{"type":50,"value":416},{"type":44,"tag":85,"props":488,"children":489},{"style":119},[490],{"type":50,"value":122},{"type":44,"tag":85,"props":492,"children":493},{"style":102},[494],{"type":50,"value":425},{"type":44,"tag":85,"props":496,"children":497},{"style":108},[498],{"type":50,"value":430},{"type":44,"tag":85,"props":500,"children":501},{"style":108},[502],{"type":50,"value":503}," search",{"type":44,"tag":85,"props":505,"children":506},{"style":108},[507],{"type":50,"value":508}," -",{"type":44,"tag":85,"props":510,"children":511},{"style":119},[512],{"type":50,"value":513}," \"",{"type":44,"tag":85,"props":515,"children":516},{"style":108},[517],{"type":50,"value":518},"\u003Ckeyword>",{"type":44,"tag":85,"props":520,"children":521},{"style":119},[522],{"type":50,"value":523},"\"\n",{"type":44,"tag":85,"props":525,"children":526},{"class":87,"line":173},[527],{"type":44,"tag":85,"props":528,"children":529},{"emptyLinePlaceholder":134},[530],{"type":50,"value":137},{"type":44,"tag":85,"props":532,"children":533},{"class":87,"line":181},[534],{"type":44,"tag":85,"props":535,"children":536},{"style":92},[537],{"type":50,"value":538},"# Zoom into one type or field\n",{"type":44,"tag":85,"props":540,"children":541},{"class":87,"line":190},[542,546,550,554,558,562,566,570,574,578,582,586,590,595,599,604,609,613,618],{"type":44,"tag":85,"props":543,"children":544},{"style":102},[545],{"type":50,"value":4},{"type":44,"tag":85,"props":547,"children":548},{"style":108},[549],{"type":50,"value":391},{"type":44,"tag":85,"props":551,"children":552},{"style":108},[553],{"type":50,"value":396},{"type":44,"tag":85,"props":555,"children":556},{"style":119},[557],{"type":50,"value":401},{"type":44,"tag":85,"props":559,"children":560},{"style":108},[561],{"type":50,"value":406},{"type":44,"tag":85,"props":563,"children":564},{"style":285},[565],{"type":50,"value":411},{"type":44,"tag":85,"props":567,"children":568},{"style":119},[569],{"type":50,"value":416},{"type":44,"tag":85,"props":571,"children":572},{"style":119},[573],{"type":50,"value":122},{"type":44,"tag":85,"props":575,"children":576},{"style":102},[577],{"type":50,"value":425},{"type":44,"tag":85,"props":579,"children":580},{"style":108},[581],{"type":50,"value":430},{"type":44,"tag":85,"props":583,"children":584},{"style":108},[585],{"type":50,"value":435},{"type":44,"tag":85,"props":587,"children":588},{"style":108},[589],{"type":50,"value":508},{"type":44,"tag":85,"props":591,"children":592},{"style":108},[593],{"type":50,"value":594}," --coord",{"type":44,"tag":85,"props":596,"children":597},{"style":119},[598],{"type":50,"value":401},{"type":44,"tag":85,"props":600,"children":601},{"style":108},[602],{"type":50,"value":603},"Type.fiel",{"type":44,"tag":85,"props":605,"children":606},{"style":285},[607],{"type":50,"value":608},"d",{"type":44,"tag":85,"props":610,"children":611},{"style":119},[612],{"type":50,"value":416},{"type":44,"tag":85,"props":614,"children":615},{"style":108},[616],{"type":50,"value":617}," --depth",{"type":44,"tag":85,"props":619,"children":621},{"style":620},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[622],{"type":50,"value":623}," 1\n",{"type":44,"tag":53,"props":625,"children":626},{},[627],{"type":50,"value":628},"Three rules that keep this correct:",{"type":44,"tag":630,"props":631,"children":632},"ul",{},[633,681,705],{"type":44,"tag":634,"props":635,"children":636},"li",{},[637,639,648,650,655,657,663,665,671,673,679],{"type":50,"value":638},"Use ",{"type":44,"tag":352,"props":640,"children":641},{},[642],{"type":44,"tag":81,"props":643,"children":645},{"className":644},[],[646],{"type":50,"value":647},"rover graph fetch",{"type":50,"value":649}," (the API schema) — ",{"type":44,"tag":352,"props":651,"children":652},{},[653],{"type":50,"value":654},"not",{"type":50,"value":656}," ",{"type":44,"tag":81,"props":658,"children":660},{"className":659},[],[661],{"type":50,"value":662},"rover supergraph fetch",{"type":50,"value":664}," (that returns composition SDL with federation internals like ",{"type":44,"tag":81,"props":666,"children":668},{"className":667},[],[669],{"type":50,"value":670},"join__",{"type":50,"value":672},"\u002F",{"type":44,"tag":81,"props":674,"children":676},{"className":675},[],[677],{"type":50,"value":678},"link__",{"type":50,"value":680},").",{"type":44,"tag":634,"props":682,"children":683},{},[684,689,691,696,698,703],{"type":44,"tag":352,"props":685,"children":686},{},[687],{"type":50,"value":688},"Pipe",{"type":50,"value":690}," it in — never run ",{"type":44,"tag":81,"props":692,"children":694},{"className":693},[],[695],{"type":50,"value":647},{"type":50,"value":697}," alone and read the raw SDL (a large schema floods your context; that's exactly what ",{"type":44,"tag":81,"props":699,"children":701},{"className":700},[],[702],{"type":50,"value":362},{"type":50,"value":704}," avoids).",{"type":44,"tag":634,"props":706,"children":707},{},[708,710,716,718,723,725,731],{"type":50,"value":709},"The ",{"type":44,"tag":81,"props":711,"children":713},{"className":712},[],[714],{"type":50,"value":715},"schema",{"type":50,"value":717}," commands read ",{"type":44,"tag":352,"props":719,"children":720},{},[721],{"type":50,"value":722},"piped SDL, not a graph ref",{"type":50,"value":724}," — ",{"type":44,"tag":81,"props":726,"children":728},{"className":727},[],[729],{"type":50,"value":730},"rover schema describe \u003Cgraph@variant>",{"type":50,"value":732}," fails; you must fetch first and pipe.",{"type":44,"tag":53,"props":734,"children":735},{},[736,738,745,747,752],{"type":50,"value":737},"Full reference, ranking rules, and the save-once pattern: ",{"type":44,"tag":739,"props":740,"children":742},"a",{"href":741},"#schema-exploration-for-agents",[743],{"type":50,"value":744},"Schema Exploration",{"type":50,"value":746}," and ",{"type":44,"tag":739,"props":748,"children":750},{"href":749},"references\u002Fschema.md",[751],{"type":50,"value":749},{"type":50,"value":753},".",{"type":44,"tag":59,"props":755,"children":757},{"id":756},"core-commands-overview",[758],{"type":50,"value":759},"Core Commands Overview",{"type":44,"tag":761,"props":762,"children":763},"table",{},[764,788],{"type":44,"tag":765,"props":766,"children":767},"thead",{},[768],{"type":44,"tag":769,"props":770,"children":771},"tr",{},[772,778,783],{"type":44,"tag":773,"props":774,"children":775},"th",{},[776],{"type":50,"value":777},"Command",{"type":44,"tag":773,"props":779,"children":780},{},[781],{"type":50,"value":782},"Description",{"type":44,"tag":773,"props":784,"children":785},{},[786],{"type":50,"value":787},"Use Case",{"type":44,"tag":789,"props":790,"children":791},"tbody",{},[792,815,837,859,881,903,925,959],{"type":44,"tag":769,"props":793,"children":794},{},[795,805,810],{"type":44,"tag":796,"props":797,"children":798},"td",{},[799],{"type":44,"tag":81,"props":800,"children":802},{"className":801},[],[803],{"type":50,"value":804},"rover subgraph publish",{"type":44,"tag":796,"props":806,"children":807},{},[808],{"type":50,"value":809},"Publish subgraph schema to GraphOS",{"type":44,"tag":796,"props":811,"children":812},{},[813],{"type":50,"value":814},"CI\u002FCD, schema updates",{"type":44,"tag":769,"props":816,"children":817},{},[818,827,832],{"type":44,"tag":796,"props":819,"children":820},{},[821],{"type":44,"tag":81,"props":822,"children":824},{"className":823},[],[825],{"type":50,"value":826},"rover subgraph check",{"type":44,"tag":796,"props":828,"children":829},{},[830],{"type":50,"value":831},"Validate schema changes",{"type":44,"tag":796,"props":833,"children":834},{},[835],{"type":50,"value":836},"PR checks, pre-deploy",{"type":44,"tag":769,"props":838,"children":839},{},[840,849,854],{"type":44,"tag":796,"props":841,"children":842},{},[843],{"type":44,"tag":81,"props":844,"children":846},{"className":845},[],[847],{"type":50,"value":848},"rover subgraph fetch",{"type":44,"tag":796,"props":850,"children":851},{},[852],{"type":50,"value":853},"Download subgraph schema",{"type":44,"tag":796,"props":855,"children":856},{},[857],{"type":50,"value":858},"Local development",{"type":44,"tag":769,"props":860,"children":861},{},[862,871,876],{"type":44,"tag":796,"props":863,"children":864},{},[865],{"type":44,"tag":81,"props":866,"children":868},{"className":867},[],[869],{"type":50,"value":870},"rover supergraph compose",{"type":44,"tag":796,"props":872,"children":873},{},[874],{"type":50,"value":875},"Compose supergraph locally",{"type":44,"tag":796,"props":877,"children":878},{},[879],{"type":50,"value":880},"Local testing",{"type":44,"tag":769,"props":882,"children":883},{},[884,893,898],{"type":44,"tag":796,"props":885,"children":886},{},[887],{"type":44,"tag":81,"props":888,"children":890},{"className":889},[],[891],{"type":50,"value":892},"rover dev",{"type":44,"tag":796,"props":894,"children":895},{},[896],{"type":50,"value":897},"Local supergraph development",{"type":44,"tag":796,"props":899,"children":900},{},[901],{"type":50,"value":902},"Development workflow",{"type":44,"tag":769,"props":904,"children":905},{},[906,915,920],{"type":44,"tag":796,"props":907,"children":908},{},[909],{"type":44,"tag":81,"props":910,"children":912},{"className":911},[],[913],{"type":50,"value":914},"rover graph publish",{"type":44,"tag":796,"props":916,"children":917},{},[918],{"type":50,"value":919},"Publish monograph schema",{"type":44,"tag":796,"props":921,"children":922},{},[923],{"type":50,"value":924},"Non-federated graphs",{"type":44,"tag":769,"props":926,"children":927},{},[928,937,954],{"type":44,"tag":796,"props":929,"children":930},{},[931],{"type":44,"tag":81,"props":932,"children":934},{"className":933},[],[935],{"type":50,"value":936},"rover schema describe",{"type":44,"tag":796,"props":938,"children":939},{},[940,942,947,949],{"type":50,"value":941},"Explore a schema by coordinate; ",{"type":44,"tag":352,"props":943,"children":944},{},[945],{"type":50,"value":946},"takes SDL via stdin\u002Ffile, not a graph ref",{"type":50,"value":948}," — pipe from ",{"type":44,"tag":81,"props":950,"children":952},{"className":951},[],[953],{"type":50,"value":647},{"type":44,"tag":796,"props":955,"children":956},{},[957],{"type":50,"value":958},"Agent schema discovery",{"type":44,"tag":769,"props":960,"children":961},{},[962,971,986],{"type":44,"tag":796,"props":963,"children":964},{},[965],{"type":44,"tag":81,"props":966,"children":968},{"className":967},[],[969],{"type":50,"value":970},"rover schema search",{"type":44,"tag":796,"props":972,"children":973},{},[974,976,980,981],{"type":50,"value":975},"Search a schema by keyword; ",{"type":44,"tag":352,"props":977,"children":978},{},[979],{"type":50,"value":946},{"type":50,"value":948},{"type":44,"tag":81,"props":982,"children":984},{"className":983},[],[985],{"type":50,"value":647},{"type":44,"tag":796,"props":987,"children":988},{},[989],{"type":50,"value":958},{"type":44,"tag":59,"props":991,"children":993},{"id":992},"graph-reference-format",[994],{"type":50,"value":995},"Graph Reference Format",{"type":44,"tag":53,"props":997,"children":998},{},[999],{"type":50,"value":1000},"Most commands require a graph reference in the format:",{"type":44,"tag":73,"props":1002,"children":1006},{"className":1003,"code":1005,"language":50},[1004],"language-text","\u003CGRAPH_ID>@\u003CVARIANT>\n",[1007],{"type":44,"tag":81,"props":1008,"children":1009},{"__ignoreMap":78},[1010],{"type":50,"value":1005},{"type":44,"tag":53,"props":1012,"children":1013},{},[1014],{"type":50,"value":1015},"Examples:",{"type":44,"tag":630,"props":1017,"children":1018},{},[1019,1028,1037],{"type":44,"tag":634,"props":1020,"children":1021},{},[1022],{"type":44,"tag":81,"props":1023,"children":1025},{"className":1024},[],[1026],{"type":50,"value":1027},"my-graph@production",{"type":44,"tag":634,"props":1029,"children":1030},{},[1031],{"type":44,"tag":81,"props":1032,"children":1034},{"className":1033},[],[1035],{"type":50,"value":1036},"my-graph@staging",{"type":44,"tag":634,"props":1038,"children":1039},{},[1040,1046],{"type":44,"tag":81,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":50,"value":1045},"my-graph@current",{"type":50,"value":1047}," (default variant)",{"type":44,"tag":53,"props":1049,"children":1050},{},[1051],{"type":50,"value":1052},"Set as environment variable:",{"type":44,"tag":73,"props":1054,"children":1056},{"className":75,"code":1055,"language":77,"meta":78,"style":78},"export APOLLO_GRAPH_REF=my-graph@production\n",[1057],{"type":44,"tag":81,"props":1058,"children":1059},{"__ignoreMap":78},[1060],{"type":44,"tag":85,"props":1061,"children":1062},{"class":87,"line":88},[1063,1067,1072,1076],{"type":44,"tag":85,"props":1064,"children":1065},{"style":279},[1066],{"type":50,"value":282},{"type":44,"tag":85,"props":1068,"children":1069},{"style":285},[1070],{"type":50,"value":1071}," APOLLO_GRAPH_REF",{"type":44,"tag":85,"props":1073,"children":1074},{"style":119},[1075],{"type":50,"value":293},{"type":44,"tag":85,"props":1077,"children":1078},{"style":285},[1079],{"type":50,"value":1080},"my-graph@production\n",{"type":44,"tag":59,"props":1082,"children":1084},{"id":1083},"subgraph-workflow",[1085],{"type":50,"value":1086},"Subgraph Workflow",{"type":44,"tag":66,"props":1088,"children":1090},{"id":1089},"publishing-a-subgraph",[1091],{"type":50,"value":1092},"Publishing a Subgraph",{"type":44,"tag":73,"props":1094,"children":1096},{"className":75,"code":1095,"language":77,"meta":78,"style":78},"# From schema file\nrover subgraph publish my-graph@production \\\n  --name products \\\n  --schema .\u002Fschema.graphql \\\n  --routing-url https:\u002F\u002Fproducts.example.com\u002Fgraphql\n\n# From running server (introspection)\nrover subgraph publish my-graph@production \\\n  --name products \\\n  --schema \u003C(rover subgraph introspect http:\u002F\u002Flocalhost:4001\u002Fgraphql) \\\n  --routing-url https:\u002F\u002Fproducts.example.com\u002Fgraphql\n",[1097],{"type":44,"tag":81,"props":1098,"children":1099},{"__ignoreMap":78},[1100,1108,1135,1152,1169,1182,1189,1197,1220,1236,1267],{"type":44,"tag":85,"props":1101,"children":1102},{"class":87,"line":88},[1103],{"type":44,"tag":85,"props":1104,"children":1105},{"style":92},[1106],{"type":50,"value":1107},"# From schema file\n",{"type":44,"tag":85,"props":1109,"children":1110},{"class":87,"line":98},[1111,1115,1120,1125,1130],{"type":44,"tag":85,"props":1112,"children":1113},{"style":102},[1114],{"type":50,"value":4},{"type":44,"tag":85,"props":1116,"children":1117},{"style":108},[1118],{"type":50,"value":1119}," subgraph",{"type":44,"tag":85,"props":1121,"children":1122},{"style":108},[1123],{"type":50,"value":1124}," publish",{"type":44,"tag":85,"props":1126,"children":1127},{"style":108},[1128],{"type":50,"value":1129}," my-graph@production",{"type":44,"tag":85,"props":1131,"children":1132},{"style":285},[1133],{"type":50,"value":1134}," \\\n",{"type":44,"tag":85,"props":1136,"children":1137},{"class":87,"line":130},[1138,1143,1148],{"type":44,"tag":85,"props":1139,"children":1140},{"style":108},[1141],{"type":50,"value":1142},"  --name",{"type":44,"tag":85,"props":1144,"children":1145},{"style":108},[1146],{"type":50,"value":1147}," products",{"type":44,"tag":85,"props":1149,"children":1150},{"style":285},[1151],{"type":50,"value":1134},{"type":44,"tag":85,"props":1153,"children":1154},{"class":87,"line":140},[1155,1160,1165],{"type":44,"tag":85,"props":1156,"children":1157},{"style":108},[1158],{"type":50,"value":1159},"  --schema",{"type":44,"tag":85,"props":1161,"children":1162},{"style":108},[1163],{"type":50,"value":1164}," .\u002Fschema.graphql",{"type":44,"tag":85,"props":1166,"children":1167},{"style":285},[1168],{"type":50,"value":1134},{"type":44,"tag":85,"props":1170,"children":1171},{"class":87,"line":149},[1172,1177],{"type":44,"tag":85,"props":1173,"children":1174},{"style":108},[1175],{"type":50,"value":1176},"  --routing-url",{"type":44,"tag":85,"props":1178,"children":1179},{"style":108},[1180],{"type":50,"value":1181}," https:\u002F\u002Fproducts.example.com\u002Fgraphql\n",{"type":44,"tag":85,"props":1183,"children":1184},{"class":87,"line":173},[1185],{"type":44,"tag":85,"props":1186,"children":1187},{"emptyLinePlaceholder":134},[1188],{"type":50,"value":137},{"type":44,"tag":85,"props":1190,"children":1191},{"class":87,"line":181},[1192],{"type":44,"tag":85,"props":1193,"children":1194},{"style":92},[1195],{"type":50,"value":1196},"# From running server (introspection)\n",{"type":44,"tag":85,"props":1198,"children":1199},{"class":87,"line":190},[1200,1204,1208,1212,1216],{"type":44,"tag":85,"props":1201,"children":1202},{"style":102},[1203],{"type":50,"value":4},{"type":44,"tag":85,"props":1205,"children":1206},{"style":108},[1207],{"type":50,"value":1119},{"type":44,"tag":85,"props":1209,"children":1210},{"style":108},[1211],{"type":50,"value":1124},{"type":44,"tag":85,"props":1213,"children":1214},{"style":108},[1215],{"type":50,"value":1129},{"type":44,"tag":85,"props":1217,"children":1218},{"style":285},[1219],{"type":50,"value":1134},{"type":44,"tag":85,"props":1221,"children":1223},{"class":87,"line":1222},9,[1224,1228,1232],{"type":44,"tag":85,"props":1225,"children":1226},{"style":108},[1227],{"type":50,"value":1142},{"type":44,"tag":85,"props":1229,"children":1230},{"style":108},[1231],{"type":50,"value":1147},{"type":44,"tag":85,"props":1233,"children":1234},{"style":285},[1235],{"type":50,"value":1134},{"type":44,"tag":85,"props":1237,"children":1239},{"class":87,"line":1238},10,[1240,1244,1249,1253,1258,1263],{"type":44,"tag":85,"props":1241,"children":1242},{"style":108},[1243],{"type":50,"value":1159},{"type":44,"tag":85,"props":1245,"children":1246},{"style":119},[1247],{"type":50,"value":1248}," \u003C(",{"type":44,"tag":85,"props":1250,"children":1251},{"style":102},[1252],{"type":50,"value":4},{"type":44,"tag":85,"props":1254,"children":1255},{"style":108},[1256],{"type":50,"value":1257}," subgraph introspect http:\u002F\u002Flocalhost:4001\u002Fgraphql",{"type":44,"tag":85,"props":1259,"children":1260},{"style":119},[1261],{"type":50,"value":1262},")",{"type":44,"tag":85,"props":1264,"children":1265},{"style":285},[1266],{"type":50,"value":1134},{"type":44,"tag":85,"props":1268,"children":1269},{"class":87,"line":25},[1270,1274],{"type":44,"tag":85,"props":1271,"children":1272},{"style":108},[1273],{"type":50,"value":1176},{"type":44,"tag":85,"props":1275,"children":1276},{"style":108},[1277],{"type":50,"value":1181},{"type":44,"tag":66,"props":1279,"children":1281},{"id":1280},"checking-schema-changes",[1282],{"type":50,"value":1283},"Checking Schema Changes",{"type":44,"tag":73,"props":1285,"children":1287},{"className":75,"code":1286,"language":77,"meta":78,"style":78},"# Check against production traffic\nrover subgraph check my-graph@production \\\n  --name products \\\n  --schema .\u002Fschema.graphql\n",[1288],{"type":44,"tag":81,"props":1289,"children":1290},{"__ignoreMap":78},[1291,1299,1323,1338],{"type":44,"tag":85,"props":1292,"children":1293},{"class":87,"line":88},[1294],{"type":44,"tag":85,"props":1295,"children":1296},{"style":92},[1297],{"type":50,"value":1298},"# Check against production traffic\n",{"type":44,"tag":85,"props":1300,"children":1301},{"class":87,"line":98},[1302,1306,1310,1315,1319],{"type":44,"tag":85,"props":1303,"children":1304},{"style":102},[1305],{"type":50,"value":4},{"type":44,"tag":85,"props":1307,"children":1308},{"style":108},[1309],{"type":50,"value":1119},{"type":44,"tag":85,"props":1311,"children":1312},{"style":108},[1313],{"type":50,"value":1314}," check",{"type":44,"tag":85,"props":1316,"children":1317},{"style":108},[1318],{"type":50,"value":1129},{"type":44,"tag":85,"props":1320,"children":1321},{"style":285},[1322],{"type":50,"value":1134},{"type":44,"tag":85,"props":1324,"children":1325},{"class":87,"line":130},[1326,1330,1334],{"type":44,"tag":85,"props":1327,"children":1328},{"style":108},[1329],{"type":50,"value":1142},{"type":44,"tag":85,"props":1331,"children":1332},{"style":108},[1333],{"type":50,"value":1147},{"type":44,"tag":85,"props":1335,"children":1336},{"style":285},[1337],{"type":50,"value":1134},{"type":44,"tag":85,"props":1339,"children":1340},{"class":87,"line":140},[1341,1345],{"type":44,"tag":85,"props":1342,"children":1343},{"style":108},[1344],{"type":50,"value":1159},{"type":44,"tag":85,"props":1346,"children":1347},{"style":108},[1348],{"type":50,"value":1349}," .\u002Fschema.graphql\n",{"type":44,"tag":66,"props":1351,"children":1353},{"id":1352},"fetching-schema",[1354],{"type":50,"value":1355},"Fetching Schema",{"type":44,"tag":73,"props":1357,"children":1359},{"className":75,"code":1358,"language":77,"meta":78,"style":78},"# Fetch from GraphOS\nrover subgraph fetch my-graph@production --name products\n\n# Introspect running server\nrover subgraph introspect http:\u002F\u002Flocalhost:4001\u002Fgraphql\n",[1360],{"type":44,"tag":81,"props":1361,"children":1362},{"__ignoreMap":78},[1363,1371,1400,1407,1415],{"type":44,"tag":85,"props":1364,"children":1365},{"class":87,"line":88},[1366],{"type":44,"tag":85,"props":1367,"children":1368},{"style":92},[1369],{"type":50,"value":1370},"# Fetch from GraphOS\n",{"type":44,"tag":85,"props":1372,"children":1373},{"class":87,"line":98},[1374,1378,1382,1386,1390,1395],{"type":44,"tag":85,"props":1375,"children":1376},{"style":102},[1377],{"type":50,"value":4},{"type":44,"tag":85,"props":1379,"children":1380},{"style":108},[1381],{"type":50,"value":1119},{"type":44,"tag":85,"props":1383,"children":1384},{"style":108},[1385],{"type":50,"value":396},{"type":44,"tag":85,"props":1387,"children":1388},{"style":108},[1389],{"type":50,"value":1129},{"type":44,"tag":85,"props":1391,"children":1392},{"style":108},[1393],{"type":50,"value":1394}," --name",{"type":44,"tag":85,"props":1396,"children":1397},{"style":108},[1398],{"type":50,"value":1399}," products\n",{"type":44,"tag":85,"props":1401,"children":1402},{"class":87,"line":130},[1403],{"type":44,"tag":85,"props":1404,"children":1405},{"emptyLinePlaceholder":134},[1406],{"type":50,"value":137},{"type":44,"tag":85,"props":1408,"children":1409},{"class":87,"line":140},[1410],{"type":44,"tag":85,"props":1411,"children":1412},{"style":92},[1413],{"type":50,"value":1414},"# Introspect running server\n",{"type":44,"tag":85,"props":1416,"children":1417},{"class":87,"line":149},[1418,1422,1426,1431],{"type":44,"tag":85,"props":1419,"children":1420},{"style":102},[1421],{"type":50,"value":4},{"type":44,"tag":85,"props":1423,"children":1424},{"style":108},[1425],{"type":50,"value":1119},{"type":44,"tag":85,"props":1427,"children":1428},{"style":108},[1429],{"type":50,"value":1430}," introspect",{"type":44,"tag":85,"props":1432,"children":1433},{"style":108},[1434],{"type":50,"value":1435}," http:\u002F\u002Flocalhost:4001\u002Fgraphql\n",{"type":44,"tag":59,"props":1437,"children":1439},{"id":1438},"supergraph-composition",[1440],{"type":50,"value":1441},"Supergraph Composition",{"type":44,"tag":66,"props":1443,"children":1445},{"id":1444},"local-composition",[1446],{"type":50,"value":1447},"Local Composition",{"type":44,"tag":53,"props":1449,"children":1450},{},[1451,1453,1459],{"type":50,"value":1452},"Create ",{"type":44,"tag":81,"props":1454,"children":1456},{"className":1455},[],[1457],{"type":50,"value":1458},"supergraph.yaml",{"type":50,"value":1460},":",{"type":44,"tag":73,"props":1462,"children":1466},{"className":1463,"code":1464,"language":1465,"meta":78,"style":78},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","federation_version: =2.9.0\nsubgraphs:\n  products:\n    routing_url: http:\u002F\u002Flocalhost:4001\u002Fgraphql\n    schema:\n      file: .\u002Fproducts\u002Fschema.graphql\n  reviews:\n    routing_url: http:\u002F\u002Flocalhost:4002\u002Fgraphql\n    schema:\n      subgraph_url: http:\u002F\u002Flocalhost:4002\u002Fgraphql\n","yaml",[1467],{"type":44,"tag":81,"props":1468,"children":1469},{"__ignoreMap":78},[1470,1488,1501,1513,1529,1541,1558,1570,1586,1597],{"type":44,"tag":85,"props":1471,"children":1472},{"class":87,"line":88},[1473,1479,1483],{"type":44,"tag":85,"props":1474,"children":1476},{"style":1475},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1477],{"type":50,"value":1478},"federation_version",{"type":44,"tag":85,"props":1480,"children":1481},{"style":119},[1482],{"type":50,"value":1460},{"type":44,"tag":85,"props":1484,"children":1485},{"style":108},[1486],{"type":50,"value":1487}," =2.9.0\n",{"type":44,"tag":85,"props":1489,"children":1490},{"class":87,"line":98},[1491,1496],{"type":44,"tag":85,"props":1492,"children":1493},{"style":1475},[1494],{"type":50,"value":1495},"subgraphs",{"type":44,"tag":85,"props":1497,"children":1498},{"style":119},[1499],{"type":50,"value":1500},":\n",{"type":44,"tag":85,"props":1502,"children":1503},{"class":87,"line":130},[1504,1509],{"type":44,"tag":85,"props":1505,"children":1506},{"style":1475},[1507],{"type":50,"value":1508},"  products",{"type":44,"tag":85,"props":1510,"children":1511},{"style":119},[1512],{"type":50,"value":1500},{"type":44,"tag":85,"props":1514,"children":1515},{"class":87,"line":140},[1516,1521,1525],{"type":44,"tag":85,"props":1517,"children":1518},{"style":1475},[1519],{"type":50,"value":1520},"    routing_url",{"type":44,"tag":85,"props":1522,"children":1523},{"style":119},[1524],{"type":50,"value":1460},{"type":44,"tag":85,"props":1526,"children":1527},{"style":108},[1528],{"type":50,"value":1435},{"type":44,"tag":85,"props":1530,"children":1531},{"class":87,"line":149},[1532,1537],{"type":44,"tag":85,"props":1533,"children":1534},{"style":1475},[1535],{"type":50,"value":1536},"    schema",{"type":44,"tag":85,"props":1538,"children":1539},{"style":119},[1540],{"type":50,"value":1500},{"type":44,"tag":85,"props":1542,"children":1543},{"class":87,"line":173},[1544,1549,1553],{"type":44,"tag":85,"props":1545,"children":1546},{"style":1475},[1547],{"type":50,"value":1548},"      file",{"type":44,"tag":85,"props":1550,"children":1551},{"style":119},[1552],{"type":50,"value":1460},{"type":44,"tag":85,"props":1554,"children":1555},{"style":108},[1556],{"type":50,"value":1557}," .\u002Fproducts\u002Fschema.graphql\n",{"type":44,"tag":85,"props":1559,"children":1560},{"class":87,"line":181},[1561,1566],{"type":44,"tag":85,"props":1562,"children":1563},{"style":1475},[1564],{"type":50,"value":1565},"  reviews",{"type":44,"tag":85,"props":1567,"children":1568},{"style":119},[1569],{"type":50,"value":1500},{"type":44,"tag":85,"props":1571,"children":1572},{"class":87,"line":190},[1573,1577,1581],{"type":44,"tag":85,"props":1574,"children":1575},{"style":1475},[1576],{"type":50,"value":1520},{"type":44,"tag":85,"props":1578,"children":1579},{"style":119},[1580],{"type":50,"value":1460},{"type":44,"tag":85,"props":1582,"children":1583},{"style":108},[1584],{"type":50,"value":1585}," http:\u002F\u002Flocalhost:4002\u002Fgraphql\n",{"type":44,"tag":85,"props":1587,"children":1588},{"class":87,"line":1222},[1589,1593],{"type":44,"tag":85,"props":1590,"children":1591},{"style":1475},[1592],{"type":50,"value":1536},{"type":44,"tag":85,"props":1594,"children":1595},{"style":119},[1596],{"type":50,"value":1500},{"type":44,"tag":85,"props":1598,"children":1599},{"class":87,"line":1238},[1600,1605,1609],{"type":44,"tag":85,"props":1601,"children":1602},{"style":1475},[1603],{"type":50,"value":1604},"      subgraph_url",{"type":44,"tag":85,"props":1606,"children":1607},{"style":119},[1608],{"type":50,"value":1460},{"type":44,"tag":85,"props":1610,"children":1611},{"style":108},[1612],{"type":50,"value":1585},{"type":44,"tag":53,"props":1614,"children":1615},{},[1616,1621,1623,1628,1630,1636,1638,1644,1646,1652],{"type":44,"tag":81,"props":1617,"children":1619},{"className":1618},[],[1620],{"type":50,"value":1478},{"type":50,"value":1622}," here is the ",{"type":44,"tag":352,"props":1624,"children":1625},{},[1626],{"type":50,"value":1627},"composition version",{"type":50,"value":1629}," — it only needs to be ≥\neach subgraph's ",{"type":44,"tag":81,"props":1631,"children":1633},{"className":1632},[],[1634],{"type":50,"value":1635},"@link",{"type":50,"value":1637}," floor, so subgraphs pinned to a lower version compose\nfine. If a subgraph server throws ",{"type":44,"tag":81,"props":1639,"children":1641},{"className":1640},[],[1642],{"type":50,"value":1643},"UNKNOWN_FEDERATION_LINK_VERSION",{"type":50,"value":1645}," at startup,\nthat's a client-library lag, not a composition problem. See the apollo-federation\nskill's ",{"type":44,"tag":739,"props":1647,"children":1649},{"href":1648},"..\u002Fapollo-federation\u002Freferences\u002Fcomposition.md#federation-versions-floor-vs-composition",[1650],{"type":50,"value":1651},"Federation versions",{"type":50,"value":753},{"type":44,"tag":53,"props":1654,"children":1655},{},[1656],{"type":50,"value":1657},"Compose:",{"type":44,"tag":73,"props":1659,"children":1661},{"className":75,"code":1660,"language":77,"meta":78,"style":78},"rover supergraph compose --config supergraph.yaml > supergraph.graphql\n",[1662],{"type":44,"tag":81,"props":1663,"children":1664},{"__ignoreMap":78},[1665],{"type":44,"tag":85,"props":1666,"children":1667},{"class":87,"line":88},[1668,1672,1677,1682,1687,1692,1697],{"type":44,"tag":85,"props":1669,"children":1670},{"style":102},[1671],{"type":50,"value":4},{"type":44,"tag":85,"props":1673,"children":1674},{"style":108},[1675],{"type":50,"value":1676}," supergraph",{"type":44,"tag":85,"props":1678,"children":1679},{"style":108},[1680],{"type":50,"value":1681}," compose",{"type":44,"tag":85,"props":1683,"children":1684},{"style":108},[1685],{"type":50,"value":1686}," --config",{"type":44,"tag":85,"props":1688,"children":1689},{"style":108},[1690],{"type":50,"value":1691}," supergraph.yaml",{"type":44,"tag":85,"props":1693,"children":1694},{"style":119},[1695],{"type":50,"value":1696}," >",{"type":44,"tag":85,"props":1698,"children":1699},{"style":108},[1700],{"type":50,"value":1701}," supergraph.graphql\n",{"type":44,"tag":66,"props":1703,"children":1705},{"id":1704},"fetch-composed-supergraph",[1706],{"type":50,"value":1707},"Fetch Composed Supergraph",{"type":44,"tag":73,"props":1709,"children":1711},{"className":75,"code":1710,"language":77,"meta":78,"style":78},"rover supergraph fetch my-graph@production\n",[1712],{"type":44,"tag":81,"props":1713,"children":1714},{"__ignoreMap":78},[1715],{"type":44,"tag":85,"props":1716,"children":1717},{"class":87,"line":88},[1718,1722,1726,1730],{"type":44,"tag":85,"props":1719,"children":1720},{"style":102},[1721],{"type":50,"value":4},{"type":44,"tag":85,"props":1723,"children":1724},{"style":108},[1725],{"type":50,"value":1676},{"type":44,"tag":85,"props":1727,"children":1728},{"style":108},[1729],{"type":50,"value":396},{"type":44,"tag":85,"props":1731,"children":1732},{"style":108},[1733],{"type":50,"value":1734}," my-graph@production\n",{"type":44,"tag":1736,"props":1737,"children":1738},"blockquote",{},[1739],{"type":44,"tag":53,"props":1740,"children":1741},{},[1742,1744,1749,1751,1756,1757,1762,1764,1769,1771,1776,1778,1784],{"type":50,"value":1743},"This returns the ",{"type":44,"tag":352,"props":1745,"children":1746},{},[1747],{"type":50,"value":1748},"supergraph SDL",{"type":50,"value":1750}," (federation directives + ",{"type":44,"tag":81,"props":1752,"children":1754},{"className":1753},[],[1755],{"type":50,"value":670},{"type":50,"value":672},{"type":44,"tag":81,"props":1758,"children":1760},{"className":1759},[],[1761],{"type":50,"value":678},{"type":50,"value":1763}," internals) — use it for composition\u002Frouter work. To ",{"type":44,"tag":352,"props":1765,"children":1766},{},[1767],{"type":50,"value":1768},"explore what you can query",{"type":50,"value":1770}," or write an operation, use ",{"type":44,"tag":81,"props":1772,"children":1774},{"className":1773},[],[1775],{"type":50,"value":647},{"type":50,"value":1777}," (the API schema) instead — see ",{"type":44,"tag":739,"props":1779,"children":1781},{"href":1780},"#explore-a-graphs-schema-start-here-for-schema-questions",[1782],{"type":50,"value":1783},"Explore a Graph's Schema",{"type":50,"value":753},{"type":44,"tag":59,"props":1786,"children":1788},{"id":1787},"local-development-with-rover-dev",[1789,1791],{"type":50,"value":1790},"Local Development with ",{"type":44,"tag":81,"props":1792,"children":1794},{"className":1793},[],[1795],{"type":50,"value":892},{"type":44,"tag":53,"props":1797,"children":1798},{},[1799],{"type":50,"value":1800},"Start a local Router with automatic schema composition:",{"type":44,"tag":73,"props":1802,"children":1804},{"className":75,"code":1803,"language":77,"meta":78,"style":78},"# 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",[1805],{"type":44,"tag":81,"props":1806,"children":1807},{"__ignoreMap":78},[1808,1816,1838,1845,1853],{"type":44,"tag":85,"props":1809,"children":1810},{"class":87,"line":88},[1811],{"type":44,"tag":85,"props":1812,"children":1813},{"style":92},[1814],{"type":50,"value":1815},"# Start with supergraph config\n",{"type":44,"tag":85,"props":1817,"children":1818},{"class":87,"line":98},[1819,1823,1828,1833],{"type":44,"tag":85,"props":1820,"children":1821},{"style":102},[1822],{"type":50,"value":4},{"type":44,"tag":85,"props":1824,"children":1825},{"style":108},[1826],{"type":50,"value":1827}," dev",{"type":44,"tag":85,"props":1829,"children":1830},{"style":108},[1831],{"type":50,"value":1832}," --supergraph-config",{"type":44,"tag":85,"props":1834,"children":1835},{"style":108},[1836],{"type":50,"value":1837}," supergraph.yaml\n",{"type":44,"tag":85,"props":1839,"children":1840},{"class":87,"line":130},[1841],{"type":44,"tag":85,"props":1842,"children":1843},{"emptyLinePlaceholder":134},[1844],{"type":50,"value":137},{"type":44,"tag":85,"props":1846,"children":1847},{"class":87,"line":140},[1848],{"type":44,"tag":85,"props":1849,"children":1850},{"style":92},[1851],{"type":50,"value":1852},"# Start with GraphOS variant as base\n",{"type":44,"tag":85,"props":1854,"children":1855},{"class":87,"line":149},[1856,1860,1864,1869,1874,1878],{"type":44,"tag":85,"props":1857,"children":1858},{"style":102},[1859],{"type":50,"value":4},{"type":44,"tag":85,"props":1861,"children":1862},{"style":108},[1863],{"type":50,"value":1827},{"type":44,"tag":85,"props":1865,"children":1866},{"style":108},[1867],{"type":50,"value":1868}," --graph-ref",{"type":44,"tag":85,"props":1870,"children":1871},{"style":108},[1872],{"type":50,"value":1873}," my-graph@staging",{"type":44,"tag":85,"props":1875,"children":1876},{"style":108},[1877],{"type":50,"value":1832},{"type":44,"tag":85,"props":1879,"children":1880},{"style":108},[1881],{"type":50,"value":1882}," local.yaml\n",{"type":44,"tag":66,"props":1884,"children":1886},{"id":1885},"with-mcp-integration",[1887],{"type":50,"value":1888},"With MCP Integration",{"type":44,"tag":73,"props":1890,"children":1892},{"className":75,"code":1891,"language":77,"meta":78,"style":78},"# Start with MCP server enabled\nrover dev --supergraph-config supergraph.yaml --mcp\n",[1893],{"type":44,"tag":81,"props":1894,"children":1895},{"__ignoreMap":78},[1896,1904],{"type":44,"tag":85,"props":1897,"children":1898},{"class":87,"line":88},[1899],{"type":44,"tag":85,"props":1900,"children":1901},{"style":92},[1902],{"type":50,"value":1903},"# Start with MCP server enabled\n",{"type":44,"tag":85,"props":1905,"children":1906},{"class":87,"line":98},[1907,1911,1915,1919,1923],{"type":44,"tag":85,"props":1908,"children":1909},{"style":102},[1910],{"type":50,"value":4},{"type":44,"tag":85,"props":1912,"children":1913},{"style":108},[1914],{"type":50,"value":1827},{"type":44,"tag":85,"props":1916,"children":1917},{"style":108},[1918],{"type":50,"value":1832},{"type":44,"tag":85,"props":1920,"children":1921},{"style":108},[1922],{"type":50,"value":1691},{"type":44,"tag":85,"props":1924,"children":1925},{"style":108},[1926],{"type":50,"value":1927}," --mcp\n",{"type":44,"tag":59,"props":1929,"children":1931},{"id":1930},"schema-exploration-for-agents",[1932],{"type":50,"value":1933},"Schema Exploration (for Agents)",{"type":44,"tag":53,"props":1935,"children":1936},{},[1937,1942,1943,1948,1950,1955],{"type":44,"tag":81,"props":1938,"children":1940},{"className":1939},[],[1941],{"type":50,"value":936},{"type":50,"value":746},{"type":44,"tag":81,"props":1944,"children":1946},{"className":1945},[],[1947],{"type":50,"value":970},{"type":50,"value":1949}," let an agent explore a schema ",{"type":44,"tag":352,"props":1951,"children":1952},{},[1953],{"type":50,"value":1954},"without loading the full SDL into context",{"type":50,"value":1956}," — that is the entire point of these commands.",{"type":44,"tag":1736,"props":1958,"children":1959},{},[1960,2007,2027],{"type":44,"tag":53,"props":1961,"children":1962},{},[1963,1965,1970,1972,1978,1980,1986,1988,2005],{"type":50,"value":1964},"⚠️ ",{"type":44,"tag":352,"props":1966,"children":1967},{},[1968],{"type":50,"value":1969},"Never read the raw SDL into context.",{"type":50,"value":1971}," Running ",{"type":44,"tag":81,"props":1973,"children":1975},{"className":1974},[],[1976],{"type":50,"value":1977},"rover graph fetch \u003Cref>",{"type":50,"value":1979}," (or ",{"type":44,"tag":81,"props":1981,"children":1983},{"className":1982},[],[1984],{"type":50,"value":1985},"rover graph introspect \u003Curl>",{"type":50,"value":1987},") on its own prints the entire schema — hundreds to tens of thousands of lines — straight into your context, which defeats the purpose of these commands. ",{"type":44,"tag":352,"props":1989,"children":1990},{},[1991,1993,1998,1999],{"type":50,"value":1992},"Always pipe fetch output into ",{"type":44,"tag":81,"props":1994,"children":1996},{"className":1995},[],[1997],{"type":50,"value":936},{"type":50,"value":672},{"type":44,"tag":81,"props":2000,"children":2002},{"className":2001},[],[2003],{"type":50,"value":2004},"search",{"type":50,"value":2006},": the SDL flows through stdin and only the compact overview\u002Fresults reach you. (Fetching to a file is fine when the user actually wants the SDL.)",{"type":44,"tag":53,"props":2008,"children":2009},{},[2010,2012,2017,2019,2025],{"type":50,"value":2011},"These commands also take SDL on ",{"type":44,"tag":352,"props":2013,"children":2014},{},[2015],{"type":50,"value":2016},"stdin or a file, NOT a graph ref",{"type":50,"value":2018}," — you can't pass ",{"type":44,"tag":81,"props":2020,"children":2022},{"className":2021},[],[2023],{"type":50,"value":2024},"graph@variant",{"type":50,"value":2026}," to them. Fetch first, then pipe:",{"type":44,"tag":73,"props":2028,"children":2030},{"className":75,"code":2029,"language":77,"meta":78,"style":78},"❌ rover schema describe my-graph@current             # error: looks for a file named that\n❌ rover graph fetch my-graph@current                 # dumps the full SDL into your context\n✅ rover graph fetch my-graph@current | rover schema describe -\n",[2031],{"type":44,"tag":81,"props":2032,"children":2033},{"__ignoreMap":78},[2034,2064,2092],{"type":44,"tag":85,"props":2035,"children":2036},{"class":87,"line":88},[2037,2042,2046,2050,2054,2059],{"type":44,"tag":85,"props":2038,"children":2039},{"style":102},[2040],{"type":50,"value":2041},"❌",{"type":44,"tag":85,"props":2043,"children":2044},{"style":108},[2045],{"type":50,"value":425},{"type":44,"tag":85,"props":2047,"children":2048},{"style":108},[2049],{"type":50,"value":430},{"type":44,"tag":85,"props":2051,"children":2052},{"style":108},[2053],{"type":50,"value":435},{"type":44,"tag":85,"props":2055,"children":2056},{"style":108},[2057],{"type":50,"value":2058}," my-graph@current",{"type":44,"tag":85,"props":2060,"children":2061},{"style":92},[2062],{"type":50,"value":2063},"             # error: looks for a file named that\n",{"type":44,"tag":85,"props":2065,"children":2066},{"class":87,"line":98},[2067,2071,2075,2079,2083,2087],{"type":44,"tag":85,"props":2068,"children":2069},{"style":102},[2070],{"type":50,"value":2041},{"type":44,"tag":85,"props":2072,"children":2073},{"style":108},[2074],{"type":50,"value":425},{"type":44,"tag":85,"props":2076,"children":2077},{"style":108},[2078],{"type":50,"value":391},{"type":44,"tag":85,"props":2080,"children":2081},{"style":108},[2082],{"type":50,"value":396},{"type":44,"tag":85,"props":2084,"children":2085},{"style":108},[2086],{"type":50,"value":2058},{"type":44,"tag":85,"props":2088,"children":2089},{"style":92},[2090],{"type":50,"value":2091},"                 # dumps the full SDL into your context\n",{"type":44,"tag":85,"props":2093,"children":2094},{"class":87,"line":130},[2095,2100,2104,2108,2112,2116,2120,2124,2128,2132],{"type":44,"tag":85,"props":2096,"children":2097},{"style":102},[2098],{"type":50,"value":2099},"✅",{"type":44,"tag":85,"props":2101,"children":2102},{"style":108},[2103],{"type":50,"value":425},{"type":44,"tag":85,"props":2105,"children":2106},{"style":108},[2107],{"type":50,"value":391},{"type":44,"tag":85,"props":2109,"children":2110},{"style":108},[2111],{"type":50,"value":396},{"type":44,"tag":85,"props":2113,"children":2114},{"style":108},[2115],{"type":50,"value":2058},{"type":44,"tag":85,"props":2117,"children":2118},{"style":119},[2119],{"type":50,"value":122},{"type":44,"tag":85,"props":2121,"children":2122},{"style":102},[2123],{"type":50,"value":425},{"type":44,"tag":85,"props":2125,"children":2126},{"style":108},[2127],{"type":50,"value":430},{"type":44,"tag":85,"props":2129,"children":2130},{"style":108},[2131],{"type":50,"value":435},{"type":44,"tag":85,"props":2133,"children":2134},{"style":108},[2135],{"type":50,"value":440},{"type":44,"tag":53,"props":2137,"children":2138},{},[2139,2141,2152,2154,2159,2161,2166,2167,2172],{"type":50,"value":2140},"To explore a graph in GraphOS, fetch its schema and pipe it in. ",{"type":44,"tag":352,"props":2142,"children":2143},{},[2144,2145,2150],{"type":50,"value":638},{"type":44,"tag":81,"props":2146,"children":2148},{"className":2147},[],[2149],{"type":50,"value":647},{"type":50,"value":2151}," (the API schema) for \"what can I query?\" exploration",{"type":50,"value":2153}," — it omits federation internals. Reach for ",{"type":44,"tag":81,"props":2155,"children":2157},{"className":2156},[],[2158],{"type":50,"value":662},{"type":50,"value":2160}," only when you need composition details (",{"type":44,"tag":81,"props":2162,"children":2164},{"className":2163},[],[2165],{"type":50,"value":670},{"type":50,"value":672},{"type":44,"tag":81,"props":2168,"children":2170},{"className":2169},[],[2171],{"type":50,"value":678},{"type":50,"value":2173}," types, subgraph structure):",{"type":44,"tag":73,"props":2175,"children":2177},{"className":75,"code":2176,"language":77,"meta":78,"style":78},"# Overview of a GraphOS graph\nrover graph fetch my-graph@current | rover schema describe -\n\n# Find fields by keyword (results include paths from root operations)\nrover graph fetch my-graph@current | rover schema search - \"playback\"\n\n# Zoom into a coordinate, expanding referenced types one level\nrover graph fetch my-graph@current | rover schema describe - --coord \u003CType.field> --depth 1\n",[2178],{"type":44,"tag":81,"props":2179,"children":2180},{"__ignoreMap":78},[2181,2189,2228,2235,2243,2295,2302,2310],{"type":44,"tag":85,"props":2182,"children":2183},{"class":87,"line":88},[2184],{"type":44,"tag":85,"props":2185,"children":2186},{"style":92},[2187],{"type":50,"value":2188},"# Overview of a GraphOS graph\n",{"type":44,"tag":85,"props":2190,"children":2191},{"class":87,"line":98},[2192,2196,2200,2204,2208,2212,2216,2220,2224],{"type":44,"tag":85,"props":2193,"children":2194},{"style":102},[2195],{"type":50,"value":4},{"type":44,"tag":85,"props":2197,"children":2198},{"style":108},[2199],{"type":50,"value":391},{"type":44,"tag":85,"props":2201,"children":2202},{"style":108},[2203],{"type":50,"value":396},{"type":44,"tag":85,"props":2205,"children":2206},{"style":108},[2207],{"type":50,"value":2058},{"type":44,"tag":85,"props":2209,"children":2210},{"style":119},[2211],{"type":50,"value":122},{"type":44,"tag":85,"props":2213,"children":2214},{"style":102},[2215],{"type":50,"value":425},{"type":44,"tag":85,"props":2217,"children":2218},{"style":108},[2219],{"type":50,"value":430},{"type":44,"tag":85,"props":2221,"children":2222},{"style":108},[2223],{"type":50,"value":435},{"type":44,"tag":85,"props":2225,"children":2226},{"style":108},[2227],{"type":50,"value":440},{"type":44,"tag":85,"props":2229,"children":2230},{"class":87,"line":130},[2231],{"type":44,"tag":85,"props":2232,"children":2233},{"emptyLinePlaceholder":134},[2234],{"type":50,"value":137},{"type":44,"tag":85,"props":2236,"children":2237},{"class":87,"line":140},[2238],{"type":44,"tag":85,"props":2239,"children":2240},{"style":92},[2241],{"type":50,"value":2242},"# Find fields by keyword (results include paths from root operations)\n",{"type":44,"tag":85,"props":2244,"children":2245},{"class":87,"line":149},[2246,2250,2254,2258,2262,2266,2270,2274,2278,2282,2286,2291],{"type":44,"tag":85,"props":2247,"children":2248},{"style":102},[2249],{"type":50,"value":4},{"type":44,"tag":85,"props":2251,"children":2252},{"style":108},[2253],{"type":50,"value":391},{"type":44,"tag":85,"props":2255,"children":2256},{"style":108},[2257],{"type":50,"value":396},{"type":44,"tag":85,"props":2259,"children":2260},{"style":108},[2261],{"type":50,"value":2058},{"type":44,"tag":85,"props":2263,"children":2264},{"style":119},[2265],{"type":50,"value":122},{"type":44,"tag":85,"props":2267,"children":2268},{"style":102},[2269],{"type":50,"value":425},{"type":44,"tag":85,"props":2271,"children":2272},{"style":108},[2273],{"type":50,"value":430},{"type":44,"tag":85,"props":2275,"children":2276},{"style":108},[2277],{"type":50,"value":503},{"type":44,"tag":85,"props":2279,"children":2280},{"style":108},[2281],{"type":50,"value":508},{"type":44,"tag":85,"props":2283,"children":2284},{"style":119},[2285],{"type":50,"value":513},{"type":44,"tag":85,"props":2287,"children":2288},{"style":108},[2289],{"type":50,"value":2290},"playback",{"type":44,"tag":85,"props":2292,"children":2293},{"style":119},[2294],{"type":50,"value":523},{"type":44,"tag":85,"props":2296,"children":2297},{"class":87,"line":173},[2298],{"type":44,"tag":85,"props":2299,"children":2300},{"emptyLinePlaceholder":134},[2301],{"type":50,"value":137},{"type":44,"tag":85,"props":2303,"children":2304},{"class":87,"line":181},[2305],{"type":44,"tag":85,"props":2306,"children":2307},{"style":92},[2308],{"type":50,"value":2309},"# Zoom into a coordinate, expanding referenced types one level\n",{"type":44,"tag":85,"props":2311,"children":2312},{"class":87,"line":190},[2313,2317,2321,2325,2329,2333,2337,2341,2345,2349,2353,2357,2361,2365,2369,2373],{"type":44,"tag":85,"props":2314,"children":2315},{"style":102},[2316],{"type":50,"value":4},{"type":44,"tag":85,"props":2318,"children":2319},{"style":108},[2320],{"type":50,"value":391},{"type":44,"tag":85,"props":2322,"children":2323},{"style":108},[2324],{"type":50,"value":396},{"type":44,"tag":85,"props":2326,"children":2327},{"style":108},[2328],{"type":50,"value":2058},{"type":44,"tag":85,"props":2330,"children":2331},{"style":119},[2332],{"type":50,"value":122},{"type":44,"tag":85,"props":2334,"children":2335},{"style":102},[2336],{"type":50,"value":425},{"type":44,"tag":85,"props":2338,"children":2339},{"style":108},[2340],{"type":50,"value":430},{"type":44,"tag":85,"props":2342,"children":2343},{"style":108},[2344],{"type":50,"value":435},{"type":44,"tag":85,"props":2346,"children":2347},{"style":108},[2348],{"type":50,"value":508},{"type":44,"tag":85,"props":2350,"children":2351},{"style":108},[2352],{"type":50,"value":594},{"type":44,"tag":85,"props":2354,"children":2355},{"style":119},[2356],{"type":50,"value":401},{"type":44,"tag":85,"props":2358,"children":2359},{"style":108},[2360],{"type":50,"value":603},{"type":44,"tag":85,"props":2362,"children":2363},{"style":285},[2364],{"type":50,"value":608},{"type":44,"tag":85,"props":2366,"children":2367},{"style":119},[2368],{"type":50,"value":416},{"type":44,"tag":85,"props":2370,"children":2371},{"style":108},[2372],{"type":50,"value":617},{"type":44,"tag":85,"props":2374,"children":2375},{"style":620},[2376],{"type":50,"value":623},{"type":44,"tag":53,"props":2378,"children":2379},{},[2380,2385,2386,2392,2394,2400,2402,2408,2410,2416,2418,2424],{"type":44,"tag":352,"props":2381,"children":2382},{},[2383],{"type":50,"value":2384},"Coordinate forms:",{"type":50,"value":656},{"type":44,"tag":81,"props":2387,"children":2389},{"className":2388},[],[2390],{"type":50,"value":2391},"--coord",{"type":50,"value":2393}," accepts a type (",{"type":44,"tag":81,"props":2395,"children":2397},{"className":2396},[],[2398],{"type":50,"value":2399},"User",{"type":50,"value":2401},"), a field (",{"type":44,"tag":81,"props":2403,"children":2405},{"className":2404},[],[2406],{"type":50,"value":2407},"User.posts",{"type":50,"value":2409},"), a field argument (",{"type":44,"tag":81,"props":2411,"children":2413},{"className":2412},[],[2414],{"type":50,"value":2415},"Type.field(arg:)",{"type":50,"value":2417},"), or a directive (",{"type":44,"tag":81,"props":2419,"children":2421},{"className":2420},[],[2422],{"type":50,"value":2423},"@deprecated",{"type":50,"value":2425},") — omit it for the overview.",{"type":44,"tag":53,"props":2427,"children":2428},{},[2429,2446,2448,2453,2455,2460,2462,2467,2469,2474,2476,2481],{"type":44,"tag":352,"props":2430,"children":2431},{},[2432,2437,2439,2445],{"type":44,"tag":81,"props":2433,"children":2435},{"className":2434},[],[2436],{"type":50,"value":2004},{"type":50,"value":2438}," vs ",{"type":44,"tag":81,"props":2440,"children":2442},{"className":2441},[],[2443],{"type":50,"value":2444},"describe",{"type":50,"value":1460},{"type":50,"value":2447}," reach for ",{"type":44,"tag":81,"props":2449,"children":2451},{"className":2450},[],[2452],{"type":50,"value":970},{"type":50,"value":2454}," first when matching a concept or keyword and you don't yet know the field name — it finds ",{"type":44,"tag":352,"props":2456,"children":2457},{},[2458],{"type":50,"value":2459},"nested",{"type":50,"value":2461}," fields and shows the path from a root operation. The ",{"type":44,"tag":81,"props":2463,"children":2465},{"className":2464},[],[2466],{"type":50,"value":2444},{"type":50,"value":2468}," overview lists only root fields, so ",{"type":44,"tag":81,"props":2470,"children":2472},{"className":2471},[],[2473],{"type":50,"value":2004},{"type":50,"value":2475}," is how you locate fields buried deeper. Use ",{"type":44,"tag":81,"props":2477,"children":2479},{"className":2478},[],[2480],{"type":50,"value":2444},{"type":50,"value":2482}," for the overview or once you know the type\u002Ffield coordinate.",{"type":44,"tag":53,"props":2484,"children":2485},{},[2486,2488,2492],{"type":50,"value":2487},"This enables a closed-loop workflow — search → describe → write a query — with no MCP server setup. See ",{"type":44,"tag":739,"props":2489,"children":2490},{"href":749},[2491],{"type":50,"value":744},{"type":50,"value":2493}," for the full command reference, ranking rules, and the save-once pattern for large schemas.",{"type":44,"tag":53,"props":2495,"children":2496},{},[2497,2502,2504,2508],{"type":44,"tag":352,"props":2498,"children":2499},{},[2500],{"type":50,"value":2501},"Running the generated operation:",{"type":50,"value":2503}," Rover does ",{"type":44,"tag":352,"props":2505,"children":2506},{},[2507],{"type":50,"value":654},{"type":50,"value":2509}," execute queries — it only manages and inspects schemas. To actually run a generated query you need the graph's endpoint:",{"type":44,"tag":630,"props":2511,"children":2512},{},[2513,2543,2568],{"type":44,"tag":634,"props":2514,"children":2515},{},[2516,2521,2522,2528,2530,2535,2537,2542],{"type":44,"tag":352,"props":2517,"children":2518},{},[2519],{"type":50,"value":2520},"Single-subgraph graph:",{"type":50,"value":656},{"type":44,"tag":81,"props":2523,"children":2525},{"className":2524},[],[2526],{"type":50,"value":2527},"rover subgraph list \u003Cgraph@variant>",{"type":50,"value":2529}," prints the ",{"type":44,"tag":352,"props":2531,"children":2532},{},[2533],{"type":50,"value":2534},"Routing Url",{"type":50,"value":2536}," — send the query there with ",{"type":44,"tag":81,"props":2538,"children":2540},{"className":2539},[],[2541],{"type":50,"value":105},{"type":50,"value":753},{"type":44,"tag":634,"props":2544,"children":2545},{},[2546,2551,2553,2558,2560,2566],{"type":44,"tag":352,"props":2547,"children":2548},{},[2549],{"type":50,"value":2550},"Multi-subgraph \u002F federated:",{"type":50,"value":2552}," the client endpoint is the ",{"type":44,"tag":352,"props":2554,"children":2555},{},[2556],{"type":50,"value":2557},"router",{"type":50,"value":2559}," URL (find it in GraphOS Studio; for a GraphOS cloud router, ",{"type":44,"tag":81,"props":2561,"children":2563},{"className":2562},[],[2564],{"type":50,"value":2565},"rover cloud config fetch \u003Cgraph@variant>",{"type":50,"value":2567},"), not the per-subgraph routing URLs.",{"type":44,"tag":634,"props":2569,"children":2570},{},[2571,2573,2579],{"type":50,"value":2572},"Don't try to discover the endpoint via the GraphOS Platform API — Rover keeps the API key in its profile\u002Fkeychain, not ",{"type":44,"tag":81,"props":2574,"children":2576},{"className":2575},[],[2577],{"type":50,"value":2578},"$APOLLO_KEY",{"type":50,"value":2580},", so ad-hoc API calls will come back unauthenticated.",{"type":44,"tag":59,"props":2582,"children":2584},{"id":2583},"reference-files",[2585],{"type":50,"value":2586},"Reference Files",{"type":44,"tag":53,"props":2588,"children":2589},{},[2590],{"type":50,"value":2591},"Detailed documentation for specific topics:",{"type":44,"tag":630,"props":2593,"children":2594},{},[2595,2606,2617,2628,2639,2648],{"type":44,"tag":634,"props":2596,"children":2597},{},[2598,2604],{"type":44,"tag":739,"props":2599,"children":2601},{"href":2600},"references\u002Fsubgraphs.md",[2602],{"type":50,"value":2603},"Subgraphs",{"type":50,"value":2605}," - fetch, publish, check, lint, introspect, delete",{"type":44,"tag":634,"props":2607,"children":2608},{},[2609,2615],{"type":44,"tag":739,"props":2610,"children":2612},{"href":2611},"references\u002Fgraphs.md",[2613],{"type":50,"value":2614},"Graphs",{"type":50,"value":2616}," - monograph commands (non-federated)",{"type":44,"tag":634,"props":2618,"children":2619},{},[2620,2626],{"type":44,"tag":739,"props":2621,"children":2623},{"href":2622},"references\u002Fsupergraphs.md",[2624],{"type":50,"value":2625},"Supergraphs",{"type":50,"value":2627}," - compose, fetch, config format",{"type":44,"tag":634,"props":2629,"children":2630},{},[2631,2637],{"type":44,"tag":739,"props":2632,"children":2634},{"href":2633},"references\u002Fdev.md",[2635],{"type":50,"value":2636},"Dev",{"type":50,"value":2638}," - rover dev for local development",{"type":44,"tag":634,"props":2640,"children":2641},{},[2642,2646],{"type":44,"tag":739,"props":2643,"children":2644},{"href":749},[2645],{"type":50,"value":744},{"type":50,"value":2647}," - describe, search, agent schema discovery workflows",{"type":44,"tag":634,"props":2649,"children":2650},{},[2651,2657],{"type":44,"tag":739,"props":2652,"children":2654},{"href":2653},"references\u002Fconfiguration.md",[2655],{"type":50,"value":2656},"Configuration",{"type":50,"value":2658}," - install, auth, env vars, profiles",{"type":44,"tag":59,"props":2660,"children":2662},{"id":2661},"common-patterns",[2663],{"type":50,"value":2664},"Common Patterns",{"type":44,"tag":66,"props":2666,"children":2668},{"id":2667},"cicd-pipeline",[2669],{"type":50,"value":2670},"CI\u002FCD Pipeline",{"type":44,"tag":73,"props":2672,"children":2674},{"className":75,"code":2673,"language":77,"meta":78,"style":78},"# 1. Check schema changes\nrover subgraph check $APOLLO_GRAPH_REF \\\n  --name $SUBGRAPH_NAME \\\n  --schema .\u002Fschema.graphql\n\n# 2. If check passes, publish\nrover subgraph publish $APOLLO_GRAPH_REF \\\n  --name $SUBGRAPH_NAME \\\n  --schema .\u002Fschema.graphql \\\n  --routing-url $ROUTING_URL\n",[2675],{"type":44,"tag":81,"props":2676,"children":2677},{"__ignoreMap":78},[2678,2686,2706,2718,2729,2736,2744,2763,2774,2789],{"type":44,"tag":85,"props":2679,"children":2680},{"class":87,"line":88},[2681],{"type":44,"tag":85,"props":2682,"children":2683},{"style":92},[2684],{"type":50,"value":2685},"# 1. Check schema changes\n",{"type":44,"tag":85,"props":2687,"children":2688},{"class":87,"line":98},[2689,2693,2697,2701],{"type":44,"tag":85,"props":2690,"children":2691},{"style":102},[2692],{"type":50,"value":4},{"type":44,"tag":85,"props":2694,"children":2695},{"style":108},[2696],{"type":50,"value":1119},{"type":44,"tag":85,"props":2698,"children":2699},{"style":108},[2700],{"type":50,"value":1314},{"type":44,"tag":85,"props":2702,"children":2703},{"style":285},[2704],{"type":50,"value":2705}," $APOLLO_GRAPH_REF \\\n",{"type":44,"tag":85,"props":2707,"children":2708},{"class":87,"line":130},[2709,2713],{"type":44,"tag":85,"props":2710,"children":2711},{"style":108},[2712],{"type":50,"value":1142},{"type":44,"tag":85,"props":2714,"children":2715},{"style":285},[2716],{"type":50,"value":2717}," $SUBGRAPH_NAME \\\n",{"type":44,"tag":85,"props":2719,"children":2720},{"class":87,"line":140},[2721,2725],{"type":44,"tag":85,"props":2722,"children":2723},{"style":108},[2724],{"type":50,"value":1159},{"type":44,"tag":85,"props":2726,"children":2727},{"style":108},[2728],{"type":50,"value":1349},{"type":44,"tag":85,"props":2730,"children":2731},{"class":87,"line":149},[2732],{"type":44,"tag":85,"props":2733,"children":2734},{"emptyLinePlaceholder":134},[2735],{"type":50,"value":137},{"type":44,"tag":85,"props":2737,"children":2738},{"class":87,"line":173},[2739],{"type":44,"tag":85,"props":2740,"children":2741},{"style":92},[2742],{"type":50,"value":2743},"# 2. If check passes, publish\n",{"type":44,"tag":85,"props":2745,"children":2746},{"class":87,"line":181},[2747,2751,2755,2759],{"type":44,"tag":85,"props":2748,"children":2749},{"style":102},[2750],{"type":50,"value":4},{"type":44,"tag":85,"props":2752,"children":2753},{"style":108},[2754],{"type":50,"value":1119},{"type":44,"tag":85,"props":2756,"children":2757},{"style":108},[2758],{"type":50,"value":1124},{"type":44,"tag":85,"props":2760,"children":2761},{"style":285},[2762],{"type":50,"value":2705},{"type":44,"tag":85,"props":2764,"children":2765},{"class":87,"line":190},[2766,2770],{"type":44,"tag":85,"props":2767,"children":2768},{"style":108},[2769],{"type":50,"value":1142},{"type":44,"tag":85,"props":2771,"children":2772},{"style":285},[2773],{"type":50,"value":2717},{"type":44,"tag":85,"props":2775,"children":2776},{"class":87,"line":1222},[2777,2781,2785],{"type":44,"tag":85,"props":2778,"children":2779},{"style":108},[2780],{"type":50,"value":1159},{"type":44,"tag":85,"props":2782,"children":2783},{"style":108},[2784],{"type":50,"value":1164},{"type":44,"tag":85,"props":2786,"children":2787},{"style":285},[2788],{"type":50,"value":1134},{"type":44,"tag":85,"props":2790,"children":2791},{"class":87,"line":1238},[2792,2796],{"type":44,"tag":85,"props":2793,"children":2794},{"style":108},[2795],{"type":50,"value":1176},{"type":44,"tag":85,"props":2797,"children":2798},{"style":285},[2799],{"type":50,"value":2800}," $ROUTING_URL\n",{"type":44,"tag":66,"props":2802,"children":2804},{"id":2803},"schema-linting",[2805],{"type":50,"value":2806},"Schema Linting",{"type":44,"tag":73,"props":2808,"children":2810},{"className":75,"code":2809,"language":77,"meta":78,"style":78},"# Lint against GraphOS rules\nrover subgraph lint --name products .\u002Fschema.graphql\n\n# Lint monograph\nrover graph lint my-graph@production .\u002Fschema.graphql\n",[2811],{"type":44,"tag":81,"props":2812,"children":2813},{"__ignoreMap":78},[2814,2822,2850,2857,2865],{"type":44,"tag":85,"props":2815,"children":2816},{"class":87,"line":88},[2817],{"type":44,"tag":85,"props":2818,"children":2819},{"style":92},[2820],{"type":50,"value":2821},"# Lint against GraphOS rules\n",{"type":44,"tag":85,"props":2823,"children":2824},{"class":87,"line":98},[2825,2829,2833,2838,2842,2846],{"type":44,"tag":85,"props":2826,"children":2827},{"style":102},[2828],{"type":50,"value":4},{"type":44,"tag":85,"props":2830,"children":2831},{"style":108},[2832],{"type":50,"value":1119},{"type":44,"tag":85,"props":2834,"children":2835},{"style":108},[2836],{"type":50,"value":2837}," lint",{"type":44,"tag":85,"props":2839,"children":2840},{"style":108},[2841],{"type":50,"value":1394},{"type":44,"tag":85,"props":2843,"children":2844},{"style":108},[2845],{"type":50,"value":1147},{"type":44,"tag":85,"props":2847,"children":2848},{"style":108},[2849],{"type":50,"value":1349},{"type":44,"tag":85,"props":2851,"children":2852},{"class":87,"line":130},[2853],{"type":44,"tag":85,"props":2854,"children":2855},{"emptyLinePlaceholder":134},[2856],{"type":50,"value":137},{"type":44,"tag":85,"props":2858,"children":2859},{"class":87,"line":140},[2860],{"type":44,"tag":85,"props":2861,"children":2862},{"style":92},[2863],{"type":50,"value":2864},"# Lint monograph\n",{"type":44,"tag":85,"props":2866,"children":2867},{"class":87,"line":149},[2868,2872,2876,2880,2884],{"type":44,"tag":85,"props":2869,"children":2870},{"style":102},[2871],{"type":50,"value":4},{"type":44,"tag":85,"props":2873,"children":2874},{"style":108},[2875],{"type":50,"value":391},{"type":44,"tag":85,"props":2877,"children":2878},{"style":108},[2879],{"type":50,"value":2837},{"type":44,"tag":85,"props":2881,"children":2882},{"style":108},[2883],{"type":50,"value":1129},{"type":44,"tag":85,"props":2885,"children":2886},{"style":108},[2887],{"type":50,"value":1349},{"type":44,"tag":66,"props":2889,"children":2891},{"id":2890},"output-formats",[2892],{"type":50,"value":2893},"Output Formats",{"type":44,"tag":73,"props":2895,"children":2897},{"className":75,"code":2896,"language":77,"meta":78,"style":78},"# 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",[2898],{"type":44,"tag":81,"props":2899,"children":2900},{"__ignoreMap":78},[2901,2909,2946,2953,2961],{"type":44,"tag":85,"props":2902,"children":2903},{"class":87,"line":88},[2904],{"type":44,"tag":85,"props":2905,"children":2906},{"style":92},[2907],{"type":50,"value":2908},"# JSON output for scripting\n",{"type":44,"tag":85,"props":2910,"children":2911},{"class":87,"line":98},[2912,2916,2920,2924,2928,2932,2936,2941],{"type":44,"tag":85,"props":2913,"children":2914},{"style":102},[2915],{"type":50,"value":4},{"type":44,"tag":85,"props":2917,"children":2918},{"style":108},[2919],{"type":50,"value":1119},{"type":44,"tag":85,"props":2921,"children":2922},{"style":108},[2923],{"type":50,"value":396},{"type":44,"tag":85,"props":2925,"children":2926},{"style":108},[2927],{"type":50,"value":1129},{"type":44,"tag":85,"props":2929,"children":2930},{"style":108},[2931],{"type":50,"value":1394},{"type":44,"tag":85,"props":2933,"children":2934},{"style":108},[2935],{"type":50,"value":1147},{"type":44,"tag":85,"props":2937,"children":2938},{"style":108},[2939],{"type":50,"value":2940}," --format",{"type":44,"tag":85,"props":2942,"children":2943},{"style":108},[2944],{"type":50,"value":2945}," json\n",{"type":44,"tag":85,"props":2947,"children":2948},{"class":87,"line":130},[2949],{"type":44,"tag":85,"props":2950,"children":2951},{"emptyLinePlaceholder":134},[2952],{"type":50,"value":137},{"type":44,"tag":85,"props":2954,"children":2955},{"class":87,"line":140},[2956],{"type":44,"tag":85,"props":2957,"children":2958},{"style":92},[2959],{"type":50,"value":2960},"# Plain output (default)\n",{"type":44,"tag":85,"props":2962,"children":2963},{"class":87,"line":149},[2964,2968,2972,2976,2980,2984,2988,2992],{"type":44,"tag":85,"props":2965,"children":2966},{"style":102},[2967],{"type":50,"value":4},{"type":44,"tag":85,"props":2969,"children":2970},{"style":108},[2971],{"type":50,"value":1119},{"type":44,"tag":85,"props":2973,"children":2974},{"style":108},[2975],{"type":50,"value":396},{"type":44,"tag":85,"props":2977,"children":2978},{"style":108},[2979],{"type":50,"value":1129},{"type":44,"tag":85,"props":2981,"children":2982},{"style":108},[2983],{"type":50,"value":1394},{"type":44,"tag":85,"props":2985,"children":2986},{"style":108},[2987],{"type":50,"value":1147},{"type":44,"tag":85,"props":2989,"children":2990},{"style":108},[2991],{"type":50,"value":2940},{"type":44,"tag":85,"props":2993,"children":2994},{"style":108},[2995],{"type":50,"value":2996}," plain\n",{"type":44,"tag":59,"props":2998,"children":3000},{"id":2999},"ground-rules",[3001],{"type":50,"value":3002},"Ground Rules",{"type":44,"tag":630,"props":3004,"children":3005},{},[3006,3026,3036,3055,3067,3079,3091,3103,3115,3141],{"type":44,"tag":634,"props":3007,"children":3008},{},[3009,3011,3017,3019,3025],{"type":50,"value":3010},"ALWAYS authenticate before using GraphOS commands (",{"type":44,"tag":81,"props":3012,"children":3014},{"className":3013},[],[3015],{"type":50,"value":3016},"rover config auth",{"type":50,"value":3018}," or ",{"type":44,"tag":81,"props":3020,"children":3022},{"className":3021},[],[3023],{"type":50,"value":3024},"APOLLO_KEY",{"type":50,"value":1262},{"type":44,"tag":634,"props":3027,"children":3028},{},[3029,3031],{"type":50,"value":3030},"ALWAYS use the correct graph reference format: ",{"type":44,"tag":81,"props":3032,"children":3034},{"className":3033},[],[3035],{"type":50,"value":2024},{"type":44,"tag":634,"props":3037,"children":3038},{},[3039,3041,3046,3048,3053],{"type":50,"value":3040},"PREFER ",{"type":44,"tag":81,"props":3042,"children":3044},{"className":3043},[],[3045],{"type":50,"value":826},{"type":50,"value":3047}," before ",{"type":44,"tag":81,"props":3049,"children":3051},{"className":3050},[],[3052],{"type":50,"value":804},{"type":50,"value":3054}," in CI\u002FCD",{"type":44,"tag":634,"props":3056,"children":3057},{},[3058,3060,3065],{"type":50,"value":3059},"USE ",{"type":44,"tag":81,"props":3061,"children":3063},{"className":3062},[],[3064],{"type":50,"value":892},{"type":50,"value":3066}," for local supergraph development instead of running Router manually",{"type":44,"tag":634,"props":3068,"children":3069},{},[3070,3072,3077],{"type":50,"value":3071},"NEVER commit ",{"type":44,"tag":81,"props":3073,"children":3075},{"className":3074},[],[3076],{"type":50,"value":3024},{"type":50,"value":3078}," to version control; use environment variables",{"type":44,"tag":634,"props":3080,"children":3081},{},[3082,3083,3089],{"type":50,"value":3059},{"type":44,"tag":81,"props":3084,"children":3086},{"className":3085},[],[3087],{"type":50,"value":3088},"--format json",{"type":50,"value":3090}," when parsing output programmatically",{"type":44,"tag":634,"props":3092,"children":3093},{},[3094,3096,3101],{"type":50,"value":3095},"SPECIFY ",{"type":44,"tag":81,"props":3097,"children":3099},{"className":3098},[],[3100],{"type":50,"value":1478},{"type":50,"value":3102}," explicitly in supergraph.yaml for reproducibility",{"type":44,"tag":634,"props":3104,"children":3105},{},[3106,3107,3113],{"type":50,"value":3059},{"type":44,"tag":81,"props":3108,"children":3110},{"className":3109},[],[3111],{"type":50,"value":3112},"rover subgraph introspect",{"type":50,"value":3114}," to extract schemas from running services",{"type":44,"tag":634,"props":3116,"children":3117},{},[3118,3119,3124,3126,3131,3133,3139],{"type":50,"value":3059},{"type":44,"tag":81,"props":3120,"children":3122},{"className":3121},[],[3123],{"type":50,"value":970},{"type":50,"value":3125}," \u002F ",{"type":44,"tag":81,"props":3127,"children":3129},{"className":3128},[],[3130],{"type":50,"value":936},{"type":50,"value":3132}," (piped from a ",{"type":44,"tag":81,"props":3134,"children":3136},{"className":3135},[],[3137],{"type":50,"value":3138},"fetch",{"type":50,"value":3140},") to explore large schemas instead of loading the full SDL into context",{"type":44,"tag":634,"props":3142,"children":3143},{},[3144,3146,3151,3152,3158,3160,3165,3166,3171,3173,3178],{"type":50,"value":3145},"NEVER fetch a full schema into context just to explore it — pipe ",{"type":44,"tag":81,"props":3147,"children":3149},{"className":3148},[],[3150],{"type":50,"value":647},{"type":50,"value":672},{"type":44,"tag":81,"props":3153,"children":3155},{"className":3154},[],[3156],{"type":50,"value":3157},"introspect",{"type":50,"value":3159}," into ",{"type":44,"tag":81,"props":3161,"children":3163},{"className":3162},[],[3164],{"type":50,"value":936},{"type":50,"value":672},{"type":44,"tag":81,"props":3167,"children":3169},{"className":3168},[],[3170],{"type":50,"value":2004},{"type":50,"value":3172}," (a bare ",{"type":44,"tag":81,"props":3174,"children":3176},{"className":3175},[],[3177],{"type":50,"value":3138},{"type":50,"value":3179}," is only for when the user wants the SDL file itself)",{"type":44,"tag":3181,"props":3182,"children":3183},"style",{},[3184],{"type":50,"value":3185},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3187,"total":3351},[3188,3203,3218,3231,3252,3267,3280,3293,3308,3324,3334,3345],{"slug":3189,"name":3189,"fn":3190,"description":3191,"org":3192,"tags":3193,"stars":21,"repoUrl":22,"updatedAt":3202},"apollo-client","build React apps with Apollo Client","Guide for building React applications with Apollo Client 4.x. Use this skill when: (1) setting up Apollo Client in a React project, (2) writing GraphQL queries or mutations with hooks, (3) configuring caching or cache policies, (4) managing local state with reactive variables, (5) troubleshooting Apollo Client errors or performance issues.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3194,3195,3198,3199],{"name":9,"slug":8,"type":16},{"name":3196,"slug":3197,"type":16},"Frontend","frontend",{"name":14,"slug":15,"type":16},{"name":3200,"slug":3201,"type":16},"React","react","2026-04-06T18:01:12.268638",{"slug":3204,"name":3204,"fn":3205,"description":3206,"org":3207,"tags":3208,"stars":21,"repoUrl":22,"updatedAt":3217},"apollo-connectors","integrate REST APIs with Apollo Connectors","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\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3209,3212,3213,3214],{"name":3210,"slug":3211,"type":16},"API Development","api-development",{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3215,"slug":3216,"type":16},"REST API","rest-api","2026-04-06T18:01:23.758345",{"slug":3219,"name":3219,"fn":3220,"description":3221,"org":3222,"tags":3223,"stars":21,"repoUrl":22,"updatedAt":3230},"apollo-federation","author Apollo Federation subgraph schemas","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\u002Ffields 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.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3224,3225,3226,3229],{"name":3210,"slug":3211,"type":16},{"name":9,"slug":8,"type":16},{"name":3227,"slug":3228,"type":16},"Architecture","architecture",{"name":14,"slug":15,"type":16},"2026-07-30T05:31:51.648593",{"slug":3232,"name":3232,"fn":3233,"description":3234,"org":3235,"tags":3236,"stars":21,"repoUrl":22,"updatedAt":3251},"apollo-ios","build Apple apps with Apollo iOS","Guide for building Apple-platform applications with Apollo iOS, the strongly-typed GraphQL client for Swift. Use this skill when: (1) adding Apollo iOS to a Swift Package Manager or Xcode project, (2) configuring `apollo-codegen-config.json` and running code generation, (3) configuring an `ApolloClient` with auth, interceptors, and caching, (4) writing queries, mutations, or subscriptions from SwiftUI views, (5) writing tests against generated operation mocks.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3237,3238,3239,3242,3245,3248],{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3240,"slug":3241,"type":16},"iOS","ios",{"name":3243,"slug":3244,"type":16},"Mobile","mobile",{"name":3246,"slug":3247,"type":16},"Swift","swift",{"name":3249,"slug":3250,"type":16},"Xcode","xcode","2026-04-29T05:35:21.329969",{"slug":3253,"name":3253,"fn":3254,"description":3255,"org":3256,"tags":3257,"stars":21,"repoUrl":22,"updatedAt":3266},"apollo-kotlin","build Kotlin apps with Apollo GraphQL","Guide for building applications with Apollo Kotlin, the GraphQL client library for Android and Kotlin. Use this skill when: (1) setting up Apollo Kotlin in a Gradle project for Android, Kotlin\u002FJVM, or KMP, (2) configuring schema download and codegen for GraphQL services, (3) configuring an `ApolloClient` with auth, interceptors, and caching, (4) writing queries, mutations, or subscriptions,\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3258,3261,3262,3263],{"name":3259,"slug":3260,"type":16},"Android","android",{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3264,"slug":3265,"type":16},"Kotlin","kotlin","2026-04-06T18:01:15.005978",{"slug":3268,"name":3268,"fn":3269,"description":3270,"org":3271,"tags":3272,"stars":21,"repoUrl":22,"updatedAt":3279},"apollo-mcp-server","connect MCP agents to GraphQL APIs","Guide for using Apollo MCP Server to connect AI agents with GraphQL APIs. Use this skill when: (1) setting up or configuring Apollo MCP Server, (2) defining MCP tools from GraphQL operations, (3) using introspection tools (introspect, search, validate, execute), (4) troubleshooting MCP server connectivity or tool execution issues.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3273,3274,3275,3276],{"name":3210,"slug":3211,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3277,"slug":3278,"type":16},"MCP","mcp","2026-04-06T18:01:20.578589",{"slug":3281,"name":3281,"fn":3282,"description":3283,"org":3284,"tags":3285,"stars":21,"repoUrl":22,"updatedAt":3292},"apollo-router","configure Apollo Router for GraphQL federation","Version-aware guide for configuring and running Apollo Router for federated GraphQL supergraphs. Generates correct YAML for both Router v1.x and v2.x. Use this skill when: (1) setting up Apollo Router to run a supergraph, (2) configuring routing, headers, or CORS, (3) implementing custom plugins (Rhai scripts or coprocessors), (4) configuring telemetry (tracing, metrics, logging), (5) troubleshooting Router performance or connectivity issues, (6) securing the graph with JWT, declarative field-level authorization directives, or persisted-query safelisting, (7) managing router.yaml as version-controlled config with CI\u002FCD validation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3286,3287,3288,3291],{"name":9,"slug":8,"type":16},{"name":3227,"slug":3228,"type":16},{"name":3289,"slug":3290,"type":16},"Deployment","deployment",{"name":14,"slug":15,"type":16},"2026-07-30T05:31:54.665938",{"slug":3294,"name":3294,"fn":3295,"description":3296,"org":3297,"tags":3298,"stars":21,"repoUrl":22,"updatedAt":3307},"apollo-router-plugin-creator","write Apollo Router Rust plugins","Guide for writing Apollo Router native Rust plugins. Use this skill when: (1) users want to create a new router plugin, (2) users want to add service hooks (router_service, supergraph_service, execution_service, subgraph_service), (3) users want to modify an existing router plugin, (4) users need to understand router plugin patterns or the request lifecycle. (5) triggers on requests like \"create a new plugin\", \"add a router plugin\", \"modify the X plugin\", or \"add subgraph_service hook\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3299,3300,3301,3304],{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3302,"slug":3303,"type":16},"Plugin Development","plugin-development",{"name":3305,"slug":3306,"type":16},"Rust","rust","2026-04-06T18:01:27.176974",{"slug":3309,"name":3309,"fn":3310,"description":3311,"org":3312,"tags":3313,"stars":21,"repoUrl":22,"updatedAt":3323},"apollo-server","build GraphQL servers with Apollo Server","Guide for building GraphQL servers with Apollo Server 5.x. Use this skill when: (1) setting up a new Apollo Server project, (2) writing resolvers or defining GraphQL schemas, (3) implementing authentication or authorization, (4) creating plugins or custom data sources, (5) troubleshooting Apollo Server errors or performance issues.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3314,3315,3316,3317,3320],{"name":3210,"slug":3211,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3318,"slug":3319,"type":16},"Node.js","nodejs",{"name":3321,"slug":3322,"type":16},"TypeScript","typescript","2026-04-06T18:01:13.653038",{"slug":3325,"name":3325,"fn":3326,"description":3327,"org":3328,"tags":3329,"stars":21,"repoUrl":22,"updatedAt":3333},"graphql-operations","write GraphQL queries and mutations","Guide for writing GraphQL operations (queries, mutations, fragments) following best practices. Use this skill when: (1) writing GraphQL queries or mutations, (2) organizing operations with fragments, (3) optimizing data fetching patterns, (4) setting up type generation or linting, (5) reviewing operations for efficiency.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3330,3331,3332],{"name":3210,"slug":3211,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},"2026-04-06T18:01:25.530906",{"slug":3335,"name":3335,"fn":3336,"description":3337,"org":3338,"tags":3339,"stars":21,"repoUrl":22,"updatedAt":3344},"graphql-schema","design GraphQL schemas","Guide for designing GraphQL schemas following industry best practices. Use this skill when: (1) designing a new GraphQL schema or API, (2) reviewing existing schema for improvements, (3) deciding on type structures or nullability, (4) implementing pagination or error patterns, (5) ensuring security in schema design.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3340,3341,3342,3343],{"name":3210,"slug":3211,"type":16},{"name":9,"slug":8,"type":16},{"name":3227,"slug":3228,"type":16},{"name":14,"slug":15,"type":16},"2026-04-06T18:01:19.140592",{"slug":4,"name":4,"fn":5,"description":6,"org":3346,"tags":3347,"stars":21,"repoUrl":22,"updatedAt":23},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3348,3349,3350],{"name":9,"slug":8,"type":16},{"name":19,"slug":20,"type":16},{"name":14,"slug":15,"type":16},15,{"items":3353,"total":3405},[3354,3361,3368,3375,3384,3391,3398],{"slug":3189,"name":3189,"fn":3190,"description":3191,"org":3355,"tags":3356,"stars":21,"repoUrl":22,"updatedAt":3202},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3357,3358,3359,3360],{"name":9,"slug":8,"type":16},{"name":3196,"slug":3197,"type":16},{"name":14,"slug":15,"type":16},{"name":3200,"slug":3201,"type":16},{"slug":3204,"name":3204,"fn":3205,"description":3206,"org":3362,"tags":3363,"stars":21,"repoUrl":22,"updatedAt":3217},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3364,3365,3366,3367],{"name":3210,"slug":3211,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3215,"slug":3216,"type":16},{"slug":3219,"name":3219,"fn":3220,"description":3221,"org":3369,"tags":3370,"stars":21,"repoUrl":22,"updatedAt":3230},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3371,3372,3373,3374],{"name":3210,"slug":3211,"type":16},{"name":9,"slug":8,"type":16},{"name":3227,"slug":3228,"type":16},{"name":14,"slug":15,"type":16},{"slug":3232,"name":3232,"fn":3233,"description":3234,"org":3376,"tags":3377,"stars":21,"repoUrl":22,"updatedAt":3251},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3378,3379,3380,3381,3382,3383],{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3240,"slug":3241,"type":16},{"name":3243,"slug":3244,"type":16},{"name":3246,"slug":3247,"type":16},{"name":3249,"slug":3250,"type":16},{"slug":3253,"name":3253,"fn":3254,"description":3255,"org":3385,"tags":3386,"stars":21,"repoUrl":22,"updatedAt":3266},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3387,3388,3389,3390],{"name":3259,"slug":3260,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3264,"slug":3265,"type":16},{"slug":3268,"name":3268,"fn":3269,"description":3270,"org":3392,"tags":3393,"stars":21,"repoUrl":22,"updatedAt":3279},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3394,3395,3396,3397],{"name":3210,"slug":3211,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":3277,"slug":3278,"type":16},{"slug":3281,"name":3281,"fn":3282,"description":3283,"org":3399,"tags":3400,"stars":21,"repoUrl":22,"updatedAt":3292},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3401,3402,3403,3404],{"name":9,"slug":8,"type":16},{"name":3227,"slug":3228,"type":16},{"name":3289,"slug":3290,"type":16},{"name":14,"slug":15,"type":16},14]