meta-skill
Meta-Skill: Dynamic Skill Library
A system for managing on-demand skills that are loaded dynamically instead of at session startup. Skills are stored in skill-library/ and registered in SKILLUSE.md at the project root.
How It Works
Automatic Matching (via CLAUDE.md)
During initialization, a section is added to CLAUDE.md that instructs Claude to check SKILLUSE.md on every user request. When the user's request matches a skill description:
- Read
skill-library/<skill-name>/SKILL.mdfrom the project root - If the skill references supporting files, read those too
- Follow the skill's instructions to handle the user's request
SKILLUSE.md Format
A markdown file at the project root. Each ## heading is a skill name (maps to skill-library/<heading>/), followed by a natural language description:
# Skill Library
## code-review
Code review skill. Perform quality reviews, identify potential issues, and provide improvement suggestions.
## api-design
RESTful API design patterns. Naming conventions, error handling, and versioning.
skill-library/ Structure
skill-library/
├── code-review/
│ ├── SKILL.md # Main instructions (required)
│ ├── templates/ # Optional supporting files
│ └── examples/ # Optional examples
└── api-design/
└── SKILL.md
Compatible with .claude/skills/ — skills can be moved between the two systems.
Management Operations
Initialize
When user asks to initialize the skill library:
- Create
skill-library/directory in the project root - Create
SKILLUSE.mdin the project root with this template:
# Skill Library
Skills listed below are available for on-demand loading.
-
Append Meta-Skill section to CLAUDE.md:
Read the template from the plugin's
templates/claude-md-section.md.Replace
{VERSION}with the version from.claude-plugin/plugin.json.Then apply to
CLAUDE.mdin the project root:- If CLAUDE.md exists and contains
<!-- META-SKILL:START -->: Replace everything between<!-- META-SKILL:START -->and<!-- META-SKILL:END -->(inclusive) with the new content - If CLAUDE.md exists but has no markers: Append the content to the end of the file (with a blank line separator)
- If CLAUDE.md does not exist: Create a new CLAUDE.md with the content
- If CLAUDE.md exists and contains
-
Display summary:
Meta-Skill initialized!
Files created/updated:
- SKILLUSE.md (skill registry)
- skill-library/ (skill definitions folder)
- CLAUDE.md (matching instructions added)
You can now add skills with "add a skill for <topic>".
List
When user asks what skills are available:
- Read
SKILLUSE.mdto show active (registered) skills - Optionally scan
skill-library/directories to show unregistered skills that exist but aren't active
Add
When user asks to create a new skill:
- Confirm the skill name and purpose with the user
- Create
skill-library/<name>/SKILL.mdwith appropriate content - Add a
## <name>section toSKILLUSE.mdwith a description - The SKILL.md should follow this structure:
# Skill Title
## When to Use
Describe conditions for using this skill.
## Workflow
Step-by-step instructions for Claude to follow.
Remove
When user asks to remove a skill:
- Remove the
## <name>section fromSKILLUSE.md - Files in
skill-library/<name>/are preserved (not deleted) - The skill becomes inactive but can be re-enabled later
Enable
When user asks to enable an existing but unregistered skill:
- Check that
skill-library/<name>/SKILL.mdexists - Read the SKILL.md to generate an appropriate description
- Add a
## <name>section toSKILLUSE.md
Edit
When user asks to modify a skill:
- Read the current
skill-library/<name>/SKILL.md - Make the requested changes
- Update the description in
SKILLUSE.mdif the skill's purpose changed