Agent skill · marketing growth · nousresearch

pokemon-player

Play Pokemon via headless emulator + RAM reads.

Why this skill is useful

Adds specific commands and workflows for headless emulation of Pokemon games that the AI wouldn't reliably generate on its own.

What it needs

Requires python, uv installed locally. About 6k tokens when loaded. Last updated 2026-08-07. 226,679 stars on the source repository.

What this skill does

Pokemon Player Play Pokemon games via headless emulation using the pokemon-agent package. When to Use User says "play pokemon", "start pokemon", "pokemon game" User asks about Pokemon Red, Blue, Yellow, FireRed, etc. User wants to watch an AI play Pokemon User references a ROM file (.gb, .gbc, .gba) Startup Procedure 1. First-time setup (clone, venv, install) The repo is NousResearch/pokemon-agent on GitHub. Clone it, then set up a Python 3.10+ virtual environment. Use uv (preferred for speed) to create the venv and install the package in editable mode with the pyboy extra. If uv is not available, fall back to python -m venv + pip. If a checkout already exists (e.g. ~/pokemon-agent with a venv ready), just cd there and source .venv/bin/activate instead of recloning. You also need a ROM file. Ask the user for theirs (a previous setup may already have one at roms/pokemonred.gb inside the checkout). NEVER download or provide ROM files — always ask the user. 2. Start the game server From inside the pokemon-agent directory with the venv activated, run pokemon-agent serve with --rom pointing to the ROM and --port 9876. Run it in the background with &. To resume from a saved game, add --load-state with the save name. Wait 4 seconds for startup, then verify with GET /health. 3. Set up live dashboard for user to watch Use an SSH reverse tunnel via localhost.run so the user can view the dashboard in their browser. Connect with ssh, forwarding local port 9876 to remote port 80 on the keyless localhost.run endpoint (ssh -R 80:localhost:9876 ssh://nokey@localhost.run). Redirect output to a log file, wait 10 seconds, then grep the log for the .lhr.life URL. Give the user the URL with /dashboard/ appended. The tunnel URL changes each time — give the user the new one if restarted. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills nousresearch/pokemon-player

View the source on GitHub

Browse the @skills marketplace