{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Cookbook Manifest",
  "description": "Schema for cookbook.yml manifest defining cookbooks and recipes",
  "type": "object",
  "required": ["cookbooks"],
  "properties": {
    "cookbooks": {
      "type": "array",
      "description": "List of cookbooks",
      "items": {
        "type": "object",
        "required": ["id", "name", "description", "path", "languages", "recipes"],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the cookbook",
            "pattern": "^[a-z0-9-]+$"
          },
          "name": {
            "type": "string",
            "description": "Display name for the cookbook"
          },
          "description": {
            "type": "string",
            "description": "Brief description of the cookbook"
          },
          "path": {
            "type": "string",
            "description": "Relative path to the cookbook folder"
          },
          "featured": {
            "type": "boolean",
            "description": "Whether this cookbook should be featured",
            "default": false
          },
          "languages": {
            "type": "array",
            "description": "Programming languages supported by this cookbook",
            "items": {
              "type": "object",
              "required": ["id", "name"],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Language identifier (folder name)",
                  "pattern": "^[a-z0-9-]+$"
                },
                "name": {
                  "type": "string",
                  "description": "Display name for the language"
                },
                "icon": {
                  "type": "string",
                  "description": "Emoji icon for the language"
                },
                "extension": {
                  "type": "string",
                  "description": "File extension for runnable examples",
                  "pattern": "^\\.[a-z]+$"
                }
              }
            }
          },
          "recipes": {
            "type": "array",
            "description": "List of recipes in this cookbook",
            "items": {
              "type": "object",
              "required": ["id", "name", "description"],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Recipe identifier (matches markdown filename without extension)",
                  "pattern": "^[a-z0-9-]+$"
                },
                "name": {
                  "type": "string",
                  "description": "Display name for the recipe"
                },
                "description": {
                  "type": "string",
                  "description": "Brief description of what the recipe covers"
                },
                "tags": {
                  "type": "array",
                  "description": "Tags for filtering and categorization",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
