Endpoints
| Method | Path | Description |
|---|---|---|
POST | /skills | Create a skill |
GET | /skills | List skills |
GET | /skills/{skill_id} | Get a skill |
PATCH | /skills/{skill_id} | Update a skill |
DELETE | /skills/{skill_id} | Delete a skill |
GET | /skills/{skill_id}/versions | List version history |
POST | /skills/{skill_id}/rollback | Roll back to a previous version |
Create a skill
POST /skills
Request body:
| Field | Required | Type | Description |
|---|---|---|---|
name | Yes | string | Kebab-case identifier, 1–64 characters (e.g. power-budget-analysis) |
description | Yes | string | What the skill does, 1–1024 characters |
power_command | Yes | string | Slash-command name Atlas recognizes. Kebab-case, no leading slash |
instructions | Yes | string | The procedure Atlas follows when this skill is active (markdown supported) |
scope | No | string | user (personal, default) or global (org-wide) |
group_id | No | UUID | Group to scope this skill to (for group-scoped skills) |
| Field | Type | Nullable | Description |
|---|---|---|---|
uuid | UUID | No | Skill identifier |
name | string | No | Kebab-case name |
description | string | No | Skill description |
scope | string | No | user or global |
status | string | No | Approval status |
power_command | string | No | Command identifier |
instructions | string | No | Skill content |
current_version | integer | No | Current version number |
pending_version | integer | Yes | Version pending approval, if any |
created_by | string | No | Creator email |
group_id | UUID | Yes | Associated group |
job_id | UUID | Yes | Associated job, if any |
created_at | string | No | ISO 8601 creation timestamp |
updated_at | string | No | ISO 8601 last-update timestamp |
List skills
GET /skills
Query parameters:
| Parameter | Type | Description |
|---|---|---|
scope | string | Filter by scope: user or global |
status | string | Filter by approval status |
search | string | Search by name or power command |
{"items": [...], "count": N} where each item is a skill object with the same fields as the create response.
Get a skill
GET /skills/{skill_id}
Example request:
Delete a skill
DELETE /skills/{skill_id}
Example request:
Update a skill
PATCH /skills/{skill_id}
All fields are optional. Each update creates a new version.
| Field | Type | Description |
|---|---|---|
name | string | New kebab-case name |
description | string | Updated description |
scope | string | user or global |
power_command | string | Updated command identifier |
instructions | string | Updated skill content |
change_summary | string | Notes describing what changed in this version |
Version history and rollback
GET /skills/{skill_id}/versions
Returns all versions of a skill.
| Field | Type | Description |
|---|---|---|
uuid | UUID | Version identifier |
version_number | integer | Version number (1-indexed) |
name | string | Skill name at this version |
description | string | Description at this version |
scope | string | Scope at this version |
power_command | string | Power command at this version |
instructions | string | Skill content at this version |
status | string | Approval status |
created_by | string | Author email |
created_at | string | ISO 8601 creation timestamp |
change_summary | string | Notes describing what changed |
POST /skills/{skill_id}/rollback
Rolls back to a previous version.
Request body:
| Field | Required | Type | Description |
|---|---|---|---|
version_number | Yes | integer | Version to roll back to |

