Attach domain expertise to your agent.
Skills add domain expertise to an Agent. A Skill is a structured set of instructions and procedures that makes an Agent more capable and reliable on a specific kind of task.
Skills use a two-layer model of "skill shell + immutable version snapshots":
A Skill is uploaded as a
Response:
Use
Append a new version to an existing skill:
Unpinned bindings always use the latest version; bindings pinned to a numeric version keep using that exact snapshot.
Response:
Q: How are Skills different from the Agent
Endpoints
| Method | Path | Description |
|---|---|---|
POST | /api/v1/cloud/skills | Create a skill (with its first version) |
GET | /api/v1/cloud/skills | List skills |
GET | /api/v1/cloud/skills/{skill_id} | Get a skill |
PUT | /api/v1/cloud/skills/{skill_id} | Update a skill ⚠️ Deprecated |
DELETE | /api/v1/cloud/skills/{skill_id} | Delete a skill |
POST | /api/v1/cloud/skills/{skill_id}/versions | Create a skill version |
GET | /api/v1/cloud/skills/{skill_id}/versions | List skill versions |
GET | /api/v1/cloud/skills/{skill_id}/versions/{version} | Get a skill version |
GET | /api/v1/cloud/skills/{skill_id}/versions/{version}/content | Download skill version content |
DELETE | /api/v1/cloud/skills/{skill_id}/versions/{version} | Delete a skill version |
Versioning model
Skills use a two-layer model of "skill shell + immutable version snapshots":
- Skill shell: carries content-independent attributes such as
id,display_title,source,metadata, and alatest_versionpointer. - Skill version: each version is an immutable, complete content snapshot. The version identifier is an epoch-microsecond string taken at creation time (e.g.
"1759178010641129"), generated by the server and not user-assignable. - Updating content = appending a new version via
POST /skills/{skill_id}/versions; older versions remain unchanged and can be fetched, downloaded, and deleted individually. - Deleting the latest version makes
latest_versionfall back to the next-newest version; it becomesnullwhen all versions are deleted. - The skill
name(fromSKILL.mdfrontmatter) must be consistent across all versions and cannot change after creation.
What Skills Do
- Inject domain knowledge — give a generalist Agent specialized abilities (code review, document generation, etc.).
- Standardize procedures — ensure the Agent follows consistent steps and produces consistent output.
- Reusable — define once and share across multiple Agents.
Skill File Layout
A Skill is uploaded as a .zip archive (or a bare file tree via multipart) with a single top-level directory whose name equals the name in SKILL.md:
SKILL.md is the core file, written as YAML frontmatter plus Markdown:
Create a Skill
curl Example
latest_version is generated by the server as an epoch-microsecond string taken at creation time. The version value in SKILL.md frontmatter (e.g. 1.0.0) is informational only and is not the server-side version.Bind to an Agent
Use POST to update the Agent's skills field. Each binding element accepts an optional version field: omit it or pass "latest" to dynamically track the newest version; pass a numeric timestamp to pin that version (existence is validated at write time; unknown versions return 400).
Versioning
Append a new version to an existing skill:
Get a Skill
List Skills
Authoring Tips
- State the trigger — write the
descriptionso it's clear when this Skill should be used. - Be concrete in steps — describe precise actions, not vague guidance.
- Document pitfalls — help the Agent avoid common mistakes.
- Provide validation — tell the Agent how to confirm the task is complete.
FAQ
Q: How are Skills different from the Agent system prompt? A: system is general guidance that applies to every task. A Skill is an on-demand expertise module the Agent activates based on the task at hand.
Q: How many Skills can an Agent reference? A: There's no hard limit, but keep it under 10 to maintain predictable behavior.
Q: When will Skills go GA? A: The feature is in M2. Reach out if you want early access; broader rollout is coming in a later release.
Q: Is there a size limit on the zip? A: The archive must be 50 MB or less, and the uncompressed content must also be 50 MB or less.