@machina-sports/fastf1
@machina-sports/fastf1 — AI coding skill
| name | fastf1 |
| description | | |
| license | MIT |
| compatibility | Requires Python 3.10+ (install with: pip install sports-skills) |
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 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.
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: 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
Loading...
Select a file to preview
Analyzing security...
Checking scan reports and verification data.
Bill of Materials
Everything this skill can do — files, network, commands, and more.