skill-creator

작성자: apollographql

아폴로 그래프QL 및 그래프QL 개발을 위한 효과적인 에이전트 스킬 생성에 대한 종합 가이드입니다. 필수 SKILL.md 프론트매터, 명명 규칙, 선택적 참조 파일 구성을 포함한 완전한 스킬 구조 요구 사항을 다룹니다. 번호가 매겨진 트리거 조건, 점진적 공개를 통한 본문 콘텐츠, 참조 파일 관리를 포함한 스킬 설명 작성 모범 사례를 다룹니다. 접근 가능하고 독창적인 아폴로 보이스 스타일 가이드라인을 포함합니다.

npx skills add https://github.com/apollographql/skills --skill skill-creator

Skill Creator Guide

This guide helps you create effective skills for Apollo GraphQL and GraphQL development following the Agent Skills specification.

What is a Skill?

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.

Directory Structure

A skill requires at minimum a SKILL.md file:

skill-name/
├── SKILL.md              # Required - main instructions
├── references/           # Optional - detailed documentation
│   ├── topic-a.md
│   └── topic-b.md
├── scripts/              # Optional - executable helpers
│   └── validate.sh
├── templates/            # Optional - config/code templates
│   └── config.yaml
└── assets/               # Optional - static resources (images, schemas, data files)

SKILL.md Format

Frontmatter (Required)

---
name: skill-name
description: >
  A clear description of what this skill does and when to use it.
  Include trigger conditions: (1) first condition, (2) second condition.
license: MIT
compatibility: Works with Claude Code and similar AI coding assistants.
metadata:
  author: your-org
  version: "1.0.0"
allowed-tools: Read Write Edit Glob Grep
---

Frontmatter Fields

FieldRequiredDescription
nameYesLowercase, hyphens only. Must match directory name. Max 64 chars.
descriptionYesWhat the skill does and when to use it. Max 1024 chars.
licenseNoLicense name (e.g., MIT, Apache-2.0).
compatibilityNoEnvironment requirements. Max 500 chars.
metadataNoKey-value pairs for author, version, etc.
allowed-toolsNoSpace-delimited list of pre-approved tools. Do not include Bash(curl:*).

Name Rules

  • Use lowercase letters, numbers, and hyphens only
  • Do not start or end with a hyphen
  • Do not use consecutive hyphens (--)
  • Must match the parent directory name

Good: apollo-client, graphql-schema, rover Bad: Apollo-Client, -apollo, apollo--client

Description Best Practices

Write descriptions that help agents identify when to activate the skill:

# Good - specific triggers and use cases
description: >
  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.

# Bad - vague and unhelpful
description: Helps with GraphQL stuff.

Body Content

The markdown body contains instructions the agent follows. Structure it for clarity:

Recommended Sections

  1. Overview - Brief explanation of the skill's purpose
  2. Process - Step-by-step workflow (use checkboxes for multi-step processes)
  3. Quick Reference - Common patterns and syntax
  4. Security - Risks, mitigations, and validation (if the skill touches anything security-sensitive)
  5. Reference Files - Links to detailed documentation
  6. Key Rules - Important guidelines organized by topic
  7. Ground Rules - Critical do's and don'ts

Example Structure

# Skill Title

Brief overview of what this skill helps with.

## Process

Follow this process when working on [task]:

- [ ] Step 1: Research and understand requirements
- [ ] Step 2: Implement the solution
- [ ] Step 3: Validate the result

## Quick Reference

### Common Pattern

