{
  "$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"]
    },
    "RegistryName": {
      "type": "string",
      "pattern": "^(?!(?:azurerepos|bitbucket|git|github|gitlab|local|registry|workspace)$)[a-z0-9][a-z0-9.-]*$",
      "title": "Registry Name",
      "description": "Registry source used by unqualified references, authentication, and publishing. Project settings override user settings; agentxm is the built-in default.",
      "examples": ["agentxm", "company"]
    },
    "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",
        "fx",
        "muse-code",
        "mimo-code",
        "coder-agents",
        "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",
        "vscode",
        "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": "^(?!(?:agentxm|azurerepos|bitbucket|git|github|gitlab|local|registry|workspace)$)[a-z0-9][a-z0-9.-]*$",
      "title": "Source Name",
      "description": "Alias used in entry source strings for this source host.",
      "examples": ["company", "my-registry.dev"]
    },
    "SourceHostConfig": {
      "type": "object",
      "properties": {
        "name": { "$ref": "#/definitions/SourceName" },
        "type": { "type": "string", "enum": ["registry"] },
        "location": { "type": "string" }
      },
      "required": ["name", "type", "location"],
      "additionalProperties": false,
      "title": "Source Host Config",
      "description": "A named package registry source. Git clone URLs need no configuration."
    },
    "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
            },
            "distribute": {
              "type": "boolean",
              "description": "Set to false to omit this authored extension from repository discovery, bulk publication, and share output. This is distribution intent, not a confidentiality control.",
              "default": true
            },
            "origin": {
              "type": "string",
              "enum": ["bundled"],
              "description": "Marks the official AXM skill as materialized from the running CLI's embedded bundle."
            }
          },
          "additionalProperties": false
        }
      ],
      "title": "Skill Entry",
      "description": "A skill entry: a source string, an object with source plus optional flags and bundled origin, or a source-less object configuring a Pack-supplied skill.",
      "examples": [
        "@acme/skills/code-review@^1.0.0",
        { "source": "github:acme/agent-extensions", "enabled": false },
        { "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
            },
            "distribute": {
              "type": "boolean",
              "description": "Set to false to omit this authored extension from repository discovery, bulk publication, and share output. This is distribution intent, not a confidentiality control.",
              "default": true
            }
          },
          "additionalProperties": false
        }
      ],
      "title": "Rule Entry",
      "description": "A rule entry: a source string, an object with source plus optional flags, or a source-less object configuring a Pack-supplied rule.",
      "examples": [
        "@acme/rules/api-conventions@^1.0.0",
        { "source": "@acme/rules/api-conventions@^1.0.0", "enabled": false },
        { "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
            },
            "distribute": {
              "type": "boolean",
              "description": "Set to false to omit this authored extension from repository discovery, bulk publication, and share output. This is distribution intent, not a confidentiality control.",
              "default": true
            },
            "configuration": {
              "type": "object",
              "propertyNames": {
                "type": "string",
                "minLength": 1,
                "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$",
                "maxLength": 64
              },
              "additionalProperties": {
                "anyOf": [
                  { "type": "string" },
                  { "type": "number" },
                  { "type": "boolean" },
                  {
                    "type": "object",
                    "properties": {
                      "env": {
                        "type": "string",
                        "minLength": 1,
                        "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
                      }
                    },
                    "required": ["env"],
                    "additionalProperties": false
                  }
                ]
              }
            }
          },
          "additionalProperties": false
        }
      ],
      "title": "Hook Entry",
      "description": "Hook acquisition and typed consumer values. Configuring a Pack member does not acquire it directly.",
      "examples": [
        "@acme/hooks/block-secrets@^1.0.0",
        { "source": "@acme/hooks/block-secrets@^1.0.0", "enabled": false },
        { "configuration": { "mode": "strict" } }
      ]
    },
    "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
            },
            "distribute": {
              "type": "boolean",
              "description": "Set to false to omit this authored extension from repository discovery, bulk publication, and share output. This is distribution intent, not a confidentiality control.",
              "default": true
            },
            "instructionEntry": {
              "type": "boolean",
              "description": "Include this bundle in the managed Knowledge Bundles instruction table. Omit to inherit the manifest default."
            }
          },
          "additionalProperties": false
        }
      ],
      "title": "Knowledge Entry",
      "description": "A knowledge bundle source string, an object with optional lifecycle and instruction-entry settings, or a source-less object configuring a Pack-supplied bundle.",
      "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 },
        { "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
            },
            "distribute": {
              "type": "boolean",
              "description": "Set to false to omit this authored extension from repository discovery, bulk publication, and share output. This is distribution intent, not a confidentiality control.",
              "default": true
            }
          },
          "additionalProperties": false
        }
      ],
      "title": "Subagent Entry",
      "description": "A subagent entry: a source string, an object with source plus optional flags, or a source-less object configuring a Pack-supplied subagent.",
      "examples": [
        "@acme/subagents/reviewer@^1.0.0",
        { "source": "github:acme/agent-extensions", "enabled": false },
        { "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
            },
            "distribute": {
              "type": "boolean",
              "description": "Set to false to omit this authored extension from repository discovery, bulk publication, and share output. This is distribution intent, not a confidentiality control.",
              "default": true
            }
          },
          "required": ["source"],
          "additionalProperties": false,
          "title": "Pack Entry Object",
          "description": "A pack entry with source and optional enabled and distribution state."
        }
      ],
      "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."
    },
    "McpDistribution": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "kind": { "type": "string", "enum": ["remote"] },
            "transport": { "type": "string", "enum": ["streamable-http", "sse"] },
            "url": { "type": "string", "pattern": "^[^\\0]*$" }
          },
          "required": ["kind", "transport", "url"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "kind": { "type": "string", "enum": ["package"] },
            "registryType": { "type": "string", "minLength": 1 },
            "registryBaseUrl": { "type": "string", "minLength": 1 },
            "identifier": { "type": "string", "minLength": 1 },
            "runtimeHint": { "type": "string", "minLength": 1 },
            "transport": { "type": "string", "enum": ["stdio", "streamable-http", "sse"] },
            "url": { "type": "string", "pattern": "^[^\\0]*$" }
          },
          "required": ["kind", "registryType", "identifier", "transport"],
          "additionalProperties": false
        }
      ]
    },
    "McpValue": {
      "anyOf": [
        { "type": "string", "pattern": "^[^\\0]*$" },
        {
          "type": "object",
          "properties": { "env": { "type": "string", "pattern": "^[A-Za-z_][A-Za-z0-9_]*$" } },
          "required": ["env"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "template": {
              "type": "array",
              "minItems": 1,
              "items": [
                {
                  "anyOf": [
                    { "type": "string", "pattern": "^[^\\0]*$" },
                    {
                      "type": "object",
                      "properties": {
                        "env": { "type": "string", "pattern": "^[A-Za-z_][A-Za-z0-9_]*$" }
                      },
                      "required": ["env"],
                      "additionalProperties": false
                    }
                  ]
                }
              ],
              "additionalItems": {
                "anyOf": [
                  { "type": "string", "pattern": "^[^\\0]*$" },
                  {
                    "type": "object",
                    "properties": {
                      "env": { "type": "string", "pattern": "^[A-Za-z_][A-Za-z0-9_]*$" }
                    },
                    "required": ["env"],
                    "additionalProperties": false
                  }
                ]
              }
            }
          },
          "required": ["template"],
          "additionalProperties": false
        }
      ],
      "description": "A literal, a host environment reference, or a bounded concatenation of both."
    },
    "McpBinding": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "target": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "kind": { "type": "string", "enum": ["environment", "header", "url-variable"] },
                    "name": { "type": "string", "minLength": 1 },
                    "variable": { "type": "string", "minLength": 1 }
                  },
                  "required": ["kind", "name"],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": { "type": "string", "enum": ["runtime-argument", "package-argument"] },
                    "argument": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": { "type": "string", "enum": ["named"] },
                            "name": { "type": "string", "minLength": 1 }
                          },
                          "required": ["type", "name"],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": { "type": "string", "enum": ["positional"] },
                            "valueHint": { "type": "string", "minLength": 1 }
                          },
                          "required": ["type", "valueHint"],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": { "type": "string", "enum": ["positional"] },
                            "value": { "type": "string", "pattern": "^[^\\0]*$" }
                          },
                          "required": ["type", "value"],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "variable": { "type": "string", "minLength": 1 }
                  },
                  "required": ["kind", "argument"],
                  "additionalProperties": false
                }
              ]
            },
            "value": { "$ref": "#/definitions/McpValue" }
          },
          "required": ["target", "value"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "target": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "kind": { "type": "string", "enum": ["environment", "header", "url-variable"] },
                    "name": { "type": "string", "minLength": 1 },
                    "variable": { "type": "string", "minLength": 1 }
                  },
                  "required": ["kind", "name"],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": { "type": "string", "enum": ["runtime-argument", "package-argument"] },
                    "argument": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": { "type": "string", "enum": ["named"] },
                            "name": { "type": "string", "minLength": 1 }
                          },
                          "required": ["type", "name"],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": { "type": "string", "enum": ["positional"] },
                            "valueHint": { "type": "string", "minLength": 1 }
                          },
                          "required": ["type", "valueHint"],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": { "type": "string", "enum": ["positional"] },
                            "value": { "type": "string", "pattern": "^[^\\0]*$" }
                          },
                          "required": ["type", "value"],
                          "additionalProperties": false
                        }
                      ]
                    },
                    "variable": { "type": "string", "minLength": 1 }
                  },
                  "required": ["kind", "argument"],
                  "additionalProperties": false
                }
              ]
            },
            "values": { "type": "array", "items": { "$ref": "#/definitions/McpValue" } }
          },
          "required": ["target", "values"],
          "additionalProperties": false
        }
      ]
    },
    "McpConnection": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "transport": { "type": "string", "enum": ["stdio"] },
            "command": { "type": "string", "minLength": 1, "pattern": "^[^\\0\\r\\n]+$" },
            "args": { "type": "array", "items": { "$ref": "#/definitions/McpValue" } },
            "cwd": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "base": { "type": "string", "enum": ["scope"] },
                    "path": { "type": "string", "minLength": 1 }
                  },
                  "required": ["base", "path"],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "base": { "type": "string", "enum": ["absolute"] },
                    "path": {
                      "type": "string",
                      "minLength": 1,
                      "pattern": "^(?:\\/|[A-Za-z]:[\\\\/]|\\\\\\\\)"
                    }
                  },
                  "required": ["base", "path"],
                  "additionalProperties": false
                }
              ]
            },
            "env": {
              "type": "object",
              "patternProperties": {
                "^[A-Za-z_][A-Za-z0-9_]*$": { "$ref": "#/definitions/McpValue" }
              },
              "additionalProperties": false
            }
          },
          "required": ["transport", "command"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "transport": { "type": "string", "enum": ["streamable-http", "sse"] },
            "url": { "$ref": "#/definitions/McpValue" },
            "headers": {
              "type": "object",
              "patternProperties": {
                "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$": { "$ref": "#/definitions/McpValue" }
              },
              "additionalProperties": false
            }
          },
          "required": ["transport", "url"],
          "additionalProperties": false
        }
      ]
    },
    "McpServerEntryObject": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "command": { "not": {} },
            "args": { "not": {} },
            "env": { "not": {} },
            "url": { "not": {} },
            "headers": { "not": {} },
            "cwd": { "not": {} },
            "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"
              ]
            },
            "nativeComponent": {
              "type": "object",
              "properties": {
                "format": { "type": "string", "enum": ["agent-plugins"] },
                "configPath": { "type": "string", "minLength": 1 },
                "name": { "type": "string", "minLength": 1 }
              },
              "required": ["format", "configPath", "name"],
              "additionalProperties": false
            },
            "connection": { "anyOf": [{ "not": {} }, { "type": "null" }] },
            "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
            },
            "distribute": {
              "type": "boolean",
              "description": "Set to false to omit this authored extension from repository discovery, bulk publication, and share output. This is distribution intent, not a confidentiality control.",
              "default": true
            },
            "distribution": { "$ref": "#/definitions/McpDistribution" },
            "bindings": { "type": "array", "items": { "$ref": "#/definitions/McpBinding" } },
            "auth": {
              "type": "object",
              "properties": { "type": { "type": "string", "enum": ["native-oauth"] } },
              "required": ["type"],
              "additionalProperties": false
            }
          },
          "required": ["source"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "command": { "not": {} },
            "args": { "not": {} },
            "env": { "not": {} },
            "url": { "not": {} },
            "headers": { "not": {} },
            "cwd": { "not": {} },
            "source": { "anyOf": [{ "not": {} }, { "type": "null" }] },
            "nativeComponent": { "anyOf": [{ "not": {} }, { "type": "null" }] },
            "connection": { "$ref": "#/definitions/McpConnection" },
            "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
            },
            "distribute": {
              "type": "boolean",
              "description": "Set to false to omit this authored extension from repository discovery, bulk publication, and share output. This is distribution intent, not a confidentiality control.",
              "default": true
            },
            "auth": {
              "type": "object",
              "properties": { "type": { "type": "string", "enum": ["native-oauth"] } },
              "required": ["type"],
              "additionalProperties": false
            },
            "distribution": { "anyOf": [{ "not": {} }, { "type": "null" }] },
            "bindings": { "anyOf": [{ "not": {} }, { "type": "null" }] }
          },
          "required": ["connection"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "command": { "not": {} },
            "args": { "not": {} },
            "env": { "not": {} },
            "url": { "not": {} },
            "headers": { "not": {} },
            "cwd": { "not": {} },
            "source": { "anyOf": [{ "not": {} }, { "type": "null" }] },
            "nativeComponent": { "anyOf": [{ "not": {} }, { "type": "null" }] },
            "connection": { "anyOf": [{ "not": {} }, { "type": "null" }] },
            "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
            },
            "distribute": { "anyOf": [{ "not": {} }, { "type": "null" }] },
            "distribution": { "$ref": "#/definitions/McpDistribution" },
            "bindings": { "type": "array", "items": { "$ref": "#/definitions/McpBinding" } },
            "auth": {
              "type": "object",
              "properties": { "type": { "type": "string", "enum": ["native-oauth"] } },
              "required": ["type"],
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        }
      ],
      "description": "An explicit inline connection, sourced distribution, or Pack-member preference. Legacy strings and flat command/url/env settings are unsupported."
    },
    "McpServersMap": {
      "type": "object",
      "additionalProperties": { "$ref": "#/definitions/McpServerEntryObject" },
      "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": false,
          "title": "Lint Rules Map",
          "description": "Map of exact <namespace>/<name> rule ids to severity overrides for `axm lint`.",
          "properties": {
            "skill/skill-md-present": { "$ref": "#/definitions/LintRuleSeverity" },
            "skill/manifest-present": { "$ref": "#/definitions/LintRuleSeverity" },
            "skill/frontmatter-parseable": { "$ref": "#/definitions/LintRuleSeverity" },
            "skill/frontmatter-standard-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "skill/manifest-schema-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "skill/manifest-keys-recognized": { "$ref": "#/definitions/LintRuleSeverity" },
            "skill/standalone-declaration-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "skill/recommended-packs-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "pack/manifest-present": { "$ref": "#/definitions/LintRuleSeverity" },
            "pack/manifest-schema-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "pack/manifest-keys-recognized": { "$ref": "#/definitions/LintRuleSeverity" },
            "subagent/manifest-present": { "$ref": "#/definitions/LintRuleSeverity" },
            "subagent/manifest-schema-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "subagent/manifest-keys-recognized": { "$ref": "#/definitions/LintRuleSeverity" },
            "subagent/standalone-declaration-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "subagent/recommended-packs-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "mcp-server/manifest-present": { "$ref": "#/definitions/LintRuleSeverity" },
            "mcp-server/manifest-schema-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "mcp-server/manifest-keys-recognized": { "$ref": "#/definitions/LintRuleSeverity" },
            "mcp-server/standalone-declaration-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "mcp-server/recommended-packs-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "hook/manifest-present": { "$ref": "#/definitions/LintRuleSeverity" },
            "hook/manifest-schema-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "hook/manifest-keys-recognized": { "$ref": "#/definitions/LintRuleSeverity" },
            "hook/native-bindings-supported": { "$ref": "#/definitions/LintRuleSeverity" },
            "hook/referenced-files-exist": { "$ref": "#/definitions/LintRuleSeverity" },
            "hook/standalone-declaration-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "hook/recommended-packs-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "rule/manifest-present": { "$ref": "#/definitions/LintRuleSeverity" },
            "rule/manifest-schema-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "rule/manifest-keys-recognized": { "$ref": "#/definitions/LintRuleSeverity" },
            "rule/standalone-declaration-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "rule/recommended-packs-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/manifest-present": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/manifest-schema-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/manifest-keys-recognized": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/standalone-declaration-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/recommended-packs-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/bundle-too-large": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/file-too-large": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-tags": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/missing-root-index": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/missing-okf-version": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/missing-title": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/missing-description": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/missing-manifest-description": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/empty-bundle": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/missing-tags": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/symbolic-link": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/too-many-files": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/unsupported-okf-version": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/missing-type": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-frontmatter": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/case-collision": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/dangerous-uri": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/detected-secret": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/unsafe-path": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-index": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-log": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-resource": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/escaping-resource": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/unresolved-resource": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/broken-internal-link": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/escaping-link": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/unreachable-concept": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/missing-index-entry": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/stale-index-entry": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/embedded-html": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/duplicate-resource": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/inconsistent-type": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/large-concept": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/large-index": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/unreferenced-asset": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-sources": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-generated": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-verified": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-status": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-stale-after": { "$ref": "#/definitions/LintRuleSeverity" },
            "knowledge/invalid-attestation": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/initialized": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/settings-schema-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/settings-keys-recognized": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/lockfile-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/source-endpoints-aligned": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/desired-state-reconcilable": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/axm-skill-declared": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/axm-skill-compatible": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/agents-recognized": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/agents-detected-declared": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/agents-projections-stale": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/instructions-source-present": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/instructions-target-current": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/instructions-target-unowned": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/instructions-target-stale": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/instructions-agent-supported": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/instructions-gitignore-current": {
              "$ref": "#/definitions/LintRuleSeverity"
            },
            "workspace/projection-ownership-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/projection-contributors-rendered": {
              "$ref": "#/definitions/LintRuleSeverity"
            },
            "workspace/hook-ownership-ambiguous": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/managed-file-unowned": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/installed-but-not-configured": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/deprecated-installed": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/authored-package-declared": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/install-root-entries-recognized": {
              "$ref": "#/definitions/LintRuleSeverity"
            },
            "workspace/project-outputs-not-shadowed": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/user-outputs-have-settings": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/agent-content-has-settings": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/skills-declarations-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/packs-declarations-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/packs-shared-members-distributable": {
              "$ref": "#/definitions/LintRuleSeverity"
            },
            "workspace/configured-but-not-installed": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/knowledge-state-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/mcps-transport-exclusivity": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/mcps-no-secret-literal": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/mcps-agent-drift": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/mcps-agent-orphaned": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/skills-lockfile-aligned": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/skills-integrity-valid": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/skills-artifacts-correct": { "$ref": "#/definitions/LintRuleSeverity" },
            "workspace/packs-dependencies-resolved": { "$ref": "#/definitions/LintRuleSeverity" }
          }
        }
      },
      "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."
        },
        "defaultRegistry": { "$ref": "#/definitions/RegistryName" },
        "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 to set non-default entry metadata such as `enabled: false` or `distribute: 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 to set non-default entry metadata such as `enabled: false` or `distribute: 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 to set non-default entry metadata such as `enabled: false` or `distribute: 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 to set non-default entry metadata such as `enabled: false` or `distribute: false`."
        },
        "subagentsConfig": { "$ref": "#/definitions/SubagentsConfig" },
        "packs": {
          "anyOf": [{ "$ref": "#/definitions/PacksMap" }],
          "description": "Desired packs, keyed by workspace pack name. Prefer plain source strings; use the object form to set non-default entry metadata such as `enabled: false` or `distribute: false`."
        },
        "packsConfig": { "$ref": "#/definitions/PacksConfig" },
        "mcpServers": {
          "anyOf": [{ "$ref": "#/definitions/McpServersMap" }],
          "description": "Desired MCP connections, keyed by local name. Declare an explicit connection, a source with distribution and bindings, or Pack-member preferences."
        },
        "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" } }
        }
      ]
    }
  }
}
