Tutorial: Author your own skill
The Author stage is where you give back. You have used Skillsmith to find and install other people's skills; now you scaffold, validate, and publish your own. The end-to-end path is CLI-led — that is intentional: authoring is filesystem-heavy, and the CLI is the cleanest tool for the job.
These tutorials show Skillsmith in Claude Code. For installation in your preferred runtime (Cursor, Continue, Copilot, Windsurf), see Getting Started.
What you will do
- Scaffold a new skill directory from a template
- Edit SKILL.md to define trigger phrases and instructions
- Validate the structure before publishing
- Publish the skill to the Skillsmith registry
- Generate a companion subagent if your skill needs one
- Convert an existing prompt into a skill (transform)
- Scaffold a custom MCP server for skills that need backend logic
The six author subcommands
| Command | Purpose |
|---|---|
skillsmith create <name> | Full scaffold for skills you plan to publish (CHANGELOG, behavioral classification, license) |
skillsmith author init <name> | Lighter scaffold for in-project skills that live alongside your codebase |
skillsmith author validate <path> | Check frontmatter, required fields, and file structure before publishing |
skillsmith author publish <path> | Generate a checksum manifest and submit to the registry |
skillsmith author subagent <path> | Generate a companion Claude Code subagent that drives the skill programmatically |
skillsmith author transform <input> | Convert an existing prompt or instructions document into a skill |
skillsmith author mcp-init <name> | Scaffold a custom MCP server that the skill calls into |
Skills follow Anthropic's SKILL.md format and work in any MCP-capable runtime. The author tooling itself is universal; we use Claude Code below only because it is the most common runtime for testing your skill once it is scaffolded.
Step 1 — Choose your scaffold
create and author init overlap; the difference is destination and depth.
| Command | Output location | Best for |
|---|---|---|
skillsmith create <name> | ~/.claude/skills/<name>/ | Skills you plan to share or publish. Full publishing structure. |
skillsmith author init <name> | Current working directory | In-project skills that live alongside your codebase. Lighter scaffold. |
Scaffolding interactively
Run this in your terminal:
skillsmith create my-awesome-skill The CLI prompts for description, author, category, skill type, and behavioral classification. Hit enter on defaults if you are unsure; everything is editable in the generated SKILL.md.
Scaffolding non-interactively
For scripted scaffolding (CI, onboarding scripts):
skillsmith create my-awesome-skill \
--description "Automates code review checklists" \
--author myusername \
--category development \
--type basic \
--behavior guided
Pass --dry-run to preview the scaffold output without writing files.
Step 2 — Edit SKILL.md
The scaffold writes a SKILL.md with TODO markers. The two fields that matter most for
discoverability are description (which runtimes match against user prompts) and the trigger phrases
embedded in it.
---
name: my-awesome-skill
description: Automates code review checklists. Use when reviewing pull requests, running pre-merge checks, or auditing code quality. Triggers on phrases like "review this PR", "check this code", "audit before merge".
author: myusername
version: 0.1.0
category: development
---
# My Awesome Skill
Instructions for the agent... Trigger phrases are your discoverability lever
Embed three to five concrete trigger phrases in description. The runtime matches
user prompts against this field; vague descriptions lead to vague matches. "review this PR" and "audit before merge" are good triggers; "helps with code" is not.
Behavioral classification
Skills scaffolded with create include a behavioral classification: guided (interactive, asks the user questions), autonomous (runs through to completion without
asking), or reactive (responds to a specific trigger then stops). Pick the one that best
describes your skill's behavior.
Step 3 — Validate
Validation catches the common authoring mistakes — missing frontmatter fields, broken bundle references, malformed YAML — before publish rejects them.
Run this in your terminal:
skillsmith author validate ~/.claude/skills/my-awesome-skill Or via the MCP from Claude Code: "Validate my skill at ~/.claude/skills/my-awesome-skill".
The validator checks:
SKILL.mdexists and parses as valid YAML frontmatter-
Required fields:
name,description,author,version - Referenced bundle files (scripts, assets) actually exist on disk
- Trigger phrases present in description
- License header where required (Elastic 2.0, MIT, Apache, etc.)
Step 4 — Publish to the registry
Publishing generates a checksum manifest, packages the skill bundle, and submits to the
Skillsmith registry. New skills enter at the
unverified trust tier and graduate to community
once they pass a basic security scan and carry the required metadata.
Run this in your terminal:
skillsmith author publish ~/.claude/skills/my-awesome-skill
The first publish from your account requires a logged-in CLI session — run skillsmith login if you have not already. Subsequent publishes inherit that session.
After publish, the skill appears in search within the next indexing cycle (within ~6
hours). You can verify via Discover:
"Search for my-awesome-skill".
Step 5 — Generate a companion subagent (optional)
If your skill is autonomous and needs to run as a Claude Code subagent (separate context window, separate tool permissions), generate the subagent definition:
skillsmith author subagent ~/.claude/skills/my-awesome-skill
This emits an agent definition under
~/.claude/agents/<name>.md that mirrors the skill's trigger phrases. Useful when
the skill needs to operate without polluting the main conversation context.
Step 6 — Transform an existing prompt into a skill
If you have an existing instructions document, system prompt, or README you want to convert into
a properly structured skill, the
transform subcommand does the heavy lifting.
skillsmith author transform ./my-prompt.md -o ~/.claude/skills/my-skill
The transformer extracts trigger phrases, derives a description, scaffolds the SKILL.md
frontmatter, and copies the instructions content. Always follow up with author validate — the transformer is a starting point, not a final answer.
Step 7 — Scaffold a custom MCP server (advanced)
Some skills need backend logic that cannot live in SKILL.md alone — a database query, an API
call, a long-running computation. The
mcp-init subcommand scaffolds a TypeScript MCP server that your skill can call into.
skillsmith author mcp-init my-skill-mcp
This is an advanced path. Most skills do not need a custom MCP server — they work fine in pure
SKILL.md form. Reach for mcp-init
only when you have verified the skill cannot be expressed declaratively.
Common pitfalls
"Skill name already taken"
Skill names are unique per author. community/my-skill is yours forever; if someone else
has otherauthor/my-skill, that does not collide. Pick descriptive, qualified names
— generic names like helper trip the namespace audit even after publish.
Publish rejects with "missing trigger phrases"
The description field needs explicit trigger phrasing. The publisher runs the same heuristic
as the namespace audit — descriptions without recognizable triggers are rejected to keep the registry's
discoverability signal high.
Validation passes locally but publish fails
The most common cause is a missing license header. Check
LICENSE at the skill root; the publisher will refuse to submit a skill without one.
Where to next
Your skill is published. Now monitor it: the Govern stage covers audit logs and install metrics if you operate at team scale, and Maintain applies once you start iterating on your published skill.
Reference: CLI reference · Trust Tiers · SKILL.md format.