chess-postmortem-skills

Four Claude Code skills for chess post-mortems: Stockfish-checked explanations, annotated PGN, an HTML board and a narrated video

  • 76 ★ on the repository
  • Last commit
Skill

Extended access

Why this level

  • The skill runs a downloaded Stockfish binary and Python scripts, and video is built with `ffmpeg`
All reasons and checks

brumar/chess-postmortem-skills

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/chess-postmortem-skills

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • The skill runs a downloaded Stockfish binary and Python scripts, and video is built with `ffmpeg`

This is third-party code. Review the repository files before installing.

What it does

The skills turn one of your games into a post-mortem you can read: plain-language explanations of mistakes with every claim checked against Stockfish. The `chess-analysis` skill sweeps every move with Stockfish, then parallel investigator subagents ask the engine naive questions until each mistake makes sense. The output is a layered annotated PGN, a standalone HTML board and one "plan pause" where both sides' plans are derived from engine lines. If you recorded your thoughts aloud during the game, Claude transcribes the recording locally with whisper.cpp and uses the clock times in the PGN to match each phrase to a move. The review then refutes your actual reasoning, with no guessing about it. The `chess-video` skill builds a narrated game video with a board, arrows, an eval gauge, piper voice and subtitles. `chess-position` studies one position from a FEN or a screenshot, and `chess-play` lets you play Claude over PGN files with no engine. A full run takes about an hour of processing. The skills are written for Claude, so the `SKILL.md` files double as documentation, and `skills/chess-analysis/SKILL.md` is the place to start.

Who it is for. Chess players who play slow games, record their thoughts and want to review their reasoning along with where the eval bar dropped.

Good fit when

  • A 15+10 rapid game ended and you want to understand why a move turned out to be a mistake
  • Think-aloud notes are recorded and need to be tied to moves of the game
  • You want a standalone HTML board with comments layered over it
  • A position from a book or a screenshot should be studied with engine checks
  • You want to turn a game into a narrated video for review with a student

Not a fit when

  • A blitz game needs a check in seconds: analysis on lichess or chess.com is enough
  • You cannot wait an hour: a full run is long
  • You want only the score and the engine line with no plain-language explanation

Example request

Analyze my game from the lichess link and my think-aloud recording, explain the three main mistakes and build an HTML board.

Limitations

It needs a `.venv-chess` Python environment with `python-chess` and `cairosvg`, and for video also `pillow`, `piper-tts` and `ffmpeg`. Stockfish comes from `$STOCKFISH` or `PATH`, otherwise the `get_stockfish.sh` script downloads the official Linux binary. Transcribing think-aloud notes needs whisper.cpp. Game files live in a `chess-games/` folder at the project root. The depth of explanations depends on the reader level, set once, for example in `CLAUDE.md`. The model can still be wrong, so ask it to recheck a doubtful position with the engine.

How to disable. Delete the `chess-analysis`, `chess-video`, `chess-position` and `chess-play` skill folders from `~/.claude/skills/` or the project `.claude/skills/`. The `.venv-chess` environment and the `chess-games/` folder can be removed by hand.

FAQ

How do I install the skills?

Clone the repo and copy the folders from `skills/` into `~/.claude/skills/` or the project `.claude/skills/`.

What is needed for a game review?

Stockfish, `python-chess`, `cairosvg` and a game link or a PGN file. Video adds `ffmpeg`, `pillow` and a piper voice.

How are think-aloud notes used?

Whisper.cpp transcribes the recording locally, and the clocks in the PGN tie each phrase to the move you were deciding at that moment.

How long does a review take?

A full run with the engine sweep, investigations, annotations and video takes about an hour of processing.

Can I play chess against Claude?

Yes, the `chess-play` skill runs a game over PGN files, renders the board to PNG for vision and uses subagents for blunder checks. No engine is attached.

Discussion

No questions or reviews yet.

Skills

