{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json",
  "title": "Oh My OpenCode Configuration",
  "description": "Configuration schema for oh-my-opencode plugin",
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "disabled_mcps": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "websearch_exa",
          "context7",
          "grep_app"
        ]
      }
    },
    "disabled_agents": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "oracle",
          "librarian",
          "explore",
          "frontend-ui-ux-engineer",
          "document-writer",
          "multimodal-looker"
        ]
      }
    },
    "disabled_hooks": {
      "type": "array",
      "description": "List of built-in hooks to disable. Useful for selectively disabling hooks that may conflict with your workflow.",
      "items": {
        "type": "string",
        "enum": [
          "todo-continuation-enforcer",
          "context-window-monitor",
          "session-recovery",
          "session-notification",
          "comment-checker",
          "grep-output-truncator",
          "tool-output-truncator",
          "directory-agents-injector",
          "directory-readme-injector",
          "empty-task-response-detector",
          "think-mode",
          "anthropic-auto-compact",
          "rules-injector",
          "background-notification",
          "auto-update-checker",
          "startup-toast",
          "keyword-detector",
          "agent-usage-reminder"
        ]
      }
    },
    "agents": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "enum": [
          "oracle",
          "librarian",
          "explore",
          "frontend-ui-ux-engineer",
          "document-writer",
          "multimodal-looker"
        ]
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string"
          },
          "temperature": {
            "type": "number",
            "minimum": 0,
            "maximum": 2
          },
          "top_p": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "prompt": {
            "type": "string"
          },
          "tools": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "boolean"
            }
          },
          "disable": {
            "type": "boolean"
          },
          "description": {
            "type": "string"
          },
          "mode": {
            "type": "string",
            "enum": [
              "subagent",
              "primary",
              "all"
            ]
          },
          "color": {
            "type": "string",
            "pattern": "^#[0-9A-Fa-f]{6}$"
          },
          "permission": {
            "type": "object",
            "properties": {
              "edit": {
                "type": "string",
                "enum": [
                  "ask",
                  "allow",
                  "deny"
                ]
              },
              "bash": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "ask",
                      "allow",
                      "deny"
                    ]
                  },
                  {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {
                      "type": "string",
                      "enum": [
                        "ask",
                        "allow",
                        "deny"
                      ]
                    }
                  }
                ]
              },
              "webfetch": {
                "type": "string",
                "enum": [
                  "ask",
                  "allow",
                  "deny"
                ]
              },
              "doom_loop": {
                "type": "string",
                "enum": [
                  "ask",
                  "allow",
                  "deny"
                ]
              },
              "external_directory": {
                "type": "string",
                "enum": [
                  "ask",
                  "allow",
                  "deny"
                ]
              }
            }
          }
        }
      }
    },
    "google_auth": {
      "type": "boolean",
      "description": "Enable built-in Antigravity OAuth for Google Gemini models. When true, adds 'OAuth with Google (Antigravity)' login option.",
      "default": false
    },
    "lsp": {
      "type": "object",
      "description": "Additional LSP server configurations specific to Oh My OpenCode.",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "command": {
            "type": "array",
            "items": { "type": "string" },
            "description": "Command and arguments to start the LSP server"
          },
          "extensions": {
            "type": "array",
            "items": { "type": "string" },
            "description": "File extensions this server handles (e.g., [\".ts\", \".tsx\"])"
          },
          "priority": {
            "type": "number",
            "description": "Server priority (higher = preferred)"
          },
          "env": {
            "type": "object",
            "additionalProperties": { "type": "string" },
            "description": "Environment variables for the LSP server"
          },
          "initialization": {
            "type": "object",
            "description": "Custom initialization options"
          },
          "disabled": {
            "type": "boolean",
            "description": "Disable this LSP server"
          }
        }
      }
    },
    "claude_code": {
      "type": "object",
      "description": "Toggle Claude Code compatibility features on/off. All default to true (enabled).",
      "properties": {
        "mcp": {
          "type": "boolean",
          "description": "Load MCP servers from ~/.claude/.mcp.json, ./.mcp.json, ./.claude/.mcp.json"
        },
        "commands": {
          "type": "boolean",
          "description": "Load commands from ~/.claude/commands/*.md, ./.claude/commands/*.md"
        },
        "skills": {
          "type": "boolean",
          "description": "Load skills from ~/.claude/skills/*/SKILL.md, ./.claude/skills/*/SKILL.md"
        },
        "agents": {
          "type": "boolean",
          "description": "Load agents from ~/.claude/agents/*.md, ./.claude/agents/*.md"
        },
        "hooks": {
          "type": "boolean",
          "description": "Execute hooks from ~/.claude/settings.json, ./.claude/settings.json, ./.claude/settings.local.json"
        }
      }
    }
  }
}