К основному содержанию
скилл CX Codex

graphql-operations — скилл для Claude Code: запросы, мутации

Скилл для написания GraphQL-операций: запросы, мутации, подписки и фрагменты по правилам проекта. Пригодится, когда агент сочиняет операции наугад.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add apollographql/skills --skill graphql-operations -a claude-code
Открыть на GitHub

Что делает graphql-operations

Скилл задаёт агенту порядок работы с GraphQL. Перед тем как писать операцию, он ищет схему проекта: запись schema в codegen.ts, graphql.config.* или apollo.config.*, затем файлы SDL *.graphql. Использовать разрешено только те поля, аргументы и значения enum, которые схема объявляет. Готовую операцию скилл сохраняет рядом с уже существующими операциями клиента, а серверную схему не трогает, пока вы не попросите.

Внутри — справочник по структуре запросов, мутаций и подписок, синтаксису переменных, директивам @include и @skip, а также отдельные файлы references/queries.md, references/mutations.md, references/fragments.md, references/variables.md и references/tooling.md. Правила простые: имена операциям давать всегда, динамические значения передавать переменными, запрашивать только нужные поля, для кэшируемых типов включать id, фрагменты держать рядом с компонентами. Настроены инструменты Bash(npm:*), Bash(npx:*), Read, Write, Edit, Glob, Grep.

Скилл рассчитан на любой GraphQL-клиент: Apollo Client, urql, Relay и другие. Но примеры полей в нём — иллюстрации, а не готовый набор для вашего API. Если схема не найдена, агент упрётся в первые же имена полей, поэтому стоит заранее убедиться, что она лежит в проекте или доступна через конфиг.

Какие задачи решает

  • написать запрос по реальной схеме, а не по памяти
  • разложить повторяющиеся выборки полей по фрагментам
  • убрать лишние поля из тяжёлого запроса
  • вынести значения в переменные вместо хардкода
  • подключить генерацию типов и линтинг операций

Примеры запросов агенту

  • Напиши мутацию CreatePost по нашей схеме и сохрани её рядом с остальными операциями
  • Разбей этот запрос на фрагменты и положи их в файлы компонентов
  • Проверь мои операции: где переизбыток полей и хардкод вместо переменных?

Как установить graphql-operations

1Через Skills CLI (Vercel)

npx skills add apollographql/skills --skill graphql-operations -a claude-code

2Вручную: положить файлы

~/.claude/skills/graphql-operations/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/graphql-operations/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о graphql-operations

Как установить graphql-operations в Claude?

Выполните npx skills add apollographql/skills --skill graphql-operations -a claude-code. Скилл окажется в ~/.claude/skills/graphql-operations/SKILL.md.

Что делает graphql-operations?

Помогает агенту писать запросы, мутации и подписки: сначала читает схему проекта, потом собирает операцию из её полей и аргументов. Заодно подсказывает, как организовать фрагменты и настроить генерацию типов.

С какими GraphQL-клиентами он совместим?

С любым: Apollo Client, urql, Relay и прочие. Скилл не привязан к конкретной библиотеке, потому что опирается на схему и синтаксис операций.

Исходный текст

SKILL.md · MIT
---
name: graphql-operations
description: >
  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.
license: MIT
compatibility: Any GraphQL client (Apollo Client, urql, Relay, etc.)
metadata:
  author: apollographql
  version: "1.0.1"
allowed-tools: Bash(npm:*) Bash(npx:*) Read Write Edit Glob Grep
---

# GraphQL Operations Guide

This guide covers best practices for writing GraphQL operations (queries, mutations, subscriptions) as a client developer. Well-written operations are efficient, type-safe, and maintainable.

## Start From the Schema

Write every operation against the project's schema, not against the examples in this guide.

1. Find the schema before you write anything. Check the `schema` entry in `codegen.ts`, `graphql.config.*`, or `apollo.config.*`, then look for `*.graphql` SDL files.
2. Use only the fields, arguments, and enum values that the schema defines. Field names in this guide, such as `updatedAt` or `orderBy: { field: CREATED_AT, direction: DESC }`, are illustrations.
3. Save the operation as a document next to the client's existing operations. Leave the server schema unchanged unless the user asks for a schema change.

## Operation Basics

### Query Structure

```graphql
query GetUser($id: ID!) {
  user(id: $id) {
    id
    name
    email
  }
}
```

### Mutation Structure

```graphql
mutation CreatePost($input: CreatePostInput!) {
  createPost(input: $input) {
    id
    title
    createdAt
  }
}
```

### Subscription Structure

```graphql
subscription OnMessageReceived($channelId: ID!) {
  messageReceived(channelId: $channelId) {
    id
    content
    sender {
      id
      name
    }
  }
}
```

## Quick Reference

### Operation Naming

| Pattern      | Example                                     |
| ------------ | ------------------------------------------- |
| Query        | `GetUser`, `ListPosts`, `SearchProducts`    |
| Mutation     | `CreateUser`, `UpdatePost`, `DeleteComment` |
| Subscription | `OnMessageReceived`, `OnUserStatusChanged`  |

### Variable Syntax

```graphql
# Required variable
query GetUser($id: ID!) { ... }

# Optional variable with default
query ListPosts($first: Int = 20) { ... }

# Multiple variables
query SearchPosts($query: String!, $status: PostStatus, $first: Int = 10) { ... }
```

### Fragment Syntax

```graphql
# Define fragment
fragment UserBasicInfo on User {
  id
  name
  avatarUrl
}

# Use fragment
query GetUser($id: ID!) {
  user(id: $id) {
    ...UserBasicInfo
    email
  }
}
```

