acquire
Get football data: fetch, scrape or download from StatsBomb, Opta, FBref, Understat, SportMonks, Wyscout, Kaggle or any source,…
Run football analysis as a research project that shows its work: a question, a plan with reasons, a claim ledger tying every number to evidence. Use for work to publish or decide on (shortlists, match or opposition reports, memos, charts, threads) or when sourced numbers are
Claude Code
$ npx -y skills add withqwerty/nutmeg --skill research --agent claude-code
Codex
$ npx skills add withqwerty/nutmeg --skill research -a codex -y
Cursor
$ npx skills add withqwerty/nutmeg --skill research -a cursor -y
Gemini CLI
$ npx skills add withqwerty/nutmeg --skill research -a gemini-cli -y
GitHub Copilot
$ npx skills add withqwerty/nutmeg --skill research -a github-copilot -y
OpenCode
$ npx skills add withqwerty/nutmeg --skill research -a opencode -y
Windsurf
$ npx skills add withqwerty/nutmeg --skill research -a windsurf -y
name: nutmeg-research description: "Run football analysis as a research project that shows its work: a question, a plan with reasons, a claim ledger tying every number to evidence. Use for work to publish or decide on (shortlists, match or opposition reports, memos, charts, threads) or when sourced numbers are asked for." argument-hint: "[the question to research]" allowed-tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep", "AskUserQuestion", "mcp__plugin_nutmeg_football-docs__search_docs", "mcp__football-docs__search_docs", "mcp__plugin_nutmeg_football-docs__resolve_entity", "mcp__football-docs__resolve_entity", "mcp__plugin_nutmeg_football-docs__get_provider_docs", "mcp__football-docs__get_provider_docs", "mcp__plugin_nutmeg_football-docs__get_metric", "mcp__football-docs__get_metric", "mcp__plugin_nutmeg_football-docs__list_metrics", "mcp__football-docs__list_metrics"]
Work like a research assistant, not an autopilot. The user must be able to check every input, every query and every number, and see why each choice was made. A research project keeps that trail in files the user and their teammates can open.
Read and follow `${CLAUDE_PLUGIN_ROOT}/docs/accuracy-guardrail.md`. Provider facts come from football-docs and IDs from the Reep Register, never from memory.
Run every project command through the plugin's core, in exactly this form:
python3 "${CLAUDE_PLUGIN_ROOT}/core/nutmeg.py" <command> ...Below, `nutmeg <command>` is short for that line. Run `nutmeg --help` or `nutmeg <command> --help` for the options. If `python3` is missing or older than 3.10, tell the user that research projects need Python 3.10 or newer, and continue the task without a project.
Start one when the user wants analysis to publish or to decide on: a shortlist, a match or opposition report, a memo, a chart or thread for social media, or any answer they ask to be sourced. Do not start one for a quick question ("what is PPDA?", "what is Opta's qualifier for a cross?"), a code fix or a lookup.
1. Pick a short slug, for example `shortlist-lb` or `arsenal-press-2025`. 2. Run `nutmeg new <slug> --question "<the question in one sentence>"`. 3. If the command says there is no team policy for data in git, ask the user with AskUserQuestion: keep data, run outputs and figure snapshots out of git (recommended for licensed club or provider data), or commit them with the project. Then run it again with `--data-in-git no` or `--data-in-git yes`.
The project lives in `research/<slug>/` and becomes the active project. `nutmeg status` shows it.
4. Run `nutmeg config show` and note the user's levels for plan, run and publish (section 10). They decide where you stop for approval.
Fill in `research/<slug>/question.md`: the question, the decision or output it informs, the data and scope (competitions, seasons, providers) and what is out of scope. Use the user's words. If the decision it informs is unclear, ask one question.
Every choice of metric, filter, join, threshold, source, method or chart is a plan choice. Add each with:
nutmeg plan choose --kind metric --choice "npxG per 90" \ --why "Penalties distort per-player comparisons." \ --rests-type docs --rests-ref "football-docs: <provider> <doc title>"
other one.
`--rests-type metric --rests-ref ppda.statsbomb-hudl`); use it for any metric that has a card, so readers see exactly which definition a number uses;
when the user asked for it.
Run `nutmeg plan check` and fix what it reports. Make the choices before you run anything: the plan locks automatically at the first `nutmeg run`, and that locked plan is the primary specification. Choices added or changed later are allowed, but the publish card and the workspace list them as made after the lock (`nutmeg plan diff`). Then follow the user's plan level:
anything.
still goes through the gate.
For data from a scrape, a download or an unknown source, record it first with `nutmeg data add <file> --source "<where it came from>"`: its profile reports duplicated rows, repeated IDs and empty columns, which you then deal with (and say how) before analysis.
Put each analysis step in a `.py`, `.R` or `.sql` file in the repository, then run it with:
nutmeg run analysis.py --input data/events.csv --sql queries/shots.sql -- --season 2025
`--sends api.example.com:player_id,minutes`.
Run `nutmeg run` on its own: no `&&`, `;`, pipes or redirects. Before it runs, the user sees a gate card with the services and data the step uses,
A Claude Code plugin that makes Claude an expert at football data analytics. Who it's for: Anyone who works with football data — analysts, developers, journalists, researchers, hobbyists.
Get football data: fetch, scrape or download from StatsBomb, Opta, FBref, Understat, SportMonks, Wyscout, Kaggle or any source,…
Explore and interpret football data, and judge players or teams from stats: rankings, 'who is the best', 'is he a poor finisher',…
Ideas for football data visualisations: chart types and designs for match reports, player profiles, dashboards and other…
Calculate derived football metrics and models. Use when the user wants to compute xG, xGOT, PPDA, passing networks, expected…
Fix broken football data scrapers and pipelines: failed requests, API errors, changed formats. Also drafts upstream issues or PRs…
Explain football analytics concepts and provider documentation: what a metric means (xG, PPDA, xT), learning paths and resources,…
Use this skill to extract structured Markdown/JSON from PDFs and document images—tables with cell-level precision, formulas as…
Estimates intracellular metabolic fluxes from steady-state carbon-13 isotope-tracing measurements using validated atom maps,…