chess-postmortem-skills
Четыре скилла Claude Code для разбора шахматной партии: объяснения ошибок по Stockfish, размеченный PGN, доска в HTML и видео
- 76 ★ репозитория
- Последний коммит
Расширенный доступ
Почему такой уровень
- Скилл запускает скачанный бинарный файл Stockfish и скрипты Python, а видео собирается через `ffmpeg`
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/chess-postmortem-skillsОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Скилл запускает скачанный бинарный файл Stockfish и скрипты Python, а видео собирается через `ffmpeg`
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Скиллы превращают одну вашу партию в разбор, который читается: простыми словами объясняют ошибки и проверяют каждое утверждение через Stockfish. Скилл `chess-analysis` прогоняет Stockfish по каждому ходу, затем параллельные субагенты-исследователи задают движку наивные вопросы, пока каждая ошибка не станет понятной. На выходе слоистый PGN с комментариями, автономная HTML-доска и одна «пауза плана», где из выводов движка выведены планы обеих сторон. Если во время партии вы наговорили мысли вслух на диктофон, Claude расшифровывает запись локально через whisper.cpp и по времени на часах из PGN сопоставляет каждую фразу с ходом. Тогда разбор опровергает ваши настоящие рассуждения, без догадок о них. Скилл `chess-video` собирает озвученное видео партии с доской, стрелками, шкалой оценки, голосом piper и субтитрами. `chess-position` разбирает одну позицию из FEN или скриншота, `chess-play` дает сыграть с Claude через файлы PGN без движка. Полный прогон занимает около часа обработки. Скиллы написаны для Claude, поэтому файлы `SKILL.md` служат и документацией: начинать стоит с `skills/chess-analysis/SKILL.md`.
Для кого. Шахматистам, которые играют долгие партии, записывают свои мысли и хотят разобрать ход рассуждений вместе с тем, где упала шкала оценки.
Подходит, если
- Партия в рапид 15+10 закончилась, и хочется понять, почему ход в десятый раз оказался ошибкой
- Рассуждения вслух записаны на диктофон, и их надо привязать к ходам партии
- Нужен автономный HTML-файл с доской, на которую накладываются комментарии
- Позицию из книги или скриншота надо разобрать с проверкой движком
- Партию хочется превратить в озвученное видео для разбора с учеником
Не подходит, если
- Блиц-партию надо проверить за секунды: хватит анализа на lichess или chess.com
- Нет времени ждать час: полный прогон длинный
- Нужен только счет и линия движка без объяснений человеческим языком
Пример запроса к агенту
Разбери мою партию по ссылке lichess и запись моих мыслей вслух, объясни три главные ошибки и собери HTML-доску.Ограничения
Нужны Python-окружение `.venv-chess` с `python-chess` и `cairosvg`, а для видео еще `pillow`, `piper-tts` и `ffmpeg`. Stockfish берется из `$STOCKFISH` или из `PATH`, иначе скрипт `get_stockfish.sh` скачивает официальный бинарный файл для Linux. Расшифровка мыслей вслух требует whisper.cpp. Файлы партий лежат в папке `chess-games/` в корне проекта. Язык пояснений зависит от уровня читателя: его указывают один раз, например в `CLAUDE.md`. Модель все равно может ошибиться, поэтому спорную позицию просят перепроверить движком.
Как отключить. Удалите папки скиллов `chess-analysis`, `chess-video`, `chess-position` и `chess-play` из `~/.claude/skills/` или `.claude/skills/` проекта. Окружение `.venv-chess` и папку `chess-games/` можно стереть вручную.
Частые вопросы
Как поставить скиллы?
Склонируйте репозиторий и скопируйте папки из `skills/` в `~/.claude/skills/` или в `.claude/skills/` проекта.
Что нужно для разбора партии?
Stockfish, `python-chess`, `cairosvg` и ссылка на партию или файл PGN. Для видео добавляются `ffmpeg`, `pillow` и голос piper.
Как учитываются мысли вслух?
Whisper.cpp расшифровывает запись локально, а часы из PGN помогают привязать каждую фразу к ходу, который вы выбирали в тот момент.
Сколько занимает разбор?
Полный прогон с прогоном движка, расследованиями, комментариями и видео занимает около часа обработки.
Можно ли играть с Claude в шахматы?
Да, скилл `chess-play` ведет партию через файлы PGN, рисует доску в PNG для зрения и использует субагентов для проверки зевков. Движок не подключается.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыОколо сотни скиллов для Claude Code: встречи и расшифровки, исследования, публикации, TDD, Telegram, почта и личная аналитика
Скилл-наставник для Claude Code, который ведет к решению задач LeetCode подсказками и не выдает готовый код сразу
Набор скиллов «Тайсюй, пять поворотов»: идеи проходят расхождение, сужение, проверку, критику и спасение отвергнутого.
Скилл /court устраивает суд над идеей: прокурор, защита, 12 присяжных и судья вместо привычного согласия Claude.
Семь скиллов для Claude Code: из ссылки на видео, статью или PDF получается текст и план действий, плюс скрам-коуч, журнал сессий и разбор застрявших задач
Десктоп-приложение и CLI skm: одна копия скилла в общем хранилище и симлинки во все AI-инструменты
Коротко о README
Описаны четыре скилла, пример разбора партии 010, рабочий процесс от записи до видео, требования к окружению, установка копированием и файлы примера.
Бейдж для README
Исходный 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