{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developer.cotrackpro.com/data/catalog.schema.json",
  "title": "CoTrackPro platform catalog (v1)",
  "description": "Machine-readable contract for the CoTrackPro platform catalog. Educational and informational only — not legal or clinical advice. The roles, workflows, and artifacts are illustrative example compositions, not a prescriptive legal process.",
  "type": "object",
  "required": [
    "name",
    "version",
    "counts",
    "catalog"
  ],
  "properties": {
    "$schema": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "version": {
      "const": "1.0"
    },
    "license": {
      "type": "string"
    },
    "source": {
      "type": "string",
      "format": "uri"
    },
    "disclaimer": {
      "type": "string"
    },
    "counts": {
      "type": "object",
      "additionalProperties": {
        "type": "integer",
        "minimum": 0
      }
    },
    "catalog": {
      "type": "object",
      "required": [
        "artifacts",
        "roles",
        "workflows",
        "skills",
        "knowledge",
        "scenarios",
        "promptModules",
        "safety"
      ],
      "properties": {
        "artifacts": {
          "type": "object",
          "required": [
            "count",
            "items"
          ],
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 0
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object"
              },
              "description": "Artifact metadata: name, title, dataSensitivity, safetyFields, safetyRelevant."
            }
          }
        },
        "roles": {
          "type": "object",
          "required": [
            "count",
            "items"
          ],
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 0
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object"
              },
              "description": "Roles: id, composes (skills), promptModules (guardrails), safetyLevel, dataSensitivity."
            }
          }
        },
        "workflows": {
          "type": "object",
          "required": [
            "count",
            "items"
          ],
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 0
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object"
              },
              "description": "Workflows: id, name, trigger, safetyLevel, steps[]."
            }
          }
        },
        "skills": {
          "type": "object",
          "required": [
            "count",
            "items"
          ],
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 0
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object"
              },
              "description": "Skills: name, kind, promptModules, chainsWith, dataSensitivity, safetyLevel."
            }
          }
        },
        "knowledge": {
          "type": "object",
          "required": [
            "count",
            "items"
          ],
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 0
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object"
              },
              "description": "Knowledge files: name, title, summary, relatedModules."
            }
          }
        },
        "scenarios": {
          "type": "object",
          "required": [
            "count",
            "items"
          ],
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 0
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object"
              },
              "description": "Worked scenarios."
            }
          }
        },
        "promptModules": {
          "type": "object",
          "required": [
            "count",
            "items"
          ],
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 0
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object"
              },
              "description": "Guardrail prompt modules: name, category, injectionPoint."
            }
          }
        },
        "ecosystem": {
          "type": "object",
          "required": [
            "count",
            "items"
          ],
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 0
            },
            "items": {
              "type": "array",
              "items": {
                "type": "object"
              },
              "description": "Ecosystem repositories."
            }
          }
        },
        "safety": {
          "type": "object",
          "description": "The child-centered / trauma-informed taxonomy across the catalog."
        }
      }
    }
  }
}
