Skills
Reusable agent playbooks.
17 actions. Each is callable by the agent as a tool, over HTTP via /api/invoke, and (usually) from a UI page.
skills.list
GET
List installed skills (Anthropic-compatible). Filter by scope, status, project, or mission.
- AI tool:
skills_list - API:
GET /api/invoke/skills.list
Input
| Field | Type | Required | Description |
|---|---|---|---|
scope |
"workspace" | "project" | "mission" | "actor" | — | |
status |
"draft" | "published" | "archived" | — | |
projectId |
string | — | |
missionId |
string | — | |
actorId |
string | — | |
limit |
integer | — | |
offset |
integer | — | |
orderBy |
string | — | |
orderDir |
"asc" | "desc" | — | |
q |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"workspace",
"project",
"mission",
"actor"
]
},
"status": {
"type": "string",
"enum": [
"draft",
"published",
"archived"
]
},
"projectId": {
"type": "string",
"minLength": 1
},
"missionId": {
"type": "string",
"minLength": 1
},
"actorId": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"orderBy": {
"type": "string"
},
"orderDir": {
"type": "string",
"enum": [
"asc",
"desc"
]
},
"q": {
"type": "string"
}
}
}skills.get
GET
Get a skill by slug or id — returns the full body + files.
- AI tool:
skills_get - API:
GET /api/invoke/skills.get
Input
| Field | Type | Required | Description |
|---|---|---|---|
slug |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"slug": {
"type": "string"
}
},
"required": [
"slug"
]
}skills.create
POST · mutating
Author a new skill (markdown body + frontmatter + optional files).
- AI tool:
skills_create - API:
POST /api/invoke/skills.create
Input
| Field | Type | Required | Description |
|---|---|---|---|
slug |
string | yes | |
name |
string | yes | |
description |
string | yes | |
body |
string | — | |
frontmatter |
object | — | |
allowedTools |
string[] | — | |
dependsOn |
string[] | — | |
triggers |
string[] | — | |
scope |
"workspace" | "project" | "mission" | "actor" | — | |
projectId |
union | — | |
missionId |
union | — | |
actorId |
union | — | |
status |
"draft" | "published" | "archived" | — | |
license |
union | — | |
source |
"manual" | "imported" | "anthropic-official" | "community" | "agent-authored" | "extension" | — | |
providingExtensionId |
union | — | |
createdBy |
union | — | |
files |
object[] | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"body": {
"default": "",
"type": "string"
},
"frontmatter": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"allowedTools": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"dependsOn": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"triggers": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"scope": {
"default": "workspace",
"type": "string",
"enum": [
"workspace",
"project",
"mission",
"actor"
]
},
"projectId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"missionId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"actorId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"status": {
"default": "draft",
"type": "string",
"enum": [
"draft",
"published",
"archived"
]
},
"license": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"source": {
"default": "manual",
"type": "string",
"enum": [
"manual",
"imported",
"anthropic-official",
"community",
"agent-authored",
"extension"
]
},
"providingExtensionId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"createdBy": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"kind": {
"default": "reference",
"type": "string"
}
},
"required": [
"path"
]
}
}
},
"required": [
"slug",
"name",
"description"
]
}skills.import
POST · mutating
Import a skill from pasted SKILL.md (ClawHub Phase 0 — manual paste, no registry).
- AI tool:
skills_import - API:
POST /api/invoke/skills.import
Input
| Field | Type | Required | Description |
|---|---|---|---|
skillMd |
string | yes | Full SKILL.md contents (YAML frontmatter + markdown body). |
slug |
string | — | Override slug; defaults to frontmatter name or a slugified title. |
files |
object[] | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"skillMd": {
"type": "string",
"minLength": 1,
"description": "Full SKILL.md contents (YAML frontmatter + markdown body)."
},
"slug": {
"description": "Override slug; defaults to frontmatter `name` or a slugified title.",
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"kind": {
"default": "reference",
"type": "string"
}
},
"required": [
"path"
]
}
}
},
"required": [
"skillMd"
]
}skills.catalog.search
GET
Search the live + curated external skills registry.
- AI tool:
skills_catalog_search - API:
GET /api/invoke/skills.catalog.search
Input
| Field | Type | Required | Description |
|---|---|---|---|
q |
string | — | |
limit |
integer | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"q": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
}
}skills.clawhub.search
GET
Search or browse the ClawHub public registry (proxied).
- AI tool:
skills_clawhub_search - API:
GET /api/invoke/skills.clawhub.search
Input
| Field | Type | Required | Description |
|---|---|---|---|
q |
string | — | |
limit |
integer | — | |
sort |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"q": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sort": {
"type": "string"
}
}
}skills.clawhub.preview
GET
Preview a ClawHub skill before install (metadata + file list).
- AI tool:
skills_clawhub_preview - API:
GET /api/invoke/skills.clawhub.preview
Input
| Field | Type | Required | Description |
|---|---|---|---|
slug |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"slug": {
"type": "string"
}
},
"required": [
"slug"
]
}skills.clawhub.import
POST · mutating
Import a skill from ClawHub into this workspace.
- AI tool:
skills_clawhub_import - API:
POST /api/invoke/skills.clawhub.import
Input
| Field | Type | Required | Description |
|---|---|---|---|
slug |
string | yes | |
publish |
boolean | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"publish": {
"type": "boolean"
}
},
"required": [
"slug"
]
}skills.export
GET
Export a skill as SKILL.md + bundled files (ClawHub publish-back).
- AI tool:
skills_export - API:
GET /api/invoke/skills.export
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}skills.clawhub.check_updates
GET
Check whether an imported ClawHub skill has a newer registry version.
- AI tool:
skills_clawhub_check_updates - API:
GET /api/invoke/skills.clawhub.check_updates
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}skills.run
POST · mutating
Run an imported skill in the cloud sandbox (instruction-only MVP).
- AI tool:
skills_run - API:
POST /api/invoke/skills.run
Input
| Field | Type | Required | Description |
|---|---|---|---|
skillId |
string | yes | |
input |
object | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"skillId": {
"type": "string",
"minLength": 1
},
"input": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"skillId"
]
}skills.run_get
GET
Get a cloud skill run record.
- AI tool:
skills_run_get - API:
GET /api/invoke/skills.run_get
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}skills.runs.list
GET
List recent cloud runs for a skill.
- AI tool:
skills_runs_list - API:
GET /api/invoke/skills.runs.list
Input
| Field | Type | Required | Description |
|---|---|---|---|
skillId |
string | yes | |
limit |
integer | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"skillId": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"skillId"
]
}skills.attach
POST · mutating
Attach a skill to a mission, project, actor, or workflow.
- AI tool:
skills_attach - API:
POST /api/invoke/skills.attach
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
missionId |
union | — | |
workflowId |
union | — | |
actorId |
union | — | |
projectId |
union | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"missionId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"workflowId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"actorId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"projectId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
}
},
"required": [
"id"
]
}skills.update
PATCH · mutating
Update a skill (creates a new version row if body or frontmatter changes).
- AI tool:
skills_update - API:
PATCH /api/invoke/skills.update
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
patch |
object | yes | |
notes |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"patch": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"body": {
"default": "",
"type": "string"
},
"frontmatter": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"allowedTools": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"dependsOn": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"triggers": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"scope": {
"default": "workspace",
"type": "string",
"enum": [
"workspace",
"project",
"mission",
"actor"
]
},
"projectId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"missionId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"actorId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"status": {
"default": "draft",
"type": "string",
"enum": [
"draft",
"published",
"archived"
]
},
"version": {
"default": 1,
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"license": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"source": {
"default": "manual",
"type": "string",
"enum": [
"manual",
"imported",
"anthropic-official",
"community",
"agent-authored",
"extension"
]
},
"providingExtensionId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"createdBy": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"createdAt": {},
"updatedAt": {},
"publishedAt": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
},
"notes": {
"type": "string"
}
},
"required": [
"id",
"patch"
]
}skills.publish
POST · mutating
Move a skill from draft → published so it's eligible for runtime retrieval.
- AI tool:
skills_publish - API:
POST /api/invoke/skills.publish
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}skills.delete
DELETE · mutating
Delete a skill (and cascade its versions / files / invocations).
- AI tool:
skills_delete - API:
DELETE /api/invoke/skills.delete
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}