The Skills System

Table of content

Skills are reusable instructions that teach Claude how to approach specific tasks. Instead of repeating the same prompts, you define them once and invoke by name.

What skills do

Without skillsWith skills
Repeat same instructions every timeInvoke by name: /brainstorm
Forget your preferred approachConsistent methodology
Long prompts for complex tasksClean, composable capabilities
Context lost between sessionsPersistent knowledge

Built-in vs custom

Claude Code ships with built-in skills. You can also create your own.

TypeLocationExamples
Built-inBundled with Claude Codebrainstorm, write-plan, systematic-debugging
Custom.claude/skills/ in your projectYour team’s review process, project-specific workflows
Shared~/.claude/skills/Personal skills across all projects

List available skills:

claude "/help"  # Shows available slash commands and skills

Skill file structure

Skills live in .claude/skills/{skill-name}/skill.md:

.claude/
└── skills/
    └── research/
        └── skill.md

The skill.md file:

---
name: research
description: Deep research on any topic with source verification
---

# Research Skill

When researching a topic:

1. Start with authoritative sources
2. Cross-reference claims
3. Note contradictions
4. Summarize findings with citations

## Output format

- **Summary**: 2-3 sentences
- **Key findings**: Bullet points
- **Sources**: Links with credibility notes
- **Gaps**: What couldn't be verified

Frontmatter fields

FieldRequiredPurpose
nameYesHow to invoke the skill
descriptionYesWhen to use (shown in help, triggers auto-selection)

Creating your first skill

mkdir -p .claude/skills/quick-review

Create .claude/skills/quick-review/skill.md:

---
name: quick-review
description: Fast code review focusing on bugs and security issues
---

# Quick Review

Review code for critical issues only. Skip style nitpicks.

## Checklist

- [ ] Security vulnerabilities (injection, auth bypass)
- [ ] Null/undefined access
- [ ] Resource leaks (unclosed connections, listeners)
- [ ] Race conditions
- [ ] Error handling gaps

## Output format

| Issue | Severity | Line | Fix |
|-------|----------|------|-----|

If no issues: "No critical issues found."

Test it:

claude "/quick-review src/auth.ts"

Example: Research skill

For thorough investigation of technical topics:

---
name: research
description: Deep research with source verification and gap analysis
---

# Research Skill

## Process

1. **Scope**: Define what we're researching and why
2. **Search**: Find authoritative sources (docs, papers, official repos)
3. **Verify**: Cross-reference claims across sources
4. **Synthesize**: Combine into actionable knowledge

## Source hierarchy

| Priority | Source type | Trust level |
|----------|-------------|-------------|
| 1 | Official docs | High |
| 2 | GitHub repos | High |
| 3 | Technical blogs | Medium |
| 4 | Stack Overflow | Verify |
| 5 | AI summaries | Low |

## Output

### Summary
2-3 sentence answer to the research question.

### Key findings
- Finding 1 [source]
- Finding 2 [source]

### Contradictions
Note any conflicting information found.

### Gaps
What couldn't be verified or needs more research.

### Sources
Full list with credibility assessment.

Example: Refactoring skill

For systematic code improvements:

---
name: refactor
description: Systematic refactoring with safety checks and verification
---

# Refactoring Skill

Safe, incremental code improvements.

## Pre-flight

- [ ] Understand current behavior (read tests, run code)
- [ ] Identify what changes and what stays same
- [ ] Check test coverage for affected code

## Process

1. **Small steps**: One change at a time
2. **Test after each**: Run tests before next change
3. **Preserve behavior**: Refactoring != feature changes

## Checklist

- [ ] All tests pass before starting
- [ ] Each change is a single commit
- [ ] No behavior changes (unless explicitly requested)
- [ ] Types still compile
- [ ] No new warnings

## If tests fail

Stop. Show what broke. Ask before proceeding.

## Output per step

| Step | Change | Tests | Commit |
|------|--------|-------|--------|

Example: Documentation skill

For consistent, useful docs:

---
name: document
description: Generate clear documentation following project conventions
---

# Documentation Skill

Write docs people actually read.

## Principles

- **Scannable**: Headers, bullets, tables
- **Examples first**: Show, then explain
- **No fluff**: Cut "In order to", "It should be noted that"
- **Assume competence**: Skip obvious explanations

## Structure by type

### Function/Method

Brief description (one line).

@param name - what it is @returns what comes back @throws when it fails @example code here


### README

Name

One-line description.

Quick start

3 commands max.

API

Table of main functions.

Examples

Real use cases.


### API endpoint

POST /endpoint

Brief description.

Request

| Field | Type | Required | Description |

Response

| Field | Type | Description |

Example

curl command


## Anti-patterns

| Don't | Do |
|-------|-----|
| "This function is used to..." | "Validates user input" |
| Document obvious params | Document non-obvious behavior |
| Copy implementation | Explain intent |

Auto-triggering

Skills can trigger automatically based on their description. When you ask Claude something that matches a skill’s description, it may invoke that skill.

Your requestMatched skill
“Research how X works”research
“Review this PR for issues”quick-review
“Add docs to this function”document

You can also invoke explicitly:

claude "/research WebSocket authentication patterns"
claude "/refactor this module to use async/await"

Skill with todos

Checklists in skills become interactive todos:

## Pre-deployment checklist

- [ ] All tests pass
- [ ] No console.logs
- [ ] Environment variables documented
- [ ] Migration scripts tested
- [ ] Rollback plan documented

Claude tracks these as it works, marking items complete.

Project-wide vs personal

ScopeLocationUse case
Project.claude/skills/Team workflows, project conventions
Personal~/.claude/skills/Your preferences across all projects

Project skills override personal ones with the same name.

Debugging skills

If a skill isn’t working:

  1. Check the path: .claude/skills/{name}/skill.md
  2. Verify frontmatter has name and description
  3. Test explicit invocation: claude "/{skill-name}"
  4. Check for syntax errors in markdown

Next: Custom Commands

Topics: claude-code automation workflow