skills/fastf1/SKILL.md
Formula 1 data — race schedules, results, lap timing, driver and team info. Powered by the FastF1 library. Covers F1 sessions, qualifying, practice, race results, sector times, tire strategy. Use when: user asks about F1 race results, qualifying, lap times, driver stats, team info, the F1 calendar, or Formula 1 data. Don't use when: user asks about other motorsports (MotoGP, NASCAR, IndyCar, WEC, Formula E). Don't use for F1 betting odds or predictions — use kalshi or polymarket instead. Don't use for F1 news articles — use sports-news instead.
npx skillsauth add machina-sports/sports-skills fastf1Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before writing queries, consult references/api-reference.md for endpoints, ID conventions, and data shapes.
Prefer the CLI — it avoids Python import path issues:
sports-skills f1 get_race_schedule --year=2025
sports-skills f1 get_race_results --year=2025 --event=Monza
Python SDK (alternative):
from sports_skills import f1
schedule = f1.get_race_schedule(year=2025)
results = f1.get_race_results(year=2025, event="Monza")
CRITICAL: Before calling any data endpoint, verify:
currentDate — never hardcoded.year = current_year - 1 (pre-season; the new F1 season has not started yet).Derive the current year from the system prompt's date (e.g., currentDate: 2026-02-16 → current year is 2026).
year = current_year - 1. From March onward, use the current year.get_race_schedule --year=<year> — find the event name and dateget_race_results --year=<year> --event=<name> — final classification (positions, times, points)get_lap_data --year=<year> --event=<name> --session_type=R — lap-by-lap pace analysisget_tire_analysis --year=<year> --event=<name> — strategy breakdown (compounds, stint lengths, degradation)get_championship_standings --year=<year> — championship context (points, wins, podiums)get_team_comparison --year=<year> --team1=<t1> --team2=<t2> OR get_driver_comparison --year=<year> --driver1=<d1> --driver2=<d2>get_season_stats --year=<year> — aggregate performance (fastest laps, top speeds)get_race_schedule --year=<year> — full calendar with dates and circuitsget_championship_standings --year=<year> — driver and constructor standingsget_season_stats --year=<year> — season-wide fastest laps, top speeds, points leadersget_driver_info --year=<year> — current grid (driver numbers, teams, nationalities)| Command | Description |
|---|---|
| get_race_schedule | Full season calendar with dates and circuits |
| get_race_results | Final race classification (positions, times, points) |
| get_session_data | Raw session info (Q, FP1, FP2, FP3, R) |
| get_driver_info | Driver details from the grid |
| get_team_info | Team info with driver lineup |
| get_lap_data | Lap-by-lap timing with sectors and tire data |
| get_pit_stops | Pit stop durations and team averages |
| get_speed_data | Speed trap and intermediate speed data |
| get_championship_standings | Driver and constructor championship standings |
| get_season_stats | Aggregate season performance |
| get_team_comparison | Team head-to-head: qualifying, race pace, sectors |
| get_driver_comparison | Driver head-to-head: qualifying H2H, race H2H, pace delta |
| get_tire_analysis | Tire strategy, stint lengths, degradation rates |
See references/api-reference.md for full parameter lists and return shapes.
Example 1: F1 calendar User says: "Show me the F1 calendar" Actions:
currentDateget_race_schedule(year=<derived_year>)
Result: Full calendar with event names, dates, and circuitsExample 2: Driver race performance User says: "How did Verstappen do at Monza?" Actions:
currentDate (or from context)get_race_results(year=<year>, event="Monza") for final classificationget_lap_data(year=<year>, event="Monza", session_type="R", driver="VER") for lap times
Result: Finishing position, gap to leader, fastest lap, and tire strategyExample 3: Latest results queried in pre-season User says: "What were the latest F1 results?" (asked in February 2026) Actions:
year = 2025get_race_schedule(year=2025) to find the last event of that seasonget_race_results(year=2025, event=<last_event>) for the final race results
Result: Results of the final 2025 raceget_qualifying~~ / ~~get_practice~~ — does not exist. Use get_session_data with session_type="Q" for qualifying or session_type="FP1"/"FP2"/"FP3" for practice.get_standings~~ — does not exist. Use get_championship_standings instead.get_results~~ — does not exist. Use get_race_results instead.get_calendar~~ — does not exist. Use get_race_schedule instead.If a command is not listed in the Commands table above, it does not exist.
Error: Event name not found
Cause: Event name spelling does not match FastF1's internal naming
Solution: Call get_race_schedule(year=<year>) first to get the exact event names, then retry with the correct name
Error: Session data is empty
Cause: The session has not happened yet
Solution: FastF1 only returns data for completed sessions. Check get_race_schedule for when the session is scheduled
Error: get_race_results returns no fastest_lap_time
Cause: Some races do not include fastest lap data in the results endpoint
Solution: Use get_lap_data(session_type="R") and find the minimum lap_time across all drivers
Error: Querying the current year in January or February returns no data
Cause: The new F1 season has not started yet
Solution: Use year = current_year - 1 for any pre-March query; do not query the current year before March
tools
Premium FIFA World Cup 2026 market & match intelligence — a hosted, read-only layer that fuses official match truth (fixtures, standings, squads, injuries, player performance) with live prediction markets (Kalshi + Polymarket: prices, order books, price history, movers, cross-venue edges) and AI-grounded context (prematch briefs, move explanations, fan/social pulse). Every entity carries a canonical machina URN cross-walked across api-football, sportradar, opta, entain and ESPN, so a market resolves to a fixture resolves to two teams. This skill is prompt-only and premium: it routes the agent to the hosted World Cup Intelligence project (a per-project Machina MCP server) via `machina-cli`. It runs no code locally and ships no API keys. Use when: the user wants World Cup 2026 odds + match context together, asks "what moved and why", wants a grounded market brief or fan-sentiment read on a fixture, or needs one stable id that joins markets ↔ fixtures ↔ teams across providers. Don't use when: the user wants free snapshot data from public APIs (use the `football-data`, `kalshi`, `polymarket`, or `markets` skills), or wants to place a bet/trade — this layer is read-only intelligence and never executes orders.
development
Sports metadata via TheSportsDB free API (key=3). Team logos and badges, player photos, stadium info, league info, and biographical data across 100+ leagues. No API key required, zero config. Use when: user asks for a team logo, crest, badge, banner, jersey, kit, player photo or headshot, stadium info, club description, or wants to search for teams or players by name across sports. Good for enriching responses from other skills with images and visual identifiers. Don't use when: user asks for scores, standings, fixtures, stats, or odds — use the sport-specific skill instead: football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), fastf1 (F1), volleyball-data (Dutch volleyball), xctf-data (NCAA XC/TF). Don't use for prediction markets — use polymarket or kalshi.
development
Cricket data via ESPN public endpoints and Cricsheet open data — live-ish series scoreboards, standings, match summaries and news (ESPN), plus historical ball-by-ball, player stats, and player registry (Cricsheet, ODC-BY 1.0). Zero config, no API keys. Use when: user asks about cricket scores, IPL/BBL/PSL/international series, points tables, match details, cricket news, ball-by-ball history, or player career stats. Don't use when: user asks about other sports — use football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cfb-data (college football), cbb-data (college basketball), or fastf1 (F1). For betting odds use polymarket or kalshi. For general news use sports-news. Don't use for ICC rankings — no free source exists (v1 limitation).
development
NCAA cross country and track & field athlete data via TFRRS (tfrrs.org) and news via The Stride Report. Fetch athlete profiles including all personal records (PRs), eligibility year, school, full season-by-season results history, and XC/TF news. Zero config, no API keys. Use when: user asks about NCAA cross country, NCAA track and field, college running, TFRRS athlete profiles, personal records, PRs, XC or TF season results, individual athlete performance history, or XC/TF news. Don't use when: user asks about professional track, Diamond League, or other sports — use nfl-data, nba-data, wnba-data, nhl-data, mlb-data, golf-data, cricket-data, cfb-data, cbb-data, tennis-data, fastf1, or volleyball-data. For betting use polymarket or kalshi.