{
  "schemaVersion": "1.0",
  "item": {
    "slug": "openclaw-godot-skill",
    "name": "Godot Skill",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/TomLeeLive/openclaw-godot-skill",
    "canonicalUrl": "https://clawhub.ai/TomLeeLive/openclaw-godot-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/openclaw-godot-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openclaw-godot-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "scripts/install-extension.sh",
      "extension/index.ts",
      "extension/openclaw.plugin.json",
      "extension/package.json"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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/openclaw-godot-skill"
    },
    "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/openclaw-godot-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/openclaw-godot-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openclaw-godot-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openclaw-godot-skill/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Godot Plugin Skill",
        "body": "Control Godot 4.x Editor through 30 built-in tools. Supports 80+ node types."
      },
      {
        "title": "First-Time Setup",
        "body": "If godot_execute tool is not available, install the gateway extension:\n\n# From skill directory\n./scripts/install-extension.sh\n\n# Restart gateway\nopenclaw gateway restart\n\nThe extension files are in extension/ directory."
      },
      {
        "title": "Core Tools",
        "body": "CategoryKey ToolsScenescene.create, scene.getCurrent, scene.open, scene.saveNodenode.find, node.create, node.delete, node.getDataTransformtransform.setPosition, transform.setRotation, transform.setScaleDebugdebug.tree, debug.screenshot, console.getLogsInputinput.keyPress, input.mouseClick, input.actionPressEditoreditor.play, editor.stop, editor.getState"
      },
      {
        "title": "1. Scene Creation",
        "body": "Use godot_execute tool:\n\ngodot_execute(tool=\"scene.create\", parameters={rootType: \"Node2D\", name: \"Level1\"})\ngodot_execute(tool=\"node.create\", parameters={type: \"CharacterBody2D\", name: \"Player\"})\ngodot_execute(tool=\"scene.save\")"
      },
      {
        "title": "2. Find & Modify Nodes",
        "body": "godot_execute(tool=\"node.find\", parameters={name: \"Player\"})\ngodot_execute(tool=\"node.getData\", parameters={path: \"Player\"})\ngodot_execute(tool=\"transform.setPosition\", parameters={path: \"Player\", x: 100, y: 200})"
      },
      {
        "title": "3. Game Testing with Input",
        "body": "godot_execute(tool=\"editor.play\")\ngodot_execute(tool=\"input.keyPress\", parameters={key: \"W\"})\ngodot_execute(tool=\"input.actionPress\", parameters={action: \"jump\"})\ngodot_execute(tool=\"debug.screenshot\")\ngodot_execute(tool=\"editor.stop\")"
      },
      {
        "title": "4. Check Logs",
        "body": "godot_execute(tool=\"console.getLogs\", parameters={limit: 50})\ngodot_execute(tool=\"console.getLogs\", parameters={type: \"error\", limit: 20})"
      },
      {
        "title": "Console (2 tools)",
        "body": "console.getLogs - Get logs from Godot log file {limit: 100, type: \"error\"|\"warning\"|\"\"}\nconsole.clear - Placeholder (logs can't be cleared programmatically)"
      },
      {
        "title": "Scene (5 tools)",
        "body": "scene.getCurrent - Get current scene info\nscene.list - List all .tscn/.scn files\nscene.open - Open scene by path\nscene.save - Save current scene\nscene.create - Create new scene {rootType: \"Node2D\"|\"Node3D\"|\"Control\", name: \"SceneName\"}"
      },
      {
        "title": "Node (6 tools)",
        "body": "node.find - Find by name, type, or group\nnode.create - Create node (80+ types: CSGBox3D, MeshInstance3D, ColorRect, etc.)\nnode.delete - Delete node by path\nnode.getData - Get node info, children, transform\nnode.getProperty - Get property value\nnode.setProperty - Set property value (Vector2/3 auto-converted)"
      },
      {
        "title": "Transform (3 tools)",
        "body": "transform.setPosition - Set position {x, y} or {x, y, z}\ntransform.setRotation - Set rotation (degrees)\ntransform.setScale - Set scale"
      },
      {
        "title": "Editor (4 tools)",
        "body": "editor.play - Play current or custom scene\neditor.stop - Stop playing\neditor.pause - Toggle pause\neditor.getState - Get playing state, version, project name"
      },
      {
        "title": "Debug (3 tools)",
        "body": "debug.screenshot - Capture viewport\ndebug.tree - Get scene tree as text\ndebug.log - Print message"
      },
      {
        "title": "Input (7 tools) - For Game Testing",
        "body": "input.keyPress - Press and release key {key: \"W\"}\ninput.keyDown - Hold key down\ninput.keyUp - Release key\ninput.mouseClick - Click at position {x, y, button: \"left\"|\"right\"|\"middle\"}\ninput.mouseMove - Move mouse to position {x, y}\ninput.actionPress - Press input action {action: \"jump\"}\ninput.actionRelease - Release input action"
      },
      {
        "title": "Script (2 tools)",
        "body": "script.list - List .gd files\nscript.read - Read script content"
      },
      {
        "title": "Resource (1 tool)",
        "body": "resource.list - List files by extension"
      },
      {
        "title": "Supported Keys for Input",
        "body": "A-Z, 0-9, SPACE, ENTER, ESCAPE, TAB, BACKSPACE, DELETE\nUP, DOWN, LEFT, RIGHT\nSHIFT, CTRL, ALT\nF1-F12"
      },
      {
        "title": "Node Types for Creation",
        "body": "TypeDescriptionNode2D2D spatialNode3D3D spatialSprite2D2D spriteCharacterBody2D2D characterCharacterBody3D3D characterRigidBody2D/3DPhysics bodyArea2D/3DTrigger areaCamera2D/3DCameraLabel, ButtonUI elements"
      },
      {
        "title": "Input Simulation",
        "body": "Only works during Play mode\nUse input.actionPress for mapped actions (from Input Map)\nUse input.keyPress for direct key simulation"
      },
      {
        "title": "Finding Nodes",
        "body": "node.find {name: \"Player\"}      # By name substring\nnode.find {type: \"Sprite2D\"}    # By exact type\nnode.find {group: \"enemies\"}    # By group"
      },
      {
        "title": "Vector Properties",
        "body": "node.setProperty auto-converts dictionaries to Vector2/Vector3:\n\n{path: \"Cam\", property: \"zoom\", value: {x: 2, y: 2}}  # → Vector2(2, 2)"
      },
      {
        "title": "Console Logs",
        "body": "console.getLogs {limit: 50}           # Last 50 lines\nconsole.getLogs {type: \"error\"}       # Errors only\nconsole.getLogs {type: \"warning\"}     # Warnings only"
      },
      {
        "title": "🔐 Security: Model Invocation Setting",
        "body": "When publishing to ClawHub, you can configure disableModelInvocation:\n\nSettingAI Auto-InvokeUser Explicit Requestfalse (default)✅ Allowed✅ Allowedtrue❌ Blocked✅ Allowed"
      },
      {
        "title": "Recommendation: true",
        "body": "Reason: During Godot development, it's useful for AI to autonomously perform supporting tasks like checking scene tree, taking screenshots, and inspecting nodes.\n\nWhen to use true: For sensitive tools (payments, deletions, message sending, etc.)"
      }
    ],
    "body": "Godot Plugin Skill\n\nControl Godot 4.x Editor through 30 built-in tools. Supports 80+ node types.\n\nFirst-Time Setup\n\nIf godot_execute tool is not available, install the gateway extension:\n\n# From skill directory\n./scripts/install-extension.sh\n\n# Restart gateway\nopenclaw gateway restart\n\n\nThe extension files are in extension/ directory.\n\nQuick Reference\nCore Tools\nCategory\tKey Tools\nScene\tscene.create, scene.getCurrent, scene.open, scene.save\nNode\tnode.find, node.create, node.delete, node.getData\nTransform\ttransform.setPosition, transform.setRotation, transform.setScale\nDebug\tdebug.tree, debug.screenshot, console.getLogs\nInput\tinput.keyPress, input.mouseClick, input.actionPress\nEditor\teditor.play, editor.stop, editor.getState\nCommon Workflows\n1. Scene Creation\n\nUse godot_execute tool:\n\ngodot_execute(tool=\"scene.create\", parameters={rootType: \"Node2D\", name: \"Level1\"})\ngodot_execute(tool=\"node.create\", parameters={type: \"CharacterBody2D\", name: \"Player\"})\ngodot_execute(tool=\"scene.save\")\n2. Find & Modify Nodes\ngodot_execute(tool=\"node.find\", parameters={name: \"Player\"})\ngodot_execute(tool=\"node.getData\", parameters={path: \"Player\"})\ngodot_execute(tool=\"transform.setPosition\", parameters={path: \"Player\", x: 100, y: 200})\n3. Game Testing with Input\ngodot_execute(tool=\"editor.play\")\ngodot_execute(tool=\"input.keyPress\", parameters={key: \"W\"})\ngodot_execute(tool=\"input.actionPress\", parameters={action: \"jump\"})\ngodot_execute(tool=\"debug.screenshot\")\ngodot_execute(tool=\"editor.stop\")\n4. Check Logs\ngodot_execute(tool=\"console.getLogs\", parameters={limit: 50})\ngodot_execute(tool=\"console.getLogs\", parameters={type: \"error\", limit: 20})\nTool Categories\nConsole (2 tools)\nconsole.getLogs - Get logs from Godot log file {limit: 100, type: \"error\"|\"warning\"|\"\"}\nconsole.clear - Placeholder (logs can't be cleared programmatically)\nScene (5 tools)\nscene.getCurrent - Get current scene info\nscene.list - List all .tscn/.scn files\nscene.open - Open scene by path\nscene.save - Save current scene\nscene.create - Create new scene {rootType: \"Node2D\"|\"Node3D\"|\"Control\", name: \"SceneName\"}\nNode (6 tools)\nnode.find - Find by name, type, or group\nnode.create - Create node (80+ types: CSGBox3D, MeshInstance3D, ColorRect, etc.)\nnode.delete - Delete node by path\nnode.getData - Get node info, children, transform\nnode.getProperty - Get property value\nnode.setProperty - Set property value (Vector2/3 auto-converted)\nTransform (3 tools)\ntransform.setPosition - Set position {x, y} or {x, y, z}\ntransform.setRotation - Set rotation (degrees)\ntransform.setScale - Set scale\nEditor (4 tools)\neditor.play - Play current or custom scene\neditor.stop - Stop playing\neditor.pause - Toggle pause\neditor.getState - Get playing state, version, project name\nDebug (3 tools)\ndebug.screenshot - Capture viewport\ndebug.tree - Get scene tree as text\ndebug.log - Print message\nInput (7 tools) - For Game Testing\ninput.keyPress - Press and release key {key: \"W\"}\ninput.keyDown - Hold key down\ninput.keyUp - Release key\ninput.mouseClick - Click at position {x, y, button: \"left\"|\"right\"|\"middle\"}\ninput.mouseMove - Move mouse to position {x, y}\ninput.actionPress - Press input action {action: \"jump\"}\ninput.actionRelease - Release input action\nScript (2 tools)\nscript.list - List .gd files\nscript.read - Read script content\nResource (1 tool)\nresource.list - List files by extension\nSupported Keys for Input\nA-Z, 0-9, SPACE, ENTER, ESCAPE, TAB, BACKSPACE, DELETE\nUP, DOWN, LEFT, RIGHT\nSHIFT, CTRL, ALT\nF1-F12\n\nNode Types for Creation\nType\tDescription\nNode2D\t2D spatial\nNode3D\t3D spatial\nSprite2D\t2D sprite\nCharacterBody2D\t2D character\nCharacterBody3D\t3D character\nRigidBody2D/3D\tPhysics body\nArea2D/3D\tTrigger area\nCamera2D/3D\tCamera\nLabel, Button\tUI elements\nTips\nInput Simulation\nOnly works during Play mode\nUse input.actionPress for mapped actions (from Input Map)\nUse input.keyPress for direct key simulation\nFinding Nodes\nnode.find {name: \"Player\"}      # By name substring\nnode.find {type: \"Sprite2D\"}    # By exact type\nnode.find {group: \"enemies\"}    # By group\n\nVector Properties\n\nnode.setProperty auto-converts dictionaries to Vector2/Vector3:\n\n{path: \"Cam\", property: \"zoom\", value: {x: 2, y: 2}}  # → Vector2(2, 2)\n\nConsole Logs\nconsole.getLogs {limit: 50}           # Last 50 lines\nconsole.getLogs {type: \"error\"}       # Errors only\nconsole.getLogs {type: \"warning\"}     # Warnings only\n\n🔐 Security: Model Invocation Setting\n\nWhen publishing to ClawHub, you can configure disableModelInvocation:\n\nSetting\tAI Auto-Invoke\tUser Explicit Request\nfalse (default)\t✅ Allowed\t✅ Allowed\ntrue\t❌ Blocked\t✅ Allowed\nRecommendation: true\n\nReason: During Godot development, it's useful for AI to autonomously perform supporting tasks like checking scene tree, taking screenshots, and inspecting nodes.\n\nWhen to use true: For sensitive tools (payments, deletions, message sending, etc.)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/TomLeeLive/openclaw-godot-skill",
    "publisherUrl": "https://clawhub.ai/TomLeeLive/openclaw-godot-skill",
    "owner": "TomLeeLive",
    "version": "1.2.7",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/openclaw-godot-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/openclaw-godot-skill",
    "agentUrl": "https://openagent3.xyz/skills/openclaw-godot-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openclaw-godot-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openclaw-godot-skill/agent.md"
  }
}