{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://yao.local/schemas/skillops-opportunity.schema.json",
  "title": "SkillOps Opportunity",
  "type": "object",
  "required": [
    "opportunity_id",
    "pattern_id",
    "title",
    "opportunity_type",
    "action_type",
    "decision",
    "priority",
    "score",
    "risk_level",
    "requires_approval",
    "write_allowed_without_approval",
    "evidence_count",
    "target_files",
    "verification_commands"
  ],
  "properties": {
    "opportunity_id": {
      "type": "string",
      "pattern": "^skillops-[a-f0-9]{10}$"
    },
    "proposal_id": {
      "type": "string"
    },
    "pattern_id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "opportunity_type": {
      "type": "string"
    },
    "action_type": {
      "type": "string",
      "enum": [
        "add_eval",
        "agents_update",
        "patch_existing_skill",
        "report_only"
      ]
    },
    "decision": {
      "type": "string",
      "enum": [
        "ready_for_approval_review",
        "proposal_review",
        "observe_more_evidence",
        "report_only",
        "no_action"
      ]
    },
    "priority": {
      "type": "string",
      "enum": [
        "high",
        "medium",
        "low"
      ]
    },
    "score": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "score_reasons": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "policy_reason": {
      "type": "string"
    },
    "risk_level": {
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high"
      ]
    },
    "requires_approval": {
      "type": "boolean"
    },
    "write_allowed_without_approval": {
      "const": false
    },
    "evidence_count": {
      "type": "integer",
      "minimum": 0
    },
    "target_files": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "verification_commands": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": true
}
