anilist-mcp-server: Skill for Claude Code

.agents/skills/fixture-accuracy-check/SKILL.md

fixture-accuracy-check is a skill for Claude Code, Codex from Grinv/anilist-mcp-server. It costs 48 tokens per session (1,102 once invoked), scanned A, original, MIT.

A testing rule for mocked AniList GraphQL responses. A fixture is sample API data used by a test, and this rule requires it to match the real response shape for the exact query.

In plain words
What is it for?
Use it before creating or changing AniList test fixtures, especially when mocking fetch responses for GraphQL queries or mutations.
Why use it?
It prevents tests from passing only because their fake data matches the code’s assumptions. Including real nesting and null fields makes the tests more likely to expose API-shape bugs.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: installed under .agents/ (shared by several agents).

This is Grinv/anilist-mcp-server's own configuration. It tells Claude Code and Codex how to work on anilist-mcp-server itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything anilist-mcp-server configures →

Reuse

Borrowing it

Nothing to install: this file belongs to Grinv/anilist-mcp-server. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/Grinv/anilist-mcp-server/main/.agents/skills/fixture-accuracy-check/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/Grinv/anilist-mcp-server

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for fixture-accuracy-check

README.md
[![agentmods](https://agentmods.dev/badge/skills/grinv/anilist-mcp-server/fixture-accuracy-check/github.svg)](https://agentmods.dev/skills/grinv/anilist-mcp-server/fixture-accuracy-check)
Your own site
<a href="https://agentmods.dev/skills/grinv/anilist-mcp-server/fixture-accuracy-check"><img src="https://agentmods.dev/badge/skills/grinv/anilist-mcp-server/fixture-accuracy-check/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for fixture-accuracy-check

Your own site · 80×15
<a href="https://agentmods.dev/skills/grinv/anilist-mcp-server/fixture-accuracy-check"><img src="https://agentmods.dev/badge/skills/grinv/anilist-mcp-server/fixture-accuracy-check.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 48 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,102 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00048 $0.01102
Opus 5 $0.00024 $0.00551
Sonnet 5 $0.00010 $0.00220
Haiku 4.5 $0.00005 $0.00110

Measured 8d ago against content hash 0f4f6ece70d1, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

fixture-accuracy-check scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

available, hit the real endpoint once (curl against
.agents/skills/fixture-accuracy-check/SKILL.md · 79 lines

How it starts

The opening of the file, as written. The whole thing — 79 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Testing conventions

src/__tests__/*.test.ts mocks fetch and feeds it canned JSON fixtures (see helpers.ts's mockFetch/jsonResponse/installFetch, and anilist.test.ts/ graphql.test.ts for the patterns). These fixtures are hand-written, which makes it easy to accidentally encode what the code expects instead of what AniList's GraphQL API actually returns — a test built that way stays green even when it's exercising a bug.

The rule

A fixture must mirror the real response shape for that exact query: only the fields AniList actually sends for that selection, in the shape it actually sends them (including null for fields the account/media doesn't have — don't just omit them). Don't add a field because a client module reads it, and don't reuse a fixture from a similar-looking query — check the actual GraphQL selection you're mocking.

AniList-specific shapes worth getting right

  • The nested validation-error envelope. A GraphQL validation failure comes back as {errors: [{message: "Validation failed", validation: {field: ["reason"]}}]} — not a flat message. A fixture (or a fix) that only checks errors[0].message will miss real per-field detail; see describeGraphQLError() in src/lib/graphql.ts and its test coverage for the shape to mirror.
  • score vs scoreRaw. SaveMediaListEntry's score field is format-dependent (POINT_10, POINT_100, ...); scoreRaw is always a literal 0-100 integer regardless of the account's scoring format. A fixture that returns score when the mutation variables sent scoreRaw (or vice versa) will pass a naive assertion while hiding a real conversion bug — see saveListEntry's tests in anilist.test.ts.
  • advancedScores is positional. The account's advanced-scoring categories (User.mediaListOptions.animeList.advancedScoring / .mangaList.advancedScoring) determine array order for SaveMediaListEntry's advancedScores argument — a fixture with the categories in a different order than the account actually has configured would validate the wrong thing; see orderAdvancedScores's tests.
  • Page can only carry one list field per query (see docs/api-references.md's Pagination section for why) — a fixture combining Page.media and Page.characters in one response would never occur for real. That rule is about Page's own sub-selection only; combining Page with an unrelated aliased root field in the same request (e.g. getSchedule/getUserActivity's exists:Media(id:$id){id} check next to schedule:Page(...)) is a different, valid pattern — mirror both fields' real response shape in that fixture.
  • A fixture testing a defensive/not-yet-observed code path must say so. Some guards (assertFound() on a query AniList hasn't been observed returning null for) exist as insurance against upstream behavior changing, not because the null response has been seen live — see getUserProfile/getUserStats/getFullUserInfo in user.ts. A fixture exercising that branch (e.g. mocking {data: {User: null}}) is testing the guard, not AniList's current live behavior, and must say so in a comment right above the mock — otherwise it silently violates the rule above with no signal to a future reader that the shape is hypothetical rather than confirmed.

Read the full file on GitHub · 79 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 79 lines · 48 tokens per session scan A 0f4f6ece70d1

Subscribe to this mod's changes

fixture-accuracy-check is a skill published in the GitHub repository Grinv/anilist-mcp-server (1 stars, last pushed 15d ago), licensed MIT. It adds 48 tokens to every session and 1,102 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

api-testing

Testing patterns for MCP tool/resource handlers using createMockContext and Vitest. Covers mock context options, handler testing, McpError assertions, format testing, Vitest config setup, and test isolation conventions.

cyanheads/anime-mcp-server · 46 tokens

field-test

Exercise tools, resources, and prompts against a live HTTP server via MCP JSON-RPC over curl. Starts the server, surfaces the catalog, runs real and adversarial inputs, and produces a tight report with concrete findings and numbered follow-up options. Use after adding or modifying definitions, or when the user asks to…

cyanheads/anime-mcp-server · 76 tokens

add-test

Scaffold a test file for an existing tool, resource, or service. Use when the user asks to add tests, improve coverage, or when a definition exists without a matching test file.

cyanheads/anime-mcp-server · 41 tokens

live-audit

Audit steam-games-mcp — build/test/lint gate, live MCP tool edge-case sweep (input validation, SteamID64/vanity/appid edge cases, key-gating), and source-level code review. Use when asked to test/audit the published or just-fixed steam-games-mcp package, hunt for bugs/edge cases, or repeat "the same kind of testing as…

Grinv/steam-games-mcp · 83 tokens

prompt-check

Live-test every MCP Prompt in src/tools/prompts.ts through the real MCP protocol (not a static read) across every argument combination. Use when a prompt is added or its argument-handling logic changes, or as part of a live-audit pass.

Grinv/steam-games-mcp · 54 tokens

verify-cli

Run smoke tests against the mpak CLI to verify all commands work correctly before publishing a new release.

NimbleBrainInc/mpak · 23 tokens