Guide for adding a new skill to this repo following the full workflow. Use when the user says: (1) add a new skill, (2) create a skill, (3) make a skill, (4) I have an idea for a skill, (5) let us add this skill, (6) I want to build a skill, (7) let us add another skill, (8) new skill for X, or any similar phrasing about creating or adding a skill to this project.
Follow this checklist every time a skill is added to this repo. Do not skip steps.
Before creating anything, ask:
If unclear, ask the user for concrete examples before proceeding.
git checkout master && git pull
git checkout -b skills/<skill-name>
Branch naming: skills/<skill-name> (hyphen-case, matches the skill directory name).
Run the init script to create the directory structure:
uv run python skills/add-skill/scripts/init_skill.py <skill-name>
This creates skills/<skill-name>/ with SKILL.md, and optional scripts/, references/, assets/ subdirectories. Delete any subdirectories you don't need.
Or create manually if the skill only needs a SKILL.md:
mkdir -p skills/<skill-name>
Key rules:
name must match the directory name exactlydescription must say when to trigger the skill — this is what Claude reads to auto-invoke it. See references/design-guide.md for how to write an effective description.references/ files.allowed-tools if the skill needs specific tools without promptingFor design principles (concise, progressive disclosure, degrees of freedom, when to use scripts/references/assets), read: references/design-guide.md
Add a row to the skills table:
| [skill-name](skills/skill-name/SKILL.md) | One-line description |
In both .claude-plugin/plugin.json and .claude-plugin/marketplace.json, increment the minor version (e.g. 1.1.0 → 1.2.0). Keep them in sync.
In CHANGELOG.md, add a new entry at the top:
## [X.Y.0] - YYYY-MM-DD
### Added
- `skill-name` skill: one-line description
uv run pytest
The new skill is auto-discovered — no test code needed unless the skill has scripts. All tests must pass before committing.
Stage only the relevant files:
git add skills/<skill-name>/ README.md CHANGELOG.md .claude-plugin/plugin.json
git commit -m "Add <skill-name> skill (vX.Y.0)"
git push -u origin skills/<skill-name>
gh pr create --title "Add <skill-name> skill (vX.Y.0)" --base master
Write the PR body based on what was actually built. A good PR body for this repo includes:
Include any other context that would help someone understand the PR without reading every file — for example, if the skill was adapted from another repo, if it depends on another skill, or if there are known limitations.
After review, merge:
gh pr merge <number> --merge
git checkout master && git pull