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

graphql-implementation — скилл для Claude Code: GraphQL API

Скилл для сборки GraphQL API: схема, резолверы, обработка ошибок и защита от N+1. Пригодится при переходе с REST и при подписках в реальном времени.

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

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

Скилл задаёт структуру работы над GraphQL API. Внутри — примеры схемы на GraphQL SDL: типы User и Post, запросы с limit и offset, мутации с input-типами вроде CreateUserInput. Резолверы показаны на Apollo Server: Query, User, Mutation, данные тянутся через dataSources.

Отдельный блок — DataLoader. Он батчит запросы по списку id и закрывает проблему N+1, которая всплывает, когда каждый пост тянет своего автора отдельным запросом. Ошибки оформляются через GraphQLError с кодом в extensions, например NOT_FOUND. Для Python есть отдельная справка по Graphene с интеграцией Flask: ObjectType, классы Query и Mutation, input-типы.

В правилах прямо сказано, чего делать нельзя: разрешать глубоко вложенные запросы без лимитов, светить внутренности базы, игнорировать N+1, отдавать данные без проверки прав. Если у вас уже есть публичный GraphQL-эндпоинт без ограничения сложности запросов, это повод проверить его до релиза.

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

  • спроектировать схему GraphQL под нужды клиента
  • написать резолверы для запросов и мутаций
  • убрать N+1 через батчинг DataLoader
  • оформить ошибки с кодами в extensions
  • добавить подписки для данных в реальном времени

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

  • Спроектируй GraphQL-схему для блога с пользователями и постами
  • Добавь DataLoader, чтобы резолвер постов не делал запрос на каждого автора
  • Переведи этот REST-эндпоинт на GraphQL-мутации с input-типами

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

1Через Skills CLI (Vercel)

npx skills add secondsky/claude-skills --skill graphql-implementation -a claude-code

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

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

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

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

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

nuxt-data Скилл для работы с данными в Nuxt 4: композаблы, useFetch и useAsyncData, состояние через useState и Pinia. CX Codex +1 388установок bun-macros Скилл объясняет, как выполнять JavaScript во время бандлинга и подставлять результат прямо в код. Пригодится, когда версия, git-хэш или файл нужны в сборке, а не в рантайме. CX Codex +1 385установок bun-nuxt Скилл объясняет агенту, как поднять Nuxt 3 на Bun: скрипты, пресет Nitro, серверные маршруты и деплой. Пригодится, если проект уже на Nuxt и вы хотите уйти с Node. CX Codex +1 387установок multi-ai-consultant Скилл зовёт сторонние ИИ на помощь, когда Claude застрял на баге или выбирает архитектуру. Ответы сводятся в один разбор. CX Codex +1 384установок model-deployment Скилл для вывода обученной модели в прод: FastAPI-сервер, Docker, Kubernetes, мониторинг и отлов дрейфа. Пригодится, когда модель уже готова, а сервинг ещё нет. CX Codex +1 379установок cloudflare-agents Скилл для сборки ИИ-агентов на Cloudflare Workers: инструменты, MCP, провайдеры LLM. Пригодится, когда агент живёт прямо в воркере. CX Codex +1 378установок cloudflare-mcp-server Скилл помогает собрать MCP-сервер на Cloudflare Workers: инструменты, ресурсы, промпты и выбор транспорта. Пригодится, если пишешь свой сервер для ИИ-агента. CX Codex +1 375установок thesys-generative-ui Скилл учит агента собирать React-компоненты из описания на естественном языке через Thesys SDK. Пригодится, когда интерфейс нужно набросать по текстовому запросу. CX Codex +1 371установок

Похожие

