| name | skill-manager |
| description | Create, manage, and debug Claude Code Agent Skills. Use when creating new skills, debugging skill activation issues, writing SKILL.md files, managing skill structure, or learning about Claude Code skills. Helps with personal skills, project skills, YAML frontmatter, descriptions, and troubleshooting. |
Skill Manager
Everything here documents the repository as it is on main. If main disagrees with this file, main wins: follow it and flag the drift.
Create and manage Agent Skills for Claude Code. Skills are modular capabilities packaged as folders containing instructions, scripts, and resources.
Skills are model-invoked: Claude autonomously decides when to use them based on the request and the skill's description — unlike slash commands, which the user invokes explicitly.
Progressive disclosure
Skills load in three levels, which is what keeps context lean:
- Metadata (name + description) — always in context for every skill; drives discovery.
- SKILL.md body — loaded only when the skill triggers. Keep it under ~5k words, lean, essential procedural instructions only.
- Bundled resources —
scripts/ may execute without loading into context; references/ load into context when needed; assets/ are used in output and never loaded.
Locations
- Personal:
~/.claude/skills/<name>/ — individual workflows, experiments.
- Project:
.claude/skills/<name>/ — team conventions, checked into git, shared automatically.
- Plugin: skills can also ship inside Claude Code plugins.
SKILL.md format
Every skill is a SKILL.md with YAML frontmatter — --- on line 1, closing --- before the body, no tabs:
---
name: my-skill-name
description: What it does + specific actions + "Use when" + trigger scenarios/keywords.
---
- name (required): kebab-case, and EXACTLY the skill's folder name.
- description (required): the most critical field — it is all Claude sees when deciding whether to load the skill. Formula: [What it does] + [Specific actions] + "Use when" + [triggers]. Write in third person, imperative form (
"Use when…", never "Use this skill when…"). Vague descriptions ("Helps with documents") and missing triggers are the top cause of skills not activating. Keep descriptions distinct across skills to prevent activation conflicts.
- allowed-tools (optional): comma-separated tool list to restrict capabilities (e.g.
Read, Grep, Glob for a read-only skill). Omit for normal permission behavior.
Writing style
- Imperative/infinitive, verb-first: "Run the command", "To accomplish X, do Y" — never second person ("You should…").
- Objective, instructional language; no conversational or persuasive prose.
- Every instruction is a standalone statement of current policy. Never write a delta against a prior state ("previously X, now Y", "everything that used to be Z") — the future reader has none of the history that made the delta meaningful.
- No duplication: information lives in either SKILL.md or a resource file, never both. Move detailed schemas, API docs, and long examples to
references/; for reference files over ~10k words, include grep patterns in SKILL.md so Claude can find sections without reading the whole file.
Resource directories
scripts/ — executable code for operations that are rewritten repeatedly or need deterministic reliability. Token-efficient: they can run without being loaded into context.
references/ — documentation loaded into context on demand: schemas, API specs, policies, detailed guides.
assets/ — files used in the output (templates, images, boilerplate), never loaded into context.
Single-file skills (just SKILL.md) suit simple, focused capabilities; add resource directories only when a workflow genuinely needs them.
Creating a skill
- Understand with concrete examples: what should trigger it, and what would a user say? Conclude when the functionality is clear.
- Plan reusable resources: for each example, ask what script, reference, or asset would remove repeated work.
- Create the structure:
mkdir -p .claude/skills/<name> (plus resource dirs as needed).
- Implement resources first, then SKILL.md: the body answers three questions — what is this for, when to use it, how to use it — and references every resource.
- Test and iterate: ask questions matching the description's triggers and confirm the skill activates and works; refine on real usage.
Keep skills focused
One skill = one capability. "Document processing" is too broad — split by type or operation. When a skill accumulates a second concern, extract it.
Troubleshooting
When a skill doesn't activate or work, check in order:
- Location:
ls .claude/skills/<name>/SKILL.md (or ~/.claude/skills/…) — the folder name must equal the frontmatter name.
- YAML syntax: opening
--- on line 1, closing --- before content, no tabs, name and description present.
- Description specificity: does it say what, when, and include the trigger words the user actually said? Is it distinct from sibling skills?
- Explicit test: ask a question that verbatim-matches a description trigger.
- Debug mode:
claude --debug shows skill loading errors.
If a skill activates but fails: list required packages in the description (Claude installs dependencies when needed), chmod +x bundled scripts, and use forward-slash paths.