Skip to main content
A skill packages reusable instructions and optional files for agents. You upload it once, attach its ID to agent configs, and the model calls the built-in skill tool when it needs the instructions. Skills are:
  • Lazy — only the name and description enter the model’s context until it loads the skill.
  • Versioned — uploading the same skill again creates a new revision under the same skill ID.
  • Shared — one skill can be granted to multiple projects and attached to many agents.

Upload a skill

Upload a .zip or .tar.gz archive with one top-level directory:
SKILL.md starts with the skill’s name and description:
Write the description as a trigger—“Use when…”—because it helps the model decide when to load the skill.
The examples assume the client, $ORG/orgID, and $PROJ/projectID setup from the quickstart.POST /skills takes multipart form data: an owner and the archive itself. When calling the API directly, send owner as a JSON part (Content-Type: application/json); the SDK and CLI do this for you. The CLI’s --archive takes a .zip or .tar.gz file, or a skill directory that it packs for you:
For a project- or user-owned skill, set the owner accordingly: --owner-kind project --owner-project-id proj_… or --owner-kind user with the CLI, or {"kind": "project", "project_id": "proj_…"} / {"kind": "user"} as the owner.
The owner (org, project, or user) decides who manages the skill and cannot change. A project can attach only skills it owns or has been granted—even skills owned by its organization. Uploading again with the same owner and name creates the next revision: the skl_ ID stays the same and the skr_ revision ID changes. Attached agents resolve the latest revision at each model call, so they do not need to be relaunched.

Update a skill

Each update creates the next revision; the skill’s name cannot change.
POST /skills/{skillID} takes multipart form data with exactly one of:
  • skill_md — replacement SKILL.md text. Every other file in the current revision is kept.
  • archive — a new .zip or .tar.gz that replaces all of the skill’s files.
The CLI has no update command. Running omnara skills create again with the same owner and skill name uploads the next revision.

List, inspect, delete

Each skills page lists the skills owned at that scope; omnara skills list does the same from the terminal. Fetching a skill (omnara skills get {skill-id} or the API) returns skill_md, the full instruction text of its current revision. To delete an owned skill in the dashboard, open its row menu and click Delete, or run omnara skills delete {skill-id}. Deletion removes its revisions and grants, but is blocked with 409 while an active agent config references it.

Grant it to projects

A project can use a skill only if it owns it or holds a grant — org- and user-owned skills must be granted to each project that references them. Grants share without transferring ownership.
The response identifies the grant and target project:
List a skill’s project grants with omnara grant skills list {skill-id} or GET …/grants; revoke one with omnara grant skills delete {skill-id} {grant-id} or DELETE …/grants/{grantID}.To confirm which skills a project can use (the CLI has no equivalent command):
Each result reports whether the project owns the skill (direct) or receives it through a grant.

Attach it to an agent

Reference the skill ID in the config; config creation verifies the project can use it:
In the dashboard’s agent builder, click + in the Skills section and search for a skill to attach it. The search list includes Create skill, first when nothing matches the search and after the matching skills otherwise. It opens the same upload dialog, creates the skills in the project, and attaches them. A created skill replaces an attached skill with the same name. Attaching a skill automatically enables the built-in skill tool. The model sees each skill’s name and description; when it calls the tool, Omnara returns the SKILL.md instructions and attempts to install the supporting files on each attached machine. The instructions still work when no machine is attached or an installation fails. For a complete example you can deploy, which uploads Remotion’s skill folder and attaches it to a video agent, see the video generation agent.
Full schema and playground: Create skill · Update skill · List skills · Skill grants · Project skills.