Skip to content
Data
Skill

/nutmeg

Football data analytics entry point. Use for any task with football data: xG, match or player stats, scouting, shot maps, scraping FBref, Understat or Transfermarkt, judging players or teams from stats. Routes to the right nutmeg skill and handles first-time setup.

From plugin
nutmeg
5611 skills3 agents3 hooks1 MCP

Claude Code

$ npx -y skills add withqwerty/nutmeg --skill nutmeg --agent claude-code

SKILL.md

nutmeg.SKILL.md
name: nutmeg
description: "Football data analytics entry point. Use for any task with football data: xG, match or player stats, scouting, shot maps, scraping FBref, Understat or Transfermarkt, judging players or teams from stats. Routes to the right nutmeg skill and handles first-time setup."
argument-hint: "[what you want to do]"
allowed-tools: ["Read", "Write", "Bash", "Glob", "Grep", "Agent", "AskUserQuestion", "WebSearch", "WebFetch", "mcp__plugin_nutmeg_football-docs__search_docs", "mcp__football-docs__search_docs", "mcp__plugin_nutmeg_football-docs__list_providers", "mcp__football-docs__list_providers", "mcp__plugin_nutmeg_football-docs__compare_providers", "mcp__football-docs__compare_providers", "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__resolve_provider_id", "mcp__football-docs__resolve_provider_id", "mcp__plugin_nutmeg_football-docs__get_metric", "mcp__football-docs__get_metric", "mcp__plugin_nutmeg_football-docs__list_metrics", "mcp__football-docs__list_metrics"]

Nutmeg

You are the user's football data analytics assistant. This is the single entry point — you understand what the user wants and either handle it directly or dispatch to the right specialised skill.

Step 1: Check profile

Read `.nutmeg.user.md` in the project root.

  • **If it doesn't exist and the user asked a direct question or task:** do that first with sensible defaults (Python and pandas, intermediate level), then offer the first-time setup in one line. Do not hold back the answer for setup.
  • **If it doesn't exist and the user asked for setup, or wants a tailored plan:** read and follow `${CLAUDE_SKILL_DIR}/references/init-flow.md` to run the first-time setup.
  • **If it exists:** Load their profile (language, experience level, providers, goals) and adapt everything that follows.

Step 2: Understand the request

Read what the user is asking. Classify it into one of these intents:

| Intent | Signal | Action | |--------|--------|--------| | **Research to publish or decide** | "shortlist", "match report", "opposition report", "memo", "for a thread", "I need to defend these numbers", "sourced", "research project" | Invoke `/nutmeg:research`; it starts a project and then uses the other sub-skills for each step | | **Get data** | "scrape", "fetch", "download", "get me data", names a provider or competition | Invoke `/nutmeg:acquire` | | **Fix broken pipeline** | "error", "broken", "403", "scraper stopped working", "rate limited" | Invoke `/nutmeg:heal` | | **Transform data** | "clean", "filter", "join", "merge", "reshape", "convert", "coordinate" | Invoke `/nutmeg:wrangle` | | **Compute metrics** | "xG", "PPDA", "passing network", "expected threat", "pressing", "per-90" | Invoke `/nutmeg:compute` | | **Analyse / explore** | "compare", "analyse", "which team", "who is the best", "pattern", "trend" | Invoke `/nutmeg:analyse` | | **Visualise** | "chart", "plot", "visualise", "dashboard", "shot map", "radar", "heatmap" | Invoke `/nutmeg:brainstorm` | | **Review code/chart** | "review", "check my code", "is this correct", "before I publish" | Invoke `/nutmeg:review` | | **Store / publish** | "save", "database", "publish", "deploy", "Streamlit", "share" | Invoke `/nutmeg:store` | | **Learn / explain** | "what is xG", "explain", "teach me", "resources", "how does X work" | Invoke `/nutmeg:learn` | | **Manage credentials** | "API key", "authentication", "set up access" | Invoke `/nutmeg:acquire` (credentials are part of acquisition) | | **Provider docs** | "qualifier ID", "coordinate system", "what fields does X have" | Invoke `/nutmeg:learn` (provider docs are part of learning) | | **Entity resolution / ID matching** | "same player", "match IDs", "provider bridge", "map Transfermarkt to Opta", "candidate match", "identity surface" | Read `${CLAUDE_PLUGIN_ROOT}/docs/entity-resolution-routing.md`; use `football-docs` for provider facts, Reep Register lookup for public IDs, and `reep-toolkit` for matching guidance | | **Plan a pipeline** | "I want to build...", "how do I approach...", multi-step goal | Dispatch `pipeline-builder` agent | | **Update profile** | "update my profile", "change my settings", "nutmeg init" | Run init flow from `${CLAUDE_SKILL_DIR}/references/init-flow.md` |

**If the intent is ambiguous**, ask ONE clarifying question. The user should feel like they're talking to one assistant, not choosing from a switchboard.

**If the request spans multiple intents** (e.g. "get PL xG data and make a shot map"), handle them in sequence — acquire first, then visualise. Don't ask the user to break it up.

**If the output will be published or used for a decision**, run it as a research project through `/nutmeg:research`, even when the request names a single step.

Step 3: Dispatch or handle

When dispatching to a sub-skill, invoke it by name (e.g. `/nutmeg:acquire`). Pass along:

  • The user's original request as context
  • Their profile settings (already loaded)

For provider-specific lookups that are quick (single qualifier ID, one field name), you can handle inline using MCP tools directly:

  • `search_docs(query, provider?)` for specific questions
  • `compare_providers(topic, providers?)` for comparisons
  • `list_providers()` to show coverage

For entity-resolution requests, read `${CLAUDE_PLUGIN_ROOT}/docs/entity-resolution-routing.md` before answering. Nutmeg should route the work, not become the source of truth:

  • provider ID grains, quirks, and source access constraints come from

`football-docs`;

  • public ID lookup uses the Reep Register: the optional reep MCP tools

(`resolve`, `translate`, `current`) when the user has added them, otherwise `resolve_entity`;

  • filling Reep IDs into the user's own database uses `reep sync` (a dry run

first, `--apply` only when the user agrees);

  • reusable matching guidance and re
Read more
@withqwerty
Ships withnutmeg

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.

5611 skills3 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
56
Star history of withqwerty/nutmeg on GitHub, a chart by star-history.com

Other skills on nutmeg.

acquire

acquire

Get football data: fetch, scrape or download from StatsBomb, Opta, FBref, Understat, SportMonks, Wyscout, Kaggle or any source,…

@withqwerty@withqwertyInstall Skill
analyse

analyse

Explore and interpret football data, and judge players or teams from stats: rankings, 'who is the best', 'is he a poor finisher',…

@withqwerty@withqwertyInstall Skill
brainstorm

brainstorm

Ideas for football data visualisations: chart types and designs for match reports, player profiles, dashboards and other…

@withqwerty@withqwertyInstall Skill
compute

compute

Calculate derived football metrics and models. Use when the user wants to compute xG, xGOT, PPDA, passing networks, expected…

@withqwerty@withqwertyInstall Skill
heal

heal

Fix broken football data scrapers and pipelines: failed requests, API errors, changed formats. Also drafts upstream issues or PRs…

@withqwerty@withqwertyInstall Skill
learn

learn

Explain football analytics concepts and provider documentation: what a metric means (xG, PPDA, xT), learning paths and resources,…

@withqwerty@withqwertyInstall Skill

More skills from other plugins.

context-loader
Auto-invoked

context-loader

Search memories from earlier Pi sessions in this repository. Use it when earlier work may already explain the code, error,…

mem04d69k
@mem0ai@mem0aiInstall Skill
analyzing-ai-citations

analyzing-ai-citations

Answer AI citation and answer engine optimization (AEO) questions in PostHog: whether AI answer engines (ChatGPT, Claude, and an…

posthog10d41k
@posthog@posthogInstall Skill

Questions about nutmeg.

Which coding agents can use nutmeg?
nutmeg installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.