Skip to main content

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

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sideboard-0.2.0.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sideboard-0.2.0-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file sideboard-0.2.0.tar.gz.

File metadata

  • Download URL: sideboard-0.2.0.tar.gz
  • Upload date:
  • Size: 25.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for sideboard-0.2.0.tar.gz
Algorithm Hash digest
SHA256 cb2681d4c7fe4addd2002a40bbac19b9954baa5fc4003c13e6dac5b8d0f8031a
MD5 3f392ffd57eb72eb268d9ec3afc6ab10
BLAKE2b-256 3393fee954a9f740d6cd04ba5ebbc74156e101161ea106ce4cf5cebdc0a0ab20

See more details on using hashes here.

File details

Details for the file sideboard-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: sideboard-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for sideboard-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07e67494340447d396ab5fb2386836e3176d9d84d201aa3ee37c81758e7a258c
MD5 7c17dc0e99d243eb194b83e654107a43
BLAKE2b-256 2e89717e3269ef2a9aa5827f96f357d59eb29b1bb3a7aa296d523a8bcb9ab084

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page