{
  "schemaVersion": "1.0",
  "item": {
    "slug": "pokemon-red",
    "name": "Pokemon Red",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/drbarq/pokemon-red",
    "canonicalUrl": "https://clawhub.ai/drbarq/pokemon-red",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/pokemon-red",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pokemon-red",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/game_instructions.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/pokemon-red"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/pokemon-red",
    "agentPageUrl": "https://openagent3.xyz/skills/pokemon-red/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pokemon-red/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pokemon-red/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Pokemon Red — You Are the Trainer",
        "body": "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."
      },
      {
        "title": "Setup (first time)",
        "body": "Clone the repo and install dependencies:\n\ngit clone https://github.com/drbarq/Pokemon-OpenClaw.git\ncd Pokemon-OpenClaw\npip install pyboy pillow numpy fastapi uvicorn requests\n# Place your legally obtained ROM at ./PokemonRed.gb\n\nSet POKEMON_DIR to wherever you cloned the repo (default: ~/Code/pokemon-openclaw)."
      },
      {
        "title": "Start a Session",
        "body": "# Start emulator server (background process)\ncd $POKEMON_DIR && python scripts/emulator_server.py --save ready --port 3456"
      },
      {
        "title": "Turn Loop",
        "body": "Every turn, do these in order:"
      },
      {
        "title": "1. Get state + screenshot",
        "body": "curl -s http://localhost:3456/api/state\ncurl -s http://localhost:3456/api/screenshot -o /tmp/pokemon_current.png\n\nThen use the image tool to look at the screenshot. Always look before acting."
      },
      {
        "title": "2. Decide: Navigate or Manual?",
        "body": "Use navigate for travel — it BLOCKS until you arrive, hit a battle, or get stuck:\n\ncurl -s -X POST http://localhost:3456/api/navigate \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"destination\": \"Viridian City\"}'\n\nNavigate returns one of:\n\n\"status\": \"arrived\" — you're there! Continue quest.\n\"status\": \"battle\" — wild encounter interrupted. Fight it, then navigate again.\n\"status\": \"stuck\" — couldn't reach destination. Try manual buttons or different route.\n\"status\": \"error\" — unknown destination or no path. Check destinations list.\n\nThe response always includes full game state, so you know exactly where you are.\n\nImportant: Navigate blocks — set a long timeout (60-120s) on the curl call.\n\nCheck available destinations first:\n\ncurl -s http://localhost:3456/api/destinations\n\nCheck which maps have pathfinding data:\n\ncurl -s http://localhost:3456/api/maps\n\nFall back to manual buttons only when:\n\nNavigate returns \"stuck\" or \"error\"\nYou're inside a building doing specific interactions\nYou're in dialogue or a menu"
      },
      {
        "title": "3. Manual controls (when needed)",
        "body": "# Move / interact\ncurl -s -X POST http://localhost:3456/api/press \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"buttons\": [\"up\",\"up\",\"a\"], \"reasoning\": \"Walking to door\"}'\n\nValid buttons: up, down, left, right, a, b, start, select. Send 1-5 per turn."
      },
      {
        "title": "4. Battle (when in_battle is true in state)",
        "body": "Fight: Press a to open fight menu, a again for FIGHT, navigate to move, a to confirm, then mash a through animations\nRun: Press a, then down, right, a to select RUN, mash a through text\nCheck state after — if still in_battle, go again"
      },
      {
        "title": "5. Quest tracking",
        "body": "curl -s http://localhost:3456/api/quest                    # Current objective\ncurl -s -X POST http://localhost:3456/api/quest/complete \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"lesson\": \"Door is at x=12\"}'                      # Advance step + save lesson"
      },
      {
        "title": "6. Save frequently",
        "body": "curl -s -X POST http://localhost:3456/api/command \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"command\": \"save\", \"name\": \"checkpoint_viridian\"}'"
      },
      {
        "title": "Key Endpoints",
        "body": "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"
      },
      {
        "title": "Strategy Priority",
        "body": "Navigate first. For any travel, use /api/navigate. It blocks until arrival or battle — no polling needed.\nHandle battles immediately. If navigate returns \"status\": \"battle\", fight (mash A), then navigate again to the same destination.\nCheck quest. Always know your current objective. Don't wander.\nHP management. Below 30% → consider healing. Below 15% → definitely heal. Navigate to nearest pokecenter.\nIgnore text_active. The text detection flag is broken (always true). Don't spam B to dismiss phantom text.\nSave often. Every 10 turns or after any milestone."
      },
      {
        "title": "Session Pattern",
        "body": "A sub-agent session should:\n\nStart emulator server (if not already running)\nCheck quest status and destinations\nPlay 20-50 turns (navigate + manual as needed)\nSave state before exiting\nReport progress (location, level, quest step, any highlights)\n\nKeep notes in /tmp/pokemon_notepad.txt for continuity within a session."
      },
      {
        "title": "For Full Game Strategy",
        "body": "See references/game_instructions.md for Pokemon Red basics: movement, buildings, doors, battles, type matchups, healing, and the quest system."
      }
    ],
    "body": "Pokemon Red — You Are the Trainer\n\nYou 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.\n\nSetup (first time)\n\nClone the repo and install dependencies:\n\ngit clone https://github.com/drbarq/Pokemon-OpenClaw.git\ncd Pokemon-OpenClaw\npip install pyboy pillow numpy fastapi uvicorn requests\n# Place your legally obtained ROM at ./PokemonRed.gb\n\n\nSet POKEMON_DIR to wherever you cloned the repo (default: ~/Code/pokemon-openclaw).\n\nStart a Session\n# Start emulator server (background process)\ncd $POKEMON_DIR && python scripts/emulator_server.py --save ready --port 3456\n\nTurn Loop\n\nEvery turn, do these in order:\n\n1. Get state + screenshot\ncurl -s http://localhost:3456/api/state\ncurl -s http://localhost:3456/api/screenshot -o /tmp/pokemon_current.png\n\n\nThen use the image tool to look at the screenshot. Always look before acting.\n\n2. Decide: Navigate or Manual?\n\nUse navigate for travel — it BLOCKS until you arrive, hit a battle, or get stuck:\n\ncurl -s -X POST http://localhost:3456/api/navigate \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"destination\": \"Viridian City\"}'\n\n\nNavigate returns one of:\n\n\"status\": \"arrived\" — you're there! Continue quest.\n\"status\": \"battle\" — wild encounter interrupted. Fight it, then navigate again.\n\"status\": \"stuck\" — couldn't reach destination. Try manual buttons or different route.\n\"status\": \"error\" — unknown destination or no path. Check destinations list.\n\nThe response always includes full game state, so you know exactly where you are.\n\nImportant: Navigate blocks — set a long timeout (60-120s) on the curl call.\n\nCheck available destinations first:\n\ncurl -s http://localhost:3456/api/destinations\n\n\nCheck which maps have pathfinding data:\n\ncurl -s http://localhost:3456/api/maps\n\n\nFall back to manual buttons only when:\n\nNavigate returns \"stuck\" or \"error\"\nYou're inside a building doing specific interactions\nYou're in dialogue or a menu\n3. Manual controls (when needed)\n# Move / interact\ncurl -s -X POST http://localhost:3456/api/press \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"buttons\": [\"up\",\"up\",\"a\"], \"reasoning\": \"Walking to door\"}'\n\n\nValid buttons: up, down, left, right, a, b, start, select. Send 1-5 per turn.\n\n4. Battle (when in_battle is true in state)\nFight: Press a to open fight menu, a again for FIGHT, navigate to move, a to confirm, then mash a through animations\nRun: Press a, then down, right, a to select RUN, mash a through text\nCheck state after — if still in_battle, go again\n5. Quest tracking\ncurl -s http://localhost:3456/api/quest                    # Current objective\ncurl -s -X POST http://localhost:3456/api/quest/complete \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"lesson\": \"Door is at x=12\"}'                      # Advance step + save lesson\n\n6. Save frequently\ncurl -s -X POST http://localhost:3456/api/command \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"command\": \"save\", \"name\": \"checkpoint_viridian\"}'\n\nKey Endpoints\nEndpoint\tMethod\tPurpose\n/api/state\tGET\tGame state from RAM (position, party, badges, battle)\n/api/screenshot\tGET\tPNG screenshot of game screen\n/api/navigate\tPOST\tPathfind to named destination\n/api/destinations\tGET\tList all navigation destinations\n/api/maps\tGET\tWhich maps have pathfinding data\n/api/press\tPOST\tSend button presses\n/api/quest\tGET\tCurrent quest and step\n/api/quest/complete\tPOST\tMark step done, optionally save a lesson\n/api/knowledge\tGET\tAll lessons learned\n/api/knowledge/lesson\tPOST\tAdd a new lesson\n/api/command\tPOST\tSave/load/speed commands\nStrategy Priority\nNavigate first. For any travel, use /api/navigate. It blocks until arrival or battle — no polling needed.\nHandle battles immediately. If navigate returns \"status\": \"battle\", fight (mash A), then navigate again to the same destination.\nCheck quest. Always know your current objective. Don't wander.\nHP management. Below 30% → consider healing. Below 15% → definitely heal. Navigate to nearest pokecenter.\nIgnore text_active. The text detection flag is broken (always true). Don't spam B to dismiss phantom text.\nSave often. Every 10 turns or after any milestone.\nSession Pattern\n\nA sub-agent session should:\n\nStart emulator server (if not already running)\nCheck quest status and destinations\nPlay 20-50 turns (navigate + manual as needed)\nSave state before exiting\nReport progress (location, level, quest step, any highlights)\n\nKeep notes in /tmp/pokemon_notepad.txt for continuity within a session.\n\nFor Full Game Strategy\n\nSee references/game_instructions.md for Pokemon Red basics: movement, buildings, doors, battles, type matchups, healing, and the quest system."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/drbarq/pokemon-red",
    "publisherUrl": "https://clawhub.ai/drbarq/pokemon-red",
    "owner": "drbarq",
    "version": "1.2.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/pokemon-red",
    "downloadUrl": "https://openagent3.xyz/downloads/pokemon-red",
    "agentUrl": "https://openagent3.xyz/skills/pokemon-red/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pokemon-red/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pokemon-red/agent.md"
  }
}