How to turn a workflow you keep repeating into an AI skill that fires on its own

You’ve explained the same process to your assistant four times now. Here’s how to write it down once, in a file it finds by itself.

Londynn Metten10 min readWalkthrough
Outcome
One skill file your assistant loads on its own, on the right jobs
Time
About an hour for your first one
Cost
Free. It’s a folder and a text file.
Level
Intermediate

Short answer

A skill is a folder with a markdown file in it that your AI assistant reads on its own when the job in front of it matches. Write one only after you’ve done the task three times, because the corrections you made on runs two and three are the actual content. The piece that decides whether it ever fires is the description at the top of the file, so it has to name the situations that should trigger it, not just describe what it does. Everything else you can fix later. A skill that never loads, you can’t.

01

What is a skill, actually?

It’s a folder. Inside it, a file called SKILL.md. At the top of that file, a few lines naming the skill and describing when it should be used. Below that, your instructions in plain markdown. That’s the whole format.

The interesting part is how it gets loaded, because that shapes everything about how you write one. There are three levels, and they cost you very differently.

LevelWhen it loadsWhat that means for you
Name and descriptionAlways. Every single request.This is a permanent tax on every conversation, and it’s the only thing deciding whether the skill fires. Write it like it matters, because it’s the only part that always does.
The SKILL.md bodyWhen the skill triggersFree until it’s needed. You can afford real detail here.
Extra files in the folderOnly when the body points at themEffectively unlimited. Deep reference material lives here, not in the body.
The three-level load is the whole design. Everything below follows from it.

So the description is doing two jobs at once: it’s the trigger, and it’s the thing you pay for on every request whether the skill fires or not.

02

When is a workflow ready to become a skill?

After the third time you’ve done it. Not the first.

Honestly this is the rule that matters most and it’s the one people skip. Write a skill after run one and you’re writing down a guess. Write it after run three and you’re writing down what went wrong twice and how you fixed it, which is the only part your assistant doesn’t already know.

Before you open the file, answer three questions about the work you just did. These are the questions that produce everything worth putting in a skill.

  1. 01What surprised you? That’s the thing nobody would guess from first principles.
  2. 02What did you try first that didn’t work? That’s a whole section, saved from being rediscovered.
  3. 03What would you tell someone starting this tomorrow? That’s your opening paragraph.

If you can’t answer those, stop and go do the work again. A skill built without them is a summary of what the model already knows, and loading it changes nothing except your context bill.

03

Why doesn’t my skill ever fire?

Because your description says what the skill is instead of when to reach for it. This is the single most common failure, and it’s worth being blunt: a perfect skill that never triggers is worth exactly nothing.

Assistants undertrigger. Left to their own judgment they’ll answer from general knowledge rather than go load your file. So you write the description to push, and you write it in the words a real person would actually type.

---
name: proposal-builder
description: Guidance for writing client proposals.
---
Before. Accurate, and it will almost never fire.
---
name: proposal-builder
description: Build a client proposal from a discovery call, including
  scope, phased pricing, timeline, and the assumptions section that keeps
  scope from creeping. Use whenever someone mentions a proposal, quote,
  estimate, statement of work, SOW, bid, or "what would this cost," when
  turning discovery notes into something sendable, or when revising
  pricing on a proposal already out the door. Do not use for invoices
  or contracts.
---
After. Same skill, named situations, real phrasing.

Three things changed. It names the deliverable, it lists the phrases people actually use including the ugly informal ones, and it says where to stop. That last line matters more than it looks: a description with no boundary starts firing on everything nearby, and a skill that fires constantly is worse than one that never does.

Length is a real tradeoff, not a rule. Across the eleven skills in our library the descriptions run from 30 words up to 167, measured on 2026-08-12. The short ones cover work with obvious, unmistakable trigger words. The long ones cover work people ask for in twenty different ways, and every one of those ways had to be spelled out.

04

How long should the SKILL.md body be?

Under about 500 lines. Past that, you’re not writing a skill, you’re writing a manual, and the useful parts get buried in the parts that only matter sometimes.

The fix is to split. The body holds the decisions and the workflow. Separate files in the same folder hold the deep detail, and the body says explicitly when to go read each one.

Our heaviest skill is a good illustration of the shape. The body is 421 lines. Alongside it sit eight reference files holding 7,794 words that never enter a conversation unless the body sends the assistant to fetch one. That’s the point: all of it available, almost none of it loaded.

Goes in the bodyGoes in a reference file
The workflow, in orderLong code templates and full examples
The judgment calls and thresholdsFramework-specific or tool-specific detail
What goes wrong, and what to do insteadAnything you’d only need on one job in five
The checklist you run before calling it doneReference tables you look things up in

A reference file with no pointer to it is a file nobody reads. Every time you split something out, add a line in the body saying what it covers and when to open it.

05

What do you actually write in the body?

Instructions, in the imperative. “Run the build before you screenshot,” not “it is often helpful to run the build.” Hedged prose reads as optional, and optional instructions get skipped.

Beyond that, four things earn their space and almost nothing else does.

  1. 01The order. Which step comes first and why it can’t come second. Most of what makes an expert an expert is sequence, and sequence is invisible in a finished deliverable.
  2. 02The thresholds. When to split a file, when to start over, when a thing is good enough to ship. Real numbers where you have them.
  3. 03The failure list. The mistake you actually made, named plainly, with the correct move next to it. This is the highest-value paragraph in any skill.
  4. 04The pre-flight check. A short list to run before declaring the job done, so “it applied cleanly” never gets confused with “it worked.”

