Query the WarcraftLogs API to answer World of Warcraft raiding and Mythic+ questions. Use this skill whenever the user mentions WarcraftLogs, WCL, raid parses, boss rankings, M+ scores, log analysis, combat logs, guild progression, DPS/HPS rankings, percentiles, or any WoW performance-related question. Also use when the user pastes a warcraftlogs.com URL, mentions a character name + server in a WoW context, asks about raid tier rankings, spec performance, or wants to compare players. Even casual questions like "how did I do last night" or "what's the best healer spec right now" should trigger this skill if there's any WoW context.
You have access to the WarcraftLogs v2 GraphQL API, which lets you pull real-time data about WoW raiding, Mythic+, character performance, combat log reports, and guild progression.
When the user doesn't specify a raid, dungeon season, or expansion, always default to the current content:
If the user says "how are my parses" → query VS / DR / MQD Mythic by default. If the user says "my M+ score" → query Midnight M+ Season 1 by default. If the user mentions a specific older raid or season (e.g. Liberation of Undermine, TWW M+ Season 3), use that instead.
references/queries.md or construct a custom query using references/schema.md<skill-path>/scripts/wcl.sh '<GRAPHQL_QUERY>'
<skill-path>/scripts/wcl.sh '<QUERY>' '{"name": "value"}'The script handles OAuth authentication automatically (including retry on expired tokens). Credentials are read from environment variables (WCL_CLIENT_ID, WCL_CLIENT_SECRET) or from a .env file at ${CLAUDE_SKILL_DIR}/.env.
Extract the report code from the URL: https://www.warcraftlogs.com/reports/ABC123 → code is ABC123.
Start with the report overview query (template #4) to get fights, then drill into specific fights with tables, deaths, or rankings.
You need: character name, server slug (lowercase, hyphenated), and region (us, eu, kr, tw, cn).
If the user doesn't specify server/region, ask them. Common examples: "illidan"/"us", "tarren-mill"/"eu", "ragnaros"/"eu".
Same as character — need guild name, server slug, region.
This requires aggregating data. WarcraftLogs doesn't have a direct "best spec" API endpoint. Instead:
metric: playerscore for high-performing characters.zoneRankings)Returns JSON with per-boss data. Key fields in the response:
bestAmount — highest DPS/HPS valuemedianPerformance — median percentile across killsrankPercent — best percentileallStars — overall ranking across all bosses
points, rank, regionRank, serverRank, possiblePointsPresent percentiles with color context:
encounterRankings)Returns JSON with individual kill details:
ranks[] — each kill with amount (DPS/HPS), duration, startTime, report { code, fightID }, bracketDatabestAmount, medianPerformance, averagePerformancetotalKillsReturns JSON with entries[] or compositions[]. Each entry has:
name, id, total, activeTime, activeTimeReducedabilities[] with per-ability breakdownsdeathEvents[] with killing blow infozoneRanking)Each sub-field (progress, speed, completeRaidSpeed) contains:
worldRank { number percentile color } — global rankregionRank { number } — region rankserverRank { number } — server rankThe API has a 3600 points/hour rate limit. Be mindful:
When doing a multi-step analysis (like "analyze this log"), plan your queries:
X.XXk or X.XXM, durations as Xm Xsreferences/queries.md for ready-to-use query templates (covers ~80% of questions)references/schema.md for the full API schema when you need to construct custom queriesnull character/guild result: name or server is wrong. Ask the user to double-check.null rankings: character may have no logs for that zone/difficulty, or rankings are hidden..env file exists at ${CLAUDE_SKILL_DIR}/.env.pointsResetIn from rate limit query).