{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://devrunbook.local/schemas/seed-catalog.schema.json", "title": "DevRunbook Seed Catalog", "type": "object", "additionalProperties": false, "required": ["apiVersion", "kind", "metadata", "playbooks"], "properties": { "apiVersion": {"const": "devrunbook.io/v1alpha1"}, "kind": {"const": "SeedCatalog"}, "metadata": { "type": "object", "additionalProperties": false, "required": ["name", "version", "count", "publishableCount", "notes"], "properties": { "name": {"type": "string", "minLength": 3, "maxLength": 160}, "version": {"type": "string", "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"}, "count": {"type": "integer", "minimum": 1}, "publishableCount": {"type": "integer", "minimum": 0}, "notes": {"type": "string", "minLength": 10, "maxLength": 1000} } }, "playbooks": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "required": ["id", "slug", "title", "category", "summary", "type", "defaultMode", "riskTier", "defaultAutonomy", "priority", "deliveryStatus", "tags", "keyInputs", "doneWhen"], "properties": { "id": {"type": "string", "pattern": "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*)+$", "maxLength": 120}, "slug": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 100}, "title": {"type": "string", "minLength": 3, "maxLength": 120}, "category": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"}, "summary": {"type": "string", "minLength": 20, "maxLength": 400}, "type": {"enum": ["quick", "guided", "run-pack"]}, "defaultMode": {"enum": ["inspect", "plan", "guided", "execute", "recovery"]}, "riskTier": {"enum": ["low", "moderate", "high", "critical"]}, "defaultAutonomy": {"enum": ["observe", "diagnose", "plan", "implement", "verify", "repair"]}, "priority": {"enum": ["P0", "P1", "P2"]}, "deliveryStatus": {"enum": ["publishable-package", "authored-backlog", "concept-backlog"]}, "tags": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "minLength": 1, "maxLength": 80}}, "keyInputs": {"type": "array", "minItems": 1, "maxItems": 10, "items": {"type": "string", "minLength": 2, "maxLength": 100}}, "doneWhen": {"type": "array", "minItems": 1, "maxItems": 12, "items": {"type": "string", "minLength": 8, "maxLength": 500}} } } } } }