\`\`\`graphql
type Example {
  id: ID!
  name: String
}
\`\`\`

## Security

> **Risk: [brief description of what can go wrong].**
> [What the user MUST do to prevent it.]

- ALWAYS [secure default behavior]
- NEVER [dangerous configuration] in production

## Reference Files

- [Topic A](references/topic-a.md) - Detailed guide for topic A
- [Topic B](references/topic-b.md) - Detailed guide for topic B

## Key Rules

### Category One

- Rule about this category
- Another rule

### Category Two

- Rule about this category

## Ground Rules

- ALWAYS do this important thing
- NEVER do this problematic thing
- PREFER this approach over that approach

Security-Sensitive Content

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.

When does a skill need security guidance?

If any of these apply, the skill is security-sensitive:

  • Generates config that controls access to data (caching, auth, CORS, permissions)
  • Handles secrets, credentials, or tokens
  • Produces code that runs with elevated privileges
  • Controls what data is shared, public, or exposed to users
  • Configures network bindings, endpoints, or external access

How to surface security in a skill

  1. 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.

  2. 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:

    ### Response caching scope
    
    > **Security: data leakage risk.** All cached data is PUBLIC by default.
    > User-specific fields MUST use `scope: PRIVATE` with a `private_id`
    > configured, or they will be shared across all users.
    
  3. Validation checklist items — every security-sensitive feature must have corresponding checks in the validation checklist. Group them under a ## Security heading.

  4. Ground rules — add ALWAYS/NEVER rules for security-critical behavior. These are the strongest signal to the LLM.

  5. 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.

Anti-patterns

  • Describing a security-sensitive default (like "public by default") without labeling it as a security concern
  • Placing security guidance only in reference files that load on demand — the SKILL.md itself must contain the key warnings
  • Using soft language ("you may want to consider") for hard security requirements — use "MUST" and "NEVER"
  • Assuming the LLM understands which fields in a schema are private — require explicit user input

Progressive Disclosure

Structure skills to minimize context usage:

  1. Metadata (~100 tokens): name and description load at startup for all skills
  2. Instructions (< 5000 tokens): Full SKILL.md loads when skill activates
  3. References (as needed): Files in references/ load only when required

Keep SKILL.md under 500 lines. Move detailed documentation to reference files.

Reference Files

Use references/ for detailed documentation:

references/
├── setup.md          # Installation and configuration
├── patterns.md       # Common patterns and examples
├── troubleshooting.md # Error solutions
└── api.md            # API reference

Reference files should be:

  • Focused on a single topic
  • Self-contained (readable without other files)
  • Under 300 lines each

Link to references from SKILL.md:

## Reference Files

- [Setup](references/setup.md) - Installation and configuration
- [Patterns](references/patterns.md) - Common patterns and examples

Scripts

Use scripts/ for executable helpers agents can run:

scripts/
├── validate.sh       # Validation commands
├── setup.py          # Setup automation
└── check-version.sh  # Version checking

Scripts should be self-contained, include error handling, and have a usage comment at the top. Pre-approve them in allowed-tools (e.g., Bash(./scripts/validate.sh:*)).

Templates

Use templates/ for config files, boilerplate, or starter code:

templates/
├── config.yaml       # Default configuration
├── config-v2.yaml    # Version-specific variant
└── example-app/      # Starter project

Templates are copied or adapted by the agent — not executed directly.

Writing Style

Follow the Apollo Voice for all skill content:

Tone

  • Approachable and helpful
  • Opinionated and authoritative (prescribe the "happy path")
  • Direct and action-oriented

Language

  • Use American English
  • Keep language simple; avoid idioms
  • Use present tense and active voice
  • Use imperative verbs for instructions

Formatting

  • Use sentence casing for headings
  • Use code font for symbols, commands, file paths, and URLs
  • Use bold for UI elements users click
  • Use hyphens (-) for unordered lists

Avoid

  • "Simply", "just", "easy" (can be condescending)
  • Vague phrases like "click here"
  • Semicolons (use periods instead)
  • "We" unless clearly referring to Apollo

Reference Files

For Apollo GraphQL-specific guidance:

  • Apollo Skills - Patterns and examples for Apollo GraphQL skills

Versioning

Use semantic versioning ("X.Y.Z") for the version field in metadata:

metadata:
  author: apollographql
  version: "1.0.0"
  • Major (X): Breaking changes that alter how the skill behaves or activates (e.g., renamed triggers, removed sections, changed ground rules)
  • Minor (Y): New content or capabilities that are backward-compatible (e.g., added reference files, new sections, expanded examples)
  • Patch (Z): Small fixes that don't change behavior (e.g., typo corrections, wording tweaks, formatting fixes)

Start new skills at "1.0.0".

Checklist for New Skills

Before publishing a skill, verify:

  • name matches directory name and follows naming rules
  • description clearly states what the skill does and when to use it
  • SKILL.md is under 500 lines
  • Reference files are focused and under 300 lines each
  • Instructions are clear and actionable
  • Code examples are correct and tested
  • Ground rules use ALWAYS/NEVER/PREFER format
  • Content follows Apollo Voice guidelines

Ground Rules

  • ALWAYS include trigger conditions in the description (use numbered list)
  • ALWAYS use checkboxes for multi-step processes
  • ALWAYS link to reference files for detailed documentation
  • NEVER exceed 500 lines in SKILL.md
  • NEVER use vague descriptions that don't help agents identify when to activate
  • PREFER specific examples over abstract explanations
  • PREFER opinionated guidance over listing multiple options
  • USE allowed-tools to pre-approve tools the skill needs
  • NEVER include Bash(curl:*) in allowed-tools as it grants unrestricted network access and enables curl | sh remote code execution patterns
  • ALWAYS include a ## Security section when the skill generates config or code that controls access, caching, auth, secrets, or data exposure
  • NEVER bury security-critical guidance only in reference files — the key warnings must appear in SKILL.md where the LLM will always see them
  • 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)
  • USE explicit blockquote warnings (> **Security: ...**) next to config or code that creates security risks
  • ALWAYS add validation checklist items for every security-sensitive feature, grouped under a ## Security heading

apollographql의 다른 스킬

apollo-client
apollographql
Apollo Client는 로컬 및 원격 데이터를 GraphQL로 관리할 수 있게 해주는 JavaScript용 종합 상태 관리 라이브러리입니다. 버전 4.x는 개선된 캐싱, 더 나은 TypeScript 지원, React 19 호환성을 제공합니다.
official
apollo-client
apollographql
Apollo Client 4.x를 사용하여 React 애플리케이션을 구축하기 위한 종합 가이드로, 쿼리, 뮤테이션, 캐싱 및 상태 관리를 다룹니다. 여러 React 프레임워크 및 설정을 지원합니다: 클라이언트 측 앱(Vite, CRA), React Server Components를 사용하는 Next.js App Router, 스트리밍 SSR을 지원하는 React Router 7, TanStack Start. 쿼리(useQuery, useLazyQuery), 뮤테이션(useMutation)을 위한 훅과 최신 React 18+ 및 19를 위한 Suspense 기반 패턴(useSuspenseQuery, useBackgroundQuery)을 포함합니다.
official
apollo-connectors
apollographql
REST API를 @source 및 @connect 지시문을 사용하여 GraphQL 슈퍼그래프에 통합합니다. 구조화된 5단계 프로세스를 제공합니다: API 구조 조사, 지시문으로 스키마 구현, rover supergraph compose를 통한 검증, 커넥터 실행, 테스트 커버리지. 헤더, 본문 페이로드, N+1 패턴을 위한 배칭, $env를 통한 환경 변수 주입을 포함한 요청 구성을 지원합니다. 필드 선택, 별칭, 중첩 데이터를 위한 하위 선택, 엔티티...를 포함한 응답 매핑을 처리합니다.
official
apollo-federation
apollographql
Apollo Federation은 여러 GraphQL API(서브그래프)를 하나의 통합된 슈퍼그래프로 구성할 수 있게 해줍니다.
official
apollo-ios
apollographql
Apollo iOS는 Apple 플랫폼을 위한 강력한 타입의 GraphQL 클라이언트입니다. GraphQL 작업과 스키마에서 Swift 타입을 생성하며, async/await 클라이언트, 정규화된 캐시(인메모리 또는 SQLite 기반), 쿼리, 뮤테이션 및 멀티파트 구독을 처리하는 플러그형 인터셉터 기반 HTTP 전송, 그리고 모든 작업 유형을 전달할 수 있는 선택적 WebSocket 전송(graphql-transport-ws)을 제공합니다.
official
apollo-kotlin
apollographql
Apollo Kotlin은 GraphQL 연산과 스키마에서 Kotlin 모델을 생성하는 강력한 타입의 GraphQL 클라이언트로, Android, JVM 및 Kotlin Multiplatform 프로젝트에서 사용할 수 있습니다.
official
apollo-mcp-server
apollographql
AI 에이전트를 GraphQL API에 연결하여 Model Context Protocol을 통해 내장된 인트로스펙션 및 작업 도구를 제공합니다. GraphQL 작업을 MCP 도구로 노출하며, 로컬 파일, GraphOS Studio 컬렉션, 지속적 쿼리 매니페스트의 세 가지 작업 소스를 지원합니다. 스키마 탐색 및 임시 쿼리 테스트를 위한 네 가지 인트로스펙션 도구(introspect, search, validate, execute)를 제공하며, 축약 표기법을 사용한 미니피케이션 모드로 토큰 사용량을 줄입니다. 정적 헤더를 통한 구성 가능한 인증,...
official
apollo-router
apollographql
Apollo Router는 Apollo Federation 2 슈퍼그래프를 실행하기 위해 Rust로 작성된 고성능 그래프 라우터입니다. 서브그래프 앞에 위치하여 쿼리 계획, 실행 및 응답 구성을 처리합니다.
official