You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A meta-skill for Claude Code that documents how to write new skills. When invoked, it tells Claude how to structure a new SKILL.md, where to put it, what makes a good trigger description, when to add helper scripts, and how to iterate on skills as you use them.
Installation
Drop SKILL.md into ~/.claude/skills/acquiring-skills/:
mkdir -p ~/.claude/skills/acquiring-skills
# (download SKILL.md from this gist into that directory)
Claude Code auto-discovers skills under ~/.claude/skills/ on next launch. The skill activates when you ask Claude to write, create, or document a new skill (or mention SKILL.md / ~/.claude/skills/).
Why this is useful
Skills are how you teach Claude Code reusable workflows that persist across sessions. Without acquiring-skills, Claude has to figure out the skill format from scratch each time, often producing inconsistent results. With it, you can say "write a skill for X" and Claude follows a documented process: practice the workflow first, identify helpers worth extracting, write the manifest with proper trigger conditions, iterate based on use.
Create new Claude Code skills. Use when the user asks to write, create, or add a new skill, or asks to document a workflow as a skill. Also use when the user mentions SKILL.md or ~/.claude/skills/.
allowed-tools
Read, Write, Edit, Bash, Glob
Creating Claude Code Skills
This skill covers how to create new skills for Claude Code.
Skill Locations
Skills can be stored at three levels:
Location
Path
Applies to
Personal
~/.claude/skills/<skill-name>/
You, across all projects
Project
.claude/skills/<skill-name>/
Anyone working in this repository
Plugin
Bundled with plugins
Anyone with the plugin installed
Project skills are committed to version control - anyone who clones the repository gets them automatically.
Personal skills are for workflows you use across multiple projects.
Skill File Structure
Each skill directory contains a SKILL.md file with:
YAML frontmatter (required)
Markdown content describing the skill
YAML Frontmatter Format
---
name: skill-namedescription: One-line description of when to use this skill. Use when the user asks X, wants Y, or needs Z.allowed-tools: Read, Edit, Write, Bash, Glob, Grep
---
Frontmatter Fields
name: Short identifier for the skill (should match directory name)
description: Explains when Claude should activate this skill. Write it as trigger conditions:
"Use when the user asks to..."
"Use when the user wants to..."
"Use when working with X and Y happens..."
allowed-tools: Comma-separated list of tools the skill may use
Available Tools
Common tools to include in allowed-tools:
Read - Read files
Write - Create new files
Edit - Modify existing files
Bash - Run shell commands
Glob - Find files by pattern
Grep - Search file contents
WebFetch - Fetch web pages
WebSearch - Search the web
Markdown Content Guidelines
After the frontmatter, write clear documentation:
Overview - What the skill does and when to use it
Principles - Key rules or constraints to follow
Workflow - Step-by-step process
Commands/Examples - Specific commands or code snippets
---name: example-skilldescription: Handle X tasks. Use when the user asks about X, wants to do Y, or needs help with Z.allowed-tools: Read, Edit, Bash---# Example Skill
This skill handles X.
## Overview
Brief description of what this skill does.
## Workflow1. First step
2. Second step
3. Third step
## Commands\`\`\`bash
example command
\`\`\`## Notes- User-specific detail 1
- User-specific detail 2
Commit to the project repository so collaborators get the skill too
Writing Good Descriptions
The description field determines when Claude activates the skill. Write it to match user intent:
Good descriptions:
"Manage the user's TODO list. Use when the user asks about tasks, wants to add/update TODOs, or asks what needs to be done."
"Create minimal working examples from Lean errors. Use when the user asks to minimize an error or create an MWE."
"Synchronize the home git repo. Use when git pull fails or the user asks to sync their home directory."
Bad descriptions:
"A skill for TODOs" (too vague, no trigger conditions)
"This handles git stuff" (unclear when to activate)
"Use when the user asks X. Encodes that you must do Y and Z" (mixes the trigger with the skill body — the description field describes when to activate, never what the skill contains; activation logic should not depend on skill content)
Skill Development Process
Creating a good skill requires practice and iteration, not just documentation.
Personal vs. project skill? Before you start, decide where the skill belongs:
Project skill (.claude/skills/): Only useful for this specific codebase
Personal skill (~/.claude/skills/): Useful across multiple projects
Default to personal. If there's any doubt, put it in ~/.claude/skills/. You can always move it later, and personal skills are easier to maintain (one location, synced across machines).
1. Practice First
Before writing SKILL.md, perform the workflow manually in the current session. If you've already been doing the task, you have the context you need. If not, do it now.
Why this matters:
Instructions grounded in real experience are more accurate
You'll discover edge cases and gotchas
You'll know which steps are error-prone
Don't skip this. Theoretical documentation leads to skills that don't work in practice.
2. Identify Helper Scripts
During practice, note:
Commands you type repeatedly
Multi-step operations that could be a single script
Complex logic that's easy to get wrong
These are candidates for helper scripts that live alongside SKILL.md: