Not in the top 1,000 by GitHub stars

withqwerty/nutmeg

Football data analytics toolkit for Claude Code. Covers Opta, StatsBomb, Wyscout, SportMonks, and free sources.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/acquire/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

skills/analyse/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

skills/brainstorm/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

skills/compute/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

skills/heal/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

skills/learn/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

skills/nutmeg/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

skills/research/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

skills/review/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

skills/store/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

skills/wrangle/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d6a2d76548b

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 5d6a2d76548bd37cf7bab3ab9c265a284d9b7186

git clone --filter=blob:none --no-checkout https://github.com/withqwerty/nutmeg.git .hotskills/withqwerty-nutmeg && git -C .hotskills/withqwerty-nutmeg checkout --detach 5d6a2d76548bd37cf7bab3ab9c265a284d9b7186 # Copy each selected skill directory from .hotskills/withqwerty-nutmeg into .claude/skills/<skill-name>/
67GitHub stars
11stars in 7 days
11skills in this repository
38commits in 30 days

Heat

5.4
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 5, 202667

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

nutmeg-acquire

When your agent uses it

Get football data: fetch, scrape or download from StatsBomb, Opta, FBref, Understat, SportMonks, Wyscout, Kaggle or any source, and set up API keys and access. Use when the user wants data, or asks what is free and what is paid.

What it loads into context

Frontmatter

163 tokens

Always available to the agent

SKILL.md

2,137 tokens

When the skill is activated

Reference documents

3,594 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Accuracy
  2. First: check profile
  3. Credentials
  4. Decision tree
  5. Entity ID resolution
  6. Self-discovery
  7. Caching
  8. Rate limiting
  9. Security

Scripts executed separately

  • ../../core/nutmeg.py

Files

  • ../../.claude-plugin/marketplace.jsonasset1,082 bytes
  • ../../.claude-plugin/plugin.jsonasset444 bytes
  • ../../core/nutmeg.pyruns384 bytes
  • ../../docs/accuracy-guardrail.mddoc4,402 bytes
  • ../../docs/entity-resolution-routing.mddoc10,617 bytes
  • ../../hooks/hooks.jsonasset952 bytes
  • ../../hooks/hooks.jsonasset952 bytes
  • ../../hooks/hooks.jsonasset952 bytes
  • ../../hooks/hooks.jsonasset952 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes
  • SKILL.mdcore8,945 bytes

No excerpt is shown for this license. Read the source on GitHub.

View the complete source on GitHub

Skills included

  • nutmeg-acquire
  • nutmeg-analyse
  • nutmeg-brainstorm
  • nutmeg-compute
  • nutmeg-heal
  • nutmeg-learn
  • nutmeg
  • nutmeg-research
  • nutmeg-review
  • nutmeg-store
  • nutmeg-wrangle

Repository facts

License
No license detected
Created
Mar 25, 2026
Last pushed
Nov 3, 2026
Forks
5
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 5, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 35 notes
  • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/acquire/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • hooks/hooks.json:1 Plugin-wide analysis incomplete; see repository notes
  • skills/brainstorm/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/compute/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/heal/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/heal/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/heal/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 108 signals by file

.claude-plugin/marketplace.json

  • Network accessline 3
    "owner": {     "name": "withqwerty",     "url": "https://github.com/withqwerty"
  • Network accessline 4
    "name": "withqwerty",     "url": "https://github.com/withqwerty"   },
  • Network accessline 5
    "url": "https://github.com/withqwerty"
  • Network accessline 15
    "author": {         "name": "withqwerty",         "url": "https://github.com/withqwerty"
  • Network accessline 16
    "name": "withqwerty",         "url": "https://github.com/withqwerty"       },
  • Network accessline 17
    "url": "https://github.com/withqwerty"
  • Network accessline 18
    },       "homepage": "https://github.com/withqwerty/nutmeg",       "tags": [
  • Network accessline 19
    "homepage": "https://github.com/withqwerty/nutmeg",

.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "withqwerty",     "url": "https://github.com/withqwerty"
  • Network accessline 6
    "name": "withqwerty",     "url": "https://github.com/withqwerty"   }
  • Network accessline 7
    "url": "https://github.com/withqwerty"

core/nutmeg.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

docs/entity-resolution-routing.md

  • Network accessline 56
    The `reep` MCP server is not part of the plugin. A user who joins data from more than one provider can add it once, for all projects. It needs `uvx` (part of [uv](https://docs.astral.sh/uv/)):
  • Network accessline 56
    The `reep` MCP server is not part of the plugin. A user who joins data from more than one provider can add it once, for all projects. It needs `uvx` (part of [uv](https://docs.astral.sh/uv/)):
  • Network accessline 56
    The `reep` MCP server is not part of the plugin. A user who joins data from more than one provider can add it once, for all projects. It needs `uvx` (part of [uv](https://docs.astral.sh/uv/)):
  • Network accessline 56
    The `reep` MCP server is not part of the plugin. A user who joins data from more than one provider can add it once, for all projects. It needs `uvx` (part of [uv](https://docs.astral.sh/uv/)):
  • Network accessline 58
    [uv](https://docs.astral.sh/uv/)):
  • Network accessline 58
    [uv](https://docs.astral.sh/uv/)):
  • Network accessline 58
    [uv](https://docs.astral.sh/uv/)):
  • Network accessline 58
    [uv](https://docs.astral.sh/uv/)):
  • Network accessline 108
    Outside an MCP client, the same lookups run from the shell with `--json`, for example `uvx --from 'reep>=0.1,<0.2' reep translate transfermarkt/spieler/568177 --to fbref --json`. The documentation is at https://reep.football/docs/python/.
  • Network accessline 108
    Outside an MCP client, the same lookups run from the shell with `--json`, for example `uvx --from 'reep>=0.1,<0.2' reep translate transfermarkt/spieler/568177 --to fbref --json`. The documentation is at https://reep.football/docs/python/.
  • Network accessline 108
    Outside an MCP client, the same lookups run from the shell with `--json`, for example `uvx --from 'reep>=0.1,<0.2' reep translate transfermarkt/spieler/568177 --to fbref --json`. The documentation is at https://reep.football/docs/python/.
  • Network accessline 108
    Outside an MCP client, the same lookups run from the shell with `--json`, for example `uvx --from 'reep>=0.1,<0.2' reep translate transfermarkt/spieler/568177 --to fbref --json`. The documentation is at https://reep.football/docs/python/.
  • Network accessline 110
    The documentation is at https://reep.football/docs/python/.
  • Network accessline 110
    The documentation is at https://reep.football/docs/python/.
  • Network accessline 110
    The documentation is at https://reep.football/docs/python/.
  • Network accessline 110
    The documentation is at https://reep.football/docs/python/.
  • Network accessline 119
    - **Local file (free, no key).**   1. Download the release once: `curl -L -o reep-register-v1.duckdb https://reep.football/downloads/duckdb`
  • Network accessline 119
    - **Local file (free, no key).**   1. Download the release once: `curl -L -o reep-register-v1.duckdb https://reep.football/downloads/duckdb`
  • Network accessline 119
    - **Local file (free, no key).**   1. Download the release once: `curl -L -o reep-register-v1.duckdb https://reep.football/downloads/duckdb`
  • Network accessline 119
    - **Local file (free, no key).**   1. Download the release once: `curl -L -o reep-register-v1.duckdb https://reep.football/downloads/duckdb`
  • Network accessline 120
    1. Download the release once: `curl -L -o reep-register-v1.duckdb https://reep.football/downloads/duckdb`
  • Network accessline 120
    1. Download the release once: `curl -L -o reep-register-v1.duckdb https://reep.football/downloads/duckdb`
  • Network accessline 120
    1. Download the release once: `curl -L -o reep-register-v1.duckdb https://reep.football/downloads/duckdb`
  • Network accessline 120
    1. Download the release once: `curl -L -o reep-register-v1.duckdb https://reep.football/downloads/duckdb`
  • Network accessline 128
    (or `"env": {"REEP_DUCKDB_PATH": "..."}` in your MCP JSON).   3. Record the release stamp. `resolve_entity` prints it; the current stamp is at      `https://data.reep.football/releases/latest.json`.
  • Network accessline 128
    (or `"env": {"REEP_DUCKDB_PATH": "..."}` in your MCP JSON).   3. Record the release stamp. `resolve_entity` prints it; the current stamp is at      `https://data.reep.football/releases/latest.json`.
  • Network accessline 128
    (or `"env": {"REEP_DUCKDB_PATH": "..."}` in your MCP JSON).   3. Record the release stamp. `resolve_entity` prints it; the current stamp is at      `https://data.reep.football/releases/latest.json`.
  • Network accessline 128
    (or `"env": {"REEP_DUCKDB_PATH": "..."}` in your MCP JSON).   3. Record the release stamp. `resolve_entity` prints it; the current stamp is at      `https://data.reep.football/releases/latest.json`.
  • Network accessline 130
    `https://data.reep.football/releases/latest.json`.
  • Network accessline 130
    `https://data.reep.football/releases/latest.json`.
  • Network accessline 130
    `https://data.reep.football/releases/latest.json`.
  • Network accessline 130
    `https://data.reep.football/releases/latest.json`.
  • Network accessline 133
    installs with football-docs; if its native build fails, `resolve_entity` says so. - **API key.** Set `REEP_API_KEY`. Keys are issued by hand: a free evaluation key   (30 days, extended on request) is available through https://reep.football/
  • Network accessline 133
    installs with football-docs; if its native build fails, `resolve_entity` says so. - **API key.** Set `REEP_API_KEY`. Keys are issued by hand: a free evaluation key   (30 days, extended on request) is available through https://reep.football/
  • Network accessline 133
    installs with football-docs; if its native build fails, `resolve_entity` says so. - **API key.** Set `REEP_API_KEY`. Keys are issued by hand: a free evaluation key   (30 days, extended on request) is available through https://reep.football/
  • Network accessline 133
    installs with football-docs; if its native build fails, `resolve_entity` says so. - **API key.** Set `REEP_API_KEY`. Keys are issued by hand: a free evaluation key   (30 days, extended on request) is available through https://reep.football/
  • Access to secretsline 134
    [Credential-related source omitted]
  • Access to secretsline 134
    [Credential-related source omitted]
  • Access to secretsline 134
    [Credential-related source omitted]
  • Access to secretsline 134
    [Credential-related source omitted]
  • Network accessline 135
    (30 days, extended on request) is available through https://reep.football/api.
  • Network accessline 135
    (30 days, extended on request) is available through https://reep.football/api.
  • Network accessline 135
    (30 days, extended on request) is available through https://reep.football/api.
  • Network accessline 135
    (30 days, extended on request) is available through https://reep.football/api.
  • Network accessline 178
    When the user needs reusable code rather than a one-off lookup, route them to `reep-toolkit` (https://github.com/withqwerty/reep-toolkit). It is the public
  • Network accessline 178
    When the user needs reusable code rather than a one-off lookup, route them to `reep-toolkit` (https://github.com/withqwerty/reep-toolkit). It is the public
  • Network accessline 178
    When the user needs reusable code rather than a one-off lookup, route them to `reep-toolkit` (https://github.com/withqwerty/reep-toolkit). It is the public
  • Network accessline 178
    When the user needs reusable code rather than a one-off lookup, route them to `reep-toolkit` (https://github.com/withqwerty/reep-toolkit). It is the public
  • Network accessline 179
    `reep-toolkit` (https://github.com/withqwerty/reep-toolkit). It is the public
  • Network accessline 179
    `reep-toolkit` (https://github.com/withqwerty/reep-toolkit). It is the public
  • Network accessline 179
    `reep-toolkit` (https://github.com/withqwerty/reep-toolkit). It is the public
  • Network accessline 179
    `reep-toolkit` (https://github.com/withqwerty/reep-toolkit). It is the public

skills/_shared/campos-bridge.md

  • Network accessline 39
    Fetch with `WebFetch`: - `https://campos.withqwerty.com/r/registry.json` — index: all charts + adapters, with `featured` flag
  • Network accessline 39
    Fetch with `WebFetch`: - `https://campos.withqwerty.com/r/registry.json` — index: all charts + adapters, with `featured` flag
  • Network accessline 40
    - `https://campos.withqwerty.com/r/registry.json` — index: all charts + adapters, with `featured` flag
  • Network accessline 40
    - `https://campos.withqwerty.com/r/registry.json` — index: all charts + adapters, with `featured` flag
  • Network accessline 41
    - `https://campos.withqwerty.com/r/charts/<Name>.json` — per-chart: purpose, data contract, invariants, recipes, capabilities
  • Network accessline 41
    - `https://campos.withqwerty.com/r/charts/<Name>.json` — per-chart: purpose, data contract, invariants, recipes, capabilities
  • Network accessline 42
    - `https://campos.withqwerty.com/r/adapters/<provider>.json` — per-adapter: methods, JSDoc, tier
  • Network accessline 42
    - `https://campos.withqwerty.com/r/adapters/<provider>.json` — per-adapter: methods, JSDoc, tier
  • Network accessline 43
    - `https://campos.withqwerty.com/r/adapter-matrix.json` — provider × chart capability grid
  • Network accessline 43
    - `https://campos.withqwerty.com/r/adapter-matrix.json` — provider × chart capability grid
  • Network accessline 44
    - `https://campos.withqwerty.com/r/recipes/<Name>.json` — named presets per chart
  • Network accessline 44
    - `https://campos.withqwerty.com/r/recipes/<Name>.json` — named presets per chart
  • Network accessline 65
    - Campos canonical frame: attacker-perspective, `x: 0..100` (own goal → opposition goal), `y: 0..100` (attacker's right → attacker's left), origin bottom-left. - Adapters produce this frame; renderers own orientation via `attackingDirection
  • Network accessline 65
    - Campos canonical frame: attacker-perspective, `x: 0..100` (own goal → opposition goal), `y: 0..100` (attacker's right → attacker's left), origin bottom-left. - Adapters produce this frame; renderers own orientation via `attackingDirection
  • Network accessline 66
    - Adapters produce this frame; renderers own orientation via `attackingDirection` prop. - Reference: `https://campos.withqwerty.com/getting-started` (coordinates section), or the local `docs/standards/coordinate-invariants.md` if campos is 
  • Network accessline 66
    - Adapters produce this frame; renderers own orientation via `attackingDirection` prop. - Reference: `https://campos.withqwerty.com/getting-started` (coordinates section), or the local `docs/standards/coordinate-invariants.md` if campos is 
  • Network accessline 67
    - Reference: `https://campos.withqwerty.com/getting-started` (coordinates section), or the local `docs/standards/coordinate-invariants.md` if campos is checked out.
  • Network accessline 67
    - Reference: `https://campos.withqwerty.com/getting-started` (coordinates section), or the local `docs/standards/coordinate-invariants.md` if campos is checked out.

skills/acquire/SKILL.md

  • Broad permissionsline 1
    Bash
  • Access to secretsline 41
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 45
    [Credential-related source omitted]
  • Network accessline 104
    // StatsBomb open data (direct from GitHub) const resp = await fetch('https://raw.githubusercontent.com/statsbomb/open-data/master/data/events/{match_id}.json');
  • Network accessline 105
    const resp = await fetch('https://raw.githubusercontent.com/statsbomb/open-data/master/data/events/{match_id}.json');

skills/analyse/SKILL.md

skills/brainstorm/SKILL.md

  • Broad permissionsline 1
    Bash
  • Network accessline 97
    **When the campos bridge is loaded (React/campos strong signal):** at least one of the 2-3 proposals must be a campos chart. Fetch the registry catalogue (`https://campos.withqwerty.com/r/registry.json`) and rank `featured: true` charts fir

skills/brainstorm/references/chart-canon.md

  • Network accessline 11
    Each spoke shows a player's per-90 value for one metric. The ends of each axis are set by the top 5% and bottom 5% of production by players in that position ([mplsoccer radar docs](https://mplsoccer.readthedocs.io/en/latest/gallery/radar/pl
  • Network accessline 11
    Each spoke shows a player's per-90 value for one metric. The ends of each axis are set by the top 5% and bottom 5% of production by players in that position ([mplsoccer radar docs](https://mplsoccer.readthedocs.io/en/latest/gallery/radar/pl

skills/compute/SKILL.md

  • Broad permissionsline 1
    Bash
  • Network accessline 84
    **Calculation** (Karun Singh's original model, [karun.in/blog/expected-threat.html](https://karun.in/blog/expected-threat.html)):

skills/heal/SKILL.md

  • Broad permissionsline 1
    Bash
  • Network accessline 84
    for attempt in range(max_retries):         try:             resp = requests.get(url, timeout=30)
  • Network accessline 85
    try:             resp = requests.get(url, timeout=30)             resp.raise_for_status()
  • Network accessline 86
    resp = requests.get(url, timeout=30)

skills/nutmeg/SKILL.md

skills/research/SKILL.md

skills/review/SKILL.md

skills/store/SKILL.md

  • Broad permissionsline 1
    Bash
  • Access to secretsline 76
    [Credential-related source omitted]

skills/wrangle/SKILL.md

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 6 facts
  • Allows Bash without restrictions, though it has no scripts or shell blocksanalyse/SKILL.md:5High confidence
  • Allows Bash without restrictions, though it has no scripts or shell blockscompute/SKILL.md:5High confidence
  • Allows Bash without restrictions, though it has no scripts or shell blocksheal/SKILL.md:5High confidence
  • Allows Bash without restrictions, though it has no scripts or shell blocksnutmeg/SKILL.md:5High confidence
  • Allows Bash without restrictions, though it has no scripts or shell blocksreview/SKILL.md:5High confidence
  • Allows Bash without restrictions, though it has no scripts or shell blockswrangle/SKILL.md:5High confidence
Signal confidence: 97 facts

and 47 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/acquire/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/acquire/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/acquire/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/acquire/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/acquire/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.