Author a custom skill in 10 minutes
This walks through the canonical flow: scaffold a SKILL.md from the CLI, fill it in, upload, assign to an agent, invoke, and iterate. No browser, no API key required (for the offline path).1. Scaffold
Pick a slug (kebab-case) and a category, then runinit:
./invoice-classifier/SKILL.md with the canonical body
sections and frontmatter. It is fully offline — no network round-trip,
no credential needed.
2. Edit
Open the scaffold in your editor. Three things to focus on: Description (frontmatter) — the LLM uses this to decide if the skill is relevant. Make the trigger phrase concrete:## When to use — restate the trigger and add at least one near-miss
the skill should NOT activate on. Without a negative example the agent
over-fires.
## Steps — concrete, ordered actions:
## Output format — be precise. The LLM follows whatever shape you
spell out:
3. Upload
scan_status: CLEAN, spdx_license: MIT, and
maturity: COMMUNITY.
4. Assign
For one agent:- Renders the skill body into the agent’s
[SKILLS AVAILABLE]system-prompt block. - Materialises
SKILL.mdat the right path for whichever CLI the agent uses (.claude/skills/invoice-classifier/SKILL.md,.opencode/skills/..., etc.).
5. Invoke
Trigger the skill from the user side viacrewship run:
--dry-run to inspect the assembled prompt without spending tokens:
6. Iterate
Pull the current SKILL.md back from the registry, edit, re-upload:id and
preserves every agent_skills row, so assigned agents pick up the new
body on their next run with no re-assignment needed.
When to bump the version
Theversion frontmatter field is currently informational — the upsert
is “last write wins” by slug regardless of version. Bumping it is still
useful for human reviewers. Plans for a future release: surface a
warning when an import would replace a higher version with a lower one.
When to use skill create instead
If you have an Anthropic API key (workspace credential type=API_KEY,
not OAuth), you can ask the platform to draft the SKILL.md for you:
skill-creator system
prompt against Sonnet. Output goes straight into the registry with
source=GENERATED. Use this for first drafts, then skill export to
edit + iterate normally.
If you don’t have an API key, or you want the agents themselves to capture
the workflows they discover, see
Agent-authored skills — the agent writes
the SKILL.md with its own runtime model (no API key) and it lands in a
review queue instead of going live directly.