Repeatable instructions for an AI, saved in a file, are called skills. The mechanism is universal and several AI vendors use it, not only Anthropic – the file format is described by the open Agent Skills standard.

A skill is plain text in Markdown, much like CLAUDE.md. The AI assistant loads it only when it is needed and follows the instructions exactly as if you had typed them into the conversation. Today you write your first skill: one that puts together your morning plan for the day.

For the exercise you need the mail and calendar connectors switched on, which happens in the browser, and a profil.md file in the folder you work in – it comes out of an interview Claude Code runs with you.

Three ways to write a skill

A skill can come about in three ways, and every one of them ends in the same file.

The first way is descriptive: you tell Claude Code how the skill should work and ask it to save that. You have the file in a few minutes, but later tests may show a lot that needs fixing.

The second way is practical: in a fresh conversation you carry out the whole process with Claude Code like any ordinary task, and at the end you ask it to save what you have just done together as a skill. Every step in the file has actually been carried out, so there are fewer surprises.

The third way combines the two: first you describe how the skill should work, then you carry out the task together with the AI, and the skill is written at the end. This method takes the most time but gives the best starting point – a starting point, because most skills need polishing right after they are created anyway, and that is a normal part of the work.

In this lesson we write the skill the descriptive way, because it holds only a few simple steps. With more elaborate skills the other two ways pay off better.

Write down what the morning plan should contain

Before the file exists, decide what you want to see in the morning. It is the key decision – if you don’t know it, the AI won’t guess it either.

Our plan is made of three items: emails waiting for a reply, today’s meetings in the calendar, and what is left to do from yesterday. Your list may look different – if you work on commissions with deadlines, whatever is due today goes to the top and mail drops to third place.

Write every item so that it says what the result should look like, not just where to look. “Go through the mail” leaves the whole decision to the AI assistant, which will decide it one way on Monday and another on Thursday. “List the messages from the last 24 hours that are waiting for my reply, one line per message” gives a similar result every time.

Don’t save anything to a file. The list goes, in full, into the request you are about to send Claude Code – the more precisely you write it down now, the fewer fixes later.

Name three sources: the inbox, the calendar and your profile

A skill has no data access of its own: it runs inside an ordinary conversation and reaches for the same connectors and files Claude Code reaches for when you ask it directly. So the mail and calendar connectors have to be switched on before the skill runs.

Give every part of the plan one source. Emails waiting for a reply – from the Gmail connector. Today’s meetings and the free slots between them – from the Google Calendar connector. The third source is the profil.md file in a folder the AI has access to, and it makes the biggest difference: without it you get a list of every unread message, newsletters and payment confirmations included; with it, Claude Code knows what you do and who your clients are, so it can tell a request for a quote from a wholesaler’s advert.

Name the sources in the steps by their own names. “Check what I have to do today” makes Claude Code guess where to look, and with two calendars connected it will guess right once and wrong the next time. “Check today’s events in Google Calendar” points at one specific source.

Decide on the skill’s name and how it is triggered

You don’t have to name the skill – Claude Code will come up with a name itself. If you want to choose one, remember that the name is the command you type after a slash, just like /config, which we covered in a separate tip. That is why it consists of lowercase letters only, no special characters, with hyphens instead of spaces. The name morning-plan gives the command /morning-plan.

A hint: to find your own skills quickly in the list of all slash commands, it helps to start their names with one shared word, work- for example. And if you want your skills always at the very top of the command list (it is alphabetical), start their names with aaa-.

The command that triggers the skill is mandatory. On top of it you can define a natural-language phrase that starts the skill “the human way”, in an ordinary conversation. In our case that phrase could be: “if I say »prepare my plan for the day« or something similar”. The words something similar matter a lot here – without them the AI will “listen” only for the exact phrases you named.

Ask Claude Code to save the skill

You don’t write the skill in an editor – Claude Code saves the file when you ask it to. Ask for a global skill, meaning one available in every folder on your computer (there are local skills too, which we get to in a moment). In the request, give the name, the phrase for starting it “the human way”, and the steps from your list.

Below is an example prompt for generating the skill – swap the steps for your own if you need to:

Save a global skill named morning-plan. Also run it whenever I say "prepare my plan for the day" or something similar. The skill should put together my morning plan for the day in three steps:
1. From the profil.md file in this folder, take what I do and who my clients are, and use that to skip newsletters and adverts.
2. From the Gmail connector, list the messages from the last 24 hours that are waiting for my reply – one line per message: sender, subject, what it is about.
3. From Google Calendar, list today's meetings with their times and the free slots between them.
Before you save the file, show me the content of the skill and wait for my "ok".

After you send it, Claude Code shows you the content of the skill for approval. Read it once. If something is missing from the steps, say so now, before the file exists; if everything matches, write “ok”. Claude Code saves the skill in its skills folder, and the /morning-plan command is available from the next conversation on.

What a skill is made of

