graphql — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited graphql (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use this skill to produce valid Crowdin GraphQL queries that match the live schema, avoid unsupported arguments, and include practical pagination/filtering patterns.
Return:
Identify:
If the request is ambiguous, choose a conservative default and say so briefly.
Use this sequence:
first or last) on every connection.edges -> node) and only requested fields.Do not invent arguments by analogy with REST parameters.
Before finalizing:
first or last (1..10000).pageInfo when pagination is likely needed.Prefer cursor pagination:
first + afterlast + beforeIf user asks for "from date X to date Y", use supported filter input fields (for resources that expose them), not ad-hoc args.
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:
languageId, first, after.filter input on fields that provide one (or explain that this field does not expose date filtering directly).Crowdin GraphQL connections require first or last. Never omit them.
Do not request large nested fan-outs without reason. Keep node count budgeted.
query GetProjects($first: Int!, $after: String) {
viewer {
projects(first: $first, after: $after) {
edges {
node {
id
name
}
cursor
}
pageInfo {
hasNextPage
endCursor
}
totalCount
}
}
}query FilteredProjects {
viewer {
projects(
first: 10
filter: { createdAt: { gt: "2023-01-01T00:00:00Z" } }
order: [{ lastActivityAt: asc }]
) {
edges {
node {
id
name
lastActivityAt
}
}
}
}
}query MeAndCost {
viewer {
username
}
rateLimit {
limit
cost
remaining
resetAt
}
}When the user provides an error, follow this output format:
For constraints and examples, align with Crowdin docs:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.