Guide users through creating Agent Skills for Claude Code. Use when the user wants to create, write, author, or design a new Skill, or needs help with SKILL.md files, frontmatter, or skill structure.
This Skill helps you create well-structured Agent Skills for Claude Code that follow best practices and validation requirements.
Use this Skill when:
First, understand what the Skill should do:
Ask clarifying questions:
Check for reuse first:
Load the domain skill when updating one:
SKILL.md and any relevant supporting files before proposing behavior changes.skill-writer is only the meta-authoring guide for skill structure, frontmatter, validation, and trigger hygiene; it is not enough to understand domain-specific behavior.skill-writer guidance to make those instructions valid and discoverable.Keep it focused: One Skill = one capability
Determine where to create the Skill:
Personal Skills (~/.copilot/skills/):
Project Skills (.copilot/skills/):
Create the directory and files:
# Personal
mkdir -p ~/.copilot/skills/skill-name
# Project
mkdir -p .copilot/skills/skill-name
For multi-file Skills:
skill-name/
├── SKILL.md (required)
├── reference.md (optional)
├── examples.md (optional)
├── scripts/
│ └── helper.py (optional)
└── templates/
└── template.txt (optional)
Create YAML frontmatter with required fields:
---
name: skill-name
description: Brief description of what this does and when to use it
---
Field requirements:
name:
pdf-processor, git-commit-helperPDF_Processor, Git Commits!description:
Optional frontmatter fields:
allowed-tools: Read, Grep, Glob
Use for:
The description is critical for Claude to discover your Skill.
Formula: [What it does] + [When to use it] + [Key triggers]
Examples:
✅ Good:
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.
✅ Good:
description: Analyze Excel spreadsheets, create pivot tables, and generate charts. Use when working with Excel files, spreadsheets, or analyzing tabular data in .xlsx format.
❌ Too vague:
description: Helps with documents
description: For data analysis
Tips:
Use clear Markdown sections:
# Skill Name
Brief overview of what this Skill does.
## Quick start
Provide a simple example to get started immediately.
## Instructions
Step-by-step guidance for Claude:
1. First step with clear action
2. Second step with expected outcome
3. Handle edge cases
## Examples
Show concrete usage examples with code or commands.
## Best practices
- Key conventions to follow
- Common pitfalls to avoid
- When to use vs. not use
## Requirements
List any dependencies or prerequisites:
```bash
pip install package-name
For complex scenarios, see reference.md.
### Step 7: Add progressive disclosure (optional)
Use progressive disclosure when the Skill has important detail that should not be loaded on every invocation. Keep `SKILL.md` small, actionable, and sufficient for the normal path; put optional depth in supporting files.
Keep in `SKILL.md`:
- Frontmatter and activation guidance
- Quick start and the normal happy-path workflow
- Required first-run steps and hard constraints
- Links to supporting files with clear "read when" instructions
Move to supporting files:
- **reference.md**: Detailed API docs, option matrices, schemas, and advanced behavior
- **examples.md**: Extended examples, realistic prompts, expected outputs, and edge cases
- **scripts/**: Helper scripts and utilities
- **templates/**: Boilerplate files, prompt templates, or output templates
- **data/** or **config.json**: Large lookup tables or configuration defaults
Reference supporting files from `SKILL.md` only when the main workflow needs them:
```markdown
For advanced usage, see [reference.md](reference.md).
For realistic examples and expected outputs, see [examples.md](examples.md).
Run the helper script:
\`\`\`bash
python scripts/helper.py input.txt
\`\`\`
Avoid these progressive disclosure anti-patterns:
SKILL.md and reference.mdSKILL.mdCheck these requirements:
✅ File structure:
name✅ YAML frontmatter:
--- on line 1--- before contentname follows naming rulesdescription is specific and < 1024 chars✅ Content quality:
✅ Testing:
Restart Claude Code (if running) to load the Skill
Ask relevant questions that match the description:
Can you help me extract text from this PDF?
Verify activation: Claude should use the Skill automatically
Check behavior: Confirm Claude follows the instructions correctly
If Claude doesn't use the Skill:
Make description more specific:
Check file location:
ls ~/.copilot/skills/skill-name/SKILL.md
ls .copilot/skills/skill-name/SKILL.md
Validate YAML:
cat SKILL.md | head -n 10
Run debug mode:
claude --debug
---
name: code-reader
description: Read and analyze code without making changes. Use for code review, understanding codebases, or documentation.
allowed-tools: Read, Grep, Glob
---
---
name: data-processor
description: Process CSV and JSON data files with Python scripts. Use when analyzing data files or transforming datasets.
---
# Data Processor
## Instructions
1. Use the processing script:
\`\`\`bash
python scripts/process.py input.csv --output results.json
\`\`\`
2. Validate output with:
\`\`\`bash
python scripts/validate.py results.json
\`\`\`
---
name: api-designer
description: Design REST APIs following best practices. Use when creating API endpoints, designing routes, or planning API architecture.
---
# API Designer
Quick start: See [examples.md](examples.md)
Detailed reference: See [reference.md](reference.md)
## Instructions
1. Gather requirements
2. Design endpoints (see examples.md)
3. Document with OpenAPI spec
4. Review against best practices (see reference.md)
Use this pattern when the skill has a compact workflow plus large optional detail:
# Incident Query Helper
## Quick start
1. Gather the incident ID and affected service.
2. Run the standard query.
3. Summarize impact and next action.
## References
- Read [queries.md](queries.md) when the standard query is insufficient.
- Read [examples.md](examples.md) when drafting user-facing incident summaries.
- Use `scripts/normalize.py` only after confirming the raw export path.
Before finalizing a Skill, give it a short quality verdict:
| Dimension | Check |
|-----------|-------|
| Instruction clarity | Can Claude follow the steps without guessing? |
| Behavioral completeness | Are setup, normal path, edge cases, and exit conditions covered? |
| Trigger specificity | Does the description include realistic user phrases and file/context clues? |
| Negative triggers | Does it distinguish nearby skills and non-goals? |
| Example quality | Are examples concrete enough to anchor behavior? |
| Progressive disclosure fit | Is required guidance in SKILL.md and optional detail in supporting files? |
| Safety boundaries | Are destructive actions, credentials, and external data handled explicitly? |
| Tool fit | Are required tools/resources named without over-granting access? |
| Portability | Will it work in the intended personal/project/plugin location? |
| Maintainability | Is repeated or volatile detail factored into references, scripts, or templates? |
Use the verdict to recommend one of: keep, tighten triggers, move detail to supporting files, inline critical rules, merge with an existing skill, or defer to an existing plugin.
Before finalizing a Skill, verify:
Skill doesn't activate:
Multiple Skills conflict:
Skill has errors:
See the documentation for complete examples:
When creating a Skill, I will:
The result will be a complete, working Skill that follows all best practices and validation rules.
Search 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