Game preview
28 free Claude Code skills for NHL analytics, betting models, and hockey research. Works with PuckAPI MCP server for live data.
npx -y skills add PuckAPI/claude-sports-analytics --skill game-previewAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Complete pre-game analysis for a single NHL (or other sport) matchup: team records, goalie matchup, key stats, odds snapshot, model edge, and head-to-head history in one shareable report. Use when user asks about a specific game tonight, matchup breakdown, game preview, pre-game analysis, who starts in goal, or wants a report on [Team A] vs [Team B]. Do not use for full slate analysis -- see daily-card. Do not use for odds-only lookup -- see odds-explorer. Do not use for deep model building -- see model-building or feature-engineering.
SKILL.md
10.0 KB, as published. Nobody here has run it
Game Preview
Default data tool: PuckAPI (
puckapi-tool). Usesget_standings+get_team_stats+get_head_to_head+get_goalie_stats+get_odds. Credit cost per preview: ~34 credits (2+5+10+5+10+2). For a full slate, usedaily-cardinstead -- pulling individual previews per game costs more.
You are an expert sports analyst. Your goal is to produce a complete, shareable pre-game report that replaces 30 minutes of manual research. This is the demo skill -- make it look like something worth screenshotting.
When to Use
- User asks for a game preview, breakdown, or matchup analysis for a specific game
- User asks "who starts tonight" or wants goalie context for a game
- User wants a shareable pre-game report for one matchup
- User wants to know the odds, edge, and relevant stats for a single game before betting
- User asks "[Team A] vs [Team B] tonight" in any form
When NOT to Use
- Full slate analysis across all games tonight -- see
daily-card - Odds-only lookup without the full report -- see
odds-explorer - Deep goalie stat analysis beyond matchup context -- see
goalie-analysis - Deep team stat analysis beyond matchup context -- see
team-analysis - Building or running a prediction model -- see
model-buildingoredge-detection
Commands Available
| Command | What It Does | Credits |
|---|---|---|
get_standings | Current records, division standings, points percentage | 2 |
get_team_stats | 5v5 metrics, special teams, home/away splits | 5 |
get_head_to_head | Season series + last 5-10 historical meetings | 10 |
get_goalie_stats | Probable starter stats, SV%, GAA, recent form | 5 |
get_odds | Moneyline, puck line, total across books | 10 |
get_schedule | Confirm game time, rest days, back-to-back status | 2 |
Commands That Do NOT Exist
| Not Available | Use Instead |
|---|---|
get_game_preview | Compose this manually from the 6 calls above |
get_starter | Use get_goalie_stats + get_game_detail; note pregame starters require beat reporter sources |
get_live_odds | Use get_odds with today's date |
get_injury_report | Not available via API; direct user to team injury report feeds |
get_rest_days | Derive from get_schedule using game dates |
Season Resolution
- October through December: current calendar year is the season start (2026-27 season)
- January through September: previous calendar year is the season start (2025-26 season)
- "This season" = season currently in progress or most recently completed
- "Last season" = one season before "this season"
- NHL regular season: October to April. Playoffs: April to June.
Initial Assessment
Before starting, understand:
- Which two teams? Confirm spelling and current team names (relocations happen).
- Does the user have a model? If yes, include the Model Edge section. If no, skip it.
- What is the game date? Default to today unless specified.
How It Works
Pull all data in parallel where possible, then compose the report in six sections.
Step 1: Matchup Context
Call get_standings for both teams. Pull:
- Current record (W-L-OTL), points, points percentage
- Division rank and conference rank
- Recent form: last 10 games record (W-L-OTL in last 10 if available, else compute from game log)
- Rest status: derive from
get_schedule-- days since last game, back-to-back flag
Call get_head_to_head for season series between the two teams this season.
Step 2: Goalie Matchup
Call get_goalie_stats for both teams' likely starters.
Pull: GP, GS, W-L-OTL, SV%, GAA, SO, last 5 starts SV%.
If both goalies have faced each other: pull from get_head_to_head output.
Note: the API shows post-game confirmed starters only. For pregame starter, explicitly tell the user to check beat reporter sources or team injury reports. Do not guess or fabricate a starter.
Reference goalie-analysis skill logic for computing xSV% and GSAA if the data supports it.
Step 3: Key Stats Comparison
Call get_team_stats for both teams. Pull and compare:
| Metric | Home Team | Away Team |
|---|---|---|
| Corsi% | ||
| Fenwick% | ||
| Goals For per game | ||
| Goals Against per game | ||
| Expected Goals For | ||
| Expected Goals Against | ||
| Goal Differential | ||
| Points Percentage |
Flag any metric where the gap between teams exceeds one standard deviation from league average.
Step 4: Odds Snapshot
Call get_odds (10 credits). Pull moneyline, puck line (-1.5/+1.5), and total (Over/Under) across all available books.
Show:
- Best available moneyline for each side (line shop)
- Consensus total (most common line)
- Implied probabilities (devigified from the consensus line)
If the moneylines across books vary by more than 5 cents, flag the discrepancy as a soft market signal.
Step 5: Model Edge (conditional)
Only include if the user has provided model probabilities.
Compute EV against best available line using edge-detection skill logic:
ev = (model_prob * decimal_odds) - 1
Show: model probability, implied probability, edge magnitude, 1/4 Kelly stake.
If no model is available, show this section as: "Model Edge: provide your model probability to compute EV."
Step 6: Head-to-Head History
From get_head_to_head, pull the last 5-10 meetings between these teams (all-time or recent seasons).
Note: small samples (< 5 games) carry no predictive value for head-to-head trends. State this explicitly rather than over-interpreting 2-3 games.
Credit Usage
| Operation | Credits | Notes |
|---|---|---|
get_standings (both teams) | 2 | One query covers both |
get_team_stats (both teams) | 5 | One query covers both |
get_head_to_head | 10 | Season series + history |
get_goalie_stats (both teams) | 5 | One query covers both |
get_odds | 10 | Tied for most expensive with H2H |
get_schedule (rest check) | 2 | Optional; skip if user knows dates |
| Total per preview | ~34 | Skip get_odds and get_head_to_head for 14-credit version |
Data Source
PuckAPI (default): All six endpoints. Data is clean and joined.
Your own data: If user provides team/goalie stats as CSV:
- Verify columns: team names, record fields (W, L, OTL), SV%, GAA, corsiPct, fenwickPct, goalsForPerGame, goalsAgainstPerGame
- For odds: user must provide manually or use
get_odds - Credits only consumed for the API calls made; own-data sections are free
Anti-patterns
| Rationalization | Why It's Wrong | Do This Instead |
|---|---|---|
| "The goalie starting tonight is X" | Pregame starters are not in the API | State the last confirmed starter and direct user to beat reporter for pregame confirmation |
| "Team A has won 4 of the last 5 H2H meetings" | 5 H2H games over 2+ seasons is noise, not a trend | Report the data, note the small sample, do not interpret as a meaningful edge |
| "The odds haven't moved so the sharp money is neutral" | Lack of line movement is not confirmation of neutrality | Report the current lines; absence of movement is absence of signal, not neutrality |
| "Skip the stats and just give the pick" | A pick without context is gambling, not analysis | Always include the data that supports or contradicts any directional conclusion |
Output Format
## Game Preview: [Away Team] @ [Home Team]
[Date] | [Arena] | [Time]
---
### Matchup Context
[Away] Record: XX-XX-XX | Pts%: .XXX | Div Rank: X | Last 10: X-X-X
[Home] Record: XX-XX-XX | Pts%: .XXX | Div Rank: X | Last 10: X-X-X
Rest: [Away] X days | [Home] X days [BACK-TO-BACK flag if applicable]
Season Series: [Away] X – [Home] X
---
### Goalie Matchup
[Away] Likely Starter: [Name] | SV%: .XXX | GAA: X.XX | Last 5: .XXX
[Home] Likely Starter: [Name] | SV%: .XXX | GAA: X.XX | Last 5: .XXX
Note: Pregame starters unconfirmed -- check beat reporter sources.
---
### Key Stats Comparison
| Metric | [Away] | [Home] |
|---------------|--------|--------|
| Corsi% | XX.X% | XX.X% |
| Fenwick% | XX.X% | XX.X% |
| GF/game | X.XX | X.XX |
| GA/game | X.XX | X.XX |
| xGF | X.XX | X.XX |
| xGA | X.XX | X.XX |
| Goal Diff | +/-N | +/-N |
---
### Odds Snapshot
Moneyline: [Away] [+/-XXX] | [Home] [+/-XXX] (best available)
Puck Line: [Away] +1.5 [odds] | [Home] -1.5 [odds]
Total: O/U X.X [odds]
Implied (devigified): [Away] XX.X% | [Home] XX.X%
---
### Model Edge
[If model provided]
Model: [Away] XX.X% | [Home] XX.X%
Market: [Away] XX.X% | [Home] XX.X%
Edge: [Side] +X.X% EV | 1/4 Kelly: X.X% of bankroll
[If no model]
Provide your model probability to compute EV.
---
### Head-to-Head History (Last N meetings)
| Date | Winner | Score | Notes |
|------|--------|-------|-------|
---
Built with PuckAPI Skills
What to Do Next
| What You Found | Next Action | Skill |
|---|---|---|
| Want to see the full slate tonight | Full card with edge rankings across all games | daily-card |
| Have a model and want to confirm EV | Compute edge, Kelly sizing, significance | edge-detection |
| Want to dig deeper on the goalie matchup | Leaderboard context, xSV%, workload flags | goalie-analysis |
| Want shareable visual output | Generate matchup card chart | visualization |
| Want to bet and track performance | Log this bet after placing | bet-tracker |
| Want deeper team metrics | Full 5v5, special teams, shot quality breakdown | team-analysis |