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), seeGetting 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-skillThe 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 guidedPass --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 phrasesembedded 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-skillOr 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 theunverified trust tier and graduate to communityonce they pass a basic security scan and carry the required metadata.
Run this in your terminal:
skillsmith author publish ~/.claude/skills/my-awesome-skillThe 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-skillThis 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, thetransform subcommand does the heavy lifting.
skillsmith author transform ./my-prompt.md -o ~/.claude/skills/my-skillThe 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. Themcp-init subcommand scaffolds a TypeScript MCP server that your skill can call into.
skillsmith author mcp-init my-skill-mcpThis is an advanced path. Most skills do not need a custom MCP server — they work fine in pure SKILL.md form. Reach for mcp-initonly 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. CheckLICENSE at the skill root; the publisher will refuse to submit a skill without one.
Where to next
Your skill is published. Now monitor it: theGovern stage covers audit logs and install metrics if you operate at team scale, andMaintain applies once you start iterating on your published skill.
Reference: CLI reference· Trust Tiers· SKILL.md format.