{
  "$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",
        "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": "^(?!(?: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."
            }
          },
          "required": ["source"],
          "additionalProperties": false,
          "title": "Skill Entry Object",
          "description": "A skill entry with source, optional enabled and distribution 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
            },
            "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": "Rule Entry Object",
          "description": "A rule entry with source and optional enabled and distribution state."
        }
      ],
      "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
            },
            "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": "Hook Entry Object",
          "description": "A hook entry with source and optional enabled and distribution state."
        }
      ],
      "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
            },
            "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."
            }
          },
          "required": ["source"],
          "additionalProperties": false,
          "title": "Knowledge Entry Object",
          "description": "A knowledge bundle entry with source, optional enabled and distribution 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
            },
            "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": "Subagent Entry Object",
          "description": "A subagent entry with source and optional enabled and distribution state."
        }
      ],
      "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
            },
            "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."
    },
    "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
            },
            "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
            },
            "env": { "$ref": "#/definitions/McpServerEnv" }
          },
          "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"] },
        {
          "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": 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/decision-portability": { "$ref": "#/definitions/LintRuleSeverity" },
            "hook/matcher-raw-portability": { "$ref": "#/definitions/LintRuleSeverity" },
            "hook/entrypoint-exists": { "$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/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 servers, keyed by workspace MCP server name. Prefer plain source strings; use the object form to set enabled or distribution state and persisted env values."
        },
        "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" } }
        }
      ]
    }
  }
}
