Skip to content

Instantly share code, notes, and snippets.

@insulineru
Created December 21, 2025 10:00
Show Gist options
  • Select an option

  • Save insulineru/0aee1fc00d44c9df4631507ce7ed2570 to your computer and use it in GitHub Desktop.

Select an option

Save insulineru/0aee1fc00d44c9df4631507ce7ed2570 to your computer and use it in GitHub Desktop.
DotaCoach Skill - Dota 2 coaching and analytics for Claude Code
name description
DotaCoach
Dota 2 coaching, analytics, and game knowledge system. USE WHEN user mentions dota, dota 2, hero, patch, meta, counterpick, matchup, item build, draft, mmr, match id, analyze match, OR wants to analyze patch notes, get hero info, check winrates, find counters, understand abilities, analyze match history, or improve at dota.

DotaCoach

Your personal Dota 2 analyst and coach. Provides real-time game data, patch analysis, hero breakdowns, meta insights, and strategic recommendations using official Valve APIs and OpenDota statistics.

Data Sources

Source Data Endpoint Docs
Valve Datafeed Heroes, abilities, items, patch notes dota2.com/datafeed/
OpenDota API Winrates, matchups, pro builds, match history api.opendota.com/api/ Explorer
STRATZ API Advanced stats, matchups, player data api.stratz.com/graphql GraphiQL

OpenDota/Valve — no keys required. STRATZ — requires API key (free tier available).

Available CLI Tools

All tools are in tools/ directory and run via Bun:

Tool Purpose Example
GetPatch.ts Fetch latest or specific patch notes bun run tools/GetPatch.ts --version=7.40
GetHero.ts Get hero details (abilities, talents, facets) bun run tools/GetHero.ts "Anti-Mage"
GetHeroStats.ts Winrates, pickrates from OpenDota bun run tools/GetHeroStats.ts
GetMatchups.ts Hero counters, synergies, draft analysis bun run tools/GetMatchups.ts "Pudge" or --against="Hero1,Hero2"
GetItemBuilds.ts Popular item builds for hero bun run tools/GetItemBuilds.ts "Invoker"
GetMatch.ts Match data with proper hero mapping bun run tools/GetMatch.ts 8597260572

Workflow Routing

When executing a workflow, output this notification directly:

Running the **WorkflowName** workflow from the **DotaCoach** skill...
Workflow Trigger File
AnalyzePatch "what changed in patch", "patch notes", "7.40 changes", "latest patch" workflows/AnalyzePatch.md
HeroBreakdown "tell me about [hero]", "how does [ability] work", "hero info" workflows/HeroBreakdown.md
MetaAnalysis "what's meta", "best heroes", "winrates", "strong picks" workflows/MetaAnalysis.md
Counterpick "counter [hero]", "who beats [hero]", "matchups for [hero]" workflows/Counterpick.md
DraftCoach "analyze draft", "help me draft", "is this draft good" workflows/DraftCoach.md
MatchAnalysis "analyze match [id]", "match [id]", "what happened in match", "look up match" workflows/MatchAnalysis.md

Examples

Example 1: Patch Analysis

User: "What changed in the latest Dota patch?"
→ Invokes AnalyzePatch workflow
→ Fetches patch 7.40 from Valve Datafeed
→ Summarizes key changes: talents rework, map changes, hero buffs/nerfs
→ Highlights meta-impacting changes

Example 2: Hero Deep Dive

User: "Tell me about Invoker's abilities"
→ Invokes HeroBreakdown workflow
→ Fetches hero data from Valve API
→ Explains all abilities with current values
→ Details talents, facets, shard/scepter upgrades

Example 3: Meta Check

User: "What heroes are strong right now?"
→ Invokes MetaAnalysis workflow
→ Fetches current winrates from OpenDota
→ Lists top heroes by role and bracket
→ Explains why they're strong in current patch

Example 4: Counterpicking

User: "Who counters Pudge?"
→ Invokes Counterpick workflow
→ Fetches matchup data from OpenDota
→ Lists best counters with win% advantage
→ Explains why each counter works

