cbb-data

College Basketball (CBB) data via ESPN public endpoints and the NCAA's official endpoints — scores, standings, rosters, schedules, game summaries, play-by-play, win probability, rankings, futures, team/player stats, and news for Division I men's basketball, plus official D2/D3 scoreboards, NCAA game

By machina-sports · 587 installs

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

Source repository · Upstream listing

College Basketball Data (CBB) 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 CBB season runs November–April. If the current month is November or December, use season = current year + 1 . If January–April, use season = current year . If May–October (offseason), use season = current year (most recently completed season). Important: College vs. Pro Differences Standings are per conference — use the group parameter to filter Rankings replace leaders — college uses AP Top 25 and Coaches Poll Ranked teams have a rank field (null = unranked) on scoreboard competitors 360+ D1 teams — many games per day during the season (50+ during conference play) March Madness — NCAA Tournament runs in March/April with 68 teams Commands Command Description get scoreboard Live/recent college basketball scores get standings Standings by conference (use group parameter) get teams All 360+ D1 men's basketball teams get team roster Full roster for a team get team schedule Schedule for a specific team get game summary Detailed box score and player stats get rankings AP Top 25 and Coaches Poll rankings get news College basketball news get play by play Full play by play for a game get win probability Win probability chart data get schedule Schedule for a date or season get futures Futures/odds markets (National Championship, etc.) get team stats Team statistical profile get player stats Player statistical profile get ncaa scoreboard Official NCAA scoreboard — D1, D2, and D3 get ncaa schedule Which dates 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 get ncaa bracket March Madness bracket with live scores get ncaa schools NCAA schools index (all divisions) get power index BPI (Basketball Power Index) ratings for D1 teams get tournament projections NCAA tournament projections with seeds, regions, and advancement probabilities compare teams Compare two teams using BPI ratings and season stats find upset candidates Potential upsets based on BPI vs seed differential 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: D2 and D3 scoreboards via division="d2" / "d3" — ESPN's college coverage is D1 centric. Both scoreboards now return all of Division I by default — the ESPN backed get scoreboard / get schedule previously inherited ESPN's Top 25 only un grouped default (1 game on an ordinary Friday instead of ~24). Pass group explicitly for a narrower ESPN grouping. The official March Madness bracket with live scores: get ncaa bracket . Official game detail : get ncaa game , get ncaa boxscore , get ncaa play by play . The schools index (~1,200 schools, all divisions): get ncaa schools . NCAA game ids (from get ncaa scoreboard ) and ESPN event ids share nothing — join on game date plus team names. Game detail and bracket 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 basketball rankings?" Actions: 1. Call get rankings() Result: AP Top 25 and Coaches Poll with rank, previous rank, record, and points Example 2: Conference standings User says: "Show me SEC basketball standings" Actions: 1. Derive season year from currentDate 2. Call get standings(group=23, season=<derived year ) (group 23 = SEC) Result: SEC standings with W L records per team Example 3: Today's scores User says: "What are today's college basketball scores?" Actions: 1. Call get scoreboard() Result: All live and recent CBB games with scores and ranked status Example 4: Team roster User says: "Show me Duke's roster" Actions: 1. Call get team roster(team id="150") Result: Full Duke roster with name, position, jersey number Example 5: March Madness futures User says: "Who's favored to win March Madness?" Actions: 1. Call get futures(limit=10) Result: Top National Championship contenders with odds values Example 6: Team statistics User says: "Show me Duke's team stats" Actions: 1. Derive season year from currentDate 2. Call get team stats(team id="150", season year=<derived year ) Result: Duke'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 ap poll ~~ — 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, check if it's the off season (CBB runs November–April) 2. If standings are empty without a group filter, try a specific conference 3. During March Madness, the scoreboard will have tournament games 4. 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 on scoreboard Cause: CBB is seasonal (November–April); off season scoreboard will be empty Solution: Use get rankings or get news year round; check get schedule for when the season resumes Error: Too many games returned — hard to filter Cause: During the season, 50+ games per day are scheduled Solution: Use group to filter by conference, or limit to cap results Error: Rankings empty Cause: Rankings are published weekly during the season (November–March) only Solution: Use get news in the offseason; rankings resume in November