aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
226 lines (225 loc) • 6.78 kB
JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://aiwg.io/schemas/ops/v1/ops-playbook.schema.json",
"title": "OpsPlaybook",
"description": "DAG of capability invocations against inventory targets.",
"type": "object",
"required": ["apiVersion", "kind", "metadata", "spec"],
"additionalProperties": false,
"properties": {
"apiVersion": {
"const": "ops.aiwg.io/v1",
"description": "API version for the ops framework."
},
"kind": {
"const": "OpsPlaybook",
"description": "Resource kind."
},
"metadata": {
"$ref": "#/definitions/metadata"
},
"spec": {
"type": "object",
"description": "Playbook specification defining inventory, targets, and execution steps.",
"required": ["inventory", "targets", "steps"],
"additionalProperties": false,
"properties": {
"inventory": {
"type": "string",
"description": "Reference to an OpsInventory resource name."
},
"targets": {
"type": "object",
"description": "Target selection from inventory.",
"additionalProperties": false,
"properties": {
"groups": {
"type": "array",
"description": "Inventory groups to target.",
"items": {
"type": "string"
}
},
"hosts": {
"type": "array",
"description": "Specific hosts to target.",
"items": {
"type": "string"
}
}
}
},
"vars": {
"type": "object",
"description": "Playbook-level variables available to all steps.",
"additionalProperties": true
},
"steps": {
"type": "array",
"description": "Ordered list of steps forming the execution DAG.",
"items": {
"$ref": "#/definitions/step"
}
}
}
},
"status": {
"type": "object",
"description": "Runtime status (populated by the executor, not authored).",
"additionalProperties": false,
"properties": {
"lastApplied": {
"type": "string",
"description": "ISO 8601 timestamp of the last execution.",
"format": "date-time"
},
"conditions": {
"type": "array",
"description": "Status conditions from the last execution.",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"status": {
"type": "string"
},
"reason": {
"type": "string"
},
"message": {
"type": "string"
},
"lastTransitionTime": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}
},
"definitions": {
"metadata": {
"type": "object",
"description": "Standard resource metadata.",
"required": ["name"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Unique name for this resource."
},
"namespace": {
"type": "string",
"description": "Optional namespace for organizational scoping."
},
"labels": {
"type": "object",
"description": "Key-value labels for filtering and selection.",
"additionalProperties": {
"type": "string"
}
},
"annotations": {
"type": "object",
"description": "Key-value annotations for non-identifying metadata.",
"additionalProperties": {
"type": "string"
}
}
}
},
"step": {
"type": "object",
"description": "A single step in the playbook DAG.",
"required": ["id"],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"description": "Unique step identifier within this playbook."
},
"capability": {
"type": "string",
"description": "Reference to an OpsCapability resource name."
},
"kind": {
"type": "string",
"description": "Inline step kind (e.g., gate, extension) when not referencing a capability."
},
"depends_on": {
"type": "array",
"description": "Step IDs that must complete before this step runs.",
"items": {
"type": "string"
}
},
"inputs": {
"type": "array",
"description": "Input bindings for this step.",
"items": {
"type": "object",
"required": ["name"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Input parameter name."
},
"value": {
"description": "Literal value for this input."
},
"from": {
"type": "string",
"description": "Reference to a previous step output (e.g., 'step-id.output-name')."
}
}
}
},
"outputs": {
"type": "array",
"description": "Outputs captured from this step for downstream use.",
"items": {
"type": "object",
"required": ["name"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Output name to capture."
}
}
}
},
"retry": {
"type": "object",
"description": "Retry policy for this step.",
"additionalProperties": false,
"properties": {
"limit": {
"type": "integer",
"description": "Maximum number of retry attempts.",
"minimum": 0
},
"backoff": {
"type": "string",
"description": "Backoff strategy (e.g., 'linear', 'exponential')."
},
"on": {
"type": "string",
"description": "Condition that triggers a retry (e.g., 'failure', 'timeout')."
}
}
},
"spec": {
"type": "object",
"description": "Inline spec when using kind instead of capability reference.",
"additionalProperties": true
}
}
}
}
}