Skip to content
Data
Skill

/brainstorm

Ideas for football data visualisations: chart types and designs for match reports, player profiles, dashboards and other graphics, with real-world examples. Use when the user wants options for how to show their data.

From plugin
nutmeg
5611 skills3 agents3 hooks1 MCP

Claude Code

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

SKILL.md

brainstorm.SKILL.md
name: nutmeg-brainstorm
description: "Ideas for football data visualisations: chart types and designs for match reports, player profiles, dashboards and other graphics, with real-world examples. Use when the user wants options for how to show their data."
argument-hint: "[what to visualise, e.g. 'shot map for a single match' or 'player comparison radar']"
allowed-tools: ["Read", "Write", "Bash", "WebSearch", "WebFetch", "Agent", "mcp__plugin_nutmeg_football-docs__search_docs", "mcp__football-docs__search_docs"]

Brainstorm

Help the user explore and choose football data visualisation approaches through research-backed ideation and collaborative refinement.

Accuracy

Read and follow `${CLAUDE_PLUGIN_ROOT}/docs/accuracy-guardrail.md` before answering any question about provider-specific facts (IDs, endpoints, schemas, coordinates, rate limits). Always use `search_docs` — never guess from training data.

First: check profile

Read `.nutmeg.user.md`. If it doesn't exist, continue with sensible defaults (Python and pandas, intermediate level) and suggest running `/nutmeg` setup at the end. Use their profile for:

  • Programming language (Python/R/JS)
  • Visualisation libraries they use (mplsoccer, matplotlib, ggplot2, d3, Observable)
  • Experience level (adapt complexity of suggestions)
  • Available data sources (what providers they have access to)

References (load as needed)

This skill has two reference documents. Load them when relevant — don't read both upfront for every question.

| Reference | When to load | Path | |---|---|---| | **Chart Canon** | When discussing specific football chart types, conventions, or anti-patterns | `${CLAUDE_PLUGIN_ROOT}/skills/brainstorm/references/chart-canon.md` | | **Viz Styles** | When helping the user choose a design approach or aesthetic direction | `${CLAUDE_PLUGIN_ROOT}/skills/brainstorm/references/viz-styles.md` | | **Campos Bridge** | Strong React/campos signal in cwd — loads the bridge; soft signals surface a mention only | `${CLAUDE_PLUGIN_ROOT}/skills/_shared/campos-bridge.md` |

Process

Phase 1: Understand the goal

Ask one question at a time to understand:

  • **What data?** Match events, player stats, team stats, tracking data?
  • **What story?** What insight or comparison are they trying to show?
  • **What context?** Dashboard, social media, blog post, presentation, academic paper?
  • **What format?** Static image, interactive, animation, part of a larger report?

Don't ask all of these upfront. Start with the most important one based on what they said, then follow up.

**Detect React/campos context before proposing approaches:**

  • **Strong signal** — Read cwd's `package.json`; if it contains `react` or `@withqwerty/campos-react` in `dependencies`/`devDependencies`, load `${CLAUDE_PLUGIN_ROOT}/skills/_shared/campos-bridge.md` and include campos options alongside Python/R in Phase 3.
  • **Soft signal** — user mentions React/TS/Next/Vite/campos/browser chart in conversation AND cwd does not have `pyproject.toml` / `requirements.txt` / `renv.lock` / `Gemfile`. Do not auto-load; mention the bridge exists and offer to load if the user confirms they want a React chart.
  • **Conflicting signal** — cwd is a Python/R/Ruby project. Keep the existing mplsoccer/ggplot2 path; soft signals are ignored. Strong signals still win (monorepo case).
  • **Integration-self signal** — cwd IS the campos or nutmeg repo itself (see the bridge doc for detection). Downgrade to soft — working on the integration is not the same as using it.
  • **No signal** — existing path unchanged.

**Determine their style early.** Load `${CLAUDE_SKILL_DIR}/references/viz-styles.md` and identify which style fits their context (Analytical, Social Media, Editorial, Minimal/Academic). For advanced users, skip the style discussion — they know what they want. Focus on the specific technique.

Phase 2: Research approaches

Before proposing options, research what works well.

**Search strategy (follow this order):**

1. **Check football-docs:**

  • `search_docs(query="[viz type]", provider="mplsoccer")` — mplsoccer has extensive viz docs
  • `search_docs(query="[concept] visualisation")` — check if any provider docs cover this

2. **Load the chart canon** if the question involves a standard football chart type:

  • Read `${CLAUDE_PLUGIN_ROOT}/skills/brainstorm/references/chart-canon.md`
  • Check conventions, known weaknesses, and anti-patterns for the chart type

3. **Search the web for real-world examples:**

  • Search: `"football analytics" "[viz type]" site:twitter.com OR site:x.com`
  • Search: `"[viz type]" football "made with" mplsoccer OR matplotlib OR ggplot2`
  • Search: `football data viz "[specific chart]" tutorial`
  • Search for key practitioners: Karun Singh, Tom Worville, John Burn-Murdoch, Mark Thompson, StatsBomb

4. **Check GitHub for open implementations:**

  • Search: `site:github.com football viz "[chart type]"`

**Report what you find before proposing options.** Show 2-3 real examples with links and explain what makes each effective.

Phase 3: Propose approaches

Based on research, propose 2-3 visualisation approaches. For each:

  • **What it looks like** — describe the chart type, layout, key visual elements
  • **Why it works** — for their specific goal and audience
  • **Complexity** — how hard to build with their tools and experience level
  • **Example reference** — link to a real-world example if found
  • **Trade-offs** — what this approach emphasises vs what it downplays

Lead with your recommendation and explain why. Adapt to their style:

  • For **dashboard** users: emphasise clarity, interactivity, filtering
  • For **social media** users: emphasise visual impact, self-contained-ness
  • For **editorial** users: emphasise narrative power, annotation, metaphor
  • For **academic** users: emphasise precision, reproducibility, uncertainty

**When the campos bridge is loaded (React/campos strong signal):** at least one of the 2-3 proposals must be

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
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
nutmeg

nutmeg

Football data analytics entry point. Use for any task with football data: xG, match or player stats, scouting, shot maps,…

@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 brainstorm.

Which coding agents can use brainstorm?
brainstorm 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.