About a hundred skills for Claude Code: meetings, research, publishing, TDD, Telegram, email and personal analytics

PluginBroad access413Repository stars

A mentor skill for Claude Code that guides you to LeetCode solutions with hints instead of handing over code at once

SkillMinimal access302Repository stars

The Taixu five-turns skill pack: ideas pass divergence, convergence, verification, critique and a rescue of rejected options.

SkillMinimal access115Repository stars

The /court skill puts an idea on trial: a prosecutor, a defense, 12 jurors and a judge instead of Claude’s usual agreement.

SkillMinimal access367Repository stars

Seven Claude Code skills: turn a video, article or PDF link into text and an action plan, plus a Scrum coach, a session log and an unblock helper

SkillExtended access576Repository stars

A desktop app and skm CLI: one copy of each skill in a central hub, symlinked into every AI tool

CLIExtended access1.1KRepository stars

README in short

Covers the four skills, the game 010 example, the workflow from recording to video, environment requirements, install by copying and the example files.

README badge

Original SKILL.md

---
name: chess-analysis
description: Engine post-mortem of a chess game producing a deeply annotated PGN. Runs a Stockfish eval sweep, then interrogates the engine with "naive questions" (via parallel investigator subagents) until every mistake and every complex engine move is genuinely explained, and writes layered annotations (short notes on ordinary moves, deep dives on 0.3+ pawn errors). Use whenever the user asks to analyze/review/annotate a game, find their mistakes, run a post-mortem or "stage 2", asks "where did I go wrong", or after a game played with the chess-play skill ends. Also for analyzing any PGN file the user provides. If the user recorded themselves thinking aloud during the game (a voice memo / mp3 alongside the game), this skill also covers transcribing it locally, clock-aligning it to the moves, and weaving the player's actual beliefs into the annotations.
---

# Chess post-mortem: sweep, interrogate, annotate

Goal: an annotated PGN a human learns from. An eval number is not an
explanation — the deliverable is the *why*, verified against the engine
and against your own eyes (render positions, look at them).

## Pipeline overview

0. **Audience** — whose game this is and what level to write for.
1. **Setup** — engine + venv.
2. **Sweep** — eval every move, flag mistakes (≥0.3 pawn loss).
3. **Investigate** — one subagent per mistake, in parallel, running the
   naive-question method (see below).
3b. **Plan pause** — exactly one quiet position per game, both sides'
   plans derived from the engine.
4. **Brief comments** — a subagent pass giving short notes to the
   ordinary moves.
5. **Build** — merge everything into `annotations.json`, run
   `build_annotated.py`, validate.
6. **Verify** — a subagent re-checks the artifact against the checklist.
7. **Viewer** — bundle the annotated PGN + sweep + engine-line sidecars
   into a standalone HTML analysis board (`build_viewer.py`).
8. **Deliver** — send the PGN and the HTML viewer, summarize findings in
   chat, commit if in a real repo session.

## 0. Who the review is for — settle this before writing anything

Every comment in this pipeline is pitched at a reader. Pick the level
first and record it, or the annotations drift into proving things the
player can already see.

- **The user's own games**: use the level the user gave you (ask once if
  you don't know it, and remember the answer: a CLAUDE.md line or a memory
  note such as "my lichess handle is X, write for 1800"). That number wins
  over the PGN's Elo header. Ratings in the header are often misleading:
  a correspondence or daily rating over a dozen games can sit 300-400
  points below the player's real strength.
- **Anybody else's game**: read `WhiteElo`/`BlackElo` for the side being
  reviewed and calibrate to that. If the tag is missing, or the rating is
  provisional (RD > 150, or a handful of games), ask the user instead of
  assuming a low number.

Write the result into `annotations.json` as a top-level
`"audience": {"level": 1800, "source": "user-set"}` so the
brief-comment pass, the plan pause, the verifier and stage 3's narration

Report a problem