Skip to content
Back to skills

Hearthstone Overlay

ASecurity

Start (or restart) the Hearthstone coach overlay — five native always-on-top panels (turn advice, HDT-style deck tracker, opponent tracker, coaching lessons, deck stats) fed by the hearthstone-tracker live feed. Use when the user asks to start/launch/restart the overlay, says panels are missing or stale, or wants the coach's advice shown in-game instead of only in chat. Pairs with hearthstone-live-coach, which publishes the advice this overlay displays.

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 20, 2026
ai-agentspythongobashnodenodejsgit

Works with

  • cli

Security analysis

A100/100

Pro scans all 16 files and shows the line behind each finding

Scanned October 20, 2026

npx -y skills add barnabys-drew/hearthstone-ai-coach --skill hearthstone-overlay --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hearthstone Overlay?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Hearthstone Overlay
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/barnabys-drew-hearthstone-overlay/badge)](https://www.skillsdirectory.com/skills/barnabys-drew-hearthstone-overlay)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: hearthstone-overlay
description: Start (or restart) the Hearthstone coach overlay — five native always-on-top panels (turn advice, HDT-style deck tracker, opponent tracker, coaching lessons, deck stats) fed by the hearthstone-tracker live feed. Use when the user asks to start/launch/restart the overlay, says panels are missing or stale, or wants the coach's advice shown in-game instead of only in chat. Pairs with hearthstone-live-coach, which publishes the advice this overlay displays.
---

# Hearthstone Coach Overlay — startup

Bring up the full overlay stack: the WSL feed that mirrors game state, and the
five Windows panels that render it. Everything here was learned the hard way —
follow the exact commands, the quoting workarounds matter.

## Architecture (10-second version)

- WSL: `coach_feed.sh` runs `hst live`, which mirrors `live.json` into the
  shared folder `/mnt/c/Users/$WINUSER/hs-overlay` (Windows:
  `C:\Users\%WINUSER%\hs-overlay`).
- WSL: `coach_publish.py` writes `advice.json` (turn plans, discover picks)
  and `lessons.json` (accumulating coaching lessons) into the same folder.
- Windows: an Electron app (copied to `C:\Users\%WINUSER%\hearthstone-overlay`)
  polls those files and renders five standalone always-on-top panels
  (advice, deck, opponent, lessons, stats).

## Start procedure

1. **Start the feed** (kills zombies, prints `FEED_PID=` and `LOG=` on
   success — coordinate with hearthstone-live-coach, which watches that LOG):

   ```bash
   <repo>/hearthstone-tracker/coach_feed.sh
   ```

   Verify its startup lines include `Overlay mirror: /mnt/c/Users/$WINUSER/hs-overlay`.
   If that line is missing, the running code predates the overlay — the feed
   restart just fixed it.

2. **Sync the Windows app copy** whenever repo overlay files changed (npm is
   unreliable on WSL UNC paths, so the app runs from a Windows-local copy):

   ```bash
   cp <repo>/hearthstone-overlay/main.js <repo>/hearthstone-overlay/preload.js \
      <repo>/hearthstone-overlay/package.json <repo>/hearthstone-overlay/config.example.json \
      <repo>/hearthstone-overlay/start-overlay.cmd <repo>/hearthstone-overlay/stop-overlay.cmd \
      /mnt/c/Users/$WINUSER/hearthstone-overlay/
   cp <repo>/hearthstone-overlay/renderer/*.* /mnt/c/Users/$WINUSER/hearthstone-overlay/renderer/
   ```

   Do NOT overwrite `C:\Users\%WINUSER%\hearthstone-overlay\config.json` — it holds
   the user's saved panel positions. Only seed it from `config.example.json`
   if it does not exist.

3. **Restart the Electron app**. Easy path — run the launcher script (same
   kill + detached start + log, packaged as a double-clickable .cmd the user
   can also pin as a Desktop shortcut):

   ```bash
   cd /mnt/c && cmd.exe /c "C:\Users\%WINUSER%\hearthstone-overlay\start-overlay.cmd"
   ```

   Or the manual equivalent (from WSL; `start` detaches, output goes to a
   log so hotkey-registration failures are visible):

   ```bash
   cd /mnt/c && cmd.exe /c "taskkill /im electron.exe /f" >/dev/null 2>&1
   sleep 1
   nohup cmd.exe /c "C:\Users\%WINUSER%\hearthstone-overlay\node_modules\electron\dist\electron.exe C:\Users\%WINUSER%\hearthstone-overlay > C:\Users\%WINUSER%\hearthstone-overlay\electron.log 2>&1" >/dev/null 2>&1 &
   sleep 4
   cat /mnt/c/Users/$WINUSER/hearthstone-overlay/electron.log  # empty = all hotkeys registered
   cmd.exe /c "tasklist" 2>/dev/null | grep -ci electron    # ~10 processes = 6 windows up
   ```

   Windows-side gotchas (all real):
   - `cmd.exe` from WSL mangles quoted paths — use the 8.3 short path
     `C:\PROGRA~1\nodejs\...` instead of quoting `Program Files`.
   - Electron's postinstall needs `node` on PATH:
     `cmd.exe /c "set PATH=C:\PROGRA~1\nodejs;%PATH%&& cd /d C:\Users\%WINUSER%\hearthstone-overlay && npm.cmd install"`,
     and if npm's allow-scripts blocks it, run
     `cd node_modules\electron && node install.js` the same way.
   - If Node.js is missing entirely:
     `cmd.exe /c "winget install --id OpenJS.NodeJS.LTS --accept-source-agreements --accept-package-agreements"`
     (a UAC prompt appears on the Windows screen).

4. **Publish a visible card** so the user can confirm the advice panel works:

   ```bash
   <repo>/hearthstone-tracker/coach_publish.py --kind idle \
     --headline "Overlay online" --why "Panels are live; start a game."
   ```

5. **Tell the user the controls** (they forget between sessions):
   - `Ctrl+Shift+F` — unlock move/resize for all panels (purple glow); drag a
     card body to move, any edge/corner to resize; auto-relocks ~4s after the
     last drag.
   - `Ctrl+Shift+1/2/3/4/5` — toggle advice / deck / opponent / lessons / stats panel.
   - `Ctrl+Shift+9` — show/hide all. `Ctrl+Shift+0` — reset layout.
     `Ctrl+Shift+-` / `Ctrl+Shift+=` — opacity.
   - The tiny **controls bar** (top-left by default) always accepts clicks:
     ✥ toggles move/lock (same as `Ctrl+Shift+F`), ⏻ quits the overlay —
     the mouse-only way out. `stop-overlay.cmd` also quits.

## Fallback: browser mode (no Node/Electron)

If the Electron path is broken, serve the same panels as a web page from WSL
and open `http://localhost:8420` on Windows (WSL2 forwards localhost). No
click-through, but zero install:

```bash
python3 <repo>/hearthstone-overlay/serve.py
```

## Known failure modes

- **Panels show stale/no data**: the feed died or predates a code change —
  rerun `coach_feed.sh` (it replaces the old process) and check for the
  `Overlay mirror:` line.
- **A hotkey silently does nothing**: another app owns it. `electron.log`
  prints `Hotkey <accel> is taken by another app` — pick a new accelerator in
  `config.json` (several Ctrl+Shift+letter combos are taken on this machine;
  digits registered reliably).
- **Card art missing**: tiles stream from `art.hearthstonejson.com`; offline
  machines get plain dark rows. Harmless.

Files in this skill

  • README.md6.6 KB
  • SKILL.md5.8 KB
  • config.example.json1.3 KB
  • main.js11.7 KB
  • package.json322 B
  • preload.js699 B
  • renderer/app.js12.1 KB
  • renderer/browser-shim.js1.5 KB
  • renderer/fonts/OFL.txt4.3 KB
  • renderer/index.html3.6 KB
  • renderer/logic.js6.6 KB
  • renderer/styles.css12.5 KB
  • serve.py9 KB
  • start-overlay.cmd765 B
  • stop-overlay.cmd113 B
  • test/logic.test.mjs9.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.