### Directives

```graphql
query GetUser($id: ID!, $includeEmail: Boolean!) {
  user(id: $id) {
    id
    name
    email @include(if: $includeEmail)
  }
}

query GetPosts($skipDrafts: Boolean!) {
  posts {
    id
    title
    draft @skip(if: $skipDrafts)
  }
}
```

## Key Principles

### 1. Request Only What You Need

```graphql
# Good: Specific fields
query GetUserName($id: ID!) {
  user(id: $id) {
    id
    name
  }
}

# Avoid: Over-fetching
query GetUser($id: ID!) {
  user(id: $id) {
    id
    name
    email
    bio
    posts {
      id
      title
      content
      comments {
        id
      }
    }
    followers {
      id
      name
    }
    # ... many unused fields
  }
}
```

### 2. Name All Operations

```graphql
# Good: Named operation
query GetUserPosts($userId: ID!) {
  user(id: $userId) {
    posts {
      id
      title
    }
  }
}

# Avoid: Anonymous operation
query {
  user(id: "123") {
    posts {
      id
      title
    }
  }
}
```

### 3. Use Variables, Not Inline Values

```graphql
# Good: Variables
query GetUser($id: ID!) {
  user(id: $id) {
    id
    name
  }
}

# Avoid: Hardcoded values
query {
  user(id: "123") {
    id
    name
  }
}
```

### 4. Colocate Fragments with Components

```tsx
// UserAvatar.tsx
export const USER_AVATAR_FRAGMENT = gql`
  fragment UserAvatar on User {
    id
    name
    avatarUrl
  }
`;

function UserAvatar({ user }) {
  return <img src={user.avatarUrl} alt={user.name} />;
}
```

## Reference Files

Detailed documentation for specific topics:

- [Queries](references/queries.md) - Query patterns and optimization
- [Mutations](references/mutations.md) - Mutation patterns and error handling
- [Fragments](references/fragments.md) - Fragment organization and reuse
- [Variables](references/variables.md) - Variable usage and types
- [Tooling](references/tooling.md) - Code generation and linting

## Ground Rules

- ALWAYS read the project's schema first, and use only the fields, arguments, and enum values it defines
- ALWAYS name your operations (no anonymous queries/mutations)
- ALWAYS use variables for dynamic values
- ALWAYS request only the fields you need
- ALWAYS include `id` field for cacheable types
- NEVER hardcode values in operations
- NEVER duplicate field selections across files
- PREFER fragments for reusable field selections
- PREFER colocating fragments with components
- USE descriptive operation names that reflect purpose
- USE `@include`/`@skip` for conditional fields

© apollographql · MIT · apollographql/skills

Похожие скиллы

Всё по теме «Бэкенд и API» →
graphql-api-development manutej Скилл для проектирования GraphQL API на graphql-js: схема, резолверы, запросы, мутации, подписки и авторизация. Пригодится, когда REST уже тесен. CX Codex +1 447установок graphql-development Mindrally Набор правил для GraphQL: схема, типизированные клиенты, интеграция с React и Next.js. Пригодится, когда агент пишет резолверы и запросы. CX Codex +1 661установок neo4j-graphql-skill neo4j-contrib Скилл помогает собрать GraphQL API на @neo4j/graphql: типы, директивы, авторизация через JWT и подключение к Apollo Server. CX Codex +1 809установок graphql-implementation secondsky Скилл для сборки GraphQL API: схема, резолверы, обработка ошибок и защита от N+1. Пригодится при переходе с REST и при подписках в реальном времени. CX Codex +1 380установок apollo-graphql Mindrally Скилл задаёт агенту правила работы с Apollo Client: запросы, мутации, фрагменты, кэш и оптимистичные обновления в React-проектах на GraphQL. CX Codex +1 677установок graphql-performance-optimizer davila7 Субагент разбирает медленные GraphQL-запросы: находит N+1, ставит DataLoader, настраивает кеширование. Пригодится, когда список пользователей грузится секундами. 599установок

Из того же набора11

rust-best-practices Скилл для написания и ревью Rust-кода по хендбуку Apollo GraphQL: заимствование против клонирования, обработка ошибок, тесты. CX Codex +1 21 100установок apollo-client Скилл ведёт агента по настройке Apollo Client 4.x в React: запросы, мутации, кэш, локальное состояние и разбор ошибок. CX Codex +1 5 600установок graphql-schema Скилл обучает проектированию схем GraphQL SDL по практикам Apollo. Помогает при создании schema.graphql, добавлении мутаций или настройке пагинации. CX Codex +1 4 000установок apollo-server Помогает проектировать GraphQL-серверы на базе Apollo Server 5.x. Пригодится при настройке схемы, типизации резолверов и авторизации в Node.js. CX Codex +1 2 800установок apollo-connectors Помогает подключить REST API к GraphQL-суперграфу через директивы @source и @connect. Годится для быстрых правок уже существующей схемы Connectors. CX Codex +1 2 200установок apollo-federation Помогает писать схемы подграфов Apollo Federation: директивы, сущности с @key, ошибки композиции. Полезен, когда суперграф собирается из нескольких GraphQL-сервисов. CX Codex +1 1 900установок apollo-router Скилл генерирует корректный router.yaml для Apollo Router v1.x и v2.x и подсказывает, какие секции в этих версиях несовместимы. CX Codex +1 1 800установок apollo-kotlin Скилл ведёт агента по настройке Apollo Kotlin в Gradle-проекте: схема, кодогенерация, ApolloClient с авторизацией и кэшем, запросы и подписки. CX Codex +1 1 700установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой