Install any skill in seconds. Free to start, no credit card required.
Get Started Free →PGA Tour, LPGA, and DP World Tour golf data via ESPN public endpoints — tournament leaderboards, scorecards, season schedules, golfer profiles/overviews, and news. Zero config, no API keys. Use when: user asks about golf scores, tournament leaderboards, scorecards, PGA Tour schedule, golfer profiles, golfer season stats, LPGA results, or golf news. 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-dat
.claude/skills/machina-sports-golf-data/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-16 | ✓→✓ | = Same ✓ | 27% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 140% | 0% |
| case-09 | ✓→✓ | = Same ✓ | 148% | 0% |
Before writing queries, consult references/api-reference.md for endpoints, player IDs, and score formats.
Before first use, check if the CLI is available:
bashwhich sports-skills || pip install sports-skills
If pip install fails with a Python version error, the package requires Python 3.10+. Find a compatible Python:
bashpython3 --version # check version # If < 3.10, try: python3.12 -m pip install sports-skills # On macOS with Homebrew: /opt/homebrew/bin/python3.12 -m pip install sports-skills
No API keys required.
Prefer the CLI — it avoids Python import path issues:
bashsports-skills golf get_leaderboard --tour=pga sports-skills golf get_schedule --tour=pga --year=2026 sports-skills golf get_news --tour=pga
CRITICAL: Before calling any data endpoint, verify:
tour parameter is specified (pga, lpga, or eur) — there is no default tour.get_leaderboard results or ESPN golf URLs — never guessed.tour ParameterMost commands require --tour=pga, --tour=lpga, or --tour=eur:
If the user doesn't specify, default to pga. If they say "women's golf" or "LPGA", use lpga. If they mention the European Tour or DP World Tour, use eur.
| Command | Description | |---|---| | get_leaderboard | Current tournament leaderboard with all golfer scores | | get_schedule | Full season tournament schedule | | get_player_info | Individual golfer profile | | get_player_overview | Detailed overview with season stats, rankings, recent results | | get_scorecard | Hole-by-hole scorecard for a golfer | | get_news | Golf news articles |
See references/api-reference.md for full parameter lists and return shapes.
Example 1: Current leaderboard User says: "What's the PGA leaderboard right now?" Actions:
get_leaderboard(tour="pga")Result: Current tournament leaderboard sorted by position with each golfer's score and round-by-round breakdown
Example 2: Season schedule User says: "Show me the LPGA schedule for 2026" Actions:
get_schedule(tour="lpga", year=2026)Result: Full LPGA tournament calendar with names, dates, and venues
Example 3: Golfer profile User says: "Tell me about Scottie Scheffler" Actions:
get_player_info(player_id="9478", tour="pga")Result: Scheffler's profile with age, nationality, height/weight, turned pro year
Example 4: Upcoming major User says: "When is the Masters this year?" Actions:
currentDateget_schedule(tour="pga", year=<derived_year>)Result: Masters date, course (Augusta National), and tournament ID
Example 5: Player scorecard User says: "Show me Scottie Scheffler's scorecard" Actions:
get_scorecard(tour="pga", player_id="9478")Result: Hole-by-hole scores for each completed round with strokes and score-to-par
Example 6: Player season form User says: "How has Rory McIlroy been playing this season?" Actions:
get_player_overview(player_id="3470", tour="pga")Result: Season stats (scoring average, earnings, wins, top-10s), world ranking, and recent results
get_tournament_results~~ — does not exist. Use get_leaderboard for current/recent tournament scores.get_rankings~~ — does not exist. FedEx Cup/world rankings are not available via this API. Use get_player_overview for individual rankings.get_odds~~ / ~~get_betting_odds~~ — not available. For prediction market odds, use the polymarket or kalshi skill.search_player~~ — does not exist. Use get_leaderboard to find player IDs from the current field.If a command is not listed in the Commands table above, it does not exist.
When a command fails, do not surface raw errors to the user. Instead:
get_leaderboard to find current player IDsError: sports-skills command not found Cause: Package not installed Solution: Run pip install sports-skills
Error: No active tournament on leaderboard Cause: Golf tournaments run Thursday–Sunday; between events the leaderboard may show no active tournament Solution: Call get_schedule(tour="pga") to find the next upcoming event
Error: Limited round data — scores are empty Cause: Before a tournament starts, round scores will be empty. During the tournament, only completed rounds have scores. Solution: Check get_leaderboard for tournament status and current round; wait for rounds to complete
Error: Player not found by ID Cause: Player ID is incorrect or the player is not in the current tournament field Solution: Get player IDs from get_leaderboard results, or look up ESPN golf URLs (espn.com/golf/player/_/id/<id>/player-name)
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 12,560 | 4,261 | -66% | 1 | 1 | 0% | 1,796 | 1,748 | -3% | 0 | 0 | — |
case-02 | fail→fail | 9,624 | 6,151 | -36% | 1 | 1 | 0% | 1,760 | 1,903 | +8% | 0 | 0 | — |
case-03 | fail→fail | 2,777 | 3,976 | +43% | 1 | 1 | 0% | 426 | 1,775 | +317% | 0 | 0 | — |
case-04 | fail→fail | 2,676 | 4,510 | +69% | 1 | 1 | 0% | 392 | 1,736 | +343% | 0 | 0 | — |
case-05 | fail→fail | 6,640 | 6,233 | -6% | 1 | 1 | 0% | 1,045 | 1,845 | +77% | 0 | 0 | — |
case-06 | fail→fail | 2,561 | 7,022 | +174% | 1 | 1 | 0% | 360 | 2,015 | +460% | 0 | 0 | — |
case-16 | pass→pass | 13,379 | 6,132 | -54% | 1 | 1 | 0% | 2,010 | 2,552 | +27% | 0 | 0 | — |
case-07 | pass→pass | 4,670 | 2,365 | -49% | 1 | 1 | 0% | 792 | 1,900 | +140% | 0 | 0 | — |
case-08 | fail→fail | 3,182 | 7,848 | +147% | 1 | 1 | 0% | 393 | 2,868 | +630% | 0 | 0 | — |
case-09 | pass→pass | 5,223 | 3,485 | -33% | 1 | 1 | 0% | 842 | 2,092 | +148% | 0 | 0 | — |
case-10 | fail→fail | 5,659 | 5,080 | -10% | 1 | 1 | 0% | 1,175 | 1,791 | +52% | 0 | 0 | — |
case-11 | fail→fail | 6,268 | 11,717 | +87% | 1 | 1 | 0% | 1,118 | 1,693 | +51% | 0 | 0 | — |
case-12 | fail→fail | 4,165 | 4,247 | +2% | 1 | 1 | 0% | 643 | 1,753 | +173% | 0 | 0 | — |
case-13 | fail→fail | 22,050 | 6,456 | -71% | 1 | 1 | 0% | 3,747 | 1,836 | -51% | 0 | 0 | — |
case-14 | fail→fail | 9,565 | 3,697 | -61% | 1 | 1 | 0% | 1,280 | 1,676 | +31% | 0 | 0 | — |
case-15 | fail→fail | 2,725 | 4,966 | +82% | 1 | 1 | 0% | 471 | 1,715 | +264% | 0 | 0 | — |
case-17 | fail→fail | 7,534 | 2,278 | -70% | 1 | 1 | 0% | 1,214 | 1,869 | +54% | 0 | 0 | — |
case-18 | fail→pass | 9,842 | 4,042 | -59% | 1 | 1 | 0% | 1,710 | 2,285 | +34% | 0 | 0 | — |
case-19 | fail→fail | 6,985 | 5,339 | -24% | 1 | 1 | 0% | 1,356 | 1,768 | +30% | 0 | 0 | — |
case-20 | fail→pass | 9,280 | 1,580 | -83% | 1 | 1 | 0% | 1,748 | 1,809 | +3% | 0 | 0 | — |
case-21 | pass→pass | 7,593 | 2,441 | -68% | 1 | 1 | 0% | 1,485 | 1,921 | +29% | 0 | 0 | — |
case-22 | fail→fail | 2,565 | 4,171 | +63% | 1 | 1 | 0% | 382 | 1,702 | +346% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 8 counted toward the lift figure. The other 14 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 8 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.