Pokemon Red

Play Pokemon Red autonomously via PyBoy emulator. The OpenClaw agent IS the player — starts the emulator server, sees screenshots, reads game state from RAM, and makes decisions via HTTP API. Use when an agent wants to play Pokemon Red, battle, explore, grind levels, or compete with other agents. Requires Python 3.10+, pyboy, and a legally obtained Pokemon Red ROM.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
3 · 2k · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The name/description align with the instructions: this is an AI player for Pokemon Red using PyBoy. However the SKILL.md expects git, Python 3.10+, pip, and a locally stored ROM even though the registry metadata lists no required binaries or env vars. Asking the user to clone and run an external repo is consistent with the stated purpose but is not reflected in the declared requirements.
!
Instruction Scope
Runtime instructions tell the agent/operator to git clone https://github.com/drbarq/Pokemon-OpenClaw.git, pip install packages, and run scripts/emulator_server.py which starts a local HTTP server. That means the agent or user will execute arbitrary third-party code and open a localhost API (port 3456). While these steps are coherent with the skill's goal, they expand the attack surface (unreviewed remote code, local server endpoints, file writes to /tmp, and reliance on a legally-obtained ROM). The SKILL.md does not include safeguards or explicit checks that the server binds only to localhost or that the repository is trusted.
!
Install Mechanism
The skill bundle contains no install spec, but the instructions require cloning an external GitHub repo and running pip install. GitHub and PyPI are common sources, but the repo owner is unknown and the code is not included in the registry for review. This is a higher-risk install pattern because it relies on fetching and executing code from an external source at runtime.
Credentials
The registry declares no required environment variables or credentials, which is reasonable. SKILL.md asks the user to set POKEMON_DIR and to place a ROM file in the repo directory; those are local configuration needs and not sensitive credentials. There are no requests for unrelated secrets. Minor mismatch: POKEMON_DIR is used but not listed in the registry's requires.env.
Persistence & Privilege
always is false and the skill is user-invocable (normal). The skill runs a local server and asks the agent to persist a notepad in /tmp, but it does not request permanent system-wide privileges or modify other skills. Be aware that autonomous model invocation (default enabled) combined with the ability to start processes could let the agent run the external emulator server without additional operator action.
What to consider before installing
This skill appears to do what it says (run PyBoy and expose a localhost API), but it requires you to clone and run third-party code that is not bundled with the registry entry. Before installing or running: 1) Inspect the GitHub repo (scripts/emulator_server.py and any other scripts) to verify there is no unexpected network binding, telephony, or telemetry; 2) Run it in a sandbox/VM/container rather than on a sensitive host; 3) Ensure the emulator binds only to localhost (not 0.0.0.0) and the port is not exposed externally; 4) Do not provide any secrets or cloud credentials to this skill; 5) Verify the ROM is legally owned and kept local; 6) If you cannot review the external code, consider asking the author to include the code in the registry package for auditing. These precautions will reduce the risk of executing untrusted code that the registry metadata does not fully represent.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.2.0
Download zip
latestvk97774mv4zbad0g1yhhbb8p81980b0gn

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

Pokemon Red — You Are the Trainer

You play Pokemon Red directly. No middleman script. You start the emulator server, hit its HTTP API for screenshots and state, look at the screen, decide what to do, and send commands back.

Setup (first time)

Clone the repo and install dependencies:

git clone https://github.com/drbarq/Pokemon-OpenClaw.git
cd Pokemon-OpenClaw
pip install pyboy pillow numpy fastapi uvicorn requests
# Place your legally obtained ROM at ./PokemonRed.gb

Set POKEMON_DIR to wherever you cloned the repo (default: ~/Code/pokemon-openclaw).

Start a Session

# Start emulator server (background process)
cd $POKEMON_DIR && python scripts/emulator_server.py --save ready --port 3456

Turn Loop

Every turn, do these in order:

1. Get state + screenshot