Then cut everything the model already knows. If a paragraph would be true of any competent practitioner anywhere, delete it. You’re writing the delta between general competence and how this gets done well, and every sentence that isn’t the delta makes the delta harder to find.

06

Why does a skill need to be generic?

Because you will reuse it, and the version welded to your first client won’t survive the second.

We learned this the boring way. Skills written around one brand’s colors, one client’s naming, one product’s quirks. The workflow inside them was genuinely good. The moment a second project needed the same workflow, every example had to be untangled by hand, and worse, one client’s details were sitting in a file that loads during another client’s work.

So genericize as you write, not later. Swap specific names for the role they play: “the brand’s accent color,” “the client’s booking tool,” “a dedicated testing skill.” Then audit before you save.

grep -rniE "acme|jane|northstar-crm|<your client>" ~/.claude/skills/proposal-builder/
Run this over the skill folder before you call it done.

One honest exception: keep the specifics that are intrinsically part of the subject. A skill about a particular deploy platform has to name that platform, and stripping it would break the skill. The test is whether the name is the domain or just the example you happened to have on hand.

07

How do you keep more than one of them?

Keep the real files in a folder you own, organized by what kind of work they are. Then symlink them into wherever your assistant looks. The assistant’s folder becomes a directory of pointers, and your library stays somewhere you can version it, back it up, and carry it to a new machine.

~/code/skills/
  content/     writing, editing, distribution
  dev/         building, testing, shipping
  research/    teardowns, competitive work
  meta/        skills about making skills
The layout. Group by type of work, not by client or by date.
ln -s ~/code/skills/content/proposal-builder ~/.claude/skills/proposal-builder
ls -la ~/.claude/skills
Point the assistant at one. Then confirm the link resolved.

You should see an arrow pointing back at your real folder. From then on you edit the file in your library, and every machine you’ve linked picks up the change with no copying and no drift between versions.

08

How do you know it worked?

Three checks, in a fresh session each time. A session that already discussed the topic will fire the skill for reasons that have nothing to do with your description.

  1. 01Does it fire? Type the request the way a real person would, in their words, not yours. If it doesn’t load, the description is the problem and nothing else is worth touching yet.
  2. 02Does it stay quiet? Ask for something adjacent but different. A proposal skill should not wake up for an invoice. If it fires on everything, tighten the boundary line.
  3. 03Does the output actually change? Run the real job and compare against what you got before the skill existed. If it loaded and nothing improved, your body is a description of the work rather than instructions for doing it.

That third check is the one people skip, and it’s the only one that tells you whether the hour was worth it.

When it does fire and the output does change, you’ve turned something you were carrying in your head into something that carries itself. That compounds. The tenth skill is easier than the first, and it sharpens every job the first nine touch.

One last thing worth knowing: a skill sets the standing instructions, but the request you type still decides what you get back. The two work together, and the fastest upgrade available to most people is still writing a better single prompt.

09

When a skill is the wrong tool

A skill doesn’t make your assistant capable of something it can’t do. It organizes and sharpens ability that’s already there. If the underlying task is beyond the model, a beautifully written skill produces a beautifully organized wrong answer.

One-off work isn’t worth a file. If you won’t do this again, just explain it in the conversation and move on. The rule of three exists in both directions.

Standing preferences aren’t skills either. “Never use em-dashes,” “always use our house font,” “deploy only when I say deploy”: those need to apply everywhere, always, so they belong in your project instructions or your assistant’s memory. A skill only helps when it’s loaded, which makes it exactly the wrong home for a rule that must never lapse.

And there is a real ceiling on how many you should keep. Every description sits in context on every request, whether or not it’s relevant. Eleven good skills cost little and pay for themselves. Forty mediocre ones make every conversation slightly worse and give the assistant forty near-misses to choose between. Prune the ones you stopped using.

Finally, the file format and folder locations here are current as of August 2026 and they’re specific to assistants that support skills. Check your tool’s current documentation before you build a library around it.

Common questions

What’s the difference between a skill and project instructions?
Project instructions apply to everything you do in that project, always. A skill applies to one kind of job, anywhere, and only loads when that job shows up. Rules go in instructions. Workflows go in skills. If you find yourself writing “always” or “never,” you’re writing an instruction, not a skill.
How long should a skill be?
The description as long as it needs to be to catch every way someone might ask, which in our library runs from 30 to 167 words. The body under about 500 lines. Anything deeper goes in a separate file in the same folder, with a pointer to it from the body.
My skill exists but never triggers. What do I fix first?
The description, and only the description. Rewrite it to name the actual situations and the actual phrases someone would type, including the informal ones. Then test in a brand new session, because a session that already discussed the topic will trigger it for the wrong reasons and tell you nothing.
Can a skill include scripts and templates?
Yes, and that’s where they belong. Put a script in the folder and have the body tell the assistant to run it. Deterministic work is better done by code than described in prose, and a script executes without loading its contents into the conversation at all.
Do skills slow things down?
Descriptions add a small amount to every request. Bodies and reference files only cost you when they load. In practice the cost is dominated by how many skills you keep, not how big any one of them is, which is the argument for a small, well-pruned library over a big one.
Can I share a skill with my team?
It’s a folder of text files, so anything you use to share code works: a repo, a shared drive, a zip. This is the other reason to keep them generic. A skill with one person’s client names in it isn’t shareable, it’s a leak.

Go find the workflow you’ve explained three times and write it down. And if you’d rather have someone build the library with you, the first hour is free.

Get Unstuck