Skip to content

zappleg8/sideboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sideboard

Play chess against Chesster, inline in Claude Code.

    a   b   c   d   e   f   g   h
  ┌───┬───┬───┬───┬───┬───┬───┬───┐
8 │ ♖ │ ♘ │ ♗ │ ♕ │ ♔ │ ♗ │ ♘ │ ♖ │ 8
  ├───┼───┼───┼───┼───┼───┼───┼───┤
7 │ ♙ │ ♙ │ ♙ │ ♙ │ ♙ │ ♙ │ ♙ │ ♙ │ 7
  ├───┼───┼───┼───┼───┼───┼───┼───┤
6 │   │   │   │   │   │ ♘ │   │   │ 6
  ├───┼───┼───┼───┼───┼───┼───┼───┤
5 │   │   │   │   │   │   │   │   │ 5
  ├───┼───┼───┼───┼───┼───┼───┼───┤
4 │   │   │   │   │ ♟ │   │   │   │ 4
  ├───┼───┼───┼───┼───┼───┼───┼───┤
3 │   │   │   │   │   │   │   │   │ 3
  ├───┼───┼───┼───┼───┼───┼───┼───┤
2 │ ♟ │ ♟ │ ♟ │ ♟ │   │ ♟ │ ♟ │ ♟ │ 2
  ├───┼───┼───┼───┼───┼───┼───┼───┤
1 │ ♜ │ ♞ │ ♝ │ ♛ │ ♚ │ ♝ │ ♞ │ ♜ │ 1
  └───┴───┴───┴───┴───┴───┴───┴───┘
    a   b   c   d   e   f   g   h

Chesster: Alekhine's Defense — bold of you to invite the bayonet.

A chess game that lives inside your Claude Code conversation, for when the coding agent is grinding through a slow build.

Install (Claude Code)

You'll need uv on your PATH — the MCP server runs via uvx. Install with brew install uv if you don't have it.

In Claude Code:

/plugin marketplace add zappleg8/sideboard
/plugin install sideboard@sideboard

That's it. No pip, no shell config, no daemons.

Play

/sideboard:play             # start or resume a game
/sideboard:play e4          # make a move (SAN: e4, Nf3, O-O, Bxe5, e8=Q)
/sideboard:board            # re-render the current state silently
/sideboard:resign           # resign and archive the PGN

One global game, persisted at ~/.sideboard/. Quit Claude Code, come back tomorrow, the position is still there.

Standalone CLI (no Claude Code)

If you'd rather play in a regular terminal:

pip install sideboard
sideboard                          # new game vs Chesster
sideboard --difficulty casual      # beginner-friendly
sideboard --difficulty shark       # bring your A-game
sideboard resume                   # pick up where you left off
sideboard stats                    # your record vs Chesster

Terminal mode renders a colored Rich-styled board with proper chess glyphs.

How It Works

A small Claude Code plugin packages three pieces:

  • A slash-command skill (/sideboard:play) that tells Claude to drive the game.
  • An MCP server (sideboard-mcp, launched via uvx) that exposes the chess engine and game state as tools (new_game, make_move, engine_response, get_state, resign, get_stats).
  • The engine is local Python — minimax with alpha-beta pruning, piece-square tables, and a curated Chesster quip pool that reacts to captures, checks, blunders, and brilliancies.

Each move is two MCP calls: make_move applies your move and returns the engine's top three candidates plus a Chesster quip; engine_response plays whichever candidate Claude picks. The board renders in the conversation as a fenced code block.

Difficulty

Level Search depth Behavior
casual 2 ply Occasionally picks an off-best move for variety
club 3 ply Default — solid, beatable
shark 4 ply + quiescence Sees tactics; will hurt you

Dependencies

  • python-chess — board state, move legality, PGN export
  • mcp — Claude Code plugin server
  • Rich — only for the standalone terminal CLI

License

MIT

About

Chess in your terminal. Play against Chesster while your coding agent thinks.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages