graphql-operations
/graphql-operations
Pomaga pisać operacje GraphQL (zapytania, mutacje, fragmenty) zgodnie z dobrymi praktykami, w tym organizować fragmenty i generować typy.
- Autor
- apollographql ↗
- Repozytorium
- skills ↗
- Licencja
- MIT
- Ostatnia zmiana repozytorium
- 26.10.2026
Ocena i bezpieczeństwo
- Pliki w paczce
- 6
- Skrypty
- 0
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 0
Brak sygnałów. Repozytorium zmienione 26.10.2026, bez odwołań do wycofanych modeli i API.
MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.
Co robi i kiedy
Pomaga pisać operacje GraphQL (zapytania, mutacje, fragmenty) zgodnie z dobrymi praktykami, w tym organizować fragmenty i generować typy.
Oryginalny opis (EN)
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.
Jak działa
- Start From the Schema
- Operation Basics
- Quick Reference
- Key Principles
- Reference Files
- Ground Rules
Podgląd SKILL.md
---
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
Pliki w paczce (6)
- SKILL.md 5 KB
- references/fragments.md 7 KB
- references/mutations.md 8 KB
- references/queries.md 8 KB
- references/tooling.md 8 KB
- references/variables.md 6 KB
Wersje
W bazie nie ma innych skilli o nazwie graphql-operations.
Identyczna treść występuje jeszcze w 1 innych folderach na GitHubie. Tu pokazujemy jedną, najlepiej ocenioną kopię.
Migawka bazy z 28.10.2026 · wersja paczki 6cb876ccbbc7 (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 100graphql-schema
Pomaga tworzyć zapytania i mutacje GraphQL, pracować z Apollo Client i generować typy ze schematu. - 100graphql-schema
Pomaga tworzyć zapytania i mutacje GraphQL, pracować z Apollo Client i generować typy ze schematu. - 100graphql-dev
Pomaga pisać zapytania, mutacje i subskrypcje GraphQL dla Saleor: fragmenty, generowanie kodu, TypedDocumentNode, zmienne, obsługa błędów i konfiguracja klienta. - 100relay-best-practices
Podaje dobre praktyki idiomatycznego kodu Relay w komponentach React: fragmenty, zapytania, mutacje, paginacja i typowe antywzorce. - 90Linear GraphQL Patterns
Pomaga pisać i recenzować zapytania GraphQL do API Linear: fragmenty, typy połączeń, batching i unikanie przestarzałych pól. - 100writing-graphql-operations
Tworzy zapytania i mutacje GraphQL z użyciem gql.tada i urql, wdraża repozytoria, aktualizuje schemat i testuje kod GraphQL.