Football data analytics toolkit for Claude Code. Covers Opta, StatsBomb, Wyscout, SportMonks, and free sources.
翻译准备中
插件Python · HTMLGitHub @withqwerty自行安装运营者未确认
试用过了吗? 点一下就好,无需登录。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
安装型项目无需部署域名也可验证。个人仓库可通过 GitHub 登录验证,组织仓库可使用上方的仓库验证文件。
正在加载完整 README。 以下为已保存的摘录。
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. If you've ever spent an hour figuring out which Opta qualifier is xG, or why your StatsBomb coordinates are upside down, or how to normalise a heatmap properly, this is for you.查看完整 README ↗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. If you've ever spent an hour figuring out which Opta qualifier is xG, or why your StatsBomb coordinates are upside down, or how to normalise a heatmap properly, this is for you.
What it does: Gives Claude deep, verified knowledge of football data providers, libraries, and conventions. Claude looks up the actual docs instead of guessing from training data, writes code adapted to your stack, and catches football-specific mistakes in your work.
Why not just ask Claude directly? Claude knows football data exists but its knowledge is frozen and often wrong on specifics — qualifier IDs, API endpoints, coordinate systems, method signatures. These change. nutmeg connects Claude to a live, searchable index of real provider documentation so it gets the details right.
nutmeg gives Claude deep knowledge of football data so it can help you:
It adapts to your experience level, preferred programming language, and available data sources.
Includes skills, agents, and the football docs MCP server.
# From Claude Code — add the marketplace first (one-time), then install
/plugin marketplace add withqwerty/plugins
/plugin install nutmeg@withqwerty
Works with Claude Code, Cursor, Codex, Windsurf, and 40+ other agents via the Agent Skills standard.
npx skills add withqwerty/nutmeg
Nutmeg looks up provider facts in the football-docs MCP server, which this install does not include. Add it to your agent as well (Node.js 22.13 or newer):
claude mcp add football-docs -- npx -y [email protected]
For other agents, add the same command (npx -y [email protected]) as an MCP server in their settings. Without it, nutmeg says it cannot check provider facts, and labels anything it answers from memory as unverified.
This installs the 11 skills but not the agents or MCP docs server. For the full experience (searchable provider docs, pipeline builder agent, data reviewer agent), use the plugin install above.
Run /nutmeg and describe what you want to do. On first run, it creates your profile (experience, tools, data access) so all skills adapt accordingly.
Most users only need two commands — /nutmeg routes everything else automatically.
| Skill | What it does |
|---|---|
/nutmeg | Start here. Describe what you want — it handles setup, routing, and dispatch |
/nutmeg:learn | Concepts, resources, provider docs, learning paths |
/nutmeg:research | Run analysis you will publish or decide on as a research project: a question card, a plan with reasons, a claim ledger that ties every number to its evidence, explainer pages you can edit and share, and a teach-back (the work in your own words) before anything is published |
Research projects need Python 3.10 or newer (python3). Without it, everything else in nutmeg works as before.
These are invoked automatically by /nutmeg based on what you're doing. Power users can call them directly.
| Skill | What it does |
|---|---|
/nutmeg:acquire | Fetch, scrape, or download data + manage API keys |
/nutmeg:wrangle | Transform, filter, reshape data |
/nutmeg:compute | Calculate derived metrics (xG, PPDA, passing networks) |
/nutmeg:analyse | Explore and interpret football data |
/nutmeg:brainstorm | Research-backed visualisation ideation and chart design |
/nutmeg:store | Choose storage format and publishing method |
/nutmeg:review | Review data code and charts for correctness and conventions |
/nutmeg:heal | Fix broken scrapers, submit upstream issues |
nutmeg includes a searchable index of football data provider documentation. Think Context7 for football data. Provider-specific facts, including identity surfaces and ID-scheme quirks, should come from this index rather than from Nutmeg's own prompts.
The server is published as the football-docs npm package and starts automatically when nutmeg is loaded (via npx -y [email protected]; nutmeg pins the version it was tested with). No local build step is required. It needs Node.js 22.13 or newer.
Provider docs and the search index live in the football-docs repository. Drop markdown files in docs/{provider}/ there and run pnpm ingest to rebuild data/docs.db:
docs/
opta/
event-types.md
qualifiers.md
coordinate-system.md
api-access.md
statsbomb/
event-types.md
data-model.md
...
Nutmeg does not keep its own provider facts. Coverage, fields, IDs, access terms and rate limits come from football-docs, which indexes the providers and tools, including Opta, StatsBomb, Wyscout, SkillCorner, Sportradar, SportMonks, Impect, FBref, Understat, kloppy, socceraction, mplsoccer and databallpy. Ask nutmeg "which providers do you cover?" or call list_providers for the current list.
Cross-provider player, team and match IDs come from the Reep Register (CC0). football-docs' resolve_entity tool looks them up: it reads the register DuckDB or uses an API key (set-up steps). For many lookups, add the optional reep MCP server (needs uv): claude mcp add --scope user reep -- uvx --from 'reep[mcp]>=0.1,<0.2' reep mcp, then uvx --from 'reep>=0.1,<0.2' reep catalog sync to download the free register (about 210 MB). The same reep command fills Reep IDs into your own database (reep sync); see the reep documentation.
Metric definitions come from the football-docs metric cards (list_metrics, get_metric): xG, npxG, xA, xG assisted, PPDA, progressive passes and carries, xT, VAEP, field tilt and pass completion, each with its published variants. Nutmeg names the variant ID it uses (for example ppda.statsbomb-hudl), never compares values from different variants, and in a research project records the variant on the plan choice and its claims (rests_on type metric).
nutmeg is measured on two private sets of eval cases: a regression suite (the cases we tune against: provider-fact grounding, stat misuse, point-in-time leakage, research projects, understanding and robustness) and a held-out set of blind reproductions of published analysis (never tuned against). Both are kept private so the cases cannot leak into optimisers or model training. This repository holds the harness that runs them, in evals/_scaffold/.
NUTMEG_EVALS_DIR=<regression suite> NUTMEG_HOLDOUT_DIR=<held-out set> python3 evals/_scaffold/run_suites.py --runs 3
Both folders must be outside this repository. run_suites.py prints one score per suite, writes results to a folder outside the repository, and runs cases that grant Bash live (evals/_scaffold/run_live.py: claude -p --plugin-dir with the real football-docs server); the rest go through claude plugin eval with the regression suite's football-docs replay mock. The agent and the judge are both pinned to Sonnet 5.5; compare only scores made with the same models. --loop refuses to start until the held-out set has at least 10 cases.
nutmeg should not use up a subscription's 5-hour or weekly allowance on one task, so every eval reports tokens beside the score:
summary.json holds per-case medians, pass@1 and pass^k.run_suites.py --runs 3 --compare <earlier summary.json> compares two versions case by case and prints each change with a standard error. Use three runs for any keep-or-revert decision; one run is a smoke test only.python3 evals/_scaffold/footprint.py --check measures what nutmeg adds to every session (the hook text, and skill and agent descriptions from claude plugin details) and what each skill costs when it loads, against the budgets in evals/_scaffold/footprint_budget.json.To see what nutmeg costs you in your own sessions, run /usage in Claude Code: on paid plans it shows the share of usage by plugin and skill.
MIT