{
  "$schema": "../docs/agent-adapter.schema.json",
  "name": "godot-agent-loop",
  "displayName": "Godot Agent Loop",
  "version": "3.0.0",
  "description": "Build, playtest, and prove Godot games with an MCP automation loop.",
  "package": "@beremaran/godot-agent-loop",
  "mcp": {
    "command": ["npx", "-y", "@beremaran/godot-agent-loop@3.0.0"],
    "environment": {
      "GODOT_MCP_TOOL_SURFACE": "core",
      "GODOT_MCP_LEGACY_JSON_TEXT": "false"
    },
    "canonicalSurface": "core",
    "surfaceAliases": ["compact"],
    "catalogTool": "godot_catalog",
    "callTool": "godot_call",
    "compatibilityThrough": "1.x"
  },
  "skills": [
    {
      "name": "build-godot-game",
      "description": "Build a new playable Godot 4 game or substantial gameplay slice through Godot Agent Loop. Use to create a game, add a complete mechanic, or deliver playable controls, visible state, and success/failure behavior; do not use for diagnosis-only, verification-only, or release-only requests.",
      "interface": {
        "displayName": "Build Godot Game",
        "shortDescription": "Build a complete playable Godot game",
        "defaultPrompt": "Use $build-godot-game to build this playable Godot game and prove its ordinary, success, and failure states."
      },
      "toolContract": {
        "direct": [
          "godot_catalog", "godot_call",
          "editor_session", "editor_transaction",
          "run_project", "stop_project",
          "game_get_scene_tree", "game_get_ui", "game_get_node_info",
          "game_screenshot", "game_get_errors", "game_get_logs",
          "game_scenario", "game_wait_until", "verify_project", "run_project_tests"
        ],
        "hidden": ["analyze_project_integrity", "game_key_hold", "game_key_release"],
        "privilegedGroups": [],
        "effectScopes": ["read-only", "project-persistent", "runtime-ephemeral", "process", "external-open-world"]
      }
    },
    {
      "name": "debug-godot-game",
      "description": "Diagnose and repair a reproducible Godot 4 failure. Use for crashes, errors, broken scenes/resources, wrong runtime state, input/timing, rendering, audio, export, toolchain, flaky behavior, or regressions; do not use for greenfield builds, proof-only review, or release gating.",
      "interface": {
        "displayName": "Debug Godot Game",
        "shortDescription": "Reproduce and fix a Godot game failure",
        "defaultPrompt": "Use $debug-godot-game to reproduce this failure, isolate one cause, apply the smallest repair, and rerun the same evidence path."
      },
      "toolContract": {
        "direct": [
          "godot_catalog", "godot_call", "editor_session",
          "game_get_scene_tree", "game_get_ui", "game_get_node_info",
          "game_screenshot", "game_get_errors", "game_get_logs",
          "game_scenario", "game_wait_until", "verify_project", "run_project_tests"
        ],
        "hidden": ["game_get_property", "game_set_property", "game_call_method", "game_eval"],
        "privilegedGroups": ["reflection", "code-execution"],
        "effectScopes": ["read-only", "project-persistent", "runtime-ephemeral", "process", "external-open-world"]
      }
    },
    {
      "name": "ship-godot-game",
      "description": "Prepare and gate a reproducible Godot 4 release. Use for export readiness, test gates, .NET/C# checks, addon/import integrity, artifact inspection, smoke runs, signing or platform blockers, and release evidence; do not use for greenfield feature work or an isolated bug fix.",
      "interface": {
        "displayName": "Ship Godot Game",
        "shortDescription": "Gate and prepare a reproducible Godot release",
        "defaultPrompt": "Use $ship-godot-game to verify release readiness, inspect produced artifacts, and report passed, failed, blocked, manual, and unsupported gates."
      },
      "toolContract": {
        "direct": [
          "godot_catalog", "godot_call", "editor_session",
          "run_project_tests", "verify_project",
          "run_project", "stop_project",
          "game_scenario", "game_wait_until", "game_get_errors", "game_get_logs"
        ],
        "hidden": [
          "analyze_project_integrity", "verify_export_readiness",
          "manage_import_pipeline", "verify_dotnet_project", "manage_addon"
        ],
        "privilegedGroups": [],
        "effectScopes": ["read-only", "project-persistent", "runtime-ephemeral", "process", "external-open-world"]
      }
    },
    {
      "name": "verify-godot-change",
      "description": "Verify an existing Godot 4 change with static checks and independent runtime evidence. Use to prove saved scenes, scripts, resources, input, UI, rendering, timing, or gameplay without assuming permission to repair failures; do not use for implementation, diagnosis-and-fix, or release preparation.",
      "interface": {
        "displayName": "Verify Godot Change",
        "shortDescription": "Prove a Godot change with independent evidence",
        "defaultPrompt": "Use $verify-godot-change to turn this change into observable criteria and report what is passed, failed, subjective, or still unobserved."
      },
      "toolContract": {
        "direct": [
          "godot_catalog", "godot_call", "editor_session",
          "verify_project", "run_project_tests", "run_project", "stop_project",
          "game_get_scene_tree", "game_get_ui",
          "game_get_node_info", "game_screenshot", "game_get_errors",
          "game_scenario", "game_wait_until"
        ],
        "hidden": ["analyze_project_integrity", "game_get_property", "game_eval"],
        "privilegedGroups": ["reflection", "code-execution"],
        "effectScopes": ["read-only", "runtime-ephemeral", "process", "external-open-world"]
      }
    }
  ],
  "defaultPrompts": [
    "Build a small playable Godot game and prove both its win and lose states.",
    "Debug this Godot project from a reproducible failure and verify the fix independently.",
    "Verify an existing change or prepare a release, with clear passed, failed, blocked, and manual gates."
  ],
  "clients": {
    "claudeCode": { "manifest": ".claude-plugin/plugin.json" },
    "codex": { "manifest": ".codex-plugin/plugin.json" },
    "openCode": { "setupCommand": "godot-agent-loop setup opencode" },
    "pi": { "extension": "pi/extension.ts" }
  }
}
