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:
mkdir -p <project-root>/skills/<name>/scriptsImportant: 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.