Graphql
Skill crowdin/skills/graphql
Write valid, schema-aware Crowdin GraphQL queries and debug invalid ones. Use this whenever the user asks for Crowdin GraphQL queries, filters, pagination, sorting, or when they share GraphQL errors from Crowdin Playground (especially unknown argument/field errors) and need a corrected query that actually matches the schema.From its SKILL.md
npx -y skills add crowdin/skills --skill graphqlAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.4 KB, 931 tokens by cl100k_base, as published. Nobody here has run it
Crowdin GraphQL Query Writing
Use this skill to produce valid Crowdin GraphQL queries that match the live schema, avoid unsupported arguments, and include practical pagination/filtering patterns.
What to Deliver
Return:
- A working GraphQL query.
- A short explanation of how it works.
- If relevant, a corrected version of the user's broken query plus a brief "what was wrong".
- Optional: variables object when it improves readability.
Core Workflow
1) Confirm intent and scope
Identify:
- Target resource (projects, strings, translations, etc.).
- Required constraints (language, dates, status, user, approval state).
- Output fields user needs.
If the request is ambiguous, choose a conservative default and say so briefly.
2) Build from schema-safe primitives
Use this sequence:
- Pick the root field that actually exposes the target connection.
- Add required pagination arguments (
firstorlast) on every connection. - Add nested selections (
edges -> node) and only requested fields. - Add filtering/sorting only where the schema supports it.
Do not invent arguments by analogy with REST parameters.
3) Validate against common Crowdin GraphQL constraints
Before finalizing:
- Every queried connection has
firstorlast(1..10000). - Estimated total requested nodes stay under 10,000.
- Query includes
pageInfowhen pagination is likely needed. - Query avoids unsupported arguments on a field.
4) Add safe pagination pattern
Prefer cursor pagination:
- Forward:
first+after - Backward:
last+before
If user asks for "from date X to date Y", use supported filter input fields (for resources that expose them), not ad-hoc args.
High-Risk Mistakes to Prevent
Unknown argument errors
If the user query contains field arguments that are not in the schema, rewrite the query using supported alternatives.
Example anti-pattern from real failures:
translations(..., createdAfter: "...", createdBefore: "...")
Fix strategy:
- Remove unsupported args.
- Keep supported args like
languageId,first,after. - If date constraints are required, move them to a supported
filterinput on fields that provide one (or explain that this field does not expose date filtering directly).
Missing required pagination arguments
Crowdin GraphQL connections require first or last. Never omit them.
Over-fetching
Do not request large nested fan-outs without reason. Keep node count budgeted.
Query Patterns
Pattern A: Minimal safe connection query
query GetProjects($first: Int!, $after: String) {
viewer {
projects(first: $first, after: $after) {
edges {
node {
id
name
}
cursor
}
pageInfo {
hasNextPage
endCursor
}
totalCount
}
}
}
Pattern B: Filtering + ordering (where supported)
query FilteredProjects {
viewer {
projects(
first: 10
filter: { createdAt: { gt: "2023-01-01T00:00:00Z" } }
order: [{ lastActivityAt: asc }]
) {
edges {
node {
id
name
lastActivityAt
}
}
}
}
}
Pattern C: Rate limit awareness
query MeAndCost {
viewer {
username
}
rateLimit {
limit
cost
remaining
resetAt
}
}
Debugging Template
When the user provides an error, follow this output format:
- Cause: one sentence pointing to schema mismatch.
- Fixed query: full corrected query.
- Why this works: 2-4 bullets tied to schema rules.
- If date filtering was requested: explain whether that specific field supports date filtering; if not, propose nearest valid alternative.
Tone and Safety
- Prefer correctness over being "clever".
- If the schema support is uncertain, explicitly say "verify in Playground Explorer for this field".
- Never pretend an argument exists.
Reference
For constraints and examples, align with Crowdin docs:
- GraphQL API overview, pagination, filtering/sorting, and limits.
- https://support.crowdin.com/developer/graphql-api/
Gives 0 of the 12 instructions most apis services skills give in 931 tokens
Counted across 448 of the 471 authors here whose files we hold, read 2026-09-06
- Use HTTP status codes semanticallyin 25 of 448, across 11 files
- Return 201 with a Location header on createin 24 of 448, across 9 files
- Name resources plural, lowercase, kebab-casein 23 of 448, across 9 files
- Configure rate limiting with limit headersin 22 of 448, across 8 files
- Paginate list endpoints with cursor or offsetin 21 of 448, across 10 files
- Version APIs in the URL pathin 21 of 448, across 11 files
- Validate request input with a schemain 21 of 448, across 7 files
- Add pagination to all list endpointsin 18 of 448, across 15 files
- Match HTTP method to the operationin 12 of 448, across 6 files
- Return 400 or 422 with field-level detailsin 12 of 448, across 2 files
- Check ownership before returning resourcesin 12 of 448, across 2 files
- Limit query depth and complexityin 12 of 448, across 7 files
Said here and by no other author read
- Return a working query with a brief explanation
- Add pagination arguments to every connection
- Keep total requested nodes under 10,000
- Include pageInfo when pagination is likely
- Add filters and sorting only where the schema supports them
- Use supported filter inputs for date ranges
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.