graphql-performance-optimizer davila7 Субагент разбирает медленные GraphQL-запросы: находит N+1, ставит DataLoader, настраивает кеширование. Пригодится, когда список пользователей грузится секундами. 599установок graphql-schema apollographql Скилл обучает проектированию схем GraphQL SDL по практикам Apollo. Помогает при создании schema.graphql, добавлении мутаций или настройке пагинации. CX Codex +1 4 000установок graphql-operations apollographql Скилл для написания GraphQL-операций: запросы, мутации, подписки и фрагменты по правилам проекта. Пригодится, когда агент сочиняет операции наугад. CX Codex +1 3 600установок neo4j-graphql-skill neo4j-contrib Скилл помогает собрать GraphQL API на @neo4j/graphql: типы, директивы, авторизация через JWT и подключение к Apollo Server. CX Codex +1 809установок graphql-development Mindrally Набор правил для GraphQL: схема, типизированные клиенты, интеграция с React и Next.js. Пригодится, когда агент пишет резолверы и запросы. CX Codex +1 661установок graphql-architect https://github.com/Jeffallan Помогает проектировать схемы GraphQL, настраивать подграфы Apollo Federation 2.5+ и устранять проблему N+1 с помощью DataLoader. CX Codex +1 4 000установок

Рядом в теме «Бэкенд и API»

Всё по теме «Бэкенд и API» →

Вопросы о graphql-implementation

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

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

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

Помогает собрать GraphQL API: проектирование схемы, резолверы, обработка ошибок и оптимизация запросов. Внутри есть примеры для Apollo Server и справка по Python Graphene с Flask.

Как скилл решает проблему N+1?

Через DataLoader: он собирает id из резолверов и делает один запрос вместо запроса на каждую запись. В правилах скилла игнорировать N+1 прямо запрещено.

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

SKILL.md · MIT
---
name: graphql-implementation
description: Builds GraphQL APIs with schema design, resolvers, error handling, and performance optimization using Apollo or Graphene. Use when creating flexible query APIs, migrating from REST, or implementing real-time subscriptions.
license: MIT
---

# GraphQL Implementation

Build GraphQL APIs with proper schema design, resolvers, and performance optimization.

## Schema Definition

```graphql
type User {
  id: ID!
  name: String!
  email: String!
  posts(limit: Int = 10): [Post!]!
}

type Post {
  id: ID!
  title: String!
  content: String!
  author: User!
  createdAt: DateTime!
}

type Query {
  user(id: ID!): User
  users(limit: Int, offset: Int): [User!]!
  post(id: ID!): Post
}

type Mutation {
  createUser(input: CreateUserInput!): User!
  createPost(input: CreatePostInput!): Post!
}

input CreateUserInput {
  name: String!
  email: String!
}
```

## Apollo Server Setup

```javascript
const { ApolloServer } = require('@apollo/server');
const { startStandaloneServer } = require('@apollo/server/standalone');

const resolvers = {
  Query: {
    user: (_, { id }, { dataSources }) =>
      dataSources.userAPI.getUser(id),
    users: (_, { limit, offset }, { dataSources }) =>
      dataSources.userAPI.getUsers({ limit, offset })
  },
  User: {
    posts: (user, { limit }, { dataSources }) =>
      dataSources.postAPI.getPostsByUser(user.id, limit)
  },
  Mutation: {
    createUser: (_, { input }, { dataSources }) =>
      dataSources.userAPI.createUser(input)
  }
};

const server = new ApolloServer({ typeDefs, resolvers });
```

## DataLoader for N+1 Prevention

```javascript
const DataLoader = require('dataloader');

const userLoader = new DataLoader(async (ids) => {
  const users = await User.find({ _id: { $in: ids } });
  return ids.map(id => users.find(u => u.id === id));
});
```

## Error Handling

```javascript
const { GraphQLError } = require('graphql');

throw new GraphQLError('User not found', {
  extensions: { code: 'NOT_FOUND', argumentName: 'id' }
});
```

## Best Practices

- Use DataLoader to batch queries
- Implement query complexity limits
- Design schema around client needs
- Validate all inputs
- Use descriptive naming conventions

## Python Graphene

See [references/python-graphene.md](references/python-graphene.md) for complete Flask implementation with:
- ObjectType definitions
- Query and Mutation classes
- Input types
- Flask integration

## Best Practices

**Do:**
- Use DataLoader to batch queries
- Implement query complexity limits
- Design schema around client needs
- Validate all inputs
- Use descriptive naming conventions
- Add subscriptions for real-time data

**Don't:**
- Allow deeply nested queries without limits
- Expose database internals
- Ignore N+1 query problems
- Return unauthorized data
- Skip input validation

© secondsky · MIT · secondsky/claude-skills

Смотрите также

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

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