cfb-data

College Football (CFB) data via ESPN public endpoints and the NCAA's official endpoints — scores, standings, rosters, schedules, game summaries, play-by-play, rankings, injuries, futures, team/player stats, and news for FBS, plus official FCS scoreboards, NCAA game detail with drive context, and the

By machina-sports · 601 installs

npx skills add machina-sports/sports-skills --skill cfb-data

Source repository · Upstream listing

College Football Data (CFB) Before writing queries, consult references/api reference.md for endpoints, conference IDs, team IDs, and data shapes. Setup Before first use, check if the CLI is available: If pip install fails with a Python version error, the package requires Python 3.10+. Find a compatible Python: No API keys required. Quick Start Prefer the CLI — it avoids Python import path issues: CRITICAL: Before Any Query CRITICAL: Before calling any data endpoint, verify: Season year is derived from the system prompt's currentDate — never hardcoded. For standings, the group parameter is set to the correct conference ID (see references/api reference.md ). If only a team name is provided, use get teams to resolve the team ID. Choosing the Season Derive the current year from the system prompt's date (e.g., currentDate: 2026 02 28 → current year is 2026). If the user specifies a season , use it as is. If the user says "current", "this season", or doesn't specify : The CFB season runs August–January. If the current month is February–July (offseason), use season = current year 1 . From August onward, use the current year. Important: College vs. Pro Differences Standings are per conference — use the group parameter to filter Rankings replace leaders — college uses AP Top 25, Coaches Poll, and CFP rankings Ranked teams have a rank field (null = unranked) on scoreboard competitors Week based schedule — like NFL, college football uses week numbers Commands Command Description get scoreboard Live/recent college football scores get standings Standings by conference (use group parameter) get teams All 750+ FBS college football teams get team roster Full roster for a team get team schedule Schedule for a specific team get game summary Detailed box score and scoring plays get rankings AP Top 25, Coaches Poll, CFP rankings get news College football news get play by play Full play by play for a game get win probability Win probability timeline for a completed game get schedule Season schedule by week get injuries Injury reports across all teams get futures Futures/odds markets (National Championship, Heisman, etc.) get team stats Team statistical profile get player stats Player statistical profile get ncaa scoreboard Official NCAA scoreboard — FBS and FCS get ncaa schedule Which weeks have games (official index) get ncaa game Official NCAA game information get ncaa boxscore Official NCAA box score get ncaa play by play Official play by play with drive context get ncaa scoring summary Official scoring summary get ncaa schools NCAA schools index (all divisions) See references/api reference.md for full parameter lists and return shapes. Official NCAA Backend The get ncaa commands read the NCAA's own endpoints (data.ncaa.com + sdataprod.ncaa.com) — coverage ESPN does not carry: FCS scoreboards via division="fcs" — ESPN's college coverage is FBS centric. Official game detail : get ncaa game , get ncaa boxscore , get ncaa play by play (with drive context), get ncaa scoring summary . The schools index (~1,200 schools, all divisions): get ncaa schools . NCAA game ids (e.g. 6306261 , from get ncaa scoreboard ) and ESPN event ids share nothing — join on game date plus team names. Football divisions are fbs / fcs (not d1 d3). Game detail commands ride NCAA's GraphQL persisted queries, whose hashes rotate when ncaa.com redeploys; when that happens those commands say so explicitly while the scoreboard/schedule commands keep working. Examples Example 1: Current rankings User says: "What are the college football rankings?" Actions: 1. Call get rankings() Result: AP Top 25, Coaches Poll, and CFP rankings with rank, previous rank, record Example 2: Conference standings User says: "Show me SEC football standings" Actions: 1. Derive season year from currentDate 2. Call get standings(group=8, season=<derived year ) (group 8 = SEC) Result: SEC standings with W L records per team Example 3: Team schedule User says: "What's Alabama's schedule this season?" Actions: 1. Derive season year from currentDate 2. Call get team schedule(team id="333", season=<derived year ) Result: Alabama's full season schedule with opponent, date, score (if played) Example 4: Weekly scores User says: "Show me this week's college football scores" Actions: 1. Call get scoreboard() Result: All live and recent CFB games with scores and ranked status Example 5: Heisman favorites User says: "Who's the Heisman favorite?" Actions: 1. Call get futures(limit=10) Result: Top Heisman Trophy candidates with odds values Example 6: Team statistics User says: "Show me Alabama's team stats" Actions: 1. Derive season year from currentDate 2. Call get team stats(team id="333", season year=<derived year ) Result: Alabama's season stats by category with value, rank, and per game averages Commands that DO NOT exist — never call these ~~ get odds ~~ / ~~ get betting odds ~~ — not available. For prediction market odds, use the polymarket or kalshi skill. ~~ search teams ~~ — does not exist. Use get teams instead. ~~ get box score ~~ — does not exist. Use get game summary instead. ~~ get player ratings ~~ — does not exist. Use get player stats instead. ~~ get bcs rankings ~~ / ~~ get playoff rankings ~~ — does not exist. Use get rankings instead. If a command is not listed in the Commands table above, it does not exist. Error Handling When a command fails, do not surface raw errors to the user . Instead: 1. If no events found for a date, check if it's in the off season (CFB runs August–January) 2. If standings are empty without a group filter, try with a specific conference group 3. Only report failure with a clean message after exhausting alternatives Troubleshooting Error: sports skills command not found Cause: Package not installed Solution: Run pip install sports skills Error: No games found Cause: CFB is seasonal (August–January); off season scoreboard will be empty Solution: Use get rankings or get news year round; use get schedule to find when the season starts Error: Too many teams returned Cause: get teams returns 750+ FBS teams Solution: Help users narrow down by suggesting specific team IDs from references/api reference.md , or use ESPN URLs to look up IDs Error: Rankings empty in off season Cause: Rankings are only published during the season and early off season Solution: Use get news in the offseason; rankings resume in August