Custom Skills

Custom skills are reusable playbooks: markdown SKILL.md files an agent loads on demand when a task matches. Each is a short description (when to use it) plus a markdown body (the steps). The agent sees every visible skill's name + description and pulls in the full body only when it's relevant, so you can teach a repeatable workflow once and have it apply across runs.

How skills work

  1. You author a skill via the API/SDK (or an agent authors one itself during a run)
  2. At the start of each run, the skills visible to that agent are materialized into its workspace
  3. When the task matches a skill's description, the agent loads the body and follows it

A skill created mid-run applies from the next run (skills load at process start), just like memories. v1 is markdown-only. A skill guides the agent; every real tool call it suggests still goes through the normal permission gate.

Scope

A skill is scoped like memory:

  • account (default): visible to all your agents.
  • teammate: visible to one agent only (pass scope="teammate" and teammate_id).

When an account skill and an agent-scoped skill share a slug, the agent-scoped one wins for that agent.

Create a skill

Python

The slug (the SKILL.md handle) is derived from name server-side and stays stable across renames. To scope a skill to one agent, pass scope="teammate" and teammate_id:

Python

Manage skills

The slug is immutable; rename, edit the body, disable (stops loading it without deleting), or delete:

Python

The source field is "user" for skills you author, or "agent" for skills an agent authored itself (shown with a "Created by agent" badge in the app).

Per-end-user skills (multi-tenancy)

Pass user_id to scope a skill to one of your end-users. Isolation is strict: an end-user's runs see only that end-user's skills, never your account-level ones. When you pass user_id to get/update/delete, it must match the skill's end-user or you get a 404.

Python

Agent-authored skills (built-in tool)

When an agent notices a workflow it'll need again, it can codify it as a skill mid-run via its built-in create_skill tool: accountable self-improvement, the same shape as saved memories. Agent-authored skills are not auto-approved. In approval mode the owner approves the create_skill call like any tool, and every agent-authored skill is editable, disable-able, and deletable in Settings → Apps (it carries source: "agent"). The skill applies from the agent's next run.

Limits
  • Name: max 200 characters
  • Description: max 500 characters (this is what tells an agent the skill is relevant; keep it specific and trigger-oriented)
  • Body: max 20,000 characters (markdown only in v1, no bundled scripts/assets)
  • Per account: max 50 skills per user_id scope
  • Scoping: account (all agents) or teammate (one agent); strictly isolated per user_id

Next: Memories · Custom tools · Users

Was this page helpful?