{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$ref": "#/definitions/AxmSettings",
  "definitions": {
    "Handle": {
      "type": "string",
      "pattern": "^@[a-z0-9_](?:[a-z0-9_-]*[a-z0-9_])?$",
      "title": "Handle",
      "description": "A unique username or organization name starting with @, like @my-org.",
      "examples": ["@my-org", "@username"]
    },
    "ExtensionVisibility": {
      "type": "string",
      "enum": ["public", "private"],
      "title": "Extension Visibility",
      "description": "Fallback whole-Extension Registry visibility when an extension manifest does not declare publish.visibility."
    },
    "WorkspacePublishOptions": {
      "type": "object",
      "properties": {
        "defaultVisibility": {
          "anyOf": [{ "$ref": "#/definitions/ExtensionVisibility" }, { "type": "null" }]
        }
      },
      "additionalProperties": false,
      "title": "Workspace Publish Options",
      "description": "Workspace defaults used when extension publication policy is unconfigured."
    },
    "MinimumReleaseAge": {
      "type": "string",
      "pattern": "^\\d+(ms|s|m|h|d)$",
      "title": "Minimum Release Age",
      "description": "Minimum age for registry versions during unattended resolution. Use 0s to disable the holdback.",
      "default": "24h",
      "examples": ["24h", "1440m", "0s"]
    },
    "ReleaseAgeExcludePatternEncoded": {
      "type": "string",
      "examples": ["@acme/skills/code-review", "@acme/skills/*", "@acme/*"]
    },
    "ConfigurableAgentId": {
      "type": "string",
      "enum": [
        "adal",
        "aider-desk",
        "amp",
        "antigravity",
        "antigravity-cli",
        "augment",
        "claude-code",
        "cline",
        "codearts-agent",
        "codebuddy",
        "codemaker",
        "codestudio",
        "codex",
        "command-code",
        "continue",
        "cortex",
        "crush",
        "cursor",
        "deepagents",
        "devin",
        "dexto",
        "droid",
        "firebender",
        "forgecode",
        "gemini-cli",
        "github-copilot-cli",
        "goose",
        "grok-cli",
        "hermes",
        "ibm-bob",
        "iflow-cli",
        "junie",
        "lingma",
        "kilo",
        "kimi-cli",
        "kiro-cli",
        "kode",
        "mcpjam",
        "minimax-code",
        "mistral-vibe",
        "mux",
        "neovate",
        "openclaw",
        "opencode",
        "openhands",
        "ona",
        "pi",
        "pochi",
        "qoder",
        "qoder-cn",
        "qwen-code",
        "replit",
        "roo",
        "rovodev",
        "tabnine-cli",
        "trae-cn",
        "trae",
        "warp",
        "windsurf",
        "zencoder",
        "zed",
        "zenflow"
      ],
      "title": "Configurable Agent ID",
      "description": "Supported coding agent identifier used in workspace settings `agents`.",
      "examples": ["claude-code", "codex", "cursor"]
    },
    "InstructionsConfig": {
      "type": "object",
      "properties": {
        "fileName": {
          "type": "string",
          "description": "Source-of-truth instruction file name.",
          "default": "AGENTS.md",
          "examples": ["AGENTS.md"]
        },
        "gitignoreAliases": {
          "type": "boolean",
          "description": "Whether AXM adds each exact propagated alias target (e.g. /CLAUDE.md or /docs/CLAUDE.md) to a managed .gitignore region. The source-of-truth file (fileName) is never ignored.",
          "default": true,
          "examples": [true, false]
        }
      },
      "additionalProperties": false,
      "title": "Instructions Config",
      "description": "Instruction-file management settings for configured agents."
    },
    "SourceName": {
      "type": "string",
      "pattern": "^(?!(?:git|local|workspace)$)[a-z0-9][a-z0-9.-]*$",
      "title": "Source Name",
      "description": "Alias used in entry source strings for this source host.",
      "examples": ["github", "my-registry.dev"]
    },
    "GitHubSourceHostConfig": {
      "type": "object",
      "properties": {
        "name": { "$ref": "#/definitions/SourceName" },
        "type": { "type": "string", "enum": ["github"] },
        "url": { "type": "string" }
      },
      "required": ["name", "type", "url"],
      "additionalProperties": false,
      "title": "GitHub Source Host",
      "description": "A GitHub source host."
    },
    "GitLabSourceHostConfig": {
      "type": "object",
      "properties": {
        "name": { "$ref": "#/definitions/SourceName" },
        "type": { "type": "string", "enum": ["gitlab"] },
        "url": { "type": "string" }
      },
      "required": ["name", "type", "url"],
      "additionalProperties": false,
      "title": "GitLab Source Host",
      "description": "A GitLab source host."
    },
    "BitbucketSourceHostConfig": {
      "type": "object",
      "properties": {
        "name": { "$ref": "#/definitions/SourceName" },
        "type": { "type": "string", "enum": ["bitbucket"] },
        "url": { "type": "string" }
      },
      "required": ["name", "type", "url"],
      "additionalProperties": false,
      "title": "Bitbucket Source Host",
      "description": "A Bitbucket source host."
    },
    "AzureReposSourceHostConfig": {
      "type": "object",
      "properties": {
        "name": { "$ref": "#/definitions/SourceName" },
        "type": { "type": "string", "enum": ["azurerepos"] },
        "url": { "type": "string" }
      },
      "required": ["name", "type", "url"],
      "additionalProperties": false,
      "title": "Azure Repos Source Host",
      "description": "An Azure Repos source host."
    },
    "RegistrySourceHostConfig": {
      "type": "object",
      "properties": {
        "name": { "$ref": "#/definitions/SourceName" },
        "type": { "type": "string", "enum": ["registry"] },
        "location": { "type": "string" }
      },
      "required": ["name", "type", "location"],
      "additionalProperties": false,
      "title": "Registry Source Host",
      "description": "A package registry source host."
    },
    "SourceHostConfig": {
      "anyOf": [
        { "$ref": "#/definitions/GitHubSourceHostConfig" },
        { "$ref": "#/definitions/GitLabSourceHostConfig" },
        { "$ref": "#/definitions/BitbucketSourceHostConfig" },
        { "$ref": "#/definitions/AzureReposSourceHostConfig" },
        { "$ref": "#/definitions/RegistrySourceHostConfig" }
      ],
      "title": "Source Host Config",
      "description": "A source host configuration: GitHub, GitLab, Bitbucket, Azure Repos, or a package registry."
    },
    "SkillEntry": {
      "anyOf": [
        { "type": "string" },
        {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "minLength": 1,
              "description": "FQN with optional version constraint, source-scheme ref like github:owner/repo, or local path.",
              "examples": [
                "@acme/skills/code-review@^1.0.0",
                "github:acme/agent-extensions",
                "./extensions/code-review"
              ]
            },
            "enabled": {
              "type": "boolean",
              "description": "Set to false to disable this entry. Omit otherwise — true is the default and should not be written explicitly.",
              "default": true
            },
            "origin": {
              "type": "string",
              "enum": ["bundled"],
              "description": "Marks the official AXM skill as materialized from the running CLI's embedded bundle."
            }
          },
          "required": ["source"],
          "additionalProperties": false,
          "title": "Skill Entry Object",
          "description": "A skill entry with source, optional enabled state, and bundled origin marker."
        }
      ],
      "title": "Skill Entry",
      "description": "A skill entry: a source string, or an object with source plus optional flags and bundled origin.",
      "examples": [
        "@acme/skills/code-review@^1.0.0",
        { "source": "github:acme/agent-extensions", "enabled": false }
      ]
    },
    "SkillsMap": {
      "type": "object",
      "additionalProperties": { "$ref": "#/definitions/SkillEntry" },
      "propertyNames": { "type": "string", "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$" }
    },
    "SkillsConfig": {
      "type": "object",
      "properties": {
        "dir": {
          "type": "string",
          "minLength": 1,
          "description": "Workspace-relative authored package directory for this extension type. Omit to use the conventional root directory.",
          "examples": ["extensions/skills"]
        }
      },
      "additionalProperties": false,
      "title": "Skills Config",
      "description": "Authored package directory configuration. AXM reads this manual override but never rewrites it."
    },
    "RuleEntry": {
      "anyOf": [
        { "type": "string" },
        {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "minLength": 1,
              "description": "FQN with optional version constraint, source-scheme ref like github:owner/repo, or local path.",
              "examples": [
                "@acme/rules/code-review@^1.0.0",
                "github:acme/agent-extensions",
                "./extensions/code-review"
              ]
            },
            "enabled": {
              "type": "boolean",
              "description": "Set to false to disable this entry. Omit otherwise — true is the default and should not be written explicitly.",
              "default": true
            }
          },
          "required": ["source"],
          "additionalProperties": false,
          "title": "Rule Entry Object",
          "description": "A rule entry with source and an optional enabled flag."
        }
      ],
      "title": "Rule Entry",
      "description": "A rule entry: a source string, or an object with source plus optional flags.",
      "examples": [
        "@acme/rules/api-conventions@^1.0.0",
        { "source": "@acme/rules/api-conventions@^1.0.0", "enabled": false }
      ]
    },
    "RulesMap": {
      "type": "object",
      "additionalProperties": { "$ref": "#/definitions/RuleEntry" },
      "propertyNames": { "type": "string", "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$" }
    },
    "RulesConfig": {
      "type": "object",
      "properties": {
        "dir": {
          "type": "string",
          "minLength": 1,
          "description": "Workspace-relative authored package directory for this extension type. Omit to use the conventional root directory.",
          "examples": ["extensions/skills"]
        }
      },
      "additionalProperties": false,
      "title": "Rules Config",
      "description": "Authored package directory configuration. AXM reads this manual override but never rewrites it."
    },
    "HookEntry": {
      "anyOf": [
        { "type": "string" },
        {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "minLength": 1,
              "description": "FQN with optional version constraint, source-scheme ref like github:owner/repo, or local path.",
              "examples": [
                "@acme/hooks/code-review@^1.0.0",
                "github:acme/agent-extensions",
                "./extensions/code-review"
              ]
            },
            "enabled": {
              "type": "boolean",
              "description": "Set to false to disable this entry. Omit otherwise — true is the default and should not be written explicitly.",
              "default": true
            }
          },
          "required": ["source"],
          "additionalProperties": false,
          "title": "Hook Entry Object",
          "description": "A hook entry with source and an optional enabled flag."
        }
      ],
      "title": "Hook Entry",
      "description": "A hook entry: a source string, or an object with source plus optional flags.",
      "examples": [
        "@acme/hooks/block-secrets@^1.0.0",
        { "source": "@acme/hooks/block-secrets@^1.0.0", "enabled": false }
      ]
    },
    "HooksMap": {
      "type": "object",
      "additionalProperties": { "$ref": "#/definitions/HookEntry" },
      "propertyNames": { "type": "string", "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$" }
    },
    "HooksConfig": {
      "type": "object",
      "properties": {
        "dir": {
          "type": "string",
          "minLength": 1,
          "description": "Workspace-relative authored package directory for this extension type. Omit to use the conventional root directory.",
          "examples": ["extensions/skills"]
        }
      },
      "additionalProperties": false,
      "title": "Hooks Config",
      "description": "Authored package directory configuration. AXM reads this manual override but never rewrites it."
    },
    "KnowledgeEntry": {
      "anyOf": [
        { "type": "string" },
        {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "minLength": 1,
              "description": "FQN with optional version constraint, source-scheme ref like github:owner/repo, or local path.",
              "examples": [
                "@acme/knowledge/code-review@^1.0.0",
                "github:acme/agent-extensions",
                "./extensions/code-review"
              ]
            },
            "enabled": {
              "type": "boolean",
              "description": "Set to false to disable this entry. Omit otherwise — true is the default and should not be written explicitly.",
              "default": true
            },
            "instructionEntry": {
              "type": "boolean",
              "description": "Include this bundle in the managed Knowledge Bundles instruction table. Omit to inherit the manifest default."
            }
          },
          "required": ["source"],
          "additionalProperties": false,
          "title": "Knowledge Entry Object",
          "description": "A knowledge bundle entry with source, optional enabled state, and an optional instruction-entry override."
        }
      ],
      "title": "Knowledge Entry",
      "description": "A knowledge bundle source string, or an object with optional lifecycle and instruction-entry settings.",
      "examples": [
        "@acme/knowledge/payments@^1.0.0",
        { "source": "@acme/knowledge/payments@^1.0.0", "enabled": false },
        { "source": "@acme/knowledge/payments@^1.0.0", "instructionEntry": false }
      ]
    },
    "KnowledgeMap": {
      "type": "object",
      "additionalProperties": { "$ref": "#/definitions/KnowledgeEntry" },
      "propertyNames": { "type": "string", "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$" }
    },
    "KnowledgeConfig": {
      "type": "object",
      "properties": {
        "dir": {
          "type": "string",
          "minLength": 1,
          "description": "Workspace-relative authored package directory for this extension type. Omit to use the conventional root directory.",
          "examples": ["extensions/skills"]
        },
        "instructions": {
          "type": "boolean",
          "description": "Whether active Knowledge is synchronized into the canonical instruction source. Omit true; persist only false.",
          "default": true,
          "examples": [false]
        }
      },
      "additionalProperties": false,
      "title": "Knowledge Config",
      "description": "Knowledge discovery settings. Omit the config to synchronize active bundles into instructions; set instructions to false to disable that table."
    },
    "SubagentEntry": {
      "anyOf": [
        { "type": "string" },
        {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "minLength": 1,
              "description": "FQN with optional version constraint, source-scheme ref like github:owner/repo, or local path.",
              "examples": [
                "@acme/subagents/code-review@^1.0.0",
                "github:acme/agent-extensions",
                "./extensions/code-review"
              ]
            },
            "enabled": {
              "type": "boolean",
              "description": "Set to false to disable this entry. Omit otherwise — true is the default and should not be written explicitly.",
              "default": true
            }
          },
          "required": ["source"],
          "additionalProperties": false,
          "title": "Subagent Entry Object",
          "description": "A subagent entry with source and an optional enabled flag."
        }
      ],
      "title": "Subagent Entry",
      "description": "A subagent entry: a source string, or an object with source plus optional flags.",
      "examples": [
        "@acme/subagents/reviewer@^1.0.0",
        { "source": "github:acme/agent-extensions", "enabled": false }
      ]
    },
    "SubagentsMap": {
      "type": "object",
      "additionalProperties": { "$ref": "#/definitions/SubagentEntry" },
      "propertyNames": { "type": "string", "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$" }
    },
    "SubagentsConfig": {
      "type": "object",
      "properties": {
        "dir": {
          "type": "string",
          "minLength": 1,
          "description": "Workspace-relative authored package directory for this extension type. Omit to use the conventional root directory.",
          "examples": ["extensions/skills"]
        }
      },
      "additionalProperties": false,
      "title": "Subagents Config",
      "description": "Authored package directory configuration. AXM reads this manual override but never rewrites it."
    },
    "PackEntry": {
      "anyOf": [
        { "type": "string" },
        {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "minLength": 1,
              "description": "FQN with optional version constraint, source-scheme ref like github:owner/repo, or local path.",
              "examples": [
                "@acme/packs/code-review@^1.0.0",
                "github:acme/agent-extensions",
                "./extensions/code-review"
              ]
            },
            "enabled": {
              "type": "boolean",
              "description": "Set to false to disable this entry. Omit otherwise — true is the default and should not be written explicitly.",
              "default": true
            }
          },
          "required": ["source"],
          "additionalProperties": false,
          "title": "Pack Entry Object",
          "description": "A pack entry with a source and an optional enabled flag."
        }
      ],
      "title": "Pack Entry",
      "description": "A pack entry: a source string, or an object with source plus optional flags.",
      "examples": [
        "@acme/packs/typescript@^1.0.0",
        { "source": "@acme/packs/typescript@^1.0.0", "enabled": false }
      ]
    },
    "PacksMap": {
      "type": "object",
      "additionalProperties": { "$ref": "#/definitions/PackEntry" },
      "propertyNames": { "type": "string", "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$" }
    },
    "PacksConfig": {
      "type": "object",
      "properties": {
        "dir": {
          "type": "string",
          "minLength": 1,
          "description": "Workspace-relative authored package directory for this extension type. Omit to use the conventional root directory.",
          "examples": ["extensions/skills"]
        }
      },
      "additionalProperties": false,
      "title": "Packs Config",
      "description": "Authored package directory configuration. AXM reads this manual override but never rewrites it."
    },
    "McpServerEnv": {
      "anyOf": [
        { "type": "object", "additionalProperties": { "type": "string" } },
        { "type": "array", "items": { "type": "string" } }
      ],
      "title": "MCP Server Env",
      "description": "MCP environment values as a map or pass-through variable names. Array entries decode to ${VAR} references."
    },
    "McpServerEntry": {
      "anyOf": [
        { "type": "string" },
        {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "minLength": 1,
              "description": "FQN with optional version constraint, source-scheme ref like github:owner/repo, or local path.",
              "examples": [
                "@acme/mcps/code-review@^1.0.0",
                "github:acme/agent-extensions",
                "./extensions/code-review"
              ]
            },
            "command": {
              "type": "string",
              "minLength": 1,
              "description": "Executable command for an inline stdio MCP server.",
              "examples": ["npx"]
            },
            "args": {
              "type": "array",
              "description": "Arguments passed to the inline stdio MCP server command.",
              "examples": [["-y", "linear-mcp-server"]],
              "items": { "type": "string" }
            },
            "url": {
              "type": "string",
              "minLength": 1,
              "description": "Remote MCP server URL.",
              "examples": ["https://mcp.sentry.dev/sse"]
            },
            "headers": {
              "type": "object",
              "additionalProperties": { "type": "string" },
              "description": "HTTP headers for a remote MCP server. Prefer ${VAR} references for secrets."
            },
            "enabled": {
              "type": "boolean",
              "description": "Set to false to disable this entry. Omit otherwise — true is the default and should not be written explicitly.",
              "default": true
            },
            "env": { "$ref": "#/definitions/McpServerEnv" },
            "agents": {
              "type": "array",
              "description": "Coding agents this MCP server applies to. Omit to target every configured agent.",
              "examples": [["claude-code", "codex"]],
              "minItems": 1,
              "uniqueItems": true,
              "items": { "$ref": "#/definitions/ConfigurableAgentId" }
            }
          },
          "additionalProperties": false
        }
      ],
      "title": "MCP Server Entry",
      "description": "An MCP server entry: a source string, sourced object, inline command object, or inline URL object.",
      "examples": [
        "@acme/mcps/context@^1.0.0",
        { "source": "github:acme/agent-extensions", "enabled": false },
        {
          "command": "npx",
          "args": ["-y", "linear-mcp-server"],
          "env": ["LINEAR_API_KEY"],
          "agents": ["claude-code"]
        },
        {
          "url": "https://mcp.sentry.dev/sse",
          "headers": { "Authorization": "Bearer ${SENTRY_TOKEN}" }
        }
      ]
    },
    "McpServersMap": {
      "type": "object",
      "additionalProperties": { "$ref": "#/definitions/McpServerEntry" },
      "propertyNames": { "type": "string", "pattern": "^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$" }
    },
    "McpServersConfig": {
      "type": "object",
      "properties": {
        "dir": {
          "type": "string",
          "minLength": 1,
          "description": "Workspace-relative authored package directory for this extension type. Omit to use the conventional root directory.",
          "examples": ["extensions/skills"]
        }
      },
      "additionalProperties": false,
      "title": "MCP Servers Config",
      "description": "Authored package directory configuration. AXM reads this manual override but never rewrites it."
    },
    "LintRuleSeverity": {
      "type": "string",
      "enum": ["off", "info", "warn", "error"],
      "title": "Lint Rule Severity",
      "description": "Severity override for a lint rule: 'off' silences it, 'info'/'warn'/'error' raise or lower severity."
    },
    "LintConfig": {
      "type": "object",
      "properties": {
        "rules": {
          "type": "object",
          "additionalProperties": { "$ref": "#/definitions/LintRuleSeverity" },
          "title": "Lint Rules Map",
          "description": "Map of exact <namespace>/<name> rule ids to severity overrides for `axm lint`."
        }
      },
      "additionalProperties": false,
      "title": "Lint Config",
      "description": "Lint configuration under `lint` in workspace settings."
    },
    "AxmSettings": {
      "type": "object",
      "properties": {
        "$schema": {
          "type": "string",
          "description": "URL to the AXM settings JSON Schema. Editors use this to provide autocomplete and validation.",
          "examples": ["https://axm.sh/schemas/settings.schema.json"]
        },
        "owner": {
          "anyOf": [{ "$ref": "#/definitions/Handle" }],
          "description": "Default owner handle used when AXM scaffolds or resolves workspace extensions."
        },
        "publish": {
          "anyOf": [{ "$ref": "#/definitions/WorkspacePublishOptions" }],
          "description": "Workspace-level publication defaults."
        },
        "minimumReleaseAge": {
          "anyOf": [{ "$ref": "#/definitions/MinimumReleaseAge" }],
          "description": "Minimum published age for registry versions during unattended sync/update resolution. Defaults to 24h; use 0s to disable."
        },
        "minimumReleaseAgeExclude": {
          "type": "array",
          "description": "Registry extension identities exempt from minimumReleaseAge, as exact FQNs, owner/type patterns, or owner patterns.",
          "examples": [["@acme/skills/code-review", "@acme/rules/*", "@acme/*"]],
          "uniqueItems": true,
          "items": { "$ref": "#/definitions/ReleaseAgeExcludePatternEncoded" }
        },
        "agents": {
          "type": "array",
          "description": "Coding agents AXM should sync managed extensions into.",
          "examples": [["claude-code", "codex"]],
          "uniqueItems": true,
          "items": { "$ref": "#/definitions/ConfigurableAgentId" }
        },
        "instructionFiles": {
          "anyOf": [
            { "type": "boolean", "enum": [false] },
            { "$ref": "#/definitions/InstructionsConfig" }
          ],
          "description": "Instruction-file management: false for manual management, an object for enabled propagation, or absent when unset.",
          "examples": [false, { "fileName": "AGENTS.md", "gitignoreAliases": true }]
        },
        "sources": {
          "type": "array",
          "description": "Named source hosts used to resolve source-scheme entry references.",
          "items": { "$ref": "#/definitions/SourceHostConfig" }
        },
        "skills": {
          "anyOf": [{ "$ref": "#/definitions/SkillsMap" }],
          "description": "Desired skills, keyed by workspace skill name. Prefer plain source strings; use the object form only to set `enabled: false`."
        },
        "skillsConfig": { "$ref": "#/definitions/SkillsConfig" },
        "rules": {
          "anyOf": [{ "$ref": "#/definitions/RulesMap" }],
          "description": "Desired rules, keyed by workspace rule name. Prefer plain source strings; use the object form only to set `enabled: false`."
        },
        "rulesConfig": { "$ref": "#/definitions/RulesConfig" },
        "hooks": {
          "anyOf": [{ "$ref": "#/definitions/HooksMap" }],
          "description": "Desired hooks, keyed by workspace hook name. Prefer plain source strings; use the object form only to set `enabled: false`."
        },
        "hooksConfig": { "$ref": "#/definitions/HooksConfig" },
        "knowledge": {
          "anyOf": [{ "$ref": "#/definitions/KnowledgeMap" }],
          "description": "Desired Open Knowledge Format bundles discovered from agent instruction files."
        },
        "knowledgeConfig": {
          "anyOf": [{ "$ref": "#/definitions/KnowledgeConfig" }],
          "description": "Feature-level instruction discovery options for knowledge bundle management."
        },
        "subagents": {
          "anyOf": [{ "$ref": "#/definitions/SubagentsMap" }],
          "description": "Desired subagents, keyed by workspace subagent name. Prefer plain source strings; use the object form only to set `enabled: false`."
        },
        "subagentsConfig": { "$ref": "#/definitions/SubagentsConfig" },
        "packs": {
          "anyOf": [{ "$ref": "#/definitions/PacksMap" }],
          "description": "Desired packs, keyed by workspace pack name. Pack entries do not support `enabled`."
        },
        "packsConfig": { "$ref": "#/definitions/PacksConfig" },
        "mcpServers": {
          "anyOf": [{ "$ref": "#/definitions/McpServersMap" }],
          "description": "Desired MCP servers, keyed by workspace MCP server name. Prefer plain source strings; use the object form to set enabled state, persisted env values, or an agent target subset."
        },
        "mcpServersConfig": { "$ref": "#/definitions/McpServersConfig" },
        "lint": {
          "anyOf": [{ "$ref": "#/definitions/LintConfig" }],
          "description": "Lint configuration for `axm lint` in this workspace."
        }
      },
      "allOf": [{ "type": "object", "additionalProperties": {} }],
      "title": "AXM Settings",
      "description": "Your workspace configuration — owner, sources, installed extensions, feature config, and lint config.",
      "examples": [
        {
          "agents": ["claude-code", "codex"],
          "skills": {
            "code-review": "@acme/skills/code-review@^1.0.0",
            "disabled-review": { "source": "@acme/skills/disabled-review@^1.0.0", "enabled": false }
          },
          "lint": { "rules": { "workspace/settings-schema-valid": "error" } }
        }
      ]
    }
  }
}
