Create and improve Claude Code skills. Use when drafting new skills, writing SKILL.md files, improving skill descriptions, or structuring skill directories. Triggers on requests to create skills, write skills, draft skills, improve skill triggering, or fix skills that aren't activating.
Skills are directories that teach Claude how to perform specialized tasks. Claude discovers them automatically based on description matching—no manual invocation needed.
~/.claude/skills/skill-name/
├── SKILL.md # Required - frontmatter + instructions
├── reference.md # Optional - detailed docs loaded on-demand
├── examples.md # Optional - usage examples
└── scripts/ # Optional - executable utilities
Location determines scope:
~/.claude/skills/ - Personal, works across all projects.claude/skills/ - Project-specific, committed to repo---
name: lowercase-with-hyphens
description: What this does and when Claude should use it. Max 1024 chars.
allowed-tools: [Read, Grep, Glob] # Optional - restrict available tools
model: haiku # Optional - specify model
---
# Skill Title
Instructions in markdown...
| Field | Rules |
|-------|-------|
| name | Lowercase, hyphens only, max 64 chars |
| description | Max 1024 chars, this is how Claude decides to trigger |
| Field | Purpose |
|-------|---------|
| allowed-tools | Restrict what Claude can do (e.g., read-only skills) |
| model | Force a specific model for this skill |
Claude triggers skills via semantic matching against descriptions. A vague description means the skill won't fire.
Bad: "Helps with documents" Good: "Extract text and tables from PDFs, fill PDF forms, merge PDF files. Use when working with PDF documents, document extraction, or form filling."
A strong description answers:
# Action-focused
description: Generate database migrations for PostgreSQL. Use when creating tables, adding columns, or modifying schemas.
# Tool-focused
description: Work with Axum web framework in Rust. Handles routing, extractors, state management, and middleware configuration.
# Workflow-focused
description: Deploy to production. Runs tests, builds assets, pushes to registry, and updates infrastructure.
Keep SKILL.md under 500 lines. Put detailed reference material in separate files:
# Main Skill Content
Core instructions here...
For API reference, see [reference.md](reference.md).
For examples, see [examples.md](examples.md).
Claude loads supporting files only when the task requires them—keeps context focused.
Rules:
scripts/ are executed, not loaded into contextAssume Claude is smart. Don't over-explain. Only add context Claude genuinely needs.
Use appropriate freedom levels:
Structure instructions with:
Before relying on a skill, test three scenarios:
If the skill isn't triggering:
If the skill triggers when it shouldn't:
| Approach | Trigger | Use Case |
|----------|---------|----------|
| Skills | Auto (Claude chooses) | Specialized workflows with supporting files |
| Slash commands | Manual (/command) | Guaranteed execution, simple prompts |
| CLAUDE.md | Always loaded | Project-wide rules, always-on context |
| Subagents | Delegated | Isolated context for research-heavy tasks |
Choose skills when:
Choose slash commands when:
/ autocomplete)allowed-tools: [Read, Grep, Glob, WebFetch]
Prevents accidental writes when skill is for analysis/research.
---
name: sqlx-expert
description: Work with SQLx in Rust. Handles queries, migrations, compile-time checking, and connection pooling. Use for database code in Rust projects using SQLx.
---
# SQLx Patterns
[Core patterns and gotchas]
For migration guide, see [migrations.md](migrations.md).
For query patterns, see [queries.md](queries.md).
---
name: deploy-production
description: Deploy to production environment. Runs full test suite, builds release artifacts, and deploys to infrastructure. Use when shipping to prod.
allowed-tools: [Read, Bash, Grep, Glob]
---
# Production Deploy
## Pre-flight Checks
- [ ] All tests pass
- [ ] No uncommitted changes
- [ ] On main branch
## Steps
1. Run test suite: `cargo test --release`
2. Build: `cargo build --release`
3. Deploy: `./scripts/deploy.sh`
~/.claude/skills/skill-name/SKILL.md has valid YAML frontmattername is lowercase-with-hyphens, max 64 charsdescription is specific with action verbs and domain termsSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer