· Working
Claude Code skills: teach Claude to work your way
A skill is a folder with a SKILL.md file that Claude loads when your request matches its description. What skills are, where they live, which frontmatter fields matter, how to build a contrast-check skill for design work, and what to check before installing someone else's.
A Claude Code skill is a folder containing a SKILL.md file. Its header says what the skill does and when to use it; its body is the step-by-step procedure. Claude reads only the header until a request matches, then loads the instructions. You write a workflow down once and Claude follows it every time after.
This site's repository has ten skills in .claude/skills/, covering copywriting, copy editing, SEO audits and a few more. The content plan behind this blog was drafted with three of them. Below I explain how skills work, then build a small one for design work from scratch. Every field and path was checked against the official docs on 5 October 2026.
What is a skill in Claude Code?
The Claude Code docs describe skills as a way to bundle instructions, reference material and automation. They suggest creating one when you keep pasting the same instructions or checklist into the chat.
Designers have plenty of those: checking colour contrast, writing microcopy in a brand voice, catching components that use raw hex instead of tokens, drafting handoff notes. Each is a routine you already know by heart. A skill gives Claude the same routine.
Skills aren't exclusive to Claude Code. Anthropic calls the format Agent Skills, and it also works on claude.ai and through the API. Each surface keeps its own copy, though: skills in Claude Code live on disk and don't sync to claude.ai or the API by themselves.
How do skills compare with CLAUDE.md, prompts and MCP?
| When it loads | Best for | |
|---|---|---|
CLAUDE.md | In full, every turn | Short facts: colour rules, component paths |
| A prompt in chat | That conversation only | One-off tasks |
| Skill | Description always; body when used | Long procedures you repeat |
| MCP server | When Claude calls a tool | Access to read and act in another tool |
In this repo, AGENTS.md (imported by CLAUDE.md) holds rules like "no box-shadow anywhere" and "text uses weight 400 or 500 only". Claude needs those on every turn, so they belong there. The procedure for auditing a blog post's SEO is only needed during an SEO audit, so it is a skill. MCP solves a different problem, which I cover in What is MCP?.
How does Claude decide when to use a skill?
The Agent Skills docs call it progressive disclosure:
- At startup, Claude reads only each skill's
nameanddescription, about 100 tokens per skill. - When a request matches, Claude reads the body of
SKILL.md. The docs list this level as typically under 5,000 tokens. - When it needs more, Claude opens supporting files in the skill folder that
SKILL.mdpoints to.
So the description does most of the work. It has to say what the skill does and when to use it, in the words you actually type. Claude Code truncates it at 1,536 characters (combined with the when_to_use field), so put the key use case first.
You can also call a skill yourself by typing /skill-name at the start of a message. The docs note that old command files in .claude/commands/ now behave exactly like skills.
Where do skills live?
| Kind | Path | Available in |
|---|---|---|
| Personal | ~/.claude/skills/<skill-name>/SKILL.md | Every project on your machine |
| Project | .claude/skills/<skill-name>/SKILL.md | This repository, shared through git |
| Plugin | <plugin>/skills/<skill-name>/SKILL.md | Wherever the plugin is enabled, as /plugin-name:skill-name |
There are also skills deployed by an organisation and skills enabled on your claude.ai account. When names clash, enterprise wins over personal, and personal over project.
Here's the shape of a real skill in this repo:
.claude/skills/copywriting/
├── SKILL.md
├── references/
│ ├── ai-tells.md
│ ├── copy-frameworks.md
│ └── natural-transitions.md
└── evals/
└── evals.jsonSKILL.md holds the main procedure. Files in references/ are opened only when needed, such as the list of AI writing patterns to avoid.
What goes into a SKILL.md file?
YAML frontmatter starting on the very first line, then Markdown. The fields I find designers actually need:
| Field | What it does |
|---|---|
name | The name in the / menu. Defaults to the folder name. Lowercase letters, numbers and hyphens, 64 characters max |
description | What the skill does and when to use it. The one field you should always write |
when_to_use | Extra trigger phrases, appended to the description |
allowed-tools | Pre-approves some tools for that turn so Claude doesn't ask again |
disable-model-invocation | Set to true so only you can run it |
argument-hint | Autocomplete hint, for example [file-path] |
The docs list more (model, context, paths, hooks and others). Your first skill won't need them.
How do you build a contrast-check skill?
I picked contrast because the thresholds are unambiguous and I check it constantly. On this site, magenta #ff009d reaches only 3.66:1 on white: fine as a button fill, a fail for body-size text. Grey #717171 hits 4.88:1 on white but drops to 4.60:1 on the #f8f8f8 section band. Re-checking pairs like these by hand after every palette change is exactly where things slip.
-
Create the folder as a personal skill, so it works in every project:
mkdir -p ~/.claude/skills/contrast-check -
Create
SKILL.mdinside it:--- name: contrast-check description: Audit text and background colour contrast against WCAG level AA in a component, CSS file or token file. Use when the user asks about contrast, legibility, whether a text colour passes, or wants a colour accessibility review. argument-hint: [file-path] allowed-tools: Read Grep --- # Contrast check Check the file $ARGUMENTS. If no argument is given, ask which file to check. ## WCAG AA thresholds - Normal text: at least 4.5:1. - Large text (24px and up, or 18.66px and up when bold): at least 3:1. - Borders, icons and focus rings of UI components: at least 3:1. ## Steps 1. Read the project's colour token file to map each token to its value. 2. Find every text colour and background colour that actually appear together in the file. 3. Compute the ratio with the WCAG relative luminance formula, rounded to 2 decimals. 4. Check secondary surfaces too, such as grey section bands and hover states, not only the main background. 5. Do not edit any file. Report only. ## Report One table with columns: Location, Text colour, Background, Ratio, Text size, Pass or Fail, Suggested replacement token. End with one line giving the number of failing pairs. -
Open Claude Code in a project and try it:
/contrast-check components/blog/mdx/note.tsx. Or ask normally, something like "does the text in this file have enough contrast?", and see whether Claude loads the skill on its own. -
Tune the description. If the skill doesn't trigger, the docs suggest adding the words you naturally use. If it triggers too often, make it narrower.
A few notes on that file. Claude Code replaces $ARGUMENTS with whatever you type after the skill name. allowed-tools: Read Grep lets Claude read and search files without asking during that turn. It doesn't restrict anything: your normal permission settings still apply. The thresholds come from WCAG success criteria 1.4.3 and 1.4.11, linked below.
A microcopy skill follows the same pattern, with voice rules and a few right and wrong examples in place of contrast thresholds. On the Car From Japan inquiry form I redesigned the button label, the form content and the confirmation screen, and the wording in that work is what I'd turn into a skill today. The project is in the inquiry form case study.
Is it safe to install someone else's skill?
Anthropic's Agent Skills docs are direct about it: use skills only from trusted sources, meaning ones you created or got from Anthropic. A skill can include instructions and code, so a malicious one can direct Claude to call tools or run code in ways that don't match its stated purpose, up to leaking data.
In Claude Code, a skill has the same network access as any other program on your computer. Read every file in a skill's folder before using it, scripts and reference files included.
When I read an unfamiliar skill, I look for three things the Claude Code docs call out:
- Broad
allowed-tools. A skill can grant itself permission to run shell commands. The docs advise reviewing this field in repository skills before running Claude Code in a repo you don't trust. - Injected commands. The
!`command`syntax in aSKILL.mdruns a command on your machine before Claude even reads the content. - Content fetched from external URLs. The Agent Skills docs warn that fetched content can carry malicious instructions, and that a trustworthy skill can turn bad if its external dependencies change.
This applies when you clone someone else's repository too: its .claude/skills/ folder is picked up when you open Claude Code there.
Where should you start?
Pick something you've explained to Claude three times already. Write it as a SKILL.md in ~/.claude/skills/, run it a few times, then tune the description. If Claude Code isn't installed yet, start with installing Claude Code. Writing a SKILL.md is much like writing a good prompt, so how to write prompts for Claude applies straight away. For where skills fit in a full design-to-code workflow, read Claude Code for designers. And if your skill needs to know your design system, point it at your DESIGN.md instead of copying the rules into the skill.
If you want to talk about bringing a design system into an AI workflow, my about page has the ways to reach me.
Sources
- Anthropic, Use Skills in Claude Code
- Anthropic, Agent Skills overview
- Anthropic, Skill authoring best practices
- W3C, Understanding SC 1.4.3: Contrast (Minimum)
- W3C, Understanding SC 1.4.11: Non-text Contrast
Folder paths, frontmatter fields and security guidance checked against these pages on 5 October 2026.
Frequently asked questions
- Where do Claude Code skills live?
- Personal skills go in ~/.claude/skills/<skill-name>/SKILL.md and work in every project on your machine. Project skills go in .claude/skills/<skill-name>/SKILL.md inside the repository and travel with git. Skills can also come from plugins.
- Which SKILL.md fields are required?
- In Claude Code, no frontmatter field is strictly required. The docs recommend always writing a description, because Claude uses it to decide when to load the skill. If you leave out name, the skill takes the folder's name.
- How do I run a skill manually?
- Type a slash and the skill's name at the start of your message, for example /contrast-check. Otherwise Claude loads the skill on its own when your request matches the description.
- What is the difference between a skill and CLAUDE.md?
- CLAUDE.md loads in full on every turn. A skill's body loads only when it is used, so skills suit long procedures you run now and then, and CLAUDE.md suits short facts Claude needs all the time.
- Is it safe to install skills from the internet?
- Only if you trust the source and have read every file. Anthropic recommends using skills you wrote yourself or got from Anthropic, because a malicious skill can direct Claude to call tools or run code in ways that don't match its stated purpose.
You might also like
What is Claude Code? Install it and run your first session, no coding needed
A designer's walkthrough for people who have never opened a terminal: what Claude Code is, what you need, installing on macOS and Windows, a safe first session, and fixes for the usual errors. Every command comes from Anthropic's docs.
Working· 2026-10-04
Claude Code for designers: turning a Figma design into a working page
How I use Claude Code as a designer to get from Figma frames to a real, maintained website: what to set up, how to write rules the agent follows, a six-step workflow, and the mistakes I made building this site.
Working· 2026-10-04
What is Claude? A guide for people who have never used AI
Claude is Anthropic's AI assistant. This guide covers what it can do, how the free and paid plans differ, how to run your first conversation, and where Claude tends to get things wrong. Every feature and price was checked against Anthropic's own pages.
Working· 2026-10-04