Skip to content

Write your first Claude Code skill for a repeated job

Stop pasting the same long prompt. Save the procedure once as a skill, run it by name, check it does what you wrote, and delete it when it stops helping.

By Nick

3 min read

Coding toolsAI Agents Intermediate
On this page
Time
10 to 20 minutes
Cost
Nothing extra; it uses your normal Claude Code allowance
Level
Intermediate

Before you start

The one-page explainer covers what a skill is. This page is the practical half: make one, check it, and keep it honest.

1. Pick a job worth saving

The test is simple: you have typed the same long instructions at least twice, and you will need them again. Good first skills are small and harmless:

  • Summarise this week’s changes in plain English.
  • Check a draft post against your house style.
  • Write release notes in the format you like.

Avoid anything that deploys, deletes or sends messages for your first one. You want to see it work before you trust it with consequences.

2. Make the folder and the file

Skills live in a folder named after the skill, with a file called SKILL.md inside:

  • .claude/skills/changelog-summary/SKILL.md for one project, travelling with it.
  • ~/.claude/skills/changelog-summary/SKILL.md for every project on your computer.

The folder name becomes the command, so changelog-summary runs as /changelog-summary.

3. Write the procedure

Paste this into SKILL.md and change it to fit your job:

---
description: Summarise recent changes in plain English for a non-technical reader. Use when asked for a changelog, a weekly summary or "what changed".
---

1. Look at the commits from the last 7 days with git log.
2. Group them into: new, fixed, changed. Skip anything purely internal.
3. Write one plain-English line per item. No file names, no jargon.
4. End with anything that still looks unfinished.

Limits: do not edit any files. If there are no commits, say so and stop.

The part between the --- lines is the header. The description matters most: Claude Code reads every skill’s description all the time and uses it to decide when a skill fits what you asked. The steps below it are only read when the skill runs, so they can be as long as the job needs.

The “Limits” line is the bit people skip. Say what it must not do.

4. Run it and check it followed the steps

Type /changelog-summary. Then check, line by line, that it did what the file says, not what a sensible assistant might do anyway. Did it skip internal changes? Did it avoid file names?

What working looks like. The output follows your steps in order. Change one step (say, “group into two sections, not three”), run it again, and the output changes to match. That second run is the real test that it is reading your file.

Then ask for something unrelated, like “fix the typo on the about page”, and confirm the skill did not jump in. If it does, narrow the description, or add disable-model-invocation: true to the header so it only runs when you type its name.

5. Keep it tidy, or delete it

  • Keep secrets out. A project skill sits in the project, so anyone you share it with gets it. No passwords, keys or private details.
  • Cut today’s specifics. “The March launch” will be wrong in April.
  • Update it when it goes wrong. Add the fix to the skill, not to the chat, so it sticks.
  • Delete it when it stops helping. Remove the folder. That is all there is to it.

If a step needs a command to run every single time, without fail, that is a job for a hook, not a skill. A skill is a recipe the agent follows; a hook is a rule your computer enforces.

Common questions

Do I need a special name or format?

The file must be called SKILL.md and sit in its own folder inside .claude/skills. The folder name becomes the command. The only field Anthropic recommends in the header is a description, and that is the line that decides when it gets used.

Why did Claude use my skill when I did not ask for it?

Because the description matched what you asked. Make the description narrower, or add disable-model-invocation: true to the header so the skill only runs when you type its name.

What happened to custom slash commands?

They were merged into skills. Old files in .claude/commands still work and do the same thing; new ones are better written as skills.

Can I put my API key or password in a skill?

No. A project skill is a file in the project, so it travels with it, including to anyone you share the project with. Keep secrets out of it.

What to do next

Related reading

Last reviewed 22 October 2026 by Nick. Checked against claude-code docs checked 2026-10-21.

Software changes fast. If something here is out of date, tell me and I'll fix it.

Get new guides by email

Occasional and practical. No spam, no hype, unsubscribe whenever.

Occasional practical guides from UncomplicateAI. You will get a confirmation email before anything else is sent. Unsubscribe any time. Privacy

You are not subscribed until you confirm the email. Unsubscribe any time.