curl -s http://localhost:3456/api/state
curl -s http://localhost:3456/api/screenshot -o /tmp/pokemon_current.png

Then use the image tool to look at the screenshot. Always look before acting.

2. Decide: Navigate or Manual?

Use navigate for travel — it BLOCKS until you arrive, hit a battle, or get stuck:

curl -s -X POST http://localhost:3456/api/navigate \
  -H 'Content-Type: application/json' \
  -d '{"destination": "Viridian City"}'

Navigate returns one of:

  • "status": "arrived" — you're there! Continue quest.
  • "status": "battle" — wild encounter interrupted. Fight it, then navigate again.
  • "status": "stuck" — couldn't reach destination. Try manual buttons or different route.
  • "status": "error" — unknown destination or no path. Check destinations list.

The response always includes full game state, so you know exactly where you are.

Important: Navigate blocks — set a long timeout (60-120s) on the curl call.

Check available destinations first:

curl -s http://localhost:3456/api/destinations

Check which maps have pathfinding data:

curl -s http://localhost:3456/api/maps

Fall back to manual buttons only when:

  • Navigate returns "stuck" or "error"
  • You're inside a building doing specific interactions
  • You're in dialogue or a menu

3. Manual controls (when needed)

# Move / interact
curl -s -X POST http://localhost:3456/api/press \
  -H 'Content-Type: application/json' \
  -d '{"buttons": ["up","up","a"], "reasoning": "Walking to door"}'

Valid buttons: up, down, left, right, a, b, start, select. Send 1-5 per turn.

4. Battle (when in_battle is true in state)

  • Fight: Press a to open fight menu, a again for FIGHT, navigate to move, a to confirm, then mash a through animations
  • Run: Press a, then down, right, a to select RUN, mash a through text
  • Check state after — if still in_battle, go again

5. Quest tracking

curl -s http://localhost:3456/api/quest                    # Current objective
curl -s -X POST http://localhost:3456/api/quest/complete \
  -H 'Content-Type: application/json' \
  -d '{"lesson": "Door is at x=12"}'                      # Advance step + save lesson

6. Save frequently

curl -s -X POST http://localhost:3456/api/command \
  -H 'Content-Type: application/json' \
  -d '{"command": "save", "name": "checkpoint_viridian"}'

Key Endpoints

EndpointMethodPurpose
/api/stateGETGame state from RAM (position, party, badges, battle)
/api/screenshotGETPNG screenshot of game screen
/api/navigatePOSTPathfind to named destination
/api/destinationsGETList all navigation destinations
/api/mapsGETWhich maps have pathfinding data
/api/pressPOSTSend button presses
/api/questGETCurrent quest and step
/api/quest/completePOSTMark step done, optionally save a lesson
/api/knowledgeGETAll lessons learned
/api/knowledge/lessonPOSTAdd a new lesson
/api/commandPOSTSave/load/speed commands

Strategy Priority

  1. Navigate first. For any travel, use /api/navigate. It blocks until arrival or battle — no polling needed.
  2. Handle battles immediately. If navigate returns "status": "battle", fight (mash A), then navigate again to the same destination.
  3. Check quest. Always know your current objective. Don't wander.
  4. HP management. Below 30% → consider healing. Below 15% → definitely heal. Navigate to nearest pokecenter.
  5. Ignore text_active. The text detection flag is broken (always true). Don't spam B to dismiss phantom text.
  6. Save often. Every 10 turns or after any milestone.

Session Pattern

A sub-agent session should:

  1. Start emulator server (if not already running)
  2. Check quest status and destinations
  3. Play 20-50 turns (navigate + manual as needed)
  4. Save state before exiting
  5. Report progress (location, level, quest step, any highlights)

Keep notes in /tmp/pokemon_notepad.txt for continuity within a session.

For Full Game Strategy

See references/game_instructions.md for Pokemon Red basics: movement, buildings, doors, battles, type matchups, healing, and the quest system.

Files

2 total
Select a file
Select a file to preview.

Comments

Loading comments…