NYC
skills/letta-ai/skills/chess-best-move

chess-best-move

SKILL.md

Chess Best Move

Overview

This skill provides a systematic approach to analyzing chess board images and determining the best move(s). It emphasizes proper image analysis techniques, avoiding common pitfalls like pattern-matching to known puzzles instead of actual position analysis.

Core Workflow

Step 1: Understand Task Requirements

Before starting analysis:

  1. Read the task requirements completely to identify:

    • Expected output format (e.g., space-separated vs newline-separated moves)
    • Whether multiple winning moves are possible
    • Move notation expected (e.g., g2g4 vs Ng4 vs g4)
    • Any constraints on the solution
  2. Note if the task mentions:

    • "multiple winning moves" - prepare to output all valid solutions
    • Specific move notation format - match exactly
    • Time constraints (mate-in-N) - verify move count

Step 2: Image Analysis (Critical Phase)

Primary Approach: Systematic Detection

Do NOT attempt to match the image against known puzzles. Instead:

  1. Detect the board grid first

    • Identify the 8x8 grid boundaries
    • Determine board orientation (which corner is a1)
    • Save debug images showing detected grid lines for verification
  2. Detect piece positions systematically

    • Analyze each of the 64 squares individually
    • For each occupied square, determine:
      • Color (white/black)
      • Piece type (King, Queen, Rook, Bishop, Knight, Pawn)
    • Record findings in algebraic notation (e.g., "White King on e1")
  3. Validate detection results

    • Total pieces must be ≤32 (if detecting more, detection is flawed)
    • Each side must have exactly 1 King
    • Each side can have at most 8 pawns, 2 rooks, 2 bishops, 2 knights, 1 queen (plus promotions)
    • If validation fails, refine detection approach before proceeding

Step 3: Position Verification

Before calculating moves:

  1. Construct FEN notation from detected pieces

    • Build the position string square by square
    • Include castling rights if determinable
    • Include en passant square if relevant
  2. Verify FEN validity

    • Use a chess library (python-chess) to validate the position
    • Check that the position is legal (no impossible configurations)
    • If FEN is invalid, revisit detection step
  3. Create visual verification

    • Generate a board diagram from the constructed FEN
    • Compare visually with the original image
    • If they don't match, iterate on detection

Step 4: Move Calculation

With a verified position:

  1. Use a chess engine or library

    • python-chess can enumerate legal moves and check for checkmate
    • For "best move" tasks, consider using Stockfish for evaluation
    • For "mate-in-N" tasks, enumerate all moves that lead to checkmate
  2. Find all winning moves if required

    • If task mentions multiple solutions, find ALL valid moves
    • Verify each candidate move achieves the stated goal
  3. Validate moves before output

    • Confirm each move is legal in the position
    • Confirm each move achieves the objective (checkmate, etc.)

Step 5: Output Formatting

Match the expected output format exactly:

  1. Check the task for format specifications

  2. Common formats:

    • Space-separated: g2g4 e2e4
    • Newline-separated: each move on its own line
    • Standard algebraic: Nf3, exd5
    • Long algebraic: e2e4, g1f3
  3. If multiple moves are valid, include all of them in the specified format

Common Pitfalls to Avoid

1. Pattern Matching to Known Puzzles

Wrong approach: Detect a few pieces, then try to match against "famous puzzles" database.

Why it fails: Most positions are unique. Even if a few pieces match a known puzzle, the full position likely differs.

Correct approach: Always analyze the actual image without preconceptions.

2. Ignoring Detection Failures

Wrong approach: When detection shows impossible results (e.g., 40+ pieces), proceed anyway with partial data.

Why it fails: Garbage in, garbage out. Flawed detection leads to wrong moves.

Correct approach: If detection produces impossible results, redesign the detection algorithm. Do not proceed until detection is validated.

3. Confirmation Bias

Wrong approach: Find evidence supporting a preconceived notion while ignoring contradicting evidence.

Example: Detecting pieces on h5 and f7, immediately concluding "Legal's Mate" without checking other squares.

Correct approach: Consider ALL detected pieces. The solution must account for the entire position.

4. Circular Verification

Wrong approach:

  1. Assume image shows Position X
  2. Test move M on Position X
  3. Confirm M works on Position X
  4. Conclude M is correct

Why it fails: This proves nothing about the actual image content.

Correct approach: Verify against the position derived from image analysis, not assumed positions.

5. Missing Output Requirements

Wrong approach: Output a single move when task requires multiple moves.

Correct approach: Re-read task requirements before finalizing output. Check for phrases like "all winning moves" or "multiple solutions."

6. Skipping Piece Type Detection

Wrong approach: Only detect which squares are occupied, not what pieces are on them.

Why it fails: Cannot calculate valid moves without knowing piece types. A pawn move requires knowing it's a pawn.

Correct approach: Detection must identify both color AND piece type for each occupied square.

Verification Checklist

Before submitting a solution, verify:

  • Detection produced valid piece counts (≤32 total, 1 King per side)
  • FEN was constructed from detection (not assumed)
  • Position was validated as legal
  • Visual comparison confirms detection matches image
  • All candidate moves were tested on the detected position
  • Move(s) achieve the stated objective (checkmate, etc.)
  • Output format matches task requirements exactly
  • If multiple moves possible, all are included

Technical Implementation Notes

Recommended Libraries

  • Image processing: OpenCV, PIL/Pillow
  • Chess logic: python-chess (handles FEN, move validation, checkmate detection)
  • Engine analysis: Stockfish (via python-chess UCI interface)

Detection Strategy

  1. Use color thresholding to separate light/dark squares
  2. Use contour detection to find piece shapes
  3. Consider template matching against known piece images
  4. Always generate debug visualizations to verify accuracy

Debugging Approach

When detection fails:

  1. Save intermediate images showing:
    • Detected grid lines
    • Identified square boundaries
    • Detected piece locations with labels
  2. Test detection algorithm on known positions first
  3. Iteratively refine based on visual inspection of debug output
Weekly Installs
23
Repository
letta-ai/skills
First Seen
Jan 24, 2026
Installed on
gemini-cli16
codex15
opencode15
claude-code15
antigravity14
github-copilot12