Open-source agent skills for live sports data and prediction markets. Built for the Agent Skills spec. Works with sportsclaw, OpenClaw, Claude Code, Cursor, Copilot, Gemini CLI, Hermes Agent, and every major AI agent. Zero API keys. Zero signup.
$ npx -y skills add machina-sports/sports-skills --agent claude-code
What's inside
Open-source agent skills for live sports data and prediction markets. Built for the Agent Skills spec. Works with sportsclaw, OpenClaw, Claude Code, Cursor, Copilot, Gemini CLI, Hermes Agent, and every major AI agent.
Zero API keys. Zero signup. Just works for read-only sports data.
npx skills add machina-sports/sports-skills
Python package users (includes all sports modules in the base package):
pip install sports-skills
Canonical NBA Phase-1A output is available from normalized ESPN event and play-by-play values. Start-time precision is always explicit; minute values retain their source text and produce a bounded compact view without claiming an exact Sport Schema graph.
from sports_skills import canonical
document = canonical.canonicalize_nba_event(
event,
plays,
observed_at="2026-06-14T03:30:00Z",
start_time_precision="minute",
)
To upgrade to the latest version, run the install command with the --yes flag:
npx skills add machina-sports/sports-skills --yes
Agents should treat sports-skills as read-only by default:
Machine-readable capability and risk metadata lives in skills/catalog.json.
A collection of agent skills that wrap publicly available sports data sources and APIs. These skills don't provide proprietary data — they give AI agents a structured interface to data that's already freely accessible on the web: ESPN scoreboards and box scores, Understat xG, nflverse tables, ClubElo ratings, Kalshi and Polymarket prices, RSS news feeds, and more.
Each skill is a SKILL.md file that any compatible AI agent can load and use immediately. Data comes from third-party public sources and is subject to their respective terms of use.
Full documentation lives with each skill, not in this README:
skills/<skill>/SKILL.md for agent instructions, plus skills/<skill>/references/ for the detailed command reference, data coverage, and examplesPersonal use only. These open-source skills rely on third-party public APIs and are intended for personal, non-commercial use. For commercial or production workloads with licensed data, SLAs, and enterprise support, see machina.gg.
Install everything with the one-liner above, or pick a single skill:
npx skills add machina-sports/sports-skills@nba-data
| Skill | Sport | Commands | Data Sources |
|---|---|---|---|
football-data | Football (Soccer) | 25 | ESPN, FPL, Understat, Transfermarkt, football-data.co.uk, ClubElo |
nfl-data | NFL | 22 | ESPN, nflverse |
nba-data | NBA | 28 | ESPN, NBA CDN, NBA Stats (stats.nba.com) |
wnba-data | WNBA | 16 | ESPN |
nhl-data | NHL | 22 | ESPN, NHL API (api-web.nhle.com) |
mlb-data | MLB | 23 | ESPN, MLB Stats API (statsapi.mlb.com) |
tennis-data | Tennis (ATP + WTA) | 5 | ESPN |
cfb-data | College Football (CFB) | 22 | ESPN, NCAA (official) |
cbb-data | College Basketball (CBB) | 25 | ESPN, NCAA (official) |
golf-data | Golf (PGA/LPGA/DP World) | 6 | ESPN |
volleyball-data | Volleyball (Dutch) | 10 | Nevobo |
xctf-data | Cross Country & Track | 5 | TFRRS, The Stride Report |
fastf1 | Formula 1 | 13 | FastF1 (free library) |
esports | Esports (Dota 2 + LoL) | 6 | OpenDota, Leaguepedia (Cargo) |
sports-news | Multi-sport News | 2 | Any RSS feed, Google News |
metadata | Team logos, player photos | 5 | TheSportsDB (free API) |
| Skill | Platform | Commands | Coverage |
|---|---|---|---|
kalshi | Kalshi (CFTC-regulated) | 16 | Soccer, Basketball, Baseball, Tennis, NFL, Hockey, Esports (CS2/LoL/Dota2) |
polymarket | Polymarket | 14 | NFL, NBA, MLB, Soccer, Tennis, Cricket, MMA, Esports — read-only |
prophetx | ProphetX exchange | 7 | Soccer, Tennis, Basketball, MLB, NFL, NHL — markets + exchange odds where a public book exists (selections_available); read-only |
polymarket-trading | Polymarket CLOB | 7 | High-risk wallet-backed order placement/cancel; explicit user approval required |
| Skill | Purpose | Commands | Notes |
|---|---|---|---|
betting | Odds math & bet evaluation | 9 | Pure compute — no API calls |
markets | ESPN ↔ Kalshi ↔ Polymarket orchestration | 14 | Unified dashboards, live ticks, cross-platform comparison |
sports-reporter | Original sports journalism | prompt-only | Composes other skills to write articles |
machina | Gateway to Machina premium / licensed data | prompt-only | Routes to machina-cli + MCP |
world-cup | Premium World Cup 2026 intelligence (read-only) | prompt-only | Routes to a hosted Machina MCP project |
Beyond ESPN's live layer, the US-sport skills carry a deeper analytics backend consumed directly from each league's own (or community) data source — same skill, second source, one JSON envelope:
| Skill | Deep source | What it adds over ESPN | History |
|---|---|---|---|
nfl-data | nflverse | Season/weekly stat tables, EPA & win probability per play, betting lines, ESPN-id bridge | 1999+ |
nba-data | NBA Stats (stats.nba.com) | Advanced ratings/pace, per-shot court coordinates, play-by-play with locations, career splits, all-era player registry | 1946+ |
mlb-data | MLB Stats API (official) | Pitch-level data — velocity, spin, plate coordinates, exit velocity, launch angle — career splits by stat group, league leaders | 1901+ |
nhl-data | NHL API (official) | Play-by-play with on-ice x/y coordinates, cross-league career rows, skater/goalie leaders, historical standings | 1917+ |
cfb-data | NCAA (official) | FCS scoreboards, official game detail, drive-context play-by-play, scoring summaries, schools index | — |
cbb-data | NCAA (official) | D2/D3 scoreboards, official game detail, March Madness bracket with live scores, schools index | — |
The two sources in each skill use unrelated id systems — every skill documents the join recipe (game date + team abbreviations/names), team filters accept both sources' abbreviation spellings, and passing the wrong system's id returns a guided error rather than an upstream failure.
Wide or long tables (nflverse player/team stats, rosters, schedules and play-by-play;
NBA Stats game logs, team stats and shot charts; MLB Stats play-by-play) accept
optional sort_by, descending, limit and fields, so an agent with a capped tool
output can ask for, say, a week's top five passers instead of 4M characters of rows.
They apply after the fetch (replay entries are unchanged) and add total_rows /
returned_rows to the response; without them output is unchanged.
Coverage still varies by league and source — each skill documents its own limits (e.g. football data coverage: xG is top-5 leagues only, FPL stats are Premier League only).
Once installed, your agent can call commands directly from natural language:
"Show me all Premier League matches today"
"What are today's NFL scores?"
"Show me the AP Top 25 college football rankings"
"What are the Polymarket odds for the Champions League final?"
"Show me the lap data from the last Monaco Grand Prix"
Recommended agent policy (see the Autonomous Agent Contract): use the read-only data skills freely; never load polymarket-trading unless the user explicitly asks to trade; ask before machina / world-cup premium or MCP setup. After installing, restart your agent session (or reload skills, e.g. Hermes /reload-skills) so the new skill directories are indexed.
Record a run once against live sources, then replay it later with zero network access — useful for evaluations, regression tests, and reproducible bug reports.
# 1. Record: fetch live and save every upstream response
SPORTS_SKILLS_REPLAY=record SPORTS_SKILLS_REPLAY_DIR=./replays/2026-09-23 \
sports-skills nba get_scoreboard --date=2026-01-01
# 2. Replay: serve only from the directory; nothing touches the network
SPORTS_SKILLS_REPLAY=replay SPORTS_SKILLS_REPLAY_DIR=./replays/2026-09-23 \
sports-skills nba get_scoreboard --date=2026-01-01
off (default) is the normal live behaviour. There is no default directory: record and replay require SPORTS_SKILLS_REPLAY_DIR.fill serves what is recorded and fetches + records only what is missing, never rewriting existing entries (useful to grow a benchmark corpus without drift; record rewrites).replay_miss: true instead of falling back to the network.polymarket-trading) is never recorded. Local feed files passed to news are read directly.FAQ
sports-skills is a Claude Code plugin with 26 hand-picked skills for data work, indexed on Flowy. Install it with the command on its page. It includes betting, cbb-data, cfb-data. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it