[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-apollo-graphql-skill-creator":3,"mdc-qzmtjb-key":34,"related-repo-apollo-graphql-skill-creator":2525,"related-org-apollo-graphql-skill-creator":2631},{"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},"skill-creator","create skills for Apollo GraphQL","Guide for creating effective skills for Apollo GraphQL and GraphQL development. Use this skill when: (1) users want to create a new skill, (2) users want to update an existing skill, (3) users ask about skill structure or best practices, (4) users need help writing SKILL.md files.\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,20],{"name":14,"slug":15,"type":16},"GraphQL","graphql","tag",{"name":18,"slug":19,"type":16},"Agent Context","agent-context",{"name":9,"slug":8,"type":16},97,"https:\u002F\u002Fgithub.com\u002Fapollographql\u002Fskills","2026-04-06T18:01:17.752441","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\u002Fskill-creator","---\nname: skill-creator\ndescription: >\n  Guide for creating effective skills for Apollo GraphQL and GraphQL development. Use this skill when:\n  (1) users want to create a new skill,\n  (2) users want to update an existing skill,\n  (3) users ask about skill structure or best practices,\n  (4) users need help writing SKILL.md files.\nlicense: MIT\ncompatibility: Works with Claude Code and similar AI coding assistants that support Agent Skills.\nmetadata:\n  author: apollographql\n  version: \"1.1.0\"\nallowed-tools: Read Write Edit Glob Grep\n---\n\n# Skill Creator Guide\n\nThis guide helps you create effective skills for Apollo GraphQL and GraphQL development following the [Agent Skills specification](https:\u002F\u002Fagentskills.io\u002Fspecification).\n\n## What is a Skill?\n\nA skill is a directory containing instructions that extend an AI agent's capabilities with specialized knowledge, workflows, or tool integrations. Skills activate automatically when agents detect relevant tasks.\n\n## Directory Structure\n\nA skill requires at minimum a `SKILL.md` file:\n\n```\nskill-name\u002F\n├── SKILL.md              # Required - main instructions\n├── references\u002F           # Optional - detailed documentation\n│   ├── topic-a.md\n│   └── topic-b.md\n├── scripts\u002F              # Optional - executable helpers\n│   └── validate.sh\n├── templates\u002F            # Optional - config\u002Fcode templates\n│   └── config.yaml\n└── assets\u002F               # Optional - static resources (images, schemas, data files)\n```\n\n## SKILL.md Format\n\n### Frontmatter (Required)\n\n```yaml\n---\nname: skill-name\ndescription: >\n  A clear description of what this skill does and when to use it.\n  Include trigger conditions: (1) first condition, (2) second condition.\nlicense: MIT\ncompatibility: Works with Claude Code and similar AI coding assistants.\nmetadata:\n  author: your-org\n  version: \"1.0.0\"\nallowed-tools: Read Write Edit Glob Grep\n---\n```\n\n### Frontmatter Fields\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `name` | Yes | Lowercase, hyphens only. Must match directory name. Max 64 chars. |\n| `description` | Yes | What the skill does and when to use it. Max 1024 chars. |\n| `license` | No | License name (e.g., MIT, Apache-2.0). |\n| `compatibility` | No | Environment requirements. Max 500 chars. |\n| `metadata` | No | Key-value pairs for author, version, etc. |\n| `allowed-tools` | No | Space-delimited list of pre-approved tools. Do not include `Bash(curl:*)`. |\n\n### Name Rules\n\n- Use lowercase letters, numbers, and hyphens only\n- Do not start or end with a hyphen\n- Do not use consecutive hyphens (`--`)\n- Must match the parent directory name\n\nGood: `apollo-client`, `graphql-schema`, `rover`\nBad: `Apollo-Client`, `-apollo`, `apollo--client`\n\n### Description Best Practices\n\nWrite descriptions that help agents identify when to activate the skill:\n\n```yaml\n# Good - specific triggers and use cases\ndescription: >\n  Guide for designing GraphQL schemas following industry best practices. Use this skill when:\n  (1) designing a new GraphQL schema or API,\n  (2) reviewing existing schema for improvements,\n  (3) deciding on type structures or nullability,\n  (4) implementing pagination or error patterns.\n\n# Bad - vague and unhelpful\ndescription: Helps with GraphQL stuff.\n```\n\n## Body Content\n\nThe markdown body contains instructions the agent follows. Structure it for clarity:\n\n### Recommended Sections\n\n1. **Overview** - Brief explanation of the skill's purpose\n2. **Process** - Step-by-step workflow (use checkboxes for multi-step processes)\n3. **Quick Reference** - Common patterns and syntax\n4. **Security** - Risks, mitigations, and validation (if the skill touches anything security-sensitive)\n5. **Reference Files** - Links to detailed documentation\n6. **Key Rules** - Important guidelines organized by topic\n7. **Ground Rules** - Critical do's and don'ts\n\n### Example Structure\n\n```markdown\n# Skill Title\n\nBrief overview of what this skill helps with.\n\n## Process\n\nFollow this process when working on [task]:\n\n- [ ] Step 1: Research and understand requirements\n- [ ] Step 2: Implement the solution\n- [ ] Step 3: Validate the result\n\n## Quick Reference\n\n### Common Pattern\n\n\\`\\`\\`graphql\ntype Example {\n  id: ID!\n  name: String\n}\n\\`\\`\\`\n\n## Security\n\n> **Risk: [brief description of what can go wrong].**\n> [What the user MUST do to prevent it.]\n\n- ALWAYS [secure default behavior]\n- NEVER [dangerous configuration] in production\n\n## Reference Files\n\n- [Topic A](references\u002Ftopic-a.md) - Detailed guide for topic A\n- [Topic B](references\u002Ftopic-b.md) - Detailed guide for topic B\n\n## Key Rules\n\n### Category One\n\n- Rule about this category\n- Another rule\n\n### Category Two\n\n- Rule about this category\n\n## Ground Rules\n\n- ALWAYS do this important thing\n- NEVER do this problematic thing\n- PREFER this approach over that approach\n```\n\n## Security-Sensitive Content\n\nWhen a skill generates configuration, code, or guidance that could cause security issues if misused, the skill MUST make those risks explicit and visible to the LLM. An LLM cannot infer security implications from context alone — it needs clearly labeled signals.\n\n### When does a skill need security guidance?\n\nIf any of these apply, the skill is security-sensitive:\n\n- Generates config that controls access to data (caching, auth, CORS, permissions)\n- Handles secrets, credentials, or tokens\n- Produces code that runs with elevated privileges\n- Controls what data is shared, public, or exposed to users\n- Configures network bindings, endpoints, or external access\n\n### How to surface security in a skill\n\n1. **Dedicated Security section** in SKILL.md or a reference file, labeled `## Security`. Not \"Private data\" or \"Customization\" — use the word \"Security\" so the LLM recognizes the category.\n\n2. **Explicit warnings at the point of risk** — place security guidance next to the config or code that creates the risk, not in a separate file the LLM may not load:\n\n   ```markdown\n   ### Response caching scope\n\n   > **Security: data leakage risk.** All cached data is PUBLIC by default.\n   > User-specific fields MUST use `scope: PRIVATE` with a `private_id`\n   > configured, or they will be shared across all users.\n   ```\n\n3. **Validation checklist items** — every security-sensitive feature must have corresponding checks in the validation checklist. Group them under a `## Security` heading.\n\n4. **Ground rules** — add ALWAYS\u002FNEVER rules for security-critical behavior. These are the strongest signal to the LLM.\n\n5. **Require the data model** — if correct security configuration depends on understanding the user's data model (e.g., which fields are user-specific), the skill must instruct the LLM to ask the user before generating config. Do not let the LLM guess.\n\n### Anti-patterns\n\n- Describing a security-sensitive default (like \"public by default\") without labeling it as a security concern\n- Placing security guidance only in reference files that load on demand — the SKILL.md itself must contain the key warnings\n- Using soft language (\"you may want to consider\") for hard security requirements — use \"MUST\" and \"NEVER\"\n- Assuming the LLM understands which fields in a schema are private — require explicit user input\n\n## Progressive Disclosure\n\nStructure skills to minimize context usage:\n\n1. **Metadata** (~100 tokens): `name` and `description` load at startup for all skills\n2. **Instructions** (\u003C 5000 tokens): Full `SKILL.md` loads when skill activates\n3. **References** (as needed): Files in `references\u002F` load only when required\n\nKeep `SKILL.md` under 500 lines. Move detailed documentation to reference files.\n\n## Reference Files\n\nUse `references\u002F` for detailed documentation:\n\n```\nreferences\u002F\n├── setup.md          # Installation and configuration\n├── patterns.md       # Common patterns and examples\n├── troubleshooting.md # Error solutions\n└── api.md            # API reference\n```\n\nReference files should be:\n\n- Focused on a single topic\n- Self-contained (readable without other files)\n- Under 300 lines each\n\nLink to references from `SKILL.md`:\n\n```markdown\n## Reference Files\n\n- [Setup](references\u002Fsetup.md) - Installation and configuration\n- [Patterns](references\u002Fpatterns.md) - Common patterns and examples\n```\n\n## Scripts\n\nUse `scripts\u002F` for executable helpers agents can run:\n\n```\nscripts\u002F\n├── validate.sh       # Validation commands\n├── setup.py          # Setup automation\n└── check-version.sh  # Version checking\n```\n\nScripts should be self-contained, include error handling, and have a usage comment at the top. Pre-approve them in `allowed-tools` (e.g., `Bash(.\u002Fscripts\u002Fvalidate.sh:*)`).\n\n## Templates\n\nUse `templates\u002F` for config files, boilerplate, or starter code:\n\n```\ntemplates\u002F\n├── config.yaml       # Default configuration\n├── config-v2.yaml    # Version-specific variant\n└── example-app\u002F      # Starter project\n```\n\nTemplates are copied or adapted by the agent — not executed directly.\n\n## Writing Style\n\nFollow the Apollo Voice for all skill content:\n\n### Tone\n\n- Approachable and helpful\n- Opinionated and authoritative (prescribe the \"happy path\")\n- Direct and action-oriented\n\n### Language\n\n- Use American English\n- Keep language simple; avoid idioms\n- Use present tense and active voice\n- Use imperative verbs for instructions\n\n### Formatting\n\n- Use sentence casing for headings\n- Use code font for symbols, commands, file paths, and URLs\n- Use bold for UI elements users click\n- Use hyphens (-) for unordered lists\n\n### Avoid\n\n- \"Simply\", \"just\", \"easy\" (can be condescending)\n- Vague phrases like \"click here\"\n- Semicolons (use periods instead)\n- \"We\" unless clearly referring to Apollo\n\n## Reference Files\n\nFor Apollo GraphQL-specific guidance:\n\n- [Apollo Skills](references\u002Fapollo-skills.md) - Patterns and examples for Apollo GraphQL skills\n\n## Versioning\n\nUse semantic versioning (`\"X.Y.Z\"`) for the `version` field in metadata:\n\n```yaml\nmetadata:\n  author: apollographql\n  version: \"1.0.0\"\n```\n\n- **Major (X)**: Breaking changes that alter how the skill behaves or activates (e.g., renamed triggers, removed sections, changed ground rules)\n- **Minor (Y)**: New content or capabilities that are backward-compatible (e.g., added reference files, new sections, expanded examples)\n- **Patch (Z)**: Small fixes that don't change behavior (e.g., typo corrections, wording tweaks, formatting fixes)\n\nStart new skills at `\"1.0.0\"`.\n\n## Checklist for New Skills\n\nBefore publishing a skill, verify:\n\n- [ ] `name` matches directory name and follows naming rules\n- [ ] `description` clearly states what the skill does and when to use it\n- [ ] `SKILL.md` is under 500 lines\n- [ ] Reference files are focused and under 300 lines each\n- [ ] Instructions are clear and actionable\n- [ ] Code examples are correct and tested\n- [ ] Ground rules use ALWAYS\u002FNEVER\u002FPREFER format\n- [ ] Content follows Apollo Voice guidelines\n\n## Ground Rules\n\n- ALWAYS include trigger conditions in the description (use numbered list)\n- ALWAYS use checkboxes for multi-step processes\n- ALWAYS link to reference files for detailed documentation\n- NEVER exceed 500 lines in SKILL.md\n- NEVER use vague descriptions that don't help agents identify when to activate\n- PREFER specific examples over abstract explanations\n- PREFER opinionated guidance over listing multiple options\n- USE `allowed-tools` to pre-approve tools the skill needs\n- NEVER include `Bash(curl:*)` in `allowed-tools` as it grants unrestricted network access and enables `curl | sh` remote code execution patterns\n- ALWAYS include a `## Security` section when the skill generates config or code that controls access, caching, auth, secrets, or data exposure\n- NEVER bury security-critical guidance only in reference files — the key warnings must appear in SKILL.md where the LLM will always see them\n- ALWAYS instruct the LLM to ask the user about their data model before generating security-sensitive config (e.g., which fields are user-specific, which data is public)\n- USE explicit blockquote warnings (`> **Security: ...**`) next to config or code that creates security risks\n- ALWAYS add validation checklist items for every security-sensitive feature, grouped under a `## Security` heading\n",{"data":35,"body":40},{"name":4,"description":6,"license":24,"compatibility":36,"metadata":37,"allowed-tools":39},"Works with Claude Code and similar AI coding assistants that support Agent Skills.",{"author":11,"version":38},"1.1.0","Read Write Edit Glob Grep",{"type":41,"children":42},"root",[43,52,69,76,81,87,101,113,119,126,327,333,495,501,534,582,588,593,697,703,708,714,789,795,1425,1431,1436,1442,1447,1475,1481,1659,1665,1688,1694,1699,1761,1773,1778,1790,1799,1804,1822,1833,1926,1932,1944,1953,1973,1979,1991,2000,2005,2011,2016,2022,2040,2046,2069,2075,2098,2104,2127,2132,2137,2151,2157,2178,2235,2268,2280,2286,2291,2390,2395,2519],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"skill-creator-guide",[49],{"type":50,"value":51},"text","Skill Creator Guide",{"type":44,"tag":53,"props":54,"children":55},"p",{},[56,58,67],{"type":50,"value":57},"This guide helps you create effective skills for Apollo GraphQL and GraphQL development following the ",{"type":44,"tag":59,"props":60,"children":64},"a",{"href":61,"rel":62},"https:\u002F\u002Fagentskills.io\u002Fspecification",[63],"nofollow",[65],{"type":50,"value":66},"Agent Skills specification",{"type":50,"value":68},".",{"type":44,"tag":70,"props":71,"children":73},"h2",{"id":72},"what-is-a-skill",[74],{"type":50,"value":75},"What is a Skill?",{"type":44,"tag":53,"props":77,"children":78},{},[79],{"type":50,"value":80},"A skill is a directory containing instructions that extend an AI agent's capabilities with specialized knowledge, workflows, or tool integrations. Skills activate automatically when agents detect relevant tasks.",{"type":44,"tag":70,"props":82,"children":84},{"id":83},"directory-structure",[85],{"type":50,"value":86},"Directory Structure",{"type":44,"tag":53,"props":88,"children":89},{},[90,92,99],{"type":50,"value":91},"A skill requires at minimum a ",{"type":44,"tag":93,"props":94,"children":96},"code",{"className":95},[],[97],{"type":50,"value":98},"SKILL.md",{"type":50,"value":100}," file:",{"type":44,"tag":102,"props":103,"children":107},"pre",{"className":104,"code":106,"language":50},[105],"language-text","skill-name\u002F\n├── SKILL.md              # Required - main instructions\n├── references\u002F           # Optional - detailed documentation\n│   ├── topic-a.md\n│   └── topic-b.md\n├── scripts\u002F              # Optional - executable helpers\n│   └── validate.sh\n├── templates\u002F            # Optional - config\u002Fcode templates\n│   └── config.yaml\n└── assets\u002F               # Optional - static resources (images, schemas, data files)\n",[108],{"type":44,"tag":93,"props":109,"children":111},{"__ignoreMap":110},"",[112],{"type":50,"value":106},{"type":44,"tag":70,"props":114,"children":116},{"id":115},"skillmd-format",[117],{"type":50,"value":118},"SKILL.md Format",{"type":44,"tag":120,"props":121,"children":123},"h3",{"id":122},"frontmatter-required",[124],{"type":50,"value":125},"Frontmatter (Required)",{"type":44,"tag":102,"props":127,"children":131},{"className":128,"code":129,"language":130,"meta":110,"style":110},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nname: skill-name\ndescription: >\n  A clear description of what this skill does and when to use it.\n  Include trigger conditions: (1) first condition, (2) second condition.\nlicense: MIT\ncompatibility: Works with Claude Code and similar AI coding assistants.\nmetadata:\n  author: your-org\n  version: \"1.0.0\"\nallowed-tools: Read Write Edit Glob Grep\n---\n","yaml",[132],{"type":44,"tag":93,"props":133,"children":134},{"__ignoreMap":110},[135,147,169,188,197,206,224,242,256,274,302,319],{"type":44,"tag":136,"props":137,"children":140},"span",{"class":138,"line":139},"line",1,[141],{"type":44,"tag":136,"props":142,"children":144},{"style":143},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[145],{"type":50,"value":146},"---\n",{"type":44,"tag":136,"props":148,"children":150},{"class":138,"line":149},2,[151,157,163],{"type":44,"tag":136,"props":152,"children":154},{"style":153},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[155],{"type":50,"value":156},"name",{"type":44,"tag":136,"props":158,"children":160},{"style":159},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[161],{"type":50,"value":162},":",{"type":44,"tag":136,"props":164,"children":166},{"style":165},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[167],{"type":50,"value":168}," skill-name\n",{"type":44,"tag":136,"props":170,"children":172},{"class":138,"line":171},3,[173,178,182],{"type":44,"tag":136,"props":174,"children":175},{"style":153},[176],{"type":50,"value":177},"description",{"type":44,"tag":136,"props":179,"children":180},{"style":159},[181],{"type":50,"value":162},{"type":44,"tag":136,"props":183,"children":185},{"style":184},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[186],{"type":50,"value":187}," >\n",{"type":44,"tag":136,"props":189,"children":191},{"class":138,"line":190},4,[192],{"type":44,"tag":136,"props":193,"children":194},{"style":165},[195],{"type":50,"value":196},"  A clear description of what this skill does and when to use it.\n",{"type":44,"tag":136,"props":198,"children":200},{"class":138,"line":199},5,[201],{"type":44,"tag":136,"props":202,"children":203},{"style":165},[204],{"type":50,"value":205},"  Include trigger conditions: (1) first condition, (2) second condition.\n",{"type":44,"tag":136,"props":207,"children":209},{"class":138,"line":208},6,[210,215,219],{"type":44,"tag":136,"props":211,"children":212},{"style":153},[213],{"type":50,"value":214},"license",{"type":44,"tag":136,"props":216,"children":217},{"style":159},[218],{"type":50,"value":162},{"type":44,"tag":136,"props":220,"children":221},{"style":165},[222],{"type":50,"value":223}," MIT\n",{"type":44,"tag":136,"props":225,"children":227},{"class":138,"line":226},7,[228,233,237],{"type":44,"tag":136,"props":229,"children":230},{"style":153},[231],{"type":50,"value":232},"compatibility",{"type":44,"tag":136,"props":234,"children":235},{"style":159},[236],{"type":50,"value":162},{"type":44,"tag":136,"props":238,"children":239},{"style":165},[240],{"type":50,"value":241}," Works with Claude Code and similar AI coding assistants.\n",{"type":44,"tag":136,"props":243,"children":245},{"class":138,"line":244},8,[246,251],{"type":44,"tag":136,"props":247,"children":248},{"style":153},[249],{"type":50,"value":250},"metadata",{"type":44,"tag":136,"props":252,"children":253},{"style":159},[254],{"type":50,"value":255},":\n",{"type":44,"tag":136,"props":257,"children":259},{"class":138,"line":258},9,[260,265,269],{"type":44,"tag":136,"props":261,"children":262},{"style":153},[263],{"type":50,"value":264},"  author",{"type":44,"tag":136,"props":266,"children":267},{"style":159},[268],{"type":50,"value":162},{"type":44,"tag":136,"props":270,"children":271},{"style":165},[272],{"type":50,"value":273}," your-org\n",{"type":44,"tag":136,"props":275,"children":277},{"class":138,"line":276},10,[278,283,287,292,297],{"type":44,"tag":136,"props":279,"children":280},{"style":153},[281],{"type":50,"value":282},"  version",{"type":44,"tag":136,"props":284,"children":285},{"style":159},[286],{"type":50,"value":162},{"type":44,"tag":136,"props":288,"children":289},{"style":159},[290],{"type":50,"value":291}," \"",{"type":44,"tag":136,"props":293,"children":294},{"style":165},[295],{"type":50,"value":296},"1.0.0",{"type":44,"tag":136,"props":298,"children":299},{"style":159},[300],{"type":50,"value":301},"\"\n",{"type":44,"tag":136,"props":303,"children":304},{"class":138,"line":25},[305,310,314],{"type":44,"tag":136,"props":306,"children":307},{"style":153},[308],{"type":50,"value":309},"allowed-tools",{"type":44,"tag":136,"props":311,"children":312},{"style":159},[313],{"type":50,"value":162},{"type":44,"tag":136,"props":315,"children":316},{"style":165},[317],{"type":50,"value":318}," Read Write Edit Glob Grep\n",{"type":44,"tag":136,"props":320,"children":322},{"class":138,"line":321},12,[323],{"type":44,"tag":136,"props":324,"children":325},{"style":143},[326],{"type":50,"value":146},{"type":44,"tag":120,"props":328,"children":330},{"id":329},"frontmatter-fields",[331],{"type":50,"value":332},"Frontmatter Fields",{"type":44,"tag":334,"props":335,"children":336},"table",{},[337,361],{"type":44,"tag":338,"props":339,"children":340},"thead",{},[341],{"type":44,"tag":342,"props":343,"children":344},"tr",{},[345,351,356],{"type":44,"tag":346,"props":347,"children":348},"th",{},[349],{"type":50,"value":350},"Field",{"type":44,"tag":346,"props":352,"children":353},{},[354],{"type":50,"value":355},"Required",{"type":44,"tag":346,"props":357,"children":358},{},[359],{"type":50,"value":360},"Description",{"type":44,"tag":362,"props":363,"children":364},"tbody",{},[365,387,407,428,448,468],{"type":44,"tag":342,"props":366,"children":367},{},[368,377,382],{"type":44,"tag":369,"props":370,"children":371},"td",{},[372],{"type":44,"tag":93,"props":373,"children":375},{"className":374},[],[376],{"type":50,"value":156},{"type":44,"tag":369,"props":378,"children":379},{},[380],{"type":50,"value":381},"Yes",{"type":44,"tag":369,"props":383,"children":384},{},[385],{"type":50,"value":386},"Lowercase, hyphens only. Must match directory name. Max 64 chars.",{"type":44,"tag":342,"props":388,"children":389},{},[390,398,402],{"type":44,"tag":369,"props":391,"children":392},{},[393],{"type":44,"tag":93,"props":394,"children":396},{"className":395},[],[397],{"type":50,"value":177},{"type":44,"tag":369,"props":399,"children":400},{},[401],{"type":50,"value":381},{"type":44,"tag":369,"props":403,"children":404},{},[405],{"type":50,"value":406},"What the skill does and when to use it. Max 1024 chars.",{"type":44,"tag":342,"props":408,"children":409},{},[410,418,423],{"type":44,"tag":369,"props":411,"children":412},{},[413],{"type":44,"tag":93,"props":414,"children":416},{"className":415},[],[417],{"type":50,"value":214},{"type":44,"tag":369,"props":419,"children":420},{},[421],{"type":50,"value":422},"No",{"type":44,"tag":369,"props":424,"children":425},{},[426],{"type":50,"value":427},"License name (e.g., MIT, Apache-2.0).",{"type":44,"tag":342,"props":429,"children":430},{},[431,439,443],{"type":44,"tag":369,"props":432,"children":433},{},[434],{"type":44,"tag":93,"props":435,"children":437},{"className":436},[],[438],{"type":50,"value":232},{"type":44,"tag":369,"props":440,"children":441},{},[442],{"type":50,"value":422},{"type":44,"tag":369,"props":444,"children":445},{},[446],{"type":50,"value":447},"Environment requirements. Max 500 chars.",{"type":44,"tag":342,"props":449,"children":450},{},[451,459,463],{"type":44,"tag":369,"props":452,"children":453},{},[454],{"type":44,"tag":93,"props":455,"children":457},{"className":456},[],[458],{"type":50,"value":250},{"type":44,"tag":369,"props":460,"children":461},{},[462],{"type":50,"value":422},{"type":44,"tag":369,"props":464,"children":465},{},[466],{"type":50,"value":467},"Key-value pairs for author, version, etc.",{"type":44,"tag":342,"props":469,"children":470},{},[471,479,483],{"type":44,"tag":369,"props":472,"children":473},{},[474],{"type":44,"tag":93,"props":475,"children":477},{"className":476},[],[478],{"type":50,"value":309},{"type":44,"tag":369,"props":480,"children":481},{},[482],{"type":50,"value":422},{"type":44,"tag":369,"props":484,"children":485},{},[486,488,494],{"type":50,"value":487},"Space-delimited list of pre-approved tools. Do not include ",{"type":44,"tag":93,"props":489,"children":491},{"className":490},[],[492],{"type":50,"value":493},"Bash(curl:*)",{"type":50,"value":68},{"type":44,"tag":120,"props":496,"children":498},{"id":497},"name-rules",[499],{"type":50,"value":500},"Name Rules",{"type":44,"tag":502,"props":503,"children":504},"ul",{},[505,511,516,529],{"type":44,"tag":506,"props":507,"children":508},"li",{},[509],{"type":50,"value":510},"Use lowercase letters, numbers, and hyphens only",{"type":44,"tag":506,"props":512,"children":513},{},[514],{"type":50,"value":515},"Do not start or end with a hyphen",{"type":44,"tag":506,"props":517,"children":518},{},[519,521,527],{"type":50,"value":520},"Do not use consecutive hyphens (",{"type":44,"tag":93,"props":522,"children":524},{"className":523},[],[525],{"type":50,"value":526},"--",{"type":50,"value":528},")",{"type":44,"tag":506,"props":530,"children":531},{},[532],{"type":50,"value":533},"Must match the parent directory name",{"type":44,"tag":53,"props":535,"children":536},{},[537,539,545,547,553,554,560,562,568,569,575,576],{"type":50,"value":538},"Good: ",{"type":44,"tag":93,"props":540,"children":542},{"className":541},[],[543],{"type":50,"value":544},"apollo-client",{"type":50,"value":546},", ",{"type":44,"tag":93,"props":548,"children":550},{"className":549},[],[551],{"type":50,"value":552},"graphql-schema",{"type":50,"value":546},{"type":44,"tag":93,"props":555,"children":557},{"className":556},[],[558],{"type":50,"value":559},"rover",{"type":50,"value":561},"\nBad: ",{"type":44,"tag":93,"props":563,"children":565},{"className":564},[],[566],{"type":50,"value":567},"Apollo-Client",{"type":50,"value":546},{"type":44,"tag":93,"props":570,"children":572},{"className":571},[],[573],{"type":50,"value":574},"-apollo",{"type":50,"value":546},{"type":44,"tag":93,"props":577,"children":579},{"className":578},[],[580],{"type":50,"value":581},"apollo--client",{"type":44,"tag":120,"props":583,"children":585},{"id":584},"description-best-practices",[586],{"type":50,"value":587},"Description Best Practices",{"type":44,"tag":53,"props":589,"children":590},{},[591],{"type":50,"value":592},"Write descriptions that help agents identify when to activate the skill:",{"type":44,"tag":102,"props":594,"children":596},{"className":128,"code":595,"language":130,"meta":110,"style":110},"# Good - specific triggers and use cases\ndescription: >\n  Guide for designing GraphQL schemas following industry best practices. Use this skill when:\n  (1) designing a new GraphQL schema or API,\n  (2) reviewing existing schema for improvements,\n  (3) deciding on type structures or nullability,\n  (4) implementing pagination or error patterns.\n\n# Bad - vague and unhelpful\ndescription: Helps with GraphQL stuff.\n",[597],{"type":44,"tag":93,"props":598,"children":599},{"__ignoreMap":110},[600,609,624,632,640,648,656,664,673,681],{"type":44,"tag":136,"props":601,"children":602},{"class":138,"line":139},[603],{"type":44,"tag":136,"props":604,"children":606},{"style":605},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[607],{"type":50,"value":608},"# Good - specific triggers and use cases\n",{"type":44,"tag":136,"props":610,"children":611},{"class":138,"line":149},[612,616,620],{"type":44,"tag":136,"props":613,"children":614},{"style":153},[615],{"type":50,"value":177},{"type":44,"tag":136,"props":617,"children":618},{"style":159},[619],{"type":50,"value":162},{"type":44,"tag":136,"props":621,"children":622},{"style":184},[623],{"type":50,"value":187},{"type":44,"tag":136,"props":625,"children":626},{"class":138,"line":171},[627],{"type":44,"tag":136,"props":628,"children":629},{"style":165},[630],{"type":50,"value":631},"  Guide for designing GraphQL schemas following industry best practices. Use this skill when:\n",{"type":44,"tag":136,"props":633,"children":634},{"class":138,"line":190},[635],{"type":44,"tag":136,"props":636,"children":637},{"style":165},[638],{"type":50,"value":639},"  (1) designing a new GraphQL schema or API,\n",{"type":44,"tag":136,"props":641,"children":642},{"class":138,"line":199},[643],{"type":44,"tag":136,"props":644,"children":645},{"style":165},[646],{"type":50,"value":647},"  (2) reviewing existing schema for improvements,\n",{"type":44,"tag":136,"props":649,"children":650},{"class":138,"line":208},[651],{"type":44,"tag":136,"props":652,"children":653},{"style":165},[654],{"type":50,"value":655},"  (3) deciding on type structures or nullability,\n",{"type":44,"tag":136,"props":657,"children":658},{"class":138,"line":226},[659],{"type":44,"tag":136,"props":660,"children":661},{"style":165},[662],{"type":50,"value":663},"  (4) implementing pagination or error patterns.\n",{"type":44,"tag":136,"props":665,"children":666},{"class":138,"line":244},[667],{"type":44,"tag":136,"props":668,"children":670},{"emptyLinePlaceholder":669},true,[671],{"type":50,"value":672},"\n",{"type":44,"tag":136,"props":674,"children":675},{"class":138,"line":258},[676],{"type":44,"tag":136,"props":677,"children":678},{"style":605},[679],{"type":50,"value":680},"# Bad - vague and unhelpful\n",{"type":44,"tag":136,"props":682,"children":683},{"class":138,"line":276},[684,688,692],{"type":44,"tag":136,"props":685,"children":686},{"style":153},[687],{"type":50,"value":177},{"type":44,"tag":136,"props":689,"children":690},{"style":159},[691],{"type":50,"value":162},{"type":44,"tag":136,"props":693,"children":694},{"style":165},[695],{"type":50,"value":696}," Helps with GraphQL stuff.\n",{"type":44,"tag":70,"props":698,"children":700},{"id":699},"body-content",[701],{"type":50,"value":702},"Body Content",{"type":44,"tag":53,"props":704,"children":705},{},[706],{"type":50,"value":707},"The markdown body contains instructions the agent follows. Structure it for clarity:",{"type":44,"tag":120,"props":709,"children":711},{"id":710},"recommended-sections",[712],{"type":50,"value":713},"Recommended Sections",{"type":44,"tag":715,"props":716,"children":717},"ol",{},[718,729,739,749,759,769,779],{"type":44,"tag":506,"props":719,"children":720},{},[721,727],{"type":44,"tag":722,"props":723,"children":724},"strong",{},[725],{"type":50,"value":726},"Overview",{"type":50,"value":728}," - Brief explanation of the skill's purpose",{"type":44,"tag":506,"props":730,"children":731},{},[732,737],{"type":44,"tag":722,"props":733,"children":734},{},[735],{"type":50,"value":736},"Process",{"type":50,"value":738}," - Step-by-step workflow (use checkboxes for multi-step processes)",{"type":44,"tag":506,"props":740,"children":741},{},[742,747],{"type":44,"tag":722,"props":743,"children":744},{},[745],{"type":50,"value":746},"Quick Reference",{"type":50,"value":748}," - Common patterns and syntax",{"type":44,"tag":506,"props":750,"children":751},{},[752,757],{"type":44,"tag":722,"props":753,"children":754},{},[755],{"type":50,"value":756},"Security",{"type":50,"value":758}," - Risks, mitigations, and validation (if the skill touches anything security-sensitive)",{"type":44,"tag":506,"props":760,"children":761},{},[762,767],{"type":44,"tag":722,"props":763,"children":764},{},[765],{"type":50,"value":766},"Reference Files",{"type":50,"value":768}," - Links to detailed documentation",{"type":44,"tag":506,"props":770,"children":771},{},[772,777],{"type":44,"tag":722,"props":773,"children":774},{},[775],{"type":50,"value":776},"Key Rules",{"type":50,"value":778}," - Important guidelines organized by topic",{"type":44,"tag":506,"props":780,"children":781},{},[782,787],{"type":44,"tag":722,"props":783,"children":784},{},[785],{"type":50,"value":786},"Ground Rules",{"type":50,"value":788}," - Critical do's and don'ts",{"type":44,"tag":120,"props":790,"children":792},{"id":791},"example-structure",[793],{"type":50,"value":794},"Example Structure",{"type":44,"tag":102,"props":796,"children":800},{"className":797,"code":798,"language":799,"meta":110,"style":110},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Skill Title\n\nBrief overview of what this skill helps with.\n\n## Process\n\nFollow this process when working on [task]:\n\n- [ ] Step 1: Research and understand requirements\n- [ ] Step 2: Implement the solution\n- [ ] Step 3: Validate the result\n\n## Quick Reference\n\n### Common Pattern\n\n\\`\\`\\`graphql\ntype Example {\n  id: ID!\n  name: String\n}\n\\`\\`\\`\n\n## Security\n\n> **Risk: [brief description of what can go wrong].**\n> [What the user MUST do to prevent it.]\n\n- ALWAYS [secure default behavior]\n- NEVER [dangerous configuration] in production\n\n## Reference Files\n\n- [Topic A](references\u002Ftopic-a.md) - Detailed guide for topic A\n- [Topic B](references\u002Ftopic-b.md) - Detailed guide for topic B\n\n## Key Rules\n\n### Category One\n\n- Rule about this category\n- Another rule\n\n### Category Two\n\n- Rule about this category\n\n## Ground Rules\n\n- ALWAYS do this important thing\n- NEVER do this problematic thing\n- PREFER this approach over that approach\n","markdown",[801],{"type":44,"tag":93,"props":802,"children":803},{"__ignoreMap":110},[804,817,824,833,840,853,860,887,894,907,919,931,938,951,959,973,981,990,999,1008,1017,1026,1035,1043,1056,1064,1091,1104,1112,1125,1138,1146,1159,1167,1205,1240,1248,1261,1269,1282,1290,1303,1316,1324,1337,1345,1357,1365,1378,1386,1399,1412],{"type":44,"tag":136,"props":805,"children":806},{"class":138,"line":139},[807,812],{"type":44,"tag":136,"props":808,"children":809},{"style":159},[810],{"type":50,"value":811},"# ",{"type":44,"tag":136,"props":813,"children":814},{"style":143},[815],{"type":50,"value":816},"Skill Title\n",{"type":44,"tag":136,"props":818,"children":819},{"class":138,"line":149},[820],{"type":44,"tag":136,"props":821,"children":822},{"emptyLinePlaceholder":669},[823],{"type":50,"value":672},{"type":44,"tag":136,"props":825,"children":826},{"class":138,"line":171},[827],{"type":44,"tag":136,"props":828,"children":830},{"style":829},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[831],{"type":50,"value":832},"Brief overview of what this skill helps with.\n",{"type":44,"tag":136,"props":834,"children":835},{"class":138,"line":190},[836],{"type":44,"tag":136,"props":837,"children":838},{"emptyLinePlaceholder":669},[839],{"type":50,"value":672},{"type":44,"tag":136,"props":841,"children":842},{"class":138,"line":199},[843,848],{"type":44,"tag":136,"props":844,"children":845},{"style":159},[846],{"type":50,"value":847},"## ",{"type":44,"tag":136,"props":849,"children":850},{"style":143},[851],{"type":50,"value":852},"Process\n",{"type":44,"tag":136,"props":854,"children":855},{"class":138,"line":208},[856],{"type":44,"tag":136,"props":857,"children":858},{"emptyLinePlaceholder":669},[859],{"type":50,"value":672},{"type":44,"tag":136,"props":861,"children":862},{"class":138,"line":226},[863,868,873,878,883],{"type":44,"tag":136,"props":864,"children":865},{"style":829},[866],{"type":50,"value":867},"Follow this process when working on ",{"type":44,"tag":136,"props":869,"children":870},{"style":159},[871],{"type":50,"value":872},"[",{"type":44,"tag":136,"props":874,"children":875},{"style":165},[876],{"type":50,"value":877},"task",{"type":44,"tag":136,"props":879,"children":880},{"style":159},[881],{"type":50,"value":882},"]",{"type":44,"tag":136,"props":884,"children":885},{"style":829},[886],{"type":50,"value":255},{"type":44,"tag":136,"props":888,"children":889},{"class":138,"line":244},[890],{"type":44,"tag":136,"props":891,"children":892},{"emptyLinePlaceholder":669},[893],{"type":50,"value":672},{"type":44,"tag":136,"props":895,"children":896},{"class":138,"line":258},[897,902],{"type":44,"tag":136,"props":898,"children":899},{"style":159},[900],{"type":50,"value":901},"-",{"type":44,"tag":136,"props":903,"children":904},{"style":829},[905],{"type":50,"value":906}," [ ] Step 1: Research and understand requirements\n",{"type":44,"tag":136,"props":908,"children":909},{"class":138,"line":276},[910,914],{"type":44,"tag":136,"props":911,"children":912},{"style":159},[913],{"type":50,"value":901},{"type":44,"tag":136,"props":915,"children":916},{"style":829},[917],{"type":50,"value":918}," [ ] Step 2: Implement the solution\n",{"type":44,"tag":136,"props":920,"children":921},{"class":138,"line":25},[922,926],{"type":44,"tag":136,"props":923,"children":924},{"style":159},[925],{"type":50,"value":901},{"type":44,"tag":136,"props":927,"children":928},{"style":829},[929],{"type":50,"value":930}," [ ] Step 3: Validate the result\n",{"type":44,"tag":136,"props":932,"children":933},{"class":138,"line":321},[934],{"type":44,"tag":136,"props":935,"children":936},{"emptyLinePlaceholder":669},[937],{"type":50,"value":672},{"type":44,"tag":136,"props":939,"children":941},{"class":138,"line":940},13,[942,946],{"type":44,"tag":136,"props":943,"children":944},{"style":159},[945],{"type":50,"value":847},{"type":44,"tag":136,"props":947,"children":948},{"style":143},[949],{"type":50,"value":950},"Quick Reference\n",{"type":44,"tag":136,"props":952,"children":954},{"class":138,"line":953},14,[955],{"type":44,"tag":136,"props":956,"children":957},{"emptyLinePlaceholder":669},[958],{"type":50,"value":672},{"type":44,"tag":136,"props":960,"children":962},{"class":138,"line":961},15,[963,968],{"type":44,"tag":136,"props":964,"children":965},{"style":159},[966],{"type":50,"value":967},"### ",{"type":44,"tag":136,"props":969,"children":970},{"style":143},[971],{"type":50,"value":972},"Common Pattern\n",{"type":44,"tag":136,"props":974,"children":976},{"class":138,"line":975},16,[977],{"type":44,"tag":136,"props":978,"children":979},{"emptyLinePlaceholder":669},[980],{"type":50,"value":672},{"type":44,"tag":136,"props":982,"children":984},{"class":138,"line":983},17,[985],{"type":44,"tag":136,"props":986,"children":987},{"style":829},[988],{"type":50,"value":989},"\\`\\`\\`graphql\n",{"type":44,"tag":136,"props":991,"children":993},{"class":138,"line":992},18,[994],{"type":44,"tag":136,"props":995,"children":996},{"style":829},[997],{"type":50,"value":998},"type Example {\n",{"type":44,"tag":136,"props":1000,"children":1002},{"class":138,"line":1001},19,[1003],{"type":44,"tag":136,"props":1004,"children":1005},{"style":829},[1006],{"type":50,"value":1007},"  id: ID!\n",{"type":44,"tag":136,"props":1009,"children":1011},{"class":138,"line":1010},20,[1012],{"type":44,"tag":136,"props":1013,"children":1014},{"style":829},[1015],{"type":50,"value":1016},"  name: String\n",{"type":44,"tag":136,"props":1018,"children":1020},{"class":138,"line":1019},21,[1021],{"type":44,"tag":136,"props":1022,"children":1023},{"style":829},[1024],{"type":50,"value":1025},"}\n",{"type":44,"tag":136,"props":1027,"children":1029},{"class":138,"line":1028},22,[1030],{"type":44,"tag":136,"props":1031,"children":1032},{"style":829},[1033],{"type":50,"value":1034},"\\`\\`\\`\n",{"type":44,"tag":136,"props":1036,"children":1038},{"class":138,"line":1037},23,[1039],{"type":44,"tag":136,"props":1040,"children":1041},{"emptyLinePlaceholder":669},[1042],{"type":50,"value":672},{"type":44,"tag":136,"props":1044,"children":1046},{"class":138,"line":1045},24,[1047,1051],{"type":44,"tag":136,"props":1048,"children":1049},{"style":159},[1050],{"type":50,"value":847},{"type":44,"tag":136,"props":1052,"children":1053},{"style":143},[1054],{"type":50,"value":1055},"Security\n",{"type":44,"tag":136,"props":1057,"children":1059},{"class":138,"line":1058},25,[1060],{"type":44,"tag":136,"props":1061,"children":1062},{"emptyLinePlaceholder":669},[1063],{"type":50,"value":672},{"type":44,"tag":136,"props":1065,"children":1067},{"class":138,"line":1066},26,[1068,1074,1080,1086],{"type":44,"tag":136,"props":1069,"children":1071},{"style":1070},"--shiki-light:#FF5370;--shiki-light-font-style:italic;--shiki-default:#FF9CAC;--shiki-default-font-style:italic;--shiki-dark:#FF9CAC;--shiki-dark-font-style:italic",[1072],{"type":50,"value":1073},">",{"type":44,"tag":136,"props":1075,"children":1077},{"style":1076},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[1078],{"type":50,"value":1079}," **",{"type":44,"tag":136,"props":1081,"children":1083},{"style":1082},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[1084],{"type":50,"value":1085},"Risk: [brief description of what can go wrong].",{"type":44,"tag":136,"props":1087,"children":1088},{"style":1076},[1089],{"type":50,"value":1090},"**\n",{"type":44,"tag":136,"props":1092,"children":1094},{"class":138,"line":1093},27,[1095,1099],{"type":44,"tag":136,"props":1096,"children":1097},{"style":1070},[1098],{"type":50,"value":1073},{"type":44,"tag":136,"props":1100,"children":1101},{"style":184},[1102],{"type":50,"value":1103}," [What the user MUST do to prevent it.]\n",{"type":44,"tag":136,"props":1105,"children":1107},{"class":138,"line":1106},28,[1108],{"type":44,"tag":136,"props":1109,"children":1110},{"emptyLinePlaceholder":669},[1111],{"type":50,"value":672},{"type":44,"tag":136,"props":1113,"children":1115},{"class":138,"line":1114},29,[1116,1120],{"type":44,"tag":136,"props":1117,"children":1118},{"style":159},[1119],{"type":50,"value":901},{"type":44,"tag":136,"props":1121,"children":1122},{"style":829},[1123],{"type":50,"value":1124}," ALWAYS [secure default behavior]\n",{"type":44,"tag":136,"props":1126,"children":1128},{"class":138,"line":1127},30,[1129,1133],{"type":44,"tag":136,"props":1130,"children":1131},{"style":159},[1132],{"type":50,"value":901},{"type":44,"tag":136,"props":1134,"children":1135},{"style":829},[1136],{"type":50,"value":1137}," NEVER [dangerous configuration] in production\n",{"type":44,"tag":136,"props":1139,"children":1141},{"class":138,"line":1140},31,[1142],{"type":44,"tag":136,"props":1143,"children":1144},{"emptyLinePlaceholder":669},[1145],{"type":50,"value":672},{"type":44,"tag":136,"props":1147,"children":1149},{"class":138,"line":1148},32,[1150,1154],{"type":44,"tag":136,"props":1151,"children":1152},{"style":159},[1153],{"type":50,"value":847},{"type":44,"tag":136,"props":1155,"children":1156},{"style":143},[1157],{"type":50,"value":1158},"Reference Files\n",{"type":44,"tag":136,"props":1160,"children":1162},{"class":138,"line":1161},33,[1163],{"type":44,"tag":136,"props":1164,"children":1165},{"emptyLinePlaceholder":669},[1166],{"type":50,"value":672},{"type":44,"tag":136,"props":1168,"children":1170},{"class":138,"line":1169},34,[1171,1175,1180,1185,1190,1196,1200],{"type":44,"tag":136,"props":1172,"children":1173},{"style":159},[1174],{"type":50,"value":901},{"type":44,"tag":136,"props":1176,"children":1177},{"style":159},[1178],{"type":50,"value":1179}," [",{"type":44,"tag":136,"props":1181,"children":1182},{"style":165},[1183],{"type":50,"value":1184},"Topic A",{"type":44,"tag":136,"props":1186,"children":1187},{"style":159},[1188],{"type":50,"value":1189},"](",{"type":44,"tag":136,"props":1191,"children":1193},{"style":1192},"--shiki-light:#E53935;--shiki-light-text-decoration:underline;--shiki-default:#F07178;--shiki-default-text-decoration:underline;--shiki-dark:#F07178;--shiki-dark-text-decoration:underline",[1194],{"type":50,"value":1195},"references\u002Ftopic-a.md",{"type":44,"tag":136,"props":1197,"children":1198},{"style":159},[1199],{"type":50,"value":528},{"type":44,"tag":136,"props":1201,"children":1202},{"style":829},[1203],{"type":50,"value":1204}," - Detailed guide for topic A\n",{"type":44,"tag":136,"props":1206,"children":1208},{"class":138,"line":1207},35,[1209,1213,1217,1222,1226,1231,1235],{"type":44,"tag":136,"props":1210,"children":1211},{"style":159},[1212],{"type":50,"value":901},{"type":44,"tag":136,"props":1214,"children":1215},{"style":159},[1216],{"type":50,"value":1179},{"type":44,"tag":136,"props":1218,"children":1219},{"style":165},[1220],{"type":50,"value":1221},"Topic B",{"type":44,"tag":136,"props":1223,"children":1224},{"style":159},[1225],{"type":50,"value":1189},{"type":44,"tag":136,"props":1227,"children":1228},{"style":1192},[1229],{"type":50,"value":1230},"references\u002Ftopic-b.md",{"type":44,"tag":136,"props":1232,"children":1233},{"style":159},[1234],{"type":50,"value":528},{"type":44,"tag":136,"props":1236,"children":1237},{"style":829},[1238],{"type":50,"value":1239}," - Detailed guide for topic B\n",{"type":44,"tag":136,"props":1241,"children":1243},{"class":138,"line":1242},36,[1244],{"type":44,"tag":136,"props":1245,"children":1246},{"emptyLinePlaceholder":669},[1247],{"type":50,"value":672},{"type":44,"tag":136,"props":1249,"children":1251},{"class":138,"line":1250},37,[1252,1256],{"type":44,"tag":136,"props":1253,"children":1254},{"style":159},[1255],{"type":50,"value":847},{"type":44,"tag":136,"props":1257,"children":1258},{"style":143},[1259],{"type":50,"value":1260},"Key Rules\n",{"type":44,"tag":136,"props":1262,"children":1264},{"class":138,"line":1263},38,[1265],{"type":44,"tag":136,"props":1266,"children":1267},{"emptyLinePlaceholder":669},[1268],{"type":50,"value":672},{"type":44,"tag":136,"props":1270,"children":1272},{"class":138,"line":1271},39,[1273,1277],{"type":44,"tag":136,"props":1274,"children":1275},{"style":159},[1276],{"type":50,"value":967},{"type":44,"tag":136,"props":1278,"children":1279},{"style":143},[1280],{"type":50,"value":1281},"Category One\n",{"type":44,"tag":136,"props":1283,"children":1285},{"class":138,"line":1284},40,[1286],{"type":44,"tag":136,"props":1287,"children":1288},{"emptyLinePlaceholder":669},[1289],{"type":50,"value":672},{"type":44,"tag":136,"props":1291,"children":1293},{"class":138,"line":1292},41,[1294,1298],{"type":44,"tag":136,"props":1295,"children":1296},{"style":159},[1297],{"type":50,"value":901},{"type":44,"tag":136,"props":1299,"children":1300},{"style":829},[1301],{"type":50,"value":1302}," Rule about this category\n",{"type":44,"tag":136,"props":1304,"children":1306},{"class":138,"line":1305},42,[1307,1311],{"type":44,"tag":136,"props":1308,"children":1309},{"style":159},[1310],{"type":50,"value":901},{"type":44,"tag":136,"props":1312,"children":1313},{"style":829},[1314],{"type":50,"value":1315}," Another rule\n",{"type":44,"tag":136,"props":1317,"children":1319},{"class":138,"line":1318},43,[1320],{"type":44,"tag":136,"props":1321,"children":1322},{"emptyLinePlaceholder":669},[1323],{"type":50,"value":672},{"type":44,"tag":136,"props":1325,"children":1327},{"class":138,"line":1326},44,[1328,1332],{"type":44,"tag":136,"props":1329,"children":1330},{"style":159},[1331],{"type":50,"value":967},{"type":44,"tag":136,"props":1333,"children":1334},{"style":143},[1335],{"type":50,"value":1336},"Category Two\n",{"type":44,"tag":136,"props":1338,"children":1340},{"class":138,"line":1339},45,[1341],{"type":44,"tag":136,"props":1342,"children":1343},{"emptyLinePlaceholder":669},[1344],{"type":50,"value":672},{"type":44,"tag":136,"props":1346,"children":1348},{"class":138,"line":1347},46,[1349,1353],{"type":44,"tag":136,"props":1350,"children":1351},{"style":159},[1352],{"type":50,"value":901},{"type":44,"tag":136,"props":1354,"children":1355},{"style":829},[1356],{"type":50,"value":1302},{"type":44,"tag":136,"props":1358,"children":1360},{"class":138,"line":1359},47,[1361],{"type":44,"tag":136,"props":1362,"children":1363},{"emptyLinePlaceholder":669},[1364],{"type":50,"value":672},{"type":44,"tag":136,"props":1366,"children":1368},{"class":138,"line":1367},48,[1369,1373],{"type":44,"tag":136,"props":1370,"children":1371},{"style":159},[1372],{"type":50,"value":847},{"type":44,"tag":136,"props":1374,"children":1375},{"style":143},[1376],{"type":50,"value":1377},"Ground Rules\n",{"type":44,"tag":136,"props":1379,"children":1381},{"class":138,"line":1380},49,[1382],{"type":44,"tag":136,"props":1383,"children":1384},{"emptyLinePlaceholder":669},[1385],{"type":50,"value":672},{"type":44,"tag":136,"props":1387,"children":1389},{"class":138,"line":1388},50,[1390,1394],{"type":44,"tag":136,"props":1391,"children":1392},{"style":159},[1393],{"type":50,"value":901},{"type":44,"tag":136,"props":1395,"children":1396},{"style":829},[1397],{"type":50,"value":1398}," ALWAYS do this important thing\n",{"type":44,"tag":136,"props":1400,"children":1402},{"class":138,"line":1401},51,[1403,1407],{"type":44,"tag":136,"props":1404,"children":1405},{"style":159},[1406],{"type":50,"value":901},{"type":44,"tag":136,"props":1408,"children":1409},{"style":829},[1410],{"type":50,"value":1411}," NEVER do this problematic thing\n",{"type":44,"tag":136,"props":1413,"children":1415},{"class":138,"line":1414},52,[1416,1420],{"type":44,"tag":136,"props":1417,"children":1418},{"style":159},[1419],{"type":50,"value":901},{"type":44,"tag":136,"props":1421,"children":1422},{"style":829},[1423],{"type":50,"value":1424}," PREFER this approach over that approach\n",{"type":44,"tag":70,"props":1426,"children":1428},{"id":1427},"security-sensitive-content",[1429],{"type":50,"value":1430},"Security-Sensitive Content",{"type":44,"tag":53,"props":1432,"children":1433},{},[1434],{"type":50,"value":1435},"When a skill generates configuration, code, or guidance that could cause security issues if misused, the skill MUST make those risks explicit and visible to the LLM. An LLM cannot infer security implications from context alone — it needs clearly labeled signals.",{"type":44,"tag":120,"props":1437,"children":1439},{"id":1438},"when-does-a-skill-need-security-guidance",[1440],{"type":50,"value":1441},"When does a skill need security guidance?",{"type":44,"tag":53,"props":1443,"children":1444},{},[1445],{"type":50,"value":1446},"If any of these apply, the skill is security-sensitive:",{"type":44,"tag":502,"props":1448,"children":1449},{},[1450,1455,1460,1465,1470],{"type":44,"tag":506,"props":1451,"children":1452},{},[1453],{"type":50,"value":1454},"Generates config that controls access to data (caching, auth, CORS, permissions)",{"type":44,"tag":506,"props":1456,"children":1457},{},[1458],{"type":50,"value":1459},"Handles secrets, credentials, or tokens",{"type":44,"tag":506,"props":1461,"children":1462},{},[1463],{"type":50,"value":1464},"Produces code that runs with elevated privileges",{"type":44,"tag":506,"props":1466,"children":1467},{},[1468],{"type":50,"value":1469},"Controls what data is shared, public, or exposed to users",{"type":44,"tag":506,"props":1471,"children":1472},{},[1473],{"type":50,"value":1474},"Configures network bindings, endpoints, or external access",{"type":44,"tag":120,"props":1476,"children":1478},{"id":1477},"how-to-surface-security-in-a-skill",[1479],{"type":50,"value":1480},"How to surface security in a skill",{"type":44,"tag":715,"props":1482,"children":1483},{},[1484,1502,1622,1639,1649],{"type":44,"tag":506,"props":1485,"children":1486},{},[1487,1492,1494,1500],{"type":44,"tag":722,"props":1488,"children":1489},{},[1490],{"type":50,"value":1491},"Dedicated Security section",{"type":50,"value":1493}," in SKILL.md or a reference file, labeled ",{"type":44,"tag":93,"props":1495,"children":1497},{"className":1496},[],[1498],{"type":50,"value":1499},"## Security",{"type":50,"value":1501},". Not \"Private data\" or \"Customization\" — use the word \"Security\" so the LLM recognizes the category.",{"type":44,"tag":506,"props":1503,"children":1504},{},[1505,1510,1512],{"type":44,"tag":722,"props":1506,"children":1507},{},[1508],{"type":50,"value":1509},"Explicit warnings at the point of risk",{"type":50,"value":1511}," — place security guidance next to the config or code that creates the risk, not in a separate file the LLM may not load:",{"type":44,"tag":102,"props":1513,"children":1515},{"className":797,"code":1514,"language":799,"meta":110,"style":110},"### Response caching scope\n\n> **Security: data leakage risk.** All cached data is PUBLIC by default.\n> User-specific fields MUST use `scope: PRIVATE` with a `private_id`\n> configured, or they will be shared across all users.\n",[1516],{"type":44,"tag":93,"props":1517,"children":1518},{"__ignoreMap":110},[1519,1531,1538,1564,1610],{"type":44,"tag":136,"props":1520,"children":1521},{"class":138,"line":139},[1522,1526],{"type":44,"tag":136,"props":1523,"children":1524},{"style":159},[1525],{"type":50,"value":967},{"type":44,"tag":136,"props":1527,"children":1528},{"style":143},[1529],{"type":50,"value":1530},"Response caching scope\n",{"type":44,"tag":136,"props":1532,"children":1533},{"class":138,"line":149},[1534],{"type":44,"tag":136,"props":1535,"children":1536},{"emptyLinePlaceholder":669},[1537],{"type":50,"value":672},{"type":44,"tag":136,"props":1539,"children":1540},{"class":138,"line":171},[1541,1545,1549,1554,1559],{"type":44,"tag":136,"props":1542,"children":1543},{"style":1070},[1544],{"type":50,"value":1073},{"type":44,"tag":136,"props":1546,"children":1547},{"style":1076},[1548],{"type":50,"value":1079},{"type":44,"tag":136,"props":1550,"children":1551},{"style":1082},[1552],{"type":50,"value":1553},"Security: data leakage risk.",{"type":44,"tag":136,"props":1555,"children":1556},{"style":1076},[1557],{"type":50,"value":1558},"**",{"type":44,"tag":136,"props":1560,"children":1561},{"style":184},[1562],{"type":50,"value":1563}," All cached data is PUBLIC by default.\n",{"type":44,"tag":136,"props":1565,"children":1566},{"class":138,"line":190},[1567,1571,1576,1581,1587,1591,1596,1600,1605],{"type":44,"tag":136,"props":1568,"children":1569},{"style":1070},[1570],{"type":50,"value":1073},{"type":44,"tag":136,"props":1572,"children":1573},{"style":184},[1574],{"type":50,"value":1575}," User-specific fields MUST use ",{"type":44,"tag":136,"props":1577,"children":1578},{"style":184},[1579],{"type":50,"value":1580},"`",{"type":44,"tag":136,"props":1582,"children":1584},{"style":1583},"--shiki-light:#91B859;--shiki-light-font-style:italic;--shiki-default:#C3E88D;--shiki-default-font-style:italic;--shiki-dark:#C3E88D;--shiki-dark-font-style:italic",[1585],{"type":50,"value":1586},"scope: PRIVATE",{"type":44,"tag":136,"props":1588,"children":1589},{"style":184},[1590],{"type":50,"value":1580},{"type":44,"tag":136,"props":1592,"children":1593},{"style":184},[1594],{"type":50,"value":1595}," with a ",{"type":44,"tag":136,"props":1597,"children":1598},{"style":184},[1599],{"type":50,"value":1580},{"type":44,"tag":136,"props":1601,"children":1602},{"style":1583},[1603],{"type":50,"value":1604},"private_id",{"type":44,"tag":136,"props":1606,"children":1607},{"style":184},[1608],{"type":50,"value":1609},"`\n",{"type":44,"tag":136,"props":1611,"children":1612},{"class":138,"line":199},[1613,1617],{"type":44,"tag":136,"props":1614,"children":1615},{"style":1070},[1616],{"type":50,"value":1073},{"type":44,"tag":136,"props":1618,"children":1619},{"style":184},[1620],{"type":50,"value":1621}," configured, or they will be shared across all users.\n",{"type":44,"tag":506,"props":1623,"children":1624},{},[1625,1630,1632,1637],{"type":44,"tag":722,"props":1626,"children":1627},{},[1628],{"type":50,"value":1629},"Validation checklist items",{"type":50,"value":1631}," — every security-sensitive feature must have corresponding checks in the validation checklist. Group them under a ",{"type":44,"tag":93,"props":1633,"children":1635},{"className":1634},[],[1636],{"type":50,"value":1499},{"type":50,"value":1638}," heading.",{"type":44,"tag":506,"props":1640,"children":1641},{},[1642,1647],{"type":44,"tag":722,"props":1643,"children":1644},{},[1645],{"type":50,"value":1646},"Ground rules",{"type":50,"value":1648}," — add ALWAYS\u002FNEVER rules for security-critical behavior. These are the strongest signal to the LLM.",{"type":44,"tag":506,"props":1650,"children":1651},{},[1652,1657],{"type":44,"tag":722,"props":1653,"children":1654},{},[1655],{"type":50,"value":1656},"Require the data model",{"type":50,"value":1658}," — if correct security configuration depends on understanding the user's data model (e.g., which fields are user-specific), the skill must instruct the LLM to ask the user before generating config. Do not let the LLM guess.",{"type":44,"tag":120,"props":1660,"children":1662},{"id":1661},"anti-patterns",[1663],{"type":50,"value":1664},"Anti-patterns",{"type":44,"tag":502,"props":1666,"children":1667},{},[1668,1673,1678,1683],{"type":44,"tag":506,"props":1669,"children":1670},{},[1671],{"type":50,"value":1672},"Describing a security-sensitive default (like \"public by default\") without labeling it as a security concern",{"type":44,"tag":506,"props":1674,"children":1675},{},[1676],{"type":50,"value":1677},"Placing security guidance only in reference files that load on demand — the SKILL.md itself must contain the key warnings",{"type":44,"tag":506,"props":1679,"children":1680},{},[1681],{"type":50,"value":1682},"Using soft language (\"you may want to consider\") for hard security requirements — use \"MUST\" and \"NEVER\"",{"type":44,"tag":506,"props":1684,"children":1685},{},[1686],{"type":50,"value":1687},"Assuming the LLM understands which fields in a schema are private — require explicit user input",{"type":44,"tag":70,"props":1689,"children":1691},{"id":1690},"progressive-disclosure",[1692],{"type":50,"value":1693},"Progressive Disclosure",{"type":44,"tag":53,"props":1695,"children":1696},{},[1697],{"type":50,"value":1698},"Structure skills to minimize context usage:",{"type":44,"tag":715,"props":1700,"children":1701},{},[1702,1726,1743],{"type":44,"tag":506,"props":1703,"children":1704},{},[1705,1710,1712,1717,1719,1724],{"type":44,"tag":722,"props":1706,"children":1707},{},[1708],{"type":50,"value":1709},"Metadata",{"type":50,"value":1711}," (~100 tokens): ",{"type":44,"tag":93,"props":1713,"children":1715},{"className":1714},[],[1716],{"type":50,"value":156},{"type":50,"value":1718}," and ",{"type":44,"tag":93,"props":1720,"children":1722},{"className":1721},[],[1723],{"type":50,"value":177},{"type":50,"value":1725}," load at startup for all skills",{"type":44,"tag":506,"props":1727,"children":1728},{},[1729,1734,1736,1741],{"type":44,"tag":722,"props":1730,"children":1731},{},[1732],{"type":50,"value":1733},"Instructions",{"type":50,"value":1735}," (\u003C 5000 tokens): Full ",{"type":44,"tag":93,"props":1737,"children":1739},{"className":1738},[],[1740],{"type":50,"value":98},{"type":50,"value":1742}," loads when skill activates",{"type":44,"tag":506,"props":1744,"children":1745},{},[1746,1751,1753,1759],{"type":44,"tag":722,"props":1747,"children":1748},{},[1749],{"type":50,"value":1750},"References",{"type":50,"value":1752}," (as needed): Files in ",{"type":44,"tag":93,"props":1754,"children":1756},{"className":1755},[],[1757],{"type":50,"value":1758},"references\u002F",{"type":50,"value":1760}," load only when required",{"type":44,"tag":53,"props":1762,"children":1763},{},[1764,1766,1771],{"type":50,"value":1765},"Keep ",{"type":44,"tag":93,"props":1767,"children":1769},{"className":1768},[],[1770],{"type":50,"value":98},{"type":50,"value":1772}," under 500 lines. Move detailed documentation to reference files.",{"type":44,"tag":70,"props":1774,"children":1776},{"id":1775},"reference-files",[1777],{"type":50,"value":766},{"type":44,"tag":53,"props":1779,"children":1780},{},[1781,1783,1788],{"type":50,"value":1782},"Use ",{"type":44,"tag":93,"props":1784,"children":1786},{"className":1785},[],[1787],{"type":50,"value":1758},{"type":50,"value":1789}," for detailed documentation:",{"type":44,"tag":102,"props":1791,"children":1794},{"className":1792,"code":1793,"language":50},[105],"references\u002F\n├── setup.md          # Installation and configuration\n├── patterns.md       # Common patterns and examples\n├── troubleshooting.md # Error solutions\n└── api.md            # API reference\n",[1795],{"type":44,"tag":93,"props":1796,"children":1797},{"__ignoreMap":110},[1798],{"type":50,"value":1793},{"type":44,"tag":53,"props":1800,"children":1801},{},[1802],{"type":50,"value":1803},"Reference files should be:",{"type":44,"tag":502,"props":1805,"children":1806},{},[1807,1812,1817],{"type":44,"tag":506,"props":1808,"children":1809},{},[1810],{"type":50,"value":1811},"Focused on a single topic",{"type":44,"tag":506,"props":1813,"children":1814},{},[1815],{"type":50,"value":1816},"Self-contained (readable without other files)",{"type":44,"tag":506,"props":1818,"children":1819},{},[1820],{"type":50,"value":1821},"Under 300 lines each",{"type":44,"tag":53,"props":1823,"children":1824},{},[1825,1827,1832],{"type":50,"value":1826},"Link to references from ",{"type":44,"tag":93,"props":1828,"children":1830},{"className":1829},[],[1831],{"type":50,"value":98},{"type":50,"value":162},{"type":44,"tag":102,"props":1834,"children":1836},{"className":797,"code":1835,"language":799,"meta":110,"style":110},"## Reference Files\n\n- [Setup](references\u002Fsetup.md) - Installation and configuration\n- [Patterns](references\u002Fpatterns.md) - Common patterns and examples\n",[1837],{"type":44,"tag":93,"props":1838,"children":1839},{"__ignoreMap":110},[1840,1851,1858,1892],{"type":44,"tag":136,"props":1841,"children":1842},{"class":138,"line":139},[1843,1847],{"type":44,"tag":136,"props":1844,"children":1845},{"style":159},[1846],{"type":50,"value":847},{"type":44,"tag":136,"props":1848,"children":1849},{"style":143},[1850],{"type":50,"value":1158},{"type":44,"tag":136,"props":1852,"children":1853},{"class":138,"line":149},[1854],{"type":44,"tag":136,"props":1855,"children":1856},{"emptyLinePlaceholder":669},[1857],{"type":50,"value":672},{"type":44,"tag":136,"props":1859,"children":1860},{"class":138,"line":171},[1861,1865,1869,1874,1878,1883,1887],{"type":44,"tag":136,"props":1862,"children":1863},{"style":159},[1864],{"type":50,"value":901},{"type":44,"tag":136,"props":1866,"children":1867},{"style":159},[1868],{"type":50,"value":1179},{"type":44,"tag":136,"props":1870,"children":1871},{"style":165},[1872],{"type":50,"value":1873},"Setup",{"type":44,"tag":136,"props":1875,"children":1876},{"style":159},[1877],{"type":50,"value":1189},{"type":44,"tag":136,"props":1879,"children":1880},{"style":1192},[1881],{"type":50,"value":1882},"references\u002Fsetup.md",{"type":44,"tag":136,"props":1884,"children":1885},{"style":159},[1886],{"type":50,"value":528},{"type":44,"tag":136,"props":1888,"children":1889},{"style":829},[1890],{"type":50,"value":1891}," - Installation and configuration\n",{"type":44,"tag":136,"props":1893,"children":1894},{"class":138,"line":190},[1895,1899,1903,1908,1912,1917,1921],{"type":44,"tag":136,"props":1896,"children":1897},{"style":159},[1898],{"type":50,"value":901},{"type":44,"tag":136,"props":1900,"children":1901},{"style":159},[1902],{"type":50,"value":1179},{"type":44,"tag":136,"props":1904,"children":1905},{"style":165},[1906],{"type":50,"value":1907},"Patterns",{"type":44,"tag":136,"props":1909,"children":1910},{"style":159},[1911],{"type":50,"value":1189},{"type":44,"tag":136,"props":1913,"children":1914},{"style":1192},[1915],{"type":50,"value":1916},"references\u002Fpatterns.md",{"type":44,"tag":136,"props":1918,"children":1919},{"style":159},[1920],{"type":50,"value":528},{"type":44,"tag":136,"props":1922,"children":1923},{"style":829},[1924],{"type":50,"value":1925}," - Common patterns and examples\n",{"type":44,"tag":70,"props":1927,"children":1929},{"id":1928},"scripts",[1930],{"type":50,"value":1931},"Scripts",{"type":44,"tag":53,"props":1933,"children":1934},{},[1935,1936,1942],{"type":50,"value":1782},{"type":44,"tag":93,"props":1937,"children":1939},{"className":1938},[],[1940],{"type":50,"value":1941},"scripts\u002F",{"type":50,"value":1943}," for executable helpers agents can run:",{"type":44,"tag":102,"props":1945,"children":1948},{"className":1946,"code":1947,"language":50},[105],"scripts\u002F\n├── validate.sh       # Validation commands\n├── setup.py          # Setup automation\n└── check-version.sh  # Version checking\n",[1949],{"type":44,"tag":93,"props":1950,"children":1951},{"__ignoreMap":110},[1952],{"type":50,"value":1947},{"type":44,"tag":53,"props":1954,"children":1955},{},[1956,1958,1963,1965,1971],{"type":50,"value":1957},"Scripts should be self-contained, include error handling, and have a usage comment at the top. Pre-approve them in ",{"type":44,"tag":93,"props":1959,"children":1961},{"className":1960},[],[1962],{"type":50,"value":309},{"type":50,"value":1964}," (e.g., ",{"type":44,"tag":93,"props":1966,"children":1968},{"className":1967},[],[1969],{"type":50,"value":1970},"Bash(.\u002Fscripts\u002Fvalidate.sh:*)",{"type":50,"value":1972},").",{"type":44,"tag":70,"props":1974,"children":1976},{"id":1975},"templates",[1977],{"type":50,"value":1978},"Templates",{"type":44,"tag":53,"props":1980,"children":1981},{},[1982,1983,1989],{"type":50,"value":1782},{"type":44,"tag":93,"props":1984,"children":1986},{"className":1985},[],[1987],{"type":50,"value":1988},"templates\u002F",{"type":50,"value":1990}," for config files, boilerplate, or starter code:",{"type":44,"tag":102,"props":1992,"children":1995},{"className":1993,"code":1994,"language":50},[105],"templates\u002F\n├── config.yaml       # Default configuration\n├── config-v2.yaml    # Version-specific variant\n└── example-app\u002F      # Starter project\n",[1996],{"type":44,"tag":93,"props":1997,"children":1998},{"__ignoreMap":110},[1999],{"type":50,"value":1994},{"type":44,"tag":53,"props":2001,"children":2002},{},[2003],{"type":50,"value":2004},"Templates are copied or adapted by the agent — not executed directly.",{"type":44,"tag":70,"props":2006,"children":2008},{"id":2007},"writing-style",[2009],{"type":50,"value":2010},"Writing Style",{"type":44,"tag":53,"props":2012,"children":2013},{},[2014],{"type":50,"value":2015},"Follow the Apollo Voice for all skill content:",{"type":44,"tag":120,"props":2017,"children":2019},{"id":2018},"tone",[2020],{"type":50,"value":2021},"Tone",{"type":44,"tag":502,"props":2023,"children":2024},{},[2025,2030,2035],{"type":44,"tag":506,"props":2026,"children":2027},{},[2028],{"type":50,"value":2029},"Approachable and helpful",{"type":44,"tag":506,"props":2031,"children":2032},{},[2033],{"type":50,"value":2034},"Opinionated and authoritative (prescribe the \"happy path\")",{"type":44,"tag":506,"props":2036,"children":2037},{},[2038],{"type":50,"value":2039},"Direct and action-oriented",{"type":44,"tag":120,"props":2041,"children":2043},{"id":2042},"language",[2044],{"type":50,"value":2045},"Language",{"type":44,"tag":502,"props":2047,"children":2048},{},[2049,2054,2059,2064],{"type":44,"tag":506,"props":2050,"children":2051},{},[2052],{"type":50,"value":2053},"Use American English",{"type":44,"tag":506,"props":2055,"children":2056},{},[2057],{"type":50,"value":2058},"Keep language simple; avoid idioms",{"type":44,"tag":506,"props":2060,"children":2061},{},[2062],{"type":50,"value":2063},"Use present tense and active voice",{"type":44,"tag":506,"props":2065,"children":2066},{},[2067],{"type":50,"value":2068},"Use imperative verbs for instructions",{"type":44,"tag":120,"props":2070,"children":2072},{"id":2071},"formatting",[2073],{"type":50,"value":2074},"Formatting",{"type":44,"tag":502,"props":2076,"children":2077},{},[2078,2083,2088,2093],{"type":44,"tag":506,"props":2079,"children":2080},{},[2081],{"type":50,"value":2082},"Use sentence casing for headings",{"type":44,"tag":506,"props":2084,"children":2085},{},[2086],{"type":50,"value":2087},"Use code font for symbols, commands, file paths, and URLs",{"type":44,"tag":506,"props":2089,"children":2090},{},[2091],{"type":50,"value":2092},"Use bold for UI elements users click",{"type":44,"tag":506,"props":2094,"children":2095},{},[2096],{"type":50,"value":2097},"Use hyphens (-) for unordered lists",{"type":44,"tag":120,"props":2099,"children":2101},{"id":2100},"avoid",[2102],{"type":50,"value":2103},"Avoid",{"type":44,"tag":502,"props":2105,"children":2106},{},[2107,2112,2117,2122],{"type":44,"tag":506,"props":2108,"children":2109},{},[2110],{"type":50,"value":2111},"\"Simply\", \"just\", \"easy\" (can be condescending)",{"type":44,"tag":506,"props":2113,"children":2114},{},[2115],{"type":50,"value":2116},"Vague phrases like \"click here\"",{"type":44,"tag":506,"props":2118,"children":2119},{},[2120],{"type":50,"value":2121},"Semicolons (use periods instead)",{"type":44,"tag":506,"props":2123,"children":2124},{},[2125],{"type":50,"value":2126},"\"We\" unless clearly referring to Apollo",{"type":44,"tag":70,"props":2128,"children":2130},{"id":2129},"reference-files-1",[2131],{"type":50,"value":766},{"type":44,"tag":53,"props":2133,"children":2134},{},[2135],{"type":50,"value":2136},"For Apollo GraphQL-specific guidance:",{"type":44,"tag":502,"props":2138,"children":2139},{},[2140],{"type":44,"tag":506,"props":2141,"children":2142},{},[2143,2149],{"type":44,"tag":59,"props":2144,"children":2146},{"href":2145},"references\u002Fapollo-skills.md",[2147],{"type":50,"value":2148},"Apollo Skills",{"type":50,"value":2150}," - Patterns and examples for Apollo GraphQL skills",{"type":44,"tag":70,"props":2152,"children":2154},{"id":2153},"versioning",[2155],{"type":50,"value":2156},"Versioning",{"type":44,"tag":53,"props":2158,"children":2159},{},[2160,2162,2168,2170,2176],{"type":50,"value":2161},"Use semantic versioning (",{"type":44,"tag":93,"props":2163,"children":2165},{"className":2164},[],[2166],{"type":50,"value":2167},"\"X.Y.Z\"",{"type":50,"value":2169},") for the ",{"type":44,"tag":93,"props":2171,"children":2173},{"className":2172},[],[2174],{"type":50,"value":2175},"version",{"type":50,"value":2177}," field in metadata:",{"type":44,"tag":102,"props":2179,"children":2181},{"className":128,"code":2180,"language":130,"meta":110,"style":110},"metadata:\n  author: apollographql\n  version: \"1.0.0\"\n",[2182],{"type":44,"tag":93,"props":2183,"children":2184},{"__ignoreMap":110},[2185,2196,2212],{"type":44,"tag":136,"props":2186,"children":2187},{"class":138,"line":139},[2188,2192],{"type":44,"tag":136,"props":2189,"children":2190},{"style":153},[2191],{"type":50,"value":250},{"type":44,"tag":136,"props":2193,"children":2194},{"style":159},[2195],{"type":50,"value":255},{"type":44,"tag":136,"props":2197,"children":2198},{"class":138,"line":149},[2199,2203,2207],{"type":44,"tag":136,"props":2200,"children":2201},{"style":153},[2202],{"type":50,"value":264},{"type":44,"tag":136,"props":2204,"children":2205},{"style":159},[2206],{"type":50,"value":162},{"type":44,"tag":136,"props":2208,"children":2209},{"style":165},[2210],{"type":50,"value":2211}," apollographql\n",{"type":44,"tag":136,"props":2213,"children":2214},{"class":138,"line":171},[2215,2219,2223,2227,2231],{"type":44,"tag":136,"props":2216,"children":2217},{"style":153},[2218],{"type":50,"value":282},{"type":44,"tag":136,"props":2220,"children":2221},{"style":159},[2222],{"type":50,"value":162},{"type":44,"tag":136,"props":2224,"children":2225},{"style":159},[2226],{"type":50,"value":291},{"type":44,"tag":136,"props":2228,"children":2229},{"style":165},[2230],{"type":50,"value":296},{"type":44,"tag":136,"props":2232,"children":2233},{"style":159},[2234],{"type":50,"value":301},{"type":44,"tag":502,"props":2236,"children":2237},{},[2238,2248,2258],{"type":44,"tag":506,"props":2239,"children":2240},{},[2241,2246],{"type":44,"tag":722,"props":2242,"children":2243},{},[2244],{"type":50,"value":2245},"Major (X)",{"type":50,"value":2247},": Breaking changes that alter how the skill behaves or activates (e.g., renamed triggers, removed sections, changed ground rules)",{"type":44,"tag":506,"props":2249,"children":2250},{},[2251,2256],{"type":44,"tag":722,"props":2252,"children":2253},{},[2254],{"type":50,"value":2255},"Minor (Y)",{"type":50,"value":2257},": New content or capabilities that are backward-compatible (e.g., added reference files, new sections, expanded examples)",{"type":44,"tag":506,"props":2259,"children":2260},{},[2261,2266],{"type":44,"tag":722,"props":2262,"children":2263},{},[2264],{"type":50,"value":2265},"Patch (Z)",{"type":50,"value":2267},": Small fixes that don't change behavior (e.g., typo corrections, wording tweaks, formatting fixes)",{"type":44,"tag":53,"props":2269,"children":2270},{},[2271,2273,2279],{"type":50,"value":2272},"Start new skills at ",{"type":44,"tag":93,"props":2274,"children":2276},{"className":2275},[],[2277],{"type":50,"value":2278},"\"1.0.0\"",{"type":50,"value":68},{"type":44,"tag":70,"props":2281,"children":2283},{"id":2282},"checklist-for-new-skills",[2284],{"type":50,"value":2285},"Checklist for New Skills",{"type":44,"tag":53,"props":2287,"children":2288},{},[2289],{"type":50,"value":2290},"Before publishing a skill, verify:",{"type":44,"tag":502,"props":2292,"children":2295},{"className":2293},[2294],"contains-task-list",[2296,2315,2330,2345,2354,2363,2372,2381],{"type":44,"tag":506,"props":2297,"children":2300},{"className":2298},[2299],"task-list-item",[2301,2306,2308,2313],{"type":44,"tag":2302,"props":2303,"children":2305},"input",{"disabled":669,"type":2304},"checkbox",[],{"type":50,"value":2307}," ",{"type":44,"tag":93,"props":2309,"children":2311},{"className":2310},[],[2312],{"type":50,"value":156},{"type":50,"value":2314}," matches directory name and follows naming rules",{"type":44,"tag":506,"props":2316,"children":2318},{"className":2317},[2299],[2319,2322,2323,2328],{"type":44,"tag":2302,"props":2320,"children":2321},{"disabled":669,"type":2304},[],{"type":50,"value":2307},{"type":44,"tag":93,"props":2324,"children":2326},{"className":2325},[],[2327],{"type":50,"value":177},{"type":50,"value":2329}," clearly states what the skill does and when to use it",{"type":44,"tag":506,"props":2331,"children":2333},{"className":2332},[2299],[2334,2337,2338,2343],{"type":44,"tag":2302,"props":2335,"children":2336},{"disabled":669,"type":2304},[],{"type":50,"value":2307},{"type":44,"tag":93,"props":2339,"children":2341},{"className":2340},[],[2342],{"type":50,"value":98},{"type":50,"value":2344}," is under 500 lines",{"type":44,"tag":506,"props":2346,"children":2348},{"className":2347},[2299],[2349,2352],{"type":44,"tag":2302,"props":2350,"children":2351},{"disabled":669,"type":2304},[],{"type":50,"value":2353}," Reference files are focused and under 300 lines each",{"type":44,"tag":506,"props":2355,"children":2357},{"className":2356},[2299],[2358,2361],{"type":44,"tag":2302,"props":2359,"children":2360},{"disabled":669,"type":2304},[],{"type":50,"value":2362}," Instructions are clear and actionable",{"type":44,"tag":506,"props":2364,"children":2366},{"className":2365},[2299],[2367,2370],{"type":44,"tag":2302,"props":2368,"children":2369},{"disabled":669,"type":2304},[],{"type":50,"value":2371}," Code examples are correct and tested",{"type":44,"tag":506,"props":2373,"children":2375},{"className":2374},[2299],[2376,2379],{"type":44,"tag":2302,"props":2377,"children":2378},{"disabled":669,"type":2304},[],{"type":50,"value":2380}," Ground rules use ALWAYS\u002FNEVER\u002FPREFER format",{"type":44,"tag":506,"props":2382,"children":2384},{"className":2383},[2299],[2385,2388],{"type":44,"tag":2302,"props":2386,"children":2387},{"disabled":669,"type":2304},[],{"type":50,"value":2389}," Content follows Apollo Voice guidelines",{"type":44,"tag":70,"props":2391,"children":2393},{"id":2392},"ground-rules",[2394],{"type":50,"value":786},{"type":44,"tag":502,"props":2396,"children":2397},{},[2398,2403,2408,2413,2418,2423,2428,2433,2445,2472,2484,2489,2494,2507],{"type":44,"tag":506,"props":2399,"children":2400},{},[2401],{"type":50,"value":2402},"ALWAYS include trigger conditions in the description (use numbered list)",{"type":44,"tag":506,"props":2404,"children":2405},{},[2406],{"type":50,"value":2407},"ALWAYS use checkboxes for multi-step processes",{"type":44,"tag":506,"props":2409,"children":2410},{},[2411],{"type":50,"value":2412},"ALWAYS link to reference files for detailed documentation",{"type":44,"tag":506,"props":2414,"children":2415},{},[2416],{"type":50,"value":2417},"NEVER exceed 500 lines in SKILL.md",{"type":44,"tag":506,"props":2419,"children":2420},{},[2421],{"type":50,"value":2422},"NEVER use vague descriptions that don't help agents identify when to activate",{"type":44,"tag":506,"props":2424,"children":2425},{},[2426],{"type":50,"value":2427},"PREFER specific examples over abstract explanations",{"type":44,"tag":506,"props":2429,"children":2430},{},[2431],{"type":50,"value":2432},"PREFER opinionated guidance over listing multiple options",{"type":44,"tag":506,"props":2434,"children":2435},{},[2436,2438,2443],{"type":50,"value":2437},"USE ",{"type":44,"tag":93,"props":2439,"children":2441},{"className":2440},[],[2442],{"type":50,"value":309},{"type":50,"value":2444}," to pre-approve tools the skill needs",{"type":44,"tag":506,"props":2446,"children":2447},{},[2448,2450,2455,2457,2462,2464,2470],{"type":50,"value":2449},"NEVER include ",{"type":44,"tag":93,"props":2451,"children":2453},{"className":2452},[],[2454],{"type":50,"value":493},{"type":50,"value":2456}," in ",{"type":44,"tag":93,"props":2458,"children":2460},{"className":2459},[],[2461],{"type":50,"value":309},{"type":50,"value":2463}," as it grants unrestricted network access and enables ",{"type":44,"tag":93,"props":2465,"children":2467},{"className":2466},[],[2468],{"type":50,"value":2469},"curl | sh",{"type":50,"value":2471}," remote code execution patterns",{"type":44,"tag":506,"props":2473,"children":2474},{},[2475,2477,2482],{"type":50,"value":2476},"ALWAYS include a ",{"type":44,"tag":93,"props":2478,"children":2480},{"className":2479},[],[2481],{"type":50,"value":1499},{"type":50,"value":2483}," section when the skill generates config or code that controls access, caching, auth, secrets, or data exposure",{"type":44,"tag":506,"props":2485,"children":2486},{},[2487],{"type":50,"value":2488},"NEVER bury security-critical guidance only in reference files — the key warnings must appear in SKILL.md where the LLM will always see them",{"type":44,"tag":506,"props":2490,"children":2491},{},[2492],{"type":50,"value":2493},"ALWAYS instruct the LLM to ask the user about their data model before generating security-sensitive config (e.g., which fields are user-specific, which data is public)",{"type":44,"tag":506,"props":2495,"children":2496},{},[2497,2499,2505],{"type":50,"value":2498},"USE explicit blockquote warnings (",{"type":44,"tag":93,"props":2500,"children":2502},{"className":2501},[],[2503],{"type":50,"value":2504},"> **Security: ...**",{"type":50,"value":2506},") next to config or code that creates security risks",{"type":44,"tag":506,"props":2508,"children":2509},{},[2510,2512,2517],{"type":50,"value":2511},"ALWAYS add validation checklist items for every security-sensitive feature, grouped under a ",{"type":44,"tag":93,"props":2513,"children":2515},{"className":2514},[],[2516],{"type":50,"value":1499},{"type":50,"value":2518}," heading",{"type":44,"tag":2520,"props":2521,"children":2522},"style",{},[2523],{"type":50,"value":2524},"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":2526,"total":953},[2527,2541,2556,2569,2590,2605,2618],{"slug":544,"name":544,"fn":2528,"description":2529,"org":2530,"tags":2531,"stars":21,"repoUrl":22,"updatedAt":2540},"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},[2532,2533,2536,2537],{"name":9,"slug":8,"type":16},{"name":2534,"slug":2535,"type":16},"Frontend","frontend",{"name":14,"slug":15,"type":16},{"name":2538,"slug":2539,"type":16},"React","react","2026-04-06T18:01:12.268638",{"slug":2542,"name":2542,"fn":2543,"description":2544,"org":2545,"tags":2546,"stars":21,"repoUrl":22,"updatedAt":2555},"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},[2547,2550,2551,2552],{"name":2548,"slug":2549,"type":16},"API Development","api-development",{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":2553,"slug":2554,"type":16},"REST API","rest-api","2026-04-06T18:01:23.758345",{"slug":2557,"name":2557,"fn":2558,"description":2559,"org":2560,"tags":2561,"stars":21,"repoUrl":22,"updatedAt":2568},"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},[2562,2563,2564,2567],{"name":2548,"slug":2549,"type":16},{"name":9,"slug":8,"type":16},{"name":2565,"slug":2566,"type":16},"Architecture","architecture",{"name":14,"slug":15,"type":16},"2026-07-30T05:31:51.648593",{"slug":2570,"name":2570,"fn":2571,"description":2572,"org":2573,"tags":2574,"stars":21,"repoUrl":22,"updatedAt":2589},"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},[2575,2576,2577,2580,2583,2586],{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":2578,"slug":2579,"type":16},"iOS","ios",{"name":2581,"slug":2582,"type":16},"Mobile","mobile",{"name":2584,"slug":2585,"type":16},"Swift","swift",{"name":2587,"slug":2588,"type":16},"Xcode","xcode","2026-04-29T05:35:21.329969",{"slug":2591,"name":2591,"fn":2592,"description":2593,"org":2594,"tags":2595,"stars":21,"repoUrl":22,"updatedAt":2604},"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},[2596,2599,2600,2601],{"name":2597,"slug":2598,"type":16},"Android","android",{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":2602,"slug":2603,"type":16},"Kotlin","kotlin","2026-04-06T18:01:15.005978",{"slug":2606,"name":2606,"fn":2607,"description":2608,"org":2609,"tags":2610,"stars":21,"repoUrl":22,"updatedAt":2617},"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},[2611,2612,2613,2614],{"name":2548,"slug":2549,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":2615,"slug":2616,"type":16},"MCP","mcp","2026-04-06T18:01:20.578589",{"slug":2619,"name":2619,"fn":2620,"description":2621,"org":2622,"tags":2623,"stars":21,"repoUrl":22,"updatedAt":2630},"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},[2624,2625,2626,2629],{"name":9,"slug":8,"type":16},{"name":2565,"slug":2566,"type":16},{"name":2627,"slug":2628,"type":16},"Deployment","deployment",{"name":14,"slug":15,"type":16},"2026-07-30T05:31:54.665938",{"items":2632,"total":961},[2633,2640,2647,2654,2663,2670,2677,2684,2699,2715,2725,2735],{"slug":544,"name":544,"fn":2528,"description":2529,"org":2634,"tags":2635,"stars":21,"repoUrl":22,"updatedAt":2540},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2636,2637,2638,2639],{"name":9,"slug":8,"type":16},{"name":2534,"slug":2535,"type":16},{"name":14,"slug":15,"type":16},{"name":2538,"slug":2539,"type":16},{"slug":2542,"name":2542,"fn":2543,"description":2544,"org":2641,"tags":2642,"stars":21,"repoUrl":22,"updatedAt":2555},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2643,2644,2645,2646],{"name":2548,"slug":2549,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":2553,"slug":2554,"type":16},{"slug":2557,"name":2557,"fn":2558,"description":2559,"org":2648,"tags":2649,"stars":21,"repoUrl":22,"updatedAt":2568},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2650,2651,2652,2653],{"name":2548,"slug":2549,"type":16},{"name":9,"slug":8,"type":16},{"name":2565,"slug":2566,"type":16},{"name":14,"slug":15,"type":16},{"slug":2570,"name":2570,"fn":2571,"description":2572,"org":2655,"tags":2656,"stars":21,"repoUrl":22,"updatedAt":2589},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2657,2658,2659,2660,2661,2662],{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":2578,"slug":2579,"type":16},{"name":2581,"slug":2582,"type":16},{"name":2584,"slug":2585,"type":16},{"name":2587,"slug":2588,"type":16},{"slug":2591,"name":2591,"fn":2592,"description":2593,"org":2664,"tags":2665,"stars":21,"repoUrl":22,"updatedAt":2604},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2666,2667,2668,2669],{"name":2597,"slug":2598,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":2602,"slug":2603,"type":16},{"slug":2606,"name":2606,"fn":2607,"description":2608,"org":2671,"tags":2672,"stars":21,"repoUrl":22,"updatedAt":2617},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2673,2674,2675,2676],{"name":2548,"slug":2549,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":2615,"slug":2616,"type":16},{"slug":2619,"name":2619,"fn":2620,"description":2621,"org":2678,"tags":2679,"stars":21,"repoUrl":22,"updatedAt":2630},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2680,2681,2682,2683],{"name":9,"slug":8,"type":16},{"name":2565,"slug":2566,"type":16},{"name":2627,"slug":2628,"type":16},{"name":14,"slug":15,"type":16},{"slug":2685,"name":2685,"fn":2686,"description":2687,"org":2688,"tags":2689,"stars":21,"repoUrl":22,"updatedAt":2698},"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},[2690,2691,2692,2695],{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":2693,"slug":2694,"type":16},"Plugin Development","plugin-development",{"name":2696,"slug":2697,"type":16},"Rust","rust","2026-04-06T18:01:27.176974",{"slug":2700,"name":2700,"fn":2701,"description":2702,"org":2703,"tags":2704,"stars":21,"repoUrl":22,"updatedAt":2714},"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},[2705,2706,2707,2708,2711],{"name":2548,"slug":2549,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"name":2709,"slug":2710,"type":16},"Node.js","nodejs",{"name":2712,"slug":2713,"type":16},"TypeScript","typescript","2026-04-06T18:01:13.653038",{"slug":2716,"name":2716,"fn":2717,"description":2718,"org":2719,"tags":2720,"stars":21,"repoUrl":22,"updatedAt":2724},"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},[2721,2722,2723],{"name":2548,"slug":2549,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},"2026-04-06T18:01:25.530906",{"slug":552,"name":552,"fn":2726,"description":2727,"org":2728,"tags":2729,"stars":21,"repoUrl":22,"updatedAt":2734},"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},[2730,2731,2732,2733],{"name":2548,"slug":2549,"type":16},{"name":9,"slug":8,"type":16},{"name":2565,"slug":2566,"type":16},{"name":14,"slug":15,"type":16},"2026-04-06T18:01:19.140592",{"slug":559,"name":559,"fn":2736,"description":2737,"org":2738,"tags":2739,"stars":21,"repoUrl":22,"updatedAt":2745},"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},[2740,2741,2744],{"name":9,"slug":8,"type":16},{"name":2742,"slug":2743,"type":16},"CLI","cli",{"name":14,"slug":15,"type":16},"2026-07-30T05:31:52.675547"]