Create Skill
Scaffold a new skill directly inside the chosen plugin of a local marketplace. The root skills/ folder is auto-generated by CI — do not create files there manually.
User's intention
$ARGUMENTS
References
Consult the relevant doc(s) before generating skill content in auto mode or before making structural decisions in manual mode:
docs/skills.md— skill format, popular repositories, skills CLIdocs/plugins.md— plugin structure, manifest, hooks and relative pathsdocs/hooks.md— hook lifecycle, PreToolUse / PostToolUse, hook scriptsdocs/marketplace.md— marketplace structure, registration, publishing, versioning, auto-updatesdocs/subagents.md— subagent usage, AGENTS.md format, coordination tipsdocs/rules.md— rules format and scopedocs/mcp.md— MCP server configurationdocs/memory.md— memory system, persistent memory for subagentsdocs/skills-cli.md— skills CLI commandsdocs/claude-code.md— Claude Code settings, commands, IDE integrations
Workflow
Create skill directory and SKILL.md — the form data submitted by the user was injected into your context as
additionalContextby theUserPromptExpansionhook. It is a JSON object withmodeandtargetfields.Target dispatch — the JSON includes a
targetfield that determines where the skill lives:target: "marketplace"— the JSON hasmarketplacePathandplugin. Write to<marketplacePath>/plugins/<plugin>/skills/<name>/SKILL.md.target: "project"— the JSON hasprojectPath(the user's cwd). Write to<projectPath>/.claude/skills/<name>/SKILL.md. This is a project-local skill, not registered in any marketplace.
Behaviour also depends on
mode:Auto mode (
mode: "auto") — the JSON contains{ mode, target, name?, idea, useWhen, ...destination }wheredestinationis either{ marketplacePath, plugin }or{ projectPath }:- Use
nameif provided, otherwise derive a concise kebab-case name from the idea. - Build the
descriptionfrontmatter value:- Take the first sentence of
ideaas the "what" clause. - If
useWhenis non-empty, appendUse when+ the chips joined naturally (Oxford-style with "or" before the last item). If empty, appendUse when <trigger condition>.as a placeholder. - Clip the full description to 140 characters.
- Take the first sentence of
- Generate complete, ready-to-use SKILL.md content: a clear workflow, concrete steps, and any relevant reference tables or decision trees — as if a domain expert wrote it. Do not leave placeholder text.
Manual mode (
mode: "manual") — the JSON contains{ mode, target, name, description, triggers, ...destination }:- Use all provided values as-is.
- Build the
descriptionfrontmatter:"<description>. Use when <triggers joined with ', ' and 'or' before the last>."Iftriggersis empty, use the raw description only. - Create a minimal skeleton the user will fill in:
--- name: <name> description: "<built description>" --- # <Title Case of name> Add instructions here. Structure freely: step-by-step workflow, reference tables, decision trees — whatever fits the skill. Optional subdirectories (create only if needed): - `scripts/` — executable helpers (Node.js, Python, shell) - `references/` — supporting docs or templates - `assets/` — static files (images, data)Hooks If the skill needs a hook (e.g. to collect input before the skill runs), add it to the plugin instead of user settings so it's distributed automatically. See Hooks and Relative Paths.
Report to user
- Report the path where the skill was created:
- Marketplace target:
<marketplacePath>/plugins/<plugin>/skills/<name>/SKILL.md - Project target:
<projectPath>/.claude/skills/<name>/SKILL.md
- Marketplace target:
- Next steps:
- Fill in the new
SKILL.mdwith instructions - Add
scripts/orreferences/dirs if the skill needs helper files - For marketplace targets only: update the marketplace so the skill becomes visible:
claude plugin marketplace update - Project skills are picked up automatically by Claude Code running in that project.
- Fill in the new
- Report the path where the skill was created: