Creating Skills
SkillAI & modelsGuide for creating Claude Code skills following Anthropic's official best practices. Use when user wants to create a new skill, build a skill, write SKILL.md, or needs skill creation guidelines. Provides structure, naming conventions, description writing, and quality checklist.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Creating Skills skill
What this skill tells your AI
The instructions your AI receives, as published by myths-labs/muse in skills/toolkit/creating-skills/SKILL.md and read by ahel’s review.
Guide for creating Claude Code skills following Anthropic's official best practices.
Quick Start
# 1. Create skill directory
mkdir -p ~/.claude/skills/<skill-name>/references
# 2. Create SKILL.md with frontmatter
cat > ~/.claude/skills/<skill-name>/SKILL.md << 'EOF'
---
name: <skill-name>
description: <what it does>. Use when <trigger phrases>. <key capabilities>.
---
# <Skill Title>
<One-line description>
## Quick Start
<Minimal steps to use the skill>
## Core Workflow
<Step-by-step instructions>
## Important Rules
<Critical constraints and requirements>
EOF
# 3. Add helper scripts if value-add
# 4. Add reference files for detailed docs
SKILL.md Structure
Frontmatter (REQUIRED)
---
name: skill-name # lowercase, hyphens, no spaces
description: <desc> # CRITICAL for discovery (max 1024 chars)
---
Advanced Frontmatter (v3.0)
Inspired by Claude Code's internal skills architecture (loadSkillsDir.ts).
---
name: skill-name
description: <What it does>. <Key capabilities>.
# v3.0 fields — separate trigger logic from description
when_to_use: >
Use when user wants to create PR, open pull request,
or merge feature. Also triggers on 'review', 'submit'.
# Security: restrict which tools this skill can use
allowed-tools:
- run_command
- view_file
- grep_search
# Omit dangerous tools like write_to_file for read-only skills
# Auto-activate when editing files matching these paths
paths:
- src/auth/**
- lib/security/**
# Parameterized skills: $1, $2 substitution
arguments: [target_file, test_scope]
argument-hint: "<file> [scope]"
# Control execution depth
effort: thorough # Options: minimal, standard, thorough
# Specify a model for this skill (rare)
# model: claude-sonnet-4-20250514
# Whether users can invoke directly (vs agent-only)
user-invocable: true
# Pure text skill (no LLM invocation)
# disable-model-invocation: false
# Isolated execution context
# context: fork
---
When to use when_to_use vs description:
description= WHAT the skill does (appears in listings)when_to_use= WHEN to trigger it (matching logic, trigger phrases)- Keeping them separate prevents the description from becoming a keyword dump
Description Formula
<What it does>. Use when <trigger phrases>. <Key capabilities>.
Example:
Creates GitHub Pull Requests with automated validation. Use when user wants
to create PR, open pull request, or merge feature. Validates tasks, runs
tests, generates Conventional Commits format.
Trigger phrases to include:
- Action verbs: "create", "handle", "manage", "process"
- User intent: "wants to", "needs to", "asks for"
- Keywords users would say: "PR", "pull request", "review comments"
Body Sections (ORDER MATTERS)
- Title -
# Skill Name - One-liner - Single sentence summary
- Quick Start - Minimal steps (copy-paste ready)
- Core Workflow - Numbered steps with code blocks
- Helper Scripts (if any) - Table with purpose
- Important Rules - Critical constraints (bold ALWAYS/NEVER)
Naming Conventions
Format Options
| Style | Example | When to Use |
|---|---|---|
| Gerund (verb-ing) | processing-pdfs | Action-focused |
| Noun phrase | github-pr-creation | Entity-focused |
| Prefixed group | github-pr-* | Related skills |
Rules
- Lowercase only
- Hyphens between words (no underscores)
- No spaces
- Descriptive but concise (2-4 words)
Token Budget
| Component | Limit | Notes |
|---|---|---|
| SKILL.md body | < 500 lines | Split if approaching |
| Description | < 1024 chars | Quality over quantity |
| Quick Start | < 30 lines | Minimal viable example |
If approaching 500 lines:
- Move detailed examples to
references/examples.md - Move troubleshooting to
references/troubleshooting.md - Keep SKILL.md focused on workflow
Helper Scripts Guidelines
When to Create Scripts
DO create scripts for:
- Complex logic (severity classification, commit analysis)
- Multi-step processing with JSON output
- Reusable utilities across invocations
DON'T create scripts for:
- Single command wrappers (
gh api ...) - Simple operations Claude can do inline
- One-line bash commands
Script Requirements
#!/usr/bin/env python3
"""Script description."""
import json
import sys
def main():
# Read from stdin or args
# Process data
# Output JSON to stdout
print(json.dumps(result))
if __name__ == "__main__":
main()
- Output JSON for structured data
- Use stdin/stdout for piping
- Include clear error messages
- Keep focused on single responsibility
Directory Structure
~/.claude/skills/<skill-name>/
├── SKILL.md # Main skill file (< 500 lines)
├── scripts/ # Optional helper scripts
│ └── helper.py # Only if value-add
└── references/ # Optional detailed docs
├── examples.md # Extended examples
└── guide.md # Deep-dive documentation
Core Principles
1. Claude is Already Smart
"Default assumption: Claude is already very smart. Only add context Claude doesn't already have."
Challenge each line:
- Does Claude really need this explanation?
- Can I assume Claude knows this?
- Does this paragraph justify its token cost?
2. Progressive Disclosure
SKILL.md (primary)
↓ references/ (when needed)
↓ external links (rarely)
- Start minimal, expand as needed
- Don't front-load all information
- Let Claude discover details when relevant
3. User Confirmation for Critical Actions
**ALWAYS** confirm before:
- Modifying files
- Running destructive commands
- Creating external resources (PRs, issues)
4. Structured Output
Prefer JSON for script output:
# Good: Structured, parseable
python3 script.py | jq '.result'
# Bad: Unstructured text
python3 script.py | grep "Result:"
Quality Checklist
Before finalizing a skill:
- Frontmatter: name + description present
- Description: includes WHAT + WHEN triggers + capabilities
- Naming: lowercase, hyphens, descriptive
- Quick Start: copy-paste ready, < 30 lines
- Line count: SKILL.md < 500 lines
- Scripts: only value-add, no wrappers
- Rules: critical constraints marked with bold
- Test: skill triggers on expected phrases
Anti-Patterns to Avoid
| Anti-Pattern | Why Bad | Instead |
|---|---|---|
| Wrapper scripts | No value-add | Inline commands |
| Explaining basics | Claude already knows | Skip or brief |
| Multiple workflows | Confusing | One clear path |
| Verbose examples | Token waste | Minimal examples |
| Custom systems | Non-standard | Use official patterns |
Examples
Good Description
Handles PR review comments with severity classification. Use when user
wants to resolve PR comments, handle review feedback, or fix review
comments. Fetches via GitHub CLI, classifies by severity, proposes fixes.
Good Quick Start
# 1. Get PR number
PR=$(gh pr view --json number -q '.number')
# 2. Fetch and classify comments
gh api repos/{owner}/{repo}/pulls/$PR/comments | \
python3 ~/.claude/skills/github-pr-review/scripts/classify_comments.py
# 3. Process each comment: show → propose → confirm → apply
# 4. Commit: git commit -m "fix(scope): address review - [desc]"
# 5. Reply and push
Good Important Rules
## Important Rules
- **ALWAYS** confirm before modifying files
- **ALWAYS** verify ALL issues in multi-issue comments
- **NEVER** skip user confirmation for file changes
- Group related changes → single commit
References
references/official_best_practices.md- Full Anthropic documentationreferences/skill_examples.md- Complete skill examples
Signals
- GitHub stars
- 35
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
creating-skills-myths-labs- Source
- github.com/myths-labs/muse
Related picks
Skill · mattpocock
The pick for TypeScripttypescript-pro
Skill · jeffallan
The pick for TypeScriptpython-performance-optimization
Skill · wshobson
The pick for Pythonpython-pro
Skill · jeffallan
The pick for Pythonlark-markdown
Skill · larksuite
The pick for Markdownmarkdown-mermaid-writing
Skill · k-dense-ai
The pick for Markdown