{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://agentskills.io/schema/skill-frontmatter.json",
  "title": "agentskills.io SKILL.md frontmatter",
  "description": "JSON Schema for the YAML frontmatter of a SKILL.md file per the agentskills.io open standard (Anthropic, 2025-12-18). Only `name` and `description` are required; `license`, `compatibility`, `metadata`, and `allowed-tools` are recognized optional fields. Additional top-level keys are PERMITTED as extra metadata (this repo uses domain/subdomain/tags/version/author and framework-mapping keys), so `additionalProperties` is true. Constraints JSON Schema cannot express (name must equal the parent directory; no angle-bracket content in frontmatter) are enforced by tools/validate-agentskills.py.",
  "type": "object",
  "additionalProperties": true,
  "required": ["name", "description"],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
      "description": "1-64 chars, lowercase alphanumeric and single hyphens only; no leading/trailing/consecutive hyphens; must match the parent directory name; must not be a reserved word."
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024,
      "description": "1-1024 chars. Must state BOTH what the skill does and when to use it."
    },
    "license": {
      "type": "string",
      "minLength": 1,
      "description": "SPDX license identifier or license text."
    },
    "compatibility": {
      "type": "string",
      "maxLength": 500,
      "description": "Free-text compatibility notes (<=500 chars)."
    },
    "metadata": {
      "type": "object",
      "description": "Arbitrary key/value map for non-standard fields. This is where domain, subdomain, tags, version, author, and framework mappings (mitre_attack, nist_csf, atlas_techniques, d3fend_techniques, nist_ai_rmf, mitre_f3) belong under strict compliance.",
      "additionalProperties": true
    },
    "allowed-tools": {
      "description": "EXPERIMENTAL. Tools the skill is permitted to use; string or array of strings.",
      "oneOf": [
        { "type": "string" },
        { "type": "array", "items": { "type": "string" } }
      ]
    }
  }
}
