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