Skill Creator
Creates new skills in the project skills/ directory (not .claude/skills/).
Target directory: <project-root>/skills/
Skill Structure
Each skill lives in its own directory under the project skills/ folder:
<project-root>/skills/<skill-name>/ ├── SKILL.md # Required: skill definition with YAML frontmatter ├── scripts/ # Optional: executable scripts │ ├── setup.sh # Optional: one-time setup │ └── main.py # Main script (or .sh, .js, etc.) ├── refs/ # Optional: reference documentation ├── pyproject.toml # Optional: Python dependencies (use uv) └── package.json # Optional: Node.js dependencies
SKILL.md Format
--- name: skill-name description: Brief description of what this skill does AND when to use it. Include trigger words like file types, actions, or use cases. allowed-tools: Read, Grep, Glob # Optional: restrict available tools --- # Skill Name Brief overview of the skill. ## Requirements List external dependencies (e.g., uv, node, specific tools). ## Setup Instructions to run before first use. ## Usage How to invoke the skill's functionality. ## Examples Concrete usage examples.
Naming Rules
- •Max 64 characters
- •Lowercase letters, numbers, hyphens only
- •Cannot contain "anthropic" or "claude"
Description Best Practices
The description determines when Claude triggers the skill. Include:
- •What it does: "Converts web pages to markdown"
- •When to use it: "Use when user wants to crawl a webpage, extract content..."
- •Trigger words: File types (.pdf, .xlsx), actions (crawl, convert, analyze)
Bad: description: Helps with documents
Good: description: Extract text from PDF files, fill forms, merge documents. Use when working with PDFs or when user mentions forms, document extraction.
Script Patterns
Python with uv (recommended)
# pyproject.toml [project] name = "skill-name" version = "0.1.0" requires-python = ">=3.10" dependencies = ["your-deps"]
# scripts/setup.sh
#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$(dirname "$SCRIPT_DIR")"
uv sync
# Additional setup...
# Run scripts with: cd skills/<skill-name> && uv run python scripts/main.py
Shell scripts
# scripts/main.sh #!/bin/bash set -e # Your logic here
Node.js
// package.json
{
"name": "skill-name",
"type": "module",
"dependencies": {}
}
Creating a New Skill
- •
Ask user for:
- •Skill name (lowercase, hyphens)
- •Purpose and functionality
- •Required dependencies
- •Trigger scenarios
- •
Create directory structure in the project skills folder:
bashmkdir -p <project-root>/skills/<name>/scripts
Important: Always use the project's
skills/directory, NOT.claude/skills/. - •
Write SKILL.md with proper frontmatter
- •
Add scripts if needed
- •
Add setup.sh if dependencies require installation
- •
Test the skill works
Progressive Disclosure
Keep SKILL.md focused on quick-start workflow. Move detailed reference docs to separate files:
refs/ ├── API.md ├── CONFIG.md └── TROUBLESHOOTING.md
Reference them from SKILL.md: See [API reference](refs/API.md) for details.