$npx -y skills add machina-sports/sports-skills --skill nfl-dataNFL data via ESPN public endpoints plus an nflverse backend for schedules, weekly rosters, play-by-play, and normalized player/team stat tables. Zero config, no API keys. Use when: user asks about NFL scores, standings, team rosters, schedules, game stats, box scores, play-by-pla
| 1 | # NFL Data |
| 2 | |
| 3 | Before writing queries, consult `references/api-reference.md` for endpoints, ID conventions, and data shapes. |
| 4 | |
| 5 | ## Setup |
| 6 | |
| 7 | Before first use, check if the CLI is available: |
| 8 | ```bash |
| 9 | which sports-skills || pip install sports-skills |
| 10 | ``` |
| 11 | If `pip install` fails (package not found or Python version error), install from GitHub: |
| 12 | ```bash |
| 13 | pip install git+https://github.com/machina-sports/sports-skills.git |
| 14 | ``` |
| 15 | The package requires Python 3.10+. If your default Python is older, use a specific version: |
| 16 | ```bash |
| 17 | python3 --version # check version |
| 18 | # If < 3.10, try: python3.12 -m pip install sports-skills |
| 19 | # On macOS with Homebrew: /opt/homebrew/bin/python3.12 -m pip install sports-skills |
| 20 | ``` |
| 21 | No API keys required. |
| 22 | |
| 23 | For nflverse-backed commands (`get_nflverse_*`), install the NFL extra: |
| 24 | ```bash |
| 25 | pip install sports-skills[nfl] |
| 26 | ``` |
| 27 | This installs `nfl-data-py` (or use `nflreadpy` if preferred). Parquet support (`pyarrow`) is also needed for most nflverse data beyond schedules. |
| 28 | |
| 29 | ## Quick Start |
| 30 | |
| 31 | Prefer the CLI — it avoids Python import path issues: |
| 32 | ```bash |
| 33 | sports-skills nfl get_scoreboard |
| 34 | sports-skills nfl get_standings --season=2025 |
| 35 | sports-skills nfl get_teams |
| 36 | ``` |
| 37 | |
| 38 | Python SDK (alternative): |
| 39 | ```python |
| 40 | from sports_skills import nfl |
| 41 | |
| 42 | scores = nfl.get_scoreboard({}) |
| 43 | standings = nfl.get_standings({"params": {"season": "2025"}}) |
| 44 | ``` |
| 45 | |
| 46 | ## CRITICAL: Before Any Query |
| 47 | |
| 48 | CRITICAL: Before calling any data endpoint, verify: |
| 49 | - Season year is derived from the system prompt's `currentDate` — never hardcoded. |
| 50 | - If only a team name is provided, call `get_teams` to resolve the team ID before using team-specific commands. |
| 51 | |
| 52 | ## Choosing the Season |
| 53 | |
| 54 | Derive the current year from the system prompt's date (e.g., `currentDate: 2026-02-16` → current year is 2026). |
| 55 | |
| 56 | - **If the user specifies a season**, use it as-is. |
| 57 | - **If the user says "current", "this season", or doesn't specify**: The NFL season runs September–February. If the current month is March–August, use `season = current_year` (upcoming season). If September–February, the active season started in the previous calendar year if you're in Jan/Feb, otherwise current year. |
| 58 | |
| 59 | ## Commands |
| 60 | |
| 61 | | Command | Description | |
| 62 | |---|---| |
| 63 | | `get_scoreboard` | Live/recent NFL scores | |
| 64 | | `get_standings` | Standings by conference and division | |
| 65 | | `get_teams` | All 32 NFL teams | |
| 66 | | `get_team_roster` | Full roster for a team | |
| 67 | | `get_team_schedule` | Schedule for a specific team | |
| 68 | | `get_game_summary` | Detailed box score and scoring plays | |
| 69 | | `get_leaders` | NFL statistical leaders | |
| 70 | | `get_news` | NFL news articles | |
| 71 | | `get_play_by_play` | Full play-by-play for a game | |
| 72 | | `get_win_probability` | Win probability chart data | |
| 73 | | `get_schedule` | Season schedule by week | |
| 74 | | `get_injuries` | Injury reports across all teams | |
| 75 | | `get_transactions` | Recent transactions | |
| 76 | | `get_futures` | Futures/odds markets | |
| 77 | | `get_depth_chart` | Depth chart for a team | |
| 78 | | `get_team_stats` | Team statistical profile | |
| 79 | | `get_player_stats` | Player statistical profile | |
| 80 | | `get_nflverse_schedule` | nflverse-backed schedules/results table | |
| 81 | | `get_nflverse_weekly_rosters` | nflverse-backed weekly rosters | |
| 82 | | `get_nflverse_player_stats` | nflverse-backed normalized player stat rows | |
| 83 | | `get_nflverse_team_stats` | nflverse-backed normalized team stat rows | |
| 84 | | `get_nflverse_play_by_play` | nflverse-backed play-by-play rows | |
| 85 | |
| 86 | See `references/api-reference.md` for full parameter lists and return shapes. |
| 87 | |
| 88 | ## Examples |
| 89 | |
| 90 | Example 1: Today's scores |
| 91 | User says: "What are today's NFL scores?" |
| 92 | Actions: |
| 93 | 1. Call `get_scoreboard()` |
| 94 | Result: All live and recent NFL games with scores and status |
| 95 | |
| 96 | Example 2: Conference standings |
| 97 | User says: "Show me the AFC standings" |
| 98 | Actions: |
| 99 | 1. Derive season year from `currentDate` |
| 100 | 2. Call `get_standings(season=<derived_year>)` |
| 101 | 3. Filter results for AFC conference |
| 102 | Result: AFC standings table with W-L-T, PCT, PF, PA per team |
| 103 | |
| 104 | Example 3: Team roster |
| 105 | User says: "Who's on the Chiefs roster?" |
| 106 | Actions: |
| 107 | 1. Call `get_team_roster(team_id="12")` |
| 108 | Result: Full Chiefs roster with name, position, jersey number, height, weight |
| 109 | |
| 110 | Example 4: Super Bowl box score |
| 111 | User says: "How did the Super Bowl go?" |
| 112 | Actions: |
| 113 | 1. Call `get_schedule(week=23)` to find the Super Bowl event_id |
| 114 | 2. Call `get_game_summary(event_id=<id>)` for full box score |
| 115 | Result: Complete box score with passing/rushing/receiving stats and scoring plays |
| 116 | |
| 117 | Example 5: Injury report |
| 118 | User says |