Skills
Skills are reusable, versioned capabilities that agents can invoke. They encapsulate a specific action (e.g. “create-jira-ticket”, “run-security-scan”, “deploy-to-staging”) with a typed input/output schema. Access via Automations → Skills.
What is a skill?
A skill is a self-contained unit of work with:
- Name and slug — human-readable identifier
- Input schema — typed parameters the skill accepts
- Output schema — structured result the skill returns
- Implementation — the logic (tool calls, API requests, code execution)
- Permitted connectors — which integrations the skill can access
Skills are the building blocks used by agents and flows. An agent’s permitted_tools list references skills by ID.
Creating a skill
Via the UI
- Navigate to Automations → Skills and click + Create.
- Fill in the builder form: name, description, input/output schema.
- Define the implementation (tool sequence or code).
- Validate with a dry-run test input.
- Publish.
Via API
POST /entities
{
"kind": "skill",
"name": "Create Jira Ticket",
"spec": {
"slug": "create-jira-ticket",
"inputs": [
{ "key": "project", "type": "string", "required": true },
{ "key": "summary", "type": "string", "required": true },
{ "key": "priority", "type": "select", "options": ["low","medium","high"] }
],
"outputs": [
{ "key": "ticketKey", "type": "string" }
],
"connectors": ["jira"]
}
}Skill kinds
| Kind | Description |
|---|---|
| Core | Built-in skills shipped with the platform (read-only) |
| Custom | Skills you create from scratch |
| Forked | Skills forked from core or community, with your modifications |
Validation
Before publishing, validate a skill with a sample input:
POST /entities/:id/validate
{ "sampleInput": { "project": "DEMO", "summary": "Test" } }
→ { "ok": true, "details": { ... } }Versioning
Skills are immutable once published. Each publish creates a new version:
POST /entities/:id/publish
GET /entities/:id/versionsAgents and flows reference a specific version. In-flight runs keep their pinned version.
Linkage
See which agents and flows reference a skill:
GET /entities/:id/linkage
→ { "references": [...], "referencedBy": [...] }A2A skill scoping
When issuing Agent-to-Agent (A2A) tokens, you scope them to specific skills. A token scoped to skill X cannot invoke skill Y:
POST /a2a/tokens
{ "agentId": "uuid", "skills": ["skill-id"], "ttlSeconds": 3600 }See also: Agents, Flows, Connectors, Build an MCP