Agent-authored skills
A skill is procedural memory for a crew: a reusable playbook the agent loads when a request matches its trigger. Most skills are written by operators (see Author a Skill). But an agent can also author a skill itself — after it works out a non-trivial, repeatable workflow, it captures the exact steps (and the pitfalls it hit) as aSKILL.md so the whole crew can reuse it next time.
Unlike crewship skill create, this needs no Anthropic API key: the
agent writes the SKILL.md with its own runtime model, so it works on
OAuth-only workspaces. And unlike a manual import, an agent-authored
skill is never made live directly — it is staged for human review
first.
Authoring is open to any agent. Promotion is the gate: a MANAGER+
reviews and approves before the skill ships to the crew.
The lifecycle
- Author. The agent POSTs a complete
SKILL.mdto its sidecar athttp://localhost:9119/skills/author. The crew and workspace are taken from the sidecar’s identity, so an agent can only stage into its own crew’s namespace. - Stage. The document is validated (frontmatter), injection-scanned, and written to the crew’s staging area. It does not enter the live registry yet.
- Review. The proposal appears in the inbox as a blocking item visible to MANAGER, ADMIN, and OWNER. Approve or reject it with one click — or from the CLI.
- Publish. On approval the skill is imported and tagged
source=GENERATED, so it shows up in the Generated tab of the Skills browser with the agent-origin badge. Rejecting discards the staged file.
How an agent authors a skill
Every agent’s system prompt documents the authoring tool and the houseSKILL.md standards. The agent is told to offer to save a skill after it
finishes a complex task the crew is likely to repeat (and to skip trivial
one-liners or anything secret). When it does, it calls the sidecar:
content field is the full SKILL.md — YAML frontmatter plus the
markdown body. The same format rules apply as for any skill (see
Skill format); the most important is a tight
description that starts with a trigger phrase like Use when ….
Reviewing a proposal
In the inbox (UI)
Agent-authored proposals land in the inbox as a blocking “Skill proposed for review” item. Open it and choose Approve or Reject. Approving promotes the stagedSKILL.md into the crew’s
registry; the inbox item then resolves and leaves the queue. See the
Inbox guide for how the inbox surfaces actionable items.
From the CLI
The same staging area is driven bycrewship skill proposed. The --crew
flag takes a crew id (not a slug); grab it from
crewship crew list --format json:
[SKILLS AVAILABLE] block on the next run (see
Author a Skill → Assign).
Two other ways skills get generated
Agent authoring sits alongside two related paths, all of which land in the same review queue or theGENERATED source:
| Path | Who triggers it | Needs API key? | Review |
|---|---|---|---|
| Agent authoring (this page) | the agent, from real work | No | Inbox / skill proposed |
| Memory→skills bridge | the consolidator, from high-confidence learned rules | No | Inbox / skill proposed |
skill create | an operator, on demand | Yes (type=API_KEY) | None — lands live directly |
Why a distinct origin
Skills approved from the review queue are taggedsource=GENERATED rather
than CUSTOM. That keeps the catalog honest: a reviewer can tell at a
glance which skills were machine-originated (by an agent or promoted from
memory) versus hand-written, and the Generated tab filters to exactly
those. Plain operator imports stay CUSTOM; re-importing an existing
skill preserves its original origin.