Awesome-omni-skill claude-player
An AI-powered Game Boy emulator agent that uses Claude's vision and reasoning to autonomously play Game Boy games.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-ai/claude-player" ~/.claude/skills/diegosouzapw-awesome-omni-skill-claude-player && rm -rf "$T"
manifest:
skills/data-ai/claude-player/SKILL.mdsource content
ClaudePlayer
An AI agent that plays Game Boy games autonomously using Claude's vision capabilities and the PyBoy emulator.
Overview
ClaudePlayer connects Claude to a Game Boy emulator. Each turn, Claude receives a screenshot of the current game frame, reasons about what to do, and sends button inputs back to the emulator. It maintains a structured memory system to track game progress (items, NPCs, locations, quests, stats).
Prerequisites
- Python 3.10+
- Pipenv
- An Anthropic API key
- A Game Boy ROM file (
).gb
Setup
# Install dependencies pipenv install # Create .env with your API key echo "ANTHROPIC_API_KEY=your_key_here" > .env # Place a Game Boy ROM in the project directory
Configuration
Edit
config.json:
| Key | Description | Default |
|---|---|---|
| Path to Game Boy ROM | Required |
| Saved emulator state file | |
| or | |
| Claude model to use | |
| Enable extended thinking | |
| Requests per minute limit | Configured in file |
| Tokens per minute limit | Configured in file |
| Optional Redis logging config | |
Running
pipenv shell # Default config python play.py # Custom config python play.py --config my_config.json # Create a saved emulator state python emu_setup.py
Project Structure
| Path | Purpose |
|---|---|
| Launcher script |
| CLI entry point with arg parsing |
| Main orchestrator: emulator init, game loop, coordination |
| Claude API communication and rate limiting |
| Game state tracking (memory, goals, history) |
| Tool definitions (send_inputs, memory ops, etc.) |
| Tool registry system |
| Config file parsing |
| Configuration data class |
| Button input parsing, screenshot capture |
| Game memory/stats reader |
| Periodic game progress summarization |
| Runtime configuration |
Available Tools (for the agent during gameplay)
| Tool | Description |
|---|---|
| Send button sequences to the emulator |
| Identify the current game |
| Update the gameplay objective |
| Store items, NPCs, locations, quests, mechanics, stats |
| Remove a memory entry |
| Update an existing memory entry |
| Toggle extended thinking mode on/off |
How It Works
- PyBoy emulator loads the ROM and renders a frame
- The frame is captured as a screenshot and sent to Claude
- Claude analyzes the screen, reasons about the game state, and calls tools
presses buttons on the emulator (A, B, Up, Down, Left, Right, Start, Select)send_inputs- In turn-based mode, the emulator only advances when the agent acts
- The agent maintains structured memory to track long-term game progress
- Periodic summaries compress the conversation history to stay within context limits