Example 5: Draft Analysis

User: "Analyze this draft: Pudge, Invoker, Juggernaut, Earthshaker, Crystal Maiden"
→ Invokes DraftCoach workflow
→ Analyzes team composition
→ Identifies strengths, weaknesses, win conditions
→ Suggests playstyle and timing

Example 6: Match Analysis

User: "Analyze match 8597260572"
→ Invokes MatchAnalysis workflow
→ Runs GetMatch.ts to fetch match data with proper hero names
→ Shows teams, players, K/D/A, GPM, damage
→ Displays draft order and bans
→ Provides insights on why the game went this way

Example 7: Draft Matchup Check

User: "Is DK good against Huskar, LC, Pugna, Dark Willow?"
→ Runs GetMatchups.ts "Dragon Knight" --against="Huskar,LC,Pugna,Dark Willow"
→ Shows winrate vs each enemy hero with statistical significance
→ Calculates average winrate against the draft
→ Gives verdict: GOOD PICK / NEUTRAL / BAD PICK

API Reference

Valve Datafeed (Official Game Data)

# List all patches
curl "https://www.dota2.com/datafeed/patchnoteslist"

# Get specific patch notes (FULL CONTENT)
curl "https://www.dota2.com/datafeed/patchnotes?version=7.40&language=english"

# Get all heroes
curl "https://www.dota2.com/datafeed/herolist?language=english"

# Get hero details (abilities, talents, facets)
curl "https://www.dota2.com/datafeed/herodata?hero_id=1&language=english"

# Get all items
curl "https://www.dota2.com/datafeed/itemlist?language=english"

# Get ability details
curl "https://www.dota2.com/datafeed/abilitydata?ability_id=5003&language=english"

OpenDota API (Statistics & Analytics)

# Hero stats (winrates, pickrates)
curl "https://api.opendota.com/api/heroStats"

# Hero matchups (counters)
curl "https://api.opendota.com/api/heroes/14/matchups"  # 14 = Pudge

# Hero item popularity
curl "https://api.opendota.com/api/heroes/74/itemPopularity"  # 74 = Invoker

# Pro matches
curl "https://api.opendota.com/api/proMatches"

# Live games
curl "https://api.opendota.com/api/live"

# Player profile
curl "https://api.opendota.com/api/players/{account_id}"

# Match data (IMPORTANT: use GetMatch.ts for proper hero name mapping)
curl "https://api.opendota.com/api/matches/{match_id}"

Hero ID Reference (Common Heroes)

Hero ID Hero ID
Anti-Mage 1 Pudge 14
Axe 2 Shadow Fiend 11
Crystal Maiden 5 Invoker 74
Earthshaker 7 Juggernaut 8
Drow Ranger 6 Phantom Assassin 44
Mirana 9 Rubick 86

Full list: curl "https://api.opendota.com/api/heroes"

Coaching Principles

When coaching, always consider:

  1. Bracket Context — Advice differs by MMR (Herald vs Immortal)
  2. Patch Relevance — Always check if advice matches current patch
  3. Role Clarity — Specify position (1-5) when discussing heroes
  4. Timing Windows — When heroes are strong/weak in game
  5. Win Conditions — How the team should play to win

Quick Reference

# Get latest patch notes
bun run tools/GetPatch.ts

# Get hero info
bun run tools/GetHero.ts "Invoker"

# Get current meta stats
bun run tools/GetHeroStats.ts

# Get hero counters
bun run tools/GetMatchups.ts "Pudge"

# Check hero vs enemy draft (DRAFT ANALYSIS)
bun run tools/GetMatchups.ts "Dragon Knight" --against="Huskar,LC,Pugna,Dark Willow"

# Get item builds
bun run tools/GetItemBuilds.ts "Anti-Mage"

# Get match data (with proper hero names!)
bun run tools/GetMatch.ts 8597260572

# Get match draft only
bun run tools/GetMatch.ts 8597260572 --draft
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment