machina-sports/sports-skills

esports

Esports data — Dota 2 (OpenDota) and League of Legends esports (Leaguepedia). Pro matches, tournaments, teams, and structured LoL competitive data. Use when: user asks about Dota 2 pro matches/teams/leagues, or LoL esports tournaments/rosters/results. Don't use when: user asks about esports betting/odds — use the `kalshi` (get_esports_odds) or `polymarket` (get_esports_events) skills (no keyless bookmaker-odds source exists). Don't use for non-Dota/LoL titles (only Dota 2 and LoL are covered).

First seen Jul 2, 2026

Installation

$ npx skills add machina-sports/sports-skills --skill esports

Also in this package

Other skills from machina-sports/sports-skills · top by installs.

npx skills add machina-sports/sports-skills

Browse all from machina-sports/sports-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 215
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version0.1.0
LicenseMIT
More metadata
author
machina-sports
version
0.1.0

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,091 B
  • docs SUMMARY.md 517 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 132 installs

SKILL.md

Esports Data

Keyless, public sources. No API key, no signup.

  • Dota 2 → OpenDota (api.opendota.com). Real JSON. Free tier ~60 req/min.
  • League of Legends esports → Leaguepedia Cargo (lol.fandom.com). Structured

rows. CC-BY-SA — attribute Leaguepedia when you reuse the data.

CRITICAL

  • Dota 2 only for match/team/league data (OpenDota). LoL uses Leaguepedia Cargo.
  • Leaguepedia is aggressively rate-limited. The throttle comes back as an

in-body error (Leaguepedia API error: ...) on an HTTP 200 — not a 4xx. Results are cached ~30 min; don't hammer it.

  • No odds here. Bookmaker odds for esports are not available keyless. For

implied-probability signals, use kalshi getesportsodds --game=cs2 or polymarket getesportsevents.

  • Personal use. Third-party ToS apply (OpenDota MIT; Leaguepedia CC-BY-SA).

Quick Start

CLI:

sports-skills esports get_pro_matches --limit=10
sports-skills esports get_pro_teams --limit=10
sports-skills esports get_leagues --tier=premium
sports-skills esports get_lol_tournaments --region=Korea --limit=5
sports-skills esports lol_cargo_query --tables=Teams --fields=Name,Region --limit=5

Python:

from sports_skills import esports

esports.get_pro_matches(limit=10)
esports.get_lol_tournaments(region="Brazil")

Commands

Command Description
getpromatches Recent Dota 2 professional matches (OpenDota)
get_leagues Dota 2 leagues/tournaments, filter by tier (OpenDota)
getproteams Top Dota 2 teams by rating (OpenDota)
get_match Detailed Dota 2 match by id (OpenDota)
getloltournaments Recent LoL esports tournaments (Leaguepedia)
lolcargoquery Raw Leaguepedia Cargo query (any table/fields)

Leaguepedia Cargo reference

lolcargoquery needs tables + fields. Common tables (fields vary — verify with a small query first): Tournaments (Name, DateStart, DateEnd, League, Region, Prizepool), MatchSchedule (Team1, Team2, Winner, DateTime_UTC, BestOf), ScoreboardGames, Players, Teams. Full schema: <https://lol.fandom.com/wiki/Special:CargoTables>;.

Troubleshooting

  • Leaguepedia API error: You've exceeded your rate limit → you're being

throttled. Wait and retry; the connector caches for ~30 min to help.

  • Empty matches/teams from OpenDota → transient; OpenDota is volunteer-run

best-effort infra with no SLA. Retry.