Turn any workflow into a reusable slash command — no framework needed
Turn what you learned into a concrete stack decision.
Want the shortlist in your inbox?
Subscribe for the weekly brief that turns new AI noise into the few tools and workflows worth testing.
Guide
Claude Code + Agents: Advanced Configuration and Autonomous Workflows
CLAUDE.md architecture, subagents, hooks, MCP servers, and building Claude pipelines that run without you
Guide
Claude Cowork + Claude Agents: Your First Setup
How to use Claude as a real AI coworker — not just a chat window — with agents that take action on your behalf
Guide
MCP Servers Explained: What They Are and Why They Matter
The protocol connecting AI assistants to the real world — and how to use it today
A skill is a markdown file (SKILL.md) that turns any workflow into a reusable slash command. Instead of explaining the same task to Claude every time, you write it once and invoke it with /skill-name.
Skills live in ~/.claude/skills/ and are automatically available across all your projects.
Examples of what skills can do:
Every skill is a single markdown file with three parts:
# Skill Name
Brief description of what this skill does.
## Trigger
When this skill should activate. Include example phrases and keywords.
## Instructions
Step-by-step instructions for Claude to follow when this skill is invoked.
That's it. No framework, no dependencies, no build step. Just a markdown file.
Let's build a skill that creates well-formatted git commits. This is useful because writing good commit messages is tedious, and Claude can do it consistently.
mkdir -p ~/.claude/skills/quick-commit
Create ~/.claude/skills/quick-commit/SKILL.md:
# Quick Commit
Generate a well-formatted git commit for staged changes.
## Trigger
Use when the user says "quick commit", "commit this", or "qc".
## Instructions
1. Run `git diff --staged` to see what's being committed
2. If nothing is staged, run `git diff` to show unstaged changes and ask if the user wants to stage them
3. Analyze the changes and generate a commit message following this format:
- First line: type(scope): short description (max 72 chars)
- Types: feat, fix, refactor, docs, test, chore
- Blank line
- Body: 1-3 bullet points explaining WHY, not WHAT
4. Show the commit message to the user for approval
5. If approved, run the commit
### Rules
- Never use generic messages like "update files" or "fix bug"
- The first line must be under 72 characters
- Focus on the intent, not the diff
Open Claude Code in any project and type:
/quick-commit
Claude reads the skill, checks your staged changes, generates a commit message, and asks for approval before committing.
Skills that run through a list of checks. Great for QA, deployment, and audits.
## Instructions
Run these checks in order. Report pass/fail for each:
1. [ ] All tests pass (`bun test`)
2. [ ] No TypeScript errors (`bun run typecheck`)
3. [ ] No lint warnings (`bun run lint`)
4. [ ] Build succeeds (`bun run build`)
5. [ ] No console.log statements in production code
If all pass, report "Ready to deploy."
If any fail, list failures and suggest fixes.
Skills that create files or code following your conventions.
## Instructions
When the user provides a component name:
1. Create `src/components/{name}/{name}.tsx` with:
- Named export (not default)
- Props interface
- Tailwind CSS classes
2. Create `src/components/{name}/{name}.test.tsx` with:
- Basic render test
- Props test
3. Update the barrel export in `src/components/index.ts`
Skills that read code and provide insights.
## Instructions
1. Read the file or directory the user specifies
2. Analyze for:
- Functions longer than 50 lines
- Deeply nested conditionals (3+ levels)
- Duplicated logic across files
- Missing error handling on async operations
3. Output a prioritized list of improvements
4. For each issue, show the file, line number, and a suggested fix
Bad: "Generate a report" Good: "Generate a markdown table with columns: File, Issue, Severity, Suggested Fix"
### Rules
- Never modify files without showing the diff first
- Always ask before deleting anything
- If unsure about a change, flag it and move on
Reference project-specific values that Claude can resolve at runtime:
## Instructions
1. Read the project's package.json to determine the test command
2. Read .env.example to know which env vars are expected
3. Check the project's CLAUDE.md for any special conventions
Skills can reference other skills:
## Instructions
1. Run the `/lint` skill first
2. If lint passes, run the `/test` skill
3. If tests pass, run the `/quick-commit` skill
Once you've built a skill that's genuinely useful, you can share or sell it:
Free distribution:
Paid distribution:
Skills are just markdown files — they're easy to distribute and there's no DRM to deal with. The value is in the expertise encoded in the instructions, not the file format.
You now know everything you need to build Claude Code skills. The best skills come from your own workflows — the things you do repeatedly and wish were automated.
Start with one skill that saves you 10 minutes a day. That's 40+ hours a year from a single markdown file.