How to Create Custom Agent Skills with Anthropic's Skill-Creator
Purpose
I wanted Claude to become a specialized expert for my specific workflows. The default Claude is smart, but it doesn’t know my company’s coding standards, my preferred testing patterns, or my deployment procedures.
That’s when I discovered Anthropic’s skill-creator. It transforms Claude from a general-purpose assistant into a specialized agent with domain-specific knowledge.
What is a Skill?
A skill is a modular package that extends Claude’s capabilities. Think of it as an “onboarding guide” for a specific domain.
Skills provide:
- Specialized workflows - Multi-step procedures for specific tasks
- Tool integrations - Instructions for working with specific file formats or APIs
- Domain expertise - Company-specific knowledge, schemas, business logic
- Bundled resources - Scripts, references, and assets for complex tasks
How Skills Load
Skills use a three-level loading system:
Phase 1: Metadata (always loaded) name: security-review description: Use when adding authentication... (~100 words)
Phase 2: SKILL.md body (loaded when triggered) # Security Review Skill ## Security Checklist... (<5k words)
Phase 3: Bundled resources (loaded as needed) references/cloud-infrastructure-security.md (only when user asks about cloud security)This design keeps the context window efficient. Claude only loads what it needs, when it needs it.
The Six-Step Creation Process
I followed this workflow to create my first skill:
Step 1: Understand with Concrete Examples
Before writing anything, I asked myself:
- “What functionality should this skill support?”
- “What would a user say that should trigger this skill?”
For example, when I built a commit-helper skill, I imagined users saying:
- “Generate a commit message for these changes”
- “Review my commit history for patterns”
Step 2: Plan Reusable Contents
I analyzed each example to identify what resources would help:
| User Query | Needed Resource |
|---|---|
| ”Rotate this PDF” | scripts/rotate_pdf.py |
| ”Build me a todo app” | assets/hello-world/ boilerplate |
| ”How many users logged in today?” | references/schema.md |
Step 3: Initialize the Skill
I ran the init script to scaffold the structure:
scripts/init_skill.py my-new-skill --path ~/.claude/skills/This created:
my-new-skill/├── SKILL.md (template with TODOs)├── scripts/example.py├── references/api_reference.md└── assets/example_asset.txtStep 4: Edit the Skill
The description field is critical. It’s the primary triggering mechanism.
I wrote the frontmatter:
---name: commit-helperdescription: Generate conventional commit messages following team standards. Use when creating git commits or reviewing commit history for: (1) Writing commit messages, (2) Analyzing commit patterns, (3) Enforcing commit conventions.---Notice I included both:
- What the skill does
- WHEN to use it (specific scenarios)
Then I wrote the body with instructions:
# Commit Helper
## Message Format
<type>: <description>
Types: feat, fix, refactor, docs, test, chore, perf, ci
## Examples
**Feature commit:**feat(auth): add OAuth2 login flow
- Implement Google OAuth provider- Add session managementStep 5: Package the Skill
I ran the packaging script:
scripts/package_skill.py ~/.claude/skills/my-new-skillThe script validated:
- YAML frontmatter format
- Skill naming conventions
- Description completeness
- File organization
On success, it created my-new-skill.skill - a distributable zip file.
Step 6: Iterate
This is the “variance analysis” I heard about in the community.
The iteration workflow:
- Use the skill on real tasks
- Notice struggles or inefficiencies
- Identify what needs updating
- Implement changes and test again
I used my skill for a week and noticed Claude was missing some edge cases in commit message formatting. I updated the SKILL.md body with more specific examples.
Degrees of Freedom
I learned to match specificity to task fragility:
| Freedom Level | When to Use | Example |
|---|---|---|
| High (text-based) | Multiple valid approaches | ”Write clean, readable code” |
| Medium (pseudocode) | Preferred pattern exists | ”Use repository pattern with async methods” |
| Low (specific scripts) | Fragile operations | scripts/rotate_pdf.py --angle 90 input.pdf |
Think of Claude as exploring a path: a narrow bridge needs specific guardrails (low freedom), while an open field allows many routes (high freedom).
A Complete Example
Here’s a minimal skill I created:
---name: commit-helperdescription: Generate conventional commit messages following team standards. Use when creating git commits or reviewing commit history for: (1) Writing commit messages, (2) Analyzing commit patterns, (3) Enforcing commit conventions.---
# Commit Helper
## Message Format
<type>: <description>
<optional body>
Types: feat, fix, refactor, docs, test, chore, perf, ci
## Examples
**Feature commit:**feat(auth): add OAuth2 login flow
- Implement Google OAuth provider- Add session management- Include error handling
**Bug fix:**fix(api): resolve race condition in user creation
Use atomic upsert instead of separate check/insertKey Takeaways
After creating several skills, I learned:
- The
descriptionfield is everything - Be comprehensive about WHEN to use the skill - Keep SKILL.md under 500 lines - Move detailed content to
references/ - Use
scripts/for deterministic operations - Avoid rewriting the same code - The iterative cycle is built-in - Skills improve through real usage
- Progressive disclosure keeps context efficient - Load only what’s needed
Summary
In this post, I showed how to create custom agent skills using Anthropic’s skill-creator. The six-step workflow (understand, plan, initialize, edit, package, iterate) transforms Claude into a specialized expert.
Start by running init_skill.py to scaffold your first skill. Then iterate based on real usage patterns. The skill-creator is itself a skill worth installing before any new agent project in 2026.
Final Words + More Resources
My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me
Here are also the most important links from this article along with some further resources that will help you in this scope:
Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!
Comments