{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://crank.local/schemas/capability-inventory.schema.json", "title": "Crank Community Capability Inventory", "type": "object", "additionalProperties": false, "required": [ "schema_version", "product", "flows" ], "properties": { "schema_version": { "const": 1 }, "product": { "const": "crank-community" }, "flows": { "type": "array", "minItems": 1, "maxItems": 10000, "items": { "$ref": "#/$defs/flow" } } }, "$defs": { "flow": { "type": "object", "additionalProperties": false, "required": [ "id", "type", "requirements", "user_outcome", "owner", "status", "capabilities", "evidence" ], "properties": { "id": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" }, "type": { "enum": [ "ui", "api", "mcp" ] }, "requirements": { "type": "array", "minItems": 1, "maxItems": 64, "uniqueItems": true, "items": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^FR-[1-9][0-9]*$" } }, "user_outcome": { "type": "string", "minLength": 1, "maxLength": 4096, "pattern": "[\\s\\S]*\\S[\\s\\S]*" }, "owner": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "[\\s\\S]*\\S[\\s\\S]*" }, "status": { "enum": [ "implemented", "planned", "gap", "blocked" ] }, "capabilities": { "type": "array", "minItems": 1, "maxItems": 16, "uniqueItems": true, "items": { "enum": [ "tools", "resources", "prompts", "tasks", "load_runs" ] } }, "evidence": { "$ref": "#/$defs/evidence" }, "notes": { "type": "string", "maxLength": 4096 } } }, "evidence": { "type": "object", "additionalProperties": false, "required": [ "automated", "manual" ], "properties": { "automated": { "$ref": "#/$defs/evidencePaths" }, "manual": { "$ref": "#/$defs/evidencePaths" } } }, "evidencePaths": { "type": "array", "minItems": 1, "maxItems": 64, "uniqueItems": true, "items": { "type": "string", "minLength": 1, "maxLength": 1024, "pattern": "^(?!/)(?!.*//)(?!.*(?:^|/)\\.\\.?($|/))(?!.*\\\\).+$" } } } }