Agent Skills

Agent Skills

What Is a Skill?

Last week you learned about reusable prompts — markdown files you store in .github/prompts/ and invoke with a slash command. Skills work the same way, with one important difference: Copilot can invoke them on its own.

With a reusable prompt, you have to run it manually. With a skill, you can run it manually — or Copilot can recognize that a skill is relevant to what you're asking and load it automatically. You don't have to tell it to. It just does.

Think of it like the Matrix. When Neo downloads kung fu, he doesn't have to think about every move. He just has it. Skills are capabilities you upload to Copilot so it can draw on them when the situation calls for it.

The key to making this work is the skill's description. Copilot reads skill descriptions to decide whether to invoke a skill for a given task. Write a clear description, and Copilot will use the skill at the right moment. Write a vague one, and it might miss it entirely.

Anatomy of a Skill File

Skills live inside the .claude/ folder at the root of your project:

.claude/ skills/ skill-name/ skill.md

Every skill.md starts with YAML front matter:

--- name: skill-name description: When and why Copilot should use this skill — be specific and descriptive ---

Below the front matter is the content of the skill itself — instructions, step-by-step processes, guidelines, whatever Copilot should follow when the skill is active.

Tip: After creating or updating a skill file, reload the VS Code window with Cmd+Shift+PReload Window to make sure Copilot picks up the changes.


✏️ Exercise 1: The ELI5 Skill

Carton Case Management already has a skill called eli5 — "explain like I'm five." This is a good first example because it shows both ways of invoking a skill.

Open .claude/skills/eli5/skill.md and take a look at what's in it. You'll see instructions like: explain the concept in simple terms, use analogies and examples that a child would understand, avoid technical jargon, focus on the core idea, use the #askQuestions tool to clarify details.

Explicit invocation — you can call it directly with a slash command:

/eli5 explain how the database in this app works

Copilot loads the skill and follows its instructions to explain the database simply.

Agent auto-invocation — now try a natural-language version with no slash command:

I'm not understanding how the database works in this app. Can you explain it simply?

Copilot reads your message, recognizes that you need something explained simply, finds the eli5 skill, and loads it on its own. Same result — different trigger.

This is what makes skills more powerful than reusable prompts. You don't have to know the skill exists. You just describe your situation, and if there's a relevant skill, Copilot brings it in.


✏️ Exercise 2: Write a "Change Code" Skill

Now you'll write a skill from scratch. This one will define how Copilot should handle any code change request — checking out a branch, making the change, and committing the work.

Step 1: Create the folder and file:

.claude/skills/change-code/skill.md

Step 2: Add the front matter and steps:

--- name: change-code description: Use this whenever the user asks you to modify or update code, add a feature, or change the behavior of a program --- Follow this step-by-step process when the user asks you to change code: 1. Check out a feature branch in Git for the change you're going to make 2. Make the requested change 3. Commit the work with a descriptive commit message

Step 3: Reload the VS Code window (Cmd+Shift+PReload Window) to make sure Copilot picks up the new skill.

Step 4: Test it by asking Copilot to make a small change:

Change the title of the app to Training Case Management

Watch what happens. Copilot should recognize this as a code change, load the change-code skill, and follow the three steps — branch, change, commit — without you having to ask it to.

Note: You can make this skill as detailed as you like. You could add a step to run the tests before committing, or use the #askQuestions tool to confirm the branch name. Everything from last week's prompt engineering workshop applies here.


✏️ Exercise 3: Have Copilot Write a Skill

You don't have to write every skill yourself. Copilot can research your codebase and write one for you.

Carton Case Management already has a built-in skill for creating skills. To use it:

/create-skill Help me create a skill for updating and changing colors in the app

Copilot will explore the codebase, find out how colors are managed (CSS variables, Tailwind config, component styles — whatever applies), and write a skill that captures all of that context.

Once it's done, review the generated skill file. Then test it:

Update the primary color to be a light blue

Copilot should load the color skill and know exactly where and how to make that change.

Why this matters: As a project grows, the number of "how do I do X in this codebase" questions grows with it. Skills let you encode those answers once, and then Copilot can draw on them any time they're relevant — without you repeating yourself.


Next: Instructions Files