The skill content Claude Code showed you for approval has two parts. At the top sits the frontmatter: a few lines between two rows of dashes ---. The frontmatter holds extra data describing the file. It is a common arrangement – you will find it in many .md files Claude Code works with. A skill’s frontmatter has two fields:

  • name – the skill’s name, the same one that is the slash command;
  • description – what the skill does and when to use it. This is where your phrase “prepare my plan for the day or something similar” goes. Claude Code compares what you write in the conversation against the description and, when it matches, starts the skill on its own, no slash needed. Claude Code reads the descriptions of all skills at the start of every conversation – that is how it knows which skills it has and when to reach for which.

Below the frontmatter comes the rest: your steps, in plain text, in the order they run. Claude Code reads them only once it has decided it needs the skill.

Our skill will look more or less like this:

---
name: morning-plan
description: Puts together the morning plan for the day from the profile, mail and calendar. Use when the user writes "prepare my plan for the day" or something similar.
---

1. From the profil.md file in the current folder, take what the user does and who their clients are; use that to skip newsletters and adverts.
2. From the Gmail connector, list the messages from the last 24 hours that are waiting for a reply – one line each: sender, subject, what it is about.
3. From Google Calendar, list today's meetings with their times and the free slots between them.

Run the skill in a new conversation

Close the current conversation and open a new one. In the conversation where the skill was written, whatever the file lacks gets filled in by what was said in the chat along the way – tomorrow morning that context will not be there, so only a clean conversation shows what really works in the skill.

Type /morning-plan or write “prepare my plan for the day” and check whether the plan you get is the one you want – the right sources and the right shape of result in each of the three steps.

If the command does not show up after you type the slash, and the skills folder was created today for the first time, close Claude Code completely and run claude again – Claude Code only notices a new skills folder after a restart. Still nothing? Type /skills: you get a list of the skills Claude Code can see right now. If your skill is not on it, ask in the conversation: “check where you saved the morning-plan skill and whether that is the global skills folder”.

Fix the steps that came out differently

The first run rarely comes out entirely as intended, and that is an ordinary part of writing a skill – it looks the same for us. Most often a step was too general: the name of the source or the description of the result was missing, and the skill listed everything it found.

Every fix is made by Claude Code – instead of editing the file by hand, ask it for the change. The AI writes instructions in the form it reads best, often with more advanced Markdown formatting, and a manual edit easily breaks that form.

An example fix you can ask for:

Change the mail step in the morning-plan skill: skip newsletters and automatic confirmations, keep only the messages somebody is waiting for a reply to.

After every change, open a new conversation and run the skill again. Two or three such rounds are the usual polishing of a skill. After that the file usually needs no more touching – unless you decide to extend it.

What is worth writing down for good, and what is fine to say once in a conversation? We take that apart in a separate tip.

A local skill – for one folder only

A global skill works in every folder on your computer. A local skill exists only in the folder where you save it, and works only when you run claude in that folder.

Local skills come in handy when you run several kinds of work in separate folders and each needs its own version of the same procedure – a morning plan for the company and a morning plan for an after-hours project can then have their own steps. You ask for one the same way, only instead of “global” you write “local, for this folder only”.

How big a skill should be

A common mistake early on is building large files that work like a Swiss Army knife – one for nearly everything. A different approach works better.

Skills should work like Lego bricks: each does one specific job. When one misbehaves, the rest keep working.

Then there is token usage. If a large skill is made of many conditional instructions like “in situation A do X, in situation B do Y”, half the tokens spent on reading the skill are wasted. Split into separate skills A and B, the AI assistant loads only the one it needs at that moment.

If you are not sure whether your skill has grown too big, ask Claude Code: “is this skill worth splitting into a few smaller ones?”.

And if the vision of a Swiss-Army-knife skill still tempts you, you can build a so-called orchestrator – a skill whose job is to call other skills.

Back to our morning plan. Say that in six months its content grows a lot and conditional instructions appear, like “check mail only on even days and the calendar on odd ones”. Then you can pull two smaller skills out of it: check-email and check-calendar. In morning-plan you keep only the instruction to use those two new skills on the right days. You still call the same skill as before, but inside everything runs more smoothly.

What to take away from this lesson

A skill is a saved procedure that Claude Code carries out in an ordinary conversation. It reaches for the same connectors and files it uses when you ask directly – so without the connectors and the profile, the plan comes out empty.

Claude Code writes the file; you say what goes inside. Every step names its source and says what the result should look like – “list the messages from the last 24 hours waiting for a reply, one line each”, not “look at the mail”.

A skill has a header and steps. The header (the frontmatter) holds the name, which is the /morning-plan command, and a description with the phrase that makes Claude Code start the skill on its own; below the header are your steps.

You test a skill in a new conversation and fix it one sentence at a time. In the conversation where it was written, the chat context fills the gaps; two or three rounds of fixes are normal.

One skill does one thing. Split a large skill full of conditional instructions into smaller ones, and when you want to call them together, make an orchestrator out of them – a skill that runs the others.

Tasks

Tick them off as you go. The state is stored in your browser, so you can come back to this list tomorrow.

  • A list of the three things in the morning plan written down, each with its source and the shape of its result
  • The skill’s name chosen and the phrase for starting it “the human way” decided
  • The global morning-plan skill saved by Claude Code after your “ok”
  • /morning-plan run in a new conversation and read point by point
  • A step that came out differently fixed with one sentence in the conversation
  • The skill also started with the phrase “prepare my plan for the day”, no slash