{
  "$ref": "#/definitions/skill-frontmatter",
  "definitions": {
    "skill-frontmatter": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64,
          "pattern": "^[a-z0-9]+(-[a-z0-9]+)*(:[a-z0-9]+(-[a-z0-9]+)*)?$",
          "description": "Skill identifier — defaults to parent directory name if omitted. Supports plugin:skill format."
        },
        "description": {
          "type": "string",
          "minLength": 1,
          "maxLength": 1024,
          "description": "What the skill does and when to use it"
        },
        "license": {
          "type": "string",
          "description": "License applied to this skill"
        },
        "compatibility": {
          "type": "string",
          "maxLength": 500,
          "description": "Environment requirements (e.g., \"Requires git, docker, jq\")"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional properties not defined by the spec"
        },
        "allowed-tools": {
          "type": "string",
          "description": "Space-separated list of pre-approved tools"
        },
        "argument-hint": {
          "type": "string",
          "description": "Hint text shown to the user when invoking the skill"
        },
        "disable-model-invocation": {
          "type": "boolean",
          "description": "Whether the model can invoke this skill automatically (default: false)"
        },
        "user-invocable": {
          "type": "boolean",
          "description": "Whether the user can invoke this skill via slash command (default: true)"
        },
        "model": {
          "type": "string",
          "description": "Model to use when running this skill (e.g., \"sonnet\", \"opus\")"
        },
        "context": {
          "type": "string",
          "description": "Execution context (e.g., \"fork\" for isolated context)"
        },
        "agent": {
          "type": "string",
          "description": "Agent identity for multi-agent workflows"
        },
        "hooks": {
          "type": "object",
          "additionalProperties": {},
          "description": "Lifecycle hooks (e.g., PostToolUse)"
        }
      },
      "additionalProperties": true
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
