Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Provides comprehensive guidance for creating effective skills that extend Claude's capabilities. Use when users want to build new skills or update existing ones with specialized knowledge, workflows, or tool integrations.
/plugin marketplace add ThepExcel/claude-skills/plugin install thepexcel-skill-creator-plugins-skill-creator@ThepExcel/claude-skillsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
SOURCES.mdreferences/anti-patterns.mdreferences/evaluation.mdreferences/output-patterns.mdreferences/progressive-disclosure.mdreferences/workflows.mdEnhanced by ThepExcel — This version includes additional best practices from official Anthropic documentation plus practical insights from real-world skill development.
This skill provides comprehensive guidance for creating effective skills that Claude can discover and use successfully.
Skills are modular, self-contained packages that extend Claude's capabilities by providing specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific domains—they transform Claude from a general-purpose agent into a specialized agent equipped with procedural knowledge.
The context window is a public good. Skills share the context window with everything else Claude needs: system prompt, conversation history, other Skills' metadata, and the actual user request.
Default assumption: Claude is already very smart. Only add context Claude doesn't already have. Challenge each piece of information:
Prefer concise examples over verbose explanations.
Match the level of specificity to the task's fragility and variability:
| Freedom Level | When to Use | Example |
|---|---|---|
| High (text instructions) | Multiple approaches valid, context-dependent | Code review guidelines |
| Medium (pseudocode/params) | Preferred pattern exists, some variation OK | Report generation template |
| Low (specific scripts) | Fragile operations, consistency critical | Database migrations |
Analogy: A narrow bridge with cliffs needs specific guardrails (low freedom), while an open field allows many routes (high freedom).
Skills effectiveness depends on the underlying model. Test with all models you plan to use:
| Model | Consideration |
|---|---|
| Haiku | Does the skill provide enough guidance? |
| Sonnet | Is the skill clear and efficient? |
| Opus | Does the skill avoid over-explaining? |
What works for Opus might need more detail for Haiku. Aim for instructions that work across models.
skill-name/
├── SKILL.md (required)
│ ├── YAML frontmatter (name, description)
│ └── Markdown instructions
└── Bundled Resources (optional)
├── scripts/ — Executable code (Python/Bash)
├── references/ — Documentation loaded as needed
└── assets/ — Files used in output (templates, images)
Use action-oriented names that clearly describe what the skill does. Lowercase letters, numbers, and hyphens only.
Multiple patterns are acceptable — ask user preference if unclear:
| Pattern | Examples | When to Use |
|---|---|---|
| Gerund (verb-ing) | processing-pdfs, analyzing-data | Traditional, widely used |
| Verb-noun | prompt-ai-image-video, design-business-model | Clear action + object |
| Noun-verb-ing | power-query-coaching, problem-solving | Domain + activity |
| Recognized terms | triz, deep-research | Widely known concepts |
| Good | Avoid |
|---|---|
prompt-ai-image-video | pdf (too vague) |
processing-pdfs | helper, utils |
create-visualization | anthropic-*, claude-* |
The description field enables skill discovery. Always write in third person.
| Good | Avoid |
|---|---|
| "Processes Excel files and generates reports" | "I can help you process Excel files" |
| "Extracts text from PDF documents" | "You can use this to extract PDF text" |
Include both what the skill does and when to use it:
description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.
| Field | Rules |
|---|---|
name | Max 64 chars, lowercase + numbers + hyphens only |
description | Max 1024 chars, non-empty, third person |
No other fields in frontmatter.
Instructions and guidance for using the skill. Only loaded AFTER the skill triggers.
Important: "When to Use" sections in the body are useless — Claude only sees the description when deciding to trigger.
scripts/)Executable code for tasks requiring deterministic reliability.
references/)Documentation loaded as needed into context.
assets/)Files used in output, not loaded into context.
Do NOT create extraneous documentation:
Skills are for AI agents, not humans. No auxiliary context about creation process.
Skills use a three-level loading system:
| Level | When Loaded | Size Limit |
|---|---|---|
| Metadata (name + description) | Always | ~100 words |
| SKILL.md body | When triggered | <500 lines |
| Bundled resources | As needed | Unlimited |
See references/progressive-disclosure.md for detailed patterns:
Key rules:
init_skill.pypackage_skill.pySkip only when usage patterns are already clearly understood.
Ask clarifying questions:
Related skill: For extracting expertise from domain experts, consider using /extract-expertise — it provides structured conversations to capture mental models, workflows, and best practices that can inform skill development.
Analyze each example by:
| Task Type | Analysis | Resource |
|---|---|---|
| PDF rotation | Same code each time | scripts/rotate_pdf.py |
| Frontend webapp | Same boilerplate | assets/hello-world/ |
| BigQuery queries | Rediscovering schemas | references/schema.md |
Always run init_skill.py for new skills:
scripts/init_skill.py <skill-name> --path <output-directory>
The script creates:
scripts/, references/, assets/ directoriesRemember: you're creating this for another Claude instance to use. Include non-obvious procedural knowledge.
Consult design patterns:
Implementation order:
scripts/package_skill.py <path/to/skill-folder>
The script validates then packages:
Iteration workflow:
See references/evaluation.md for the Claude A/B iteration pattern.
Don't include info that becomes outdated:
# Bad
If you're doing this before August 2025, use the old API.
# Good — use "old patterns" section
## Current method
Use the v2 API endpoint.
## Old patterns
<details>
<summary>Legacy v1 API (deprecated 2025-08)</summary>
The v1 API used: api.example.com/v1/messages
</details>
Choose one term and use it throughout:
| Good (consistent) | Bad (inconsistent) |
|---|---|
| Always "API endpoint" | Mix "endpoint", "URL", "route", "path" |
| Always "field" | Mix "field", "box", "element", "control" |
| Always "extract" | Mix "extract", "pull", "get", "retrieve" |
Before sharing a skill:
| When | Suggest |
|---|---|
| Extract expertise from domain expert | /extract-expertise — structured conversations to capture mental models |
| Research domain knowledge | /deep-research — gather facts before building skill |
These skills are optional but highly valuable for skill development.
References: