fastf1
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.
How do I install this agent skill?
npx skills add https://github.com/machina-sports/sports-skills --skill fastf1Is this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill is a Formula 1 data provider that uses a dedicated CLI and library. It includes instructions for correct data handling and a script for parameter validation. The only detected concern is a standard risk of indirect prompt injection from the processed F1 data.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
- Runlayerpass
1/1 file flagged
What does this agent skill do?
FastF1 — Formula 1 Data
Before writing queries, consult references/api-reference.md for endpoints, ID conventions, and data shapes.
Quick Start
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 Any Query
CRITICAL: Before calling any data endpoint, verify:
- Year is derived from the system prompt's
currentDate— never hardcoded. - In January or February, use
year = current_year - 1(pre-season; the new F1 season has not started yet).
Choosing the Year
Derive the current year from the system prompt's date (e.g., currentDate: 2026-02-16 → current year is 2026).
- If the user specifies a year, use it as-is.
- If the user says "latest", "recent", "last season", or doesn't specify: The F1 season runs roughly March–December. If the current month is January or February, use
year = current_year - 1. From March onward, use the current year.
Workflows
Race Weekend Analysis
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)
Driver/Team Comparison
get_championship_standings --year=<year>— championship context (points, wins, podiums)get_team_comparison --year=<year> --team1=<t1> --team2=<t2>ORget_driver_comparison --year=<year> --driver1=<d1> --driver2=<d2>get_season_stats --year=<year>— aggregate performance (fastest laps, top speeds)
Season Overview
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)
Commands
| 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 stops with pit-lane time (not stationary time) and team averages |
get_speed_data | Speed trap and intermediate speed data |
get_championship_standings | Driver and constructor championship standings (--round=N for standings after round N) |
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.
Examples
Example 1: F1 calendar User says: "Show me the F1 calendar" Actions:
- Derive year from
currentDate - Call
get_race_schedule(year=<derived_year>)Result: Full calendar with event names, dates, and circuits
Example 2: Driver race performance User says: "How did Verstappen do at Monza?" Actions:
- Derive year from
currentDate(or from context) - Call
get_race_results(year=<year>, event="Monza")for final classification - Call
get_lap_data(year=<year>, event="Monza", session_type="R", driver="VER")for lap times Result: Finishing position, gap to leader, fastest lap, and tire strategy
Example 3: Latest results queried in pre-season User says: "What were the latest F1 results?" (asked in February 2026) Actions:
- Current month is February → season not yet started → use
year = 2025 - Call
get_race_schedule(year=2025)to find the last event of that season - Call
get_race_results(year=2025, event=<last_event>)for the final race results Result: Results of the final 2025 race
Commands that DO NOT exist — never call these
/get_qualifying— does not exist. Useget_practiceget_session_datawithsession_type="Q"for qualifying orsession_type="FP1"/"FP2"/"FP3"for practice.— does not exist. Useget_standingsget_championship_standingsinstead.— does not exist. Useget_resultsget_race_resultsinstead.— does not exist. Useget_calendarget_race_scheduleinstead.
If a command is not listed in the Commands table above, it does not exist.
Troubleshooting
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: FastF1 has no lap data for that race (fastest_lap_time is computed from the laps)
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
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/machina-sports/sports-skills/fastf1">View fastf1 on skillZs</a>