{"id":"78f3a39d-227e-4398-8e6a-4584ac6948cf","slug":"wcl","kind":"skill","name":"wcl","summary":"Warcraft Logs CLI — fetch report data, search public logs, verify sim damage against real combat logs","owner":"hillerstorm","repoUrl":"https://github.com/hillerstorm/wcl","license":"MIT","licenseTier":"permissive","trust":"community","stars":2,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-08-05T03:25:02.000Z","addedAt":"2026-10-22T01:37:09.850Z","logoUrl":"https://avatars.githubusercontent.com/u/779488?u=de7485f707d80f3a2c0380f796519a4b0d32dff1&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["browser-web","search","data-analytics"],"tags":[],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-25T17:54:19.101Z","sample":false,"url":"https://conduits.dev/tools/wcl","language":"TypeScript","transports":["stdio"],"install":{"npm":"@hillerstorm/wcl"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# wcl — Warcraft Logs CLI\n\nA command-line client for the [Warcraft Logs](https://www.warcraftlogs.com) GraphQL API with OAuth PKCE auth, disk caching, rate-limit awareness, and optional [WoWSims](https://github.com/wowsims) database enrichment. Built for verifying sim damage calculations against real combat logs — but useful for any scripted WCL data access.\n\nAlso ships as an [agent skill](#using-as-an-agent-skill) so coding agents (Claude Code, Cursor, etc.) can drive it.\n\n## Install\n\n```sh\nnpm install -g @hillerstorm/wcl\n```\n\nOr from source:\n\n```sh\ngit clone https://github.com/hillerstorm/wcl\ncd wcl\nnpm install\nnpm run build\nnpm link   # puts `wcl` on your $PATH\n```\n\nRequires Node 22+.\n\n## Getting started\n\n**1. Register an API client** at <https://www.warcraftlogs.com/api/clients/>:\n\n- Name: anything you like\n- Redirect URL: `http://localhost:31337/callback`\n- Tick **Public Client** (the CLI uses PKCE — no client secret involved)\n\n**2. Configure:**\n\n```sh\nwcl init\n```\n\nInteractive prompt for your client ID and, optionally, per-expansion WoWSims repo paths (used to enrich responses with item/spell data from the sim's `db.json` — hit Enter to skip any you don't have). Re-run any time; type `-` at a prompt to clear a value.\n\n**3. Authenticate:**\n\n```sh\nwcl auth\n```\n\nOpens your browser for the OAuth flow and stores tokens locally (`0600`). Re-run with `--reset` to start over.\n\n**4. Try it:**\n\n```sh\nwcl quota                                          # rate-limit usage\nwcl search --encounter \"Gruul the Dragonkiller\" --class hunter --spec beastmastery\nwcl fights <reportCode> --boss                     # fight list for a report\nwcl actors <reportCode> --class hunter             # resolve actor IDs\nwcl events <reportCode> <fightId> --source \"Playername\" --summary\nwcl player <reportCode> <fightId> \"Playername\"     # full player snapshot\nwcl character \"Playername\" <server-slug> <region>  # zone rankings\n```\n\nOutput is JSON (add `--pretty` for human-readable), except `fights`, `actors` and `character`, which print a text table unless `--json`. Errors go to stderr as JSON with stable `code` values and exit codes; stdout stays empty on failure.\n\n## Commands\n\n| Command | Purpose |\n|---|---|\n| `wcl auth [--reset]` | OAuth PKCE flow |\n| `wcl quota` | Current rate-limit usage |\n| `wcl query --file q.graphql [--var k=v] [--var k:=json]…` | Raw GraphQL escape hatch |\n| `wcl report <code>` | Report metadata, fights, masterData |\n| `wcl fights <code>` | Compact fight table |\n| `wcl actors <code>` | Actor table with resolved pet owners |\n| `wcl events <code> <fightId>` | Filtered event stream, auto-paginated |\n| `wcl fight <code> <fightId>` | Fight metadata + damage-done table |\n| `wcl player <code> <fightId> <name>` | Player snapshot, casts, damage, buffs |\n| `wcl cast-snapshot <code> <fightId> <name>` | Full state snapshot around a single cast |\n| `wcl gear <code> <fightId> <name>` | Gear/enchants/gems/temp-enchants for a player (boss fights only) |\n| `wcl search` | Public-log discovery via rankings |\n| `wcl character <name> <server> <region>` | Character zone rankings |\n| `wcl cache stats` / `wcl cache clear` | Cache management |\n\nRun any command with `--help` for full flags. Global flags: `--instance` / `--expansion` select the WCL host (retail, fresh, classic, vanilla, sod) and sim enrichment; `--no-cache`, `--force`, `--pretty`.\n\n## Data locations\n\n| | Repo checkout | npm install |\n|---|---|---|\n| `config.json`, `credentials.json` | repo root (gitignored) | `~/.config/wcl/` |\n| response cache | `<repo>/.cache/` | `~/.cache/wcl/` |\n\nOverride with `$WCL_CONFIG_DIR`, `$WCL_CACHE_DIR`, `$WCL_CLIENT_ID`, `$WCL_WOWSIMS_ROOT`.\n\n## Rate limits & caching\n\nWCL grants a points-per-hour quota. Every response carries a `rateLimit` footer; the CLI refuses new requests above 95% usage unless `--force` is passed (`wcl quota` always reports, so you can read the reset time). Report-shaped data is cached on disk for 7 days, searches for 1 hour.\n\n## Using as an agent skill\n\nThe skill definition lives in [`skills/wcl/SKILL.md`](skills/wcl/SKILL.md):\n\n```sh\nnpx skills add hillerstorm/wcl\n```\n\nor symlink `skills/wcl` into your agent's skills directory (e.g. `~/.claude/skills/wcl`). The skill expects the `wcl` binary on `$PATH` — install it via npm or from source as above.\n\n## Development\n\n```sh\nnpm run dev -- quota   # run from TypeScript source (tsx)\nnpm test               # vitest\nnpm run typecheck      # tsc --noEmit\nnpm run build          # esbuild bundle → dist/cli.js\n```\n\n## Attribution & terms\n\nData comes from [Warcraft Logs](https://www.warcraftlogs.com), fetched through the official v2 GraphQL API. This is an unofficial tool — not affiliated with, sponsored, or endorsed by RPGLogs / Archon.\n\nYour use of the API is subject to the [RPGLogs API Terms of Service](https://www.archon.gg/classic-mop/articles/help/rpg-logs-api-terms-of-service). In particular: every user registers **their own** API client (`wcl init` — no developer credentials ship with this project, and yours should stay out of any fork you publish), and commercial use of API data requires prior approval from RPGLogs.\n\n## License\n\n[MIT](LICENSE.md)\n"}