How to Build Your Own Custom Skills in Copilot Cowork (Step-by-Step Guide)
- Shane Young

- Apr 28
- 10 min read
Do you ever feel like you keep typing the same long instructions into Copilot over and over? Same prompt, same format, same picky details every single week? Yeah, me too. That is exactly the problem custom skills in M365 Copilot Cowork are built to solve.
In this walkthrough, you will learn what custom skills are, see a real one I use every single week, and then I will show you two different ways to build your own. One is easy (Cowork builds it for you) and the slightly more manual way (using ChatGPT to help you write the skill file). By the end, you will have everything you need to take the repeatable stuff in your day and turn it into a one-click skill.
BONUS: I hate the way the manual section turned out, so I also offer you my actual Skill so you can steal it to get going without too much hassle. You are welcome. 😋
And no, this is not a developer thing. My project managers and admin team are using these every day. If they can do it, you absolutely can too. It is just good ole fashion text.

If you would rather watch the full walkthrough, check out the video here: Stop Repeating Yourself - Build Custom Skills in Copilot Cowork
What Is a Custom Skill in Copilot Cowork?
Copilot Cowork ships with a bunch of built-in skills; working with Office documents, your calendar, email, Teams messages, deep research, all of that. Where as a custom skill is just a saved set of instructions you can trigger anytime with a forward slash.
Here is the key idea: instead of typing 100+ lines of instructions every time you want Cowork to do a complex job, you write those instructions one time, save them as a skill, and just call the skill with a quick command. Cowork already knows what to do.

A Real Example: Turning YouTube Videos Into Blog Posts
Every week I publish a video, and I also want to publish it as a blog post. Not AI-garbage blog posts that all sound the same, I want it to sound like me, based on my actual words from the video. (Hint, this is literally what I am doing right now 🤣)
So I built a custom skill called "YouTube to Blog Post." My workflow is dead simple now:
Grab the transcript from my video
Drop it into Cowork as an upload
Type a forward slash, pick the YouTube to Blog Post skill
Say something like "Make me a blog post, please"
That is it. Cowork pulls in my custom instructions. Tone, structure, SEO rules, image placeholders, where to put the YouTube link and then spits out a draft. I still go back through and Shane-ify it (add my goofiness, dumb a few things down, remove the dumb emm dashes), but the bones are mine because the words are mine. Below is the screenshot that made the base of this blog post, that is the whole thing.

Here is why this matters. That skill file is around 170 lines of careful instructions. There is no way I am pasting that into chat every Monday. Once. I write it once. Then I use it forever.
The Easy Way: Let Cowork Build the Skill for You
This is hands-down the friendliest way to build a skill, and it is the path I would point any non-technical user to first. The trick is to start by solving the actual problem in plain language, get it working, and then ask Cowork to package it up as a skill.
Step 1: Solve the Problem in a Normal Chat
My project managers get a flood of emails from customers with bugs, feature requests, casual stuff andI want to help them triage. So I just ask Cowork plainly:
"Help me find app bugs. Look through my inbox for the last week for emails from chewy@powerapps911.com. Review all the emails for any that are bugs, changes, enhancements, or otherwise involve work on the existing app. Capture that information and save it to an Excel spreadsheet."
Notice I gave a tiny bit of context up front ("help me find app bugs") before the actual ask. AI does noticeably better when you set the stage like that.
Cowork then searches my inbox, reads each email, decides which ones are actually about app work, and drops the results into an Excel file with columns like Date Received, Subject, Type, App Area, Description, and Source. If those columns are not exactly what you wanted, just tell it. "Hey, I want a column for priority too." Done.

Step 2: Ask Cowork to Turn It Into a Skill
Now the magic. Once the workflow does what you want, just tell Cowork:
"That is perfect. Can you help me make this into a skill I can use anytime? I want to trigger the skill and then have it ask me for what email address to search for and what to name the Excel file."
Cowork has a skill for making skills (yes, that is a weird sentence). It builds the SKILL.md file, validates it, and tells you the name. For me it called it "app issue tracker."
Here is the key idea: you did not have to know any syntax. You did not have to write a single line of front matter. You solved a real problem first, then turned it into a skill you can summon at anytime.
A Quick Note About Syncing the Skill to OneDrive
Cowork will tell you the skill is available within 35 seconds. It says that every single time. In my experience, sometimes it takes 35 seconds, sometimes it takes longer, and occasionally you need to nudge it. If your skill is not showing up in the slash menu after a couple of minutes, just say:
"I'm not seeing the skill in my folder. Can you try syncing it again?"
That second push usually does the trick. This product is still in preview, so expect a little quirkiness.
The Manual Way: Building a Skill With ChatGPT
If you want to build skills outside of Cowork, say with ChatGPT, Gemini, or another LLM, you absolutely can. It is a little more hands-on, but it is good to understand how the pieces fit together.
And FWIW in the video, this went really poorly. ChatGPT wasn't in the right mood I guess, but even if you never do it this way, understanding how the pieces works will help.
So, here is the scenario. I get a bunch of weekly AI newsletter emails. I want one skill that pulls them all together, deduplicates the noise, generates an executive summary in Word, builds a PowerPoint for my team, and pings me on Teams when it is done.
Step 1: Describe the Skill in ChatGPT
I told ChatGPT exactly what I wanted, including my preferences (Microsoft news first, then Google, Anthropic, OpenAI, then everything else). ChatGPT generated a complete SKILL.md file ready to drop into OneDrive.
Step 2: Save the File to the Right Spot
This is where it gets a little fussy, so pay attention. The file goes into your OneDrive in this exact path:
Documents → Cowork → skills → [your-skill-name]
If you have never made a skill before, you will need to create the skills folder the first time. Then make a folder for your specific skill, and here is one of the gotchas, the folder name and the skill name inside the file have to match exactly. Another gotcha? the folder needs to be skills all lowercase. I don't make the rules, I just share them.

Step 3: Watch Out for the Filename
The filename must be SKILL.md — that is uppercase SKILL and lower case md. Microsoft has not documented this anywhere I can find, but trust me, the capitalization seems to matter at this point. <sigh>
Step 4: Make Sure the Front Matter Is There
Every SKILL.md file needs a front matter block at the top. It looks like this:
---
name: weekly-ai-news-briefing
description: Reviews weekly AI newsletter emails and produces a summary doc, deck, and Teams notification.
---
Now your instruction start... If ChatGPT forgets the front matter, and it might, just paste it in yourself. The name has to match your folder name, and skill names must be all lowercase letters. No spaces, no capitals, no special characters.

Step 5: Wait for the Skill to Show Up
Same 35-second sync rule applies. Open Cowork, start a new session, type a forward slash, click Skills, and scroll to the bottom. Custom skills tend to show up at the bottom of the list in alphabetical order.
Triggering and Editing Your Skill
Once your skill is live, using it is the easy part. Type a forward slash, click Skills, click your skill name, hit enter. Cowork picks up your saved instructions and runs.
If your skill asks for inputs (like an email address or a file name), Cowork will prompt you. We didn't build any of that, it just works.

The exact UI it uses changes a bit each time. Sometimes it pops up a form, sometimes it asks one question at a time. Do not let that throw you. Just answer what it asks.
And here is the part I love: skills are just plain text. If you do not like something about how your skill works, open up the SKILL.md file and edit it. Want to exclude casual social emails? Delete or change that line. Want a summary in Word instead of Excel? Rewrite the output instructions. There is nothing magic going on under the hood. It is your skill, written in your words.
Gotchas to Remember
Filename is SKILL.md
Folder for skills need to be all lower case
Skill names must be all lowercase letters.
Folder name and the name inside the front matter have to match exactly.
Front matter is required (the block between the three-dash lines at the top).
Sync to OneDrive is supposed to take 35 seconds. Sometimes it takes longer or needs help. Push it again if needed.
Cowork is still in preview. Things change. Be patient with the rough edges.
Download my skill
Because all of that was confusing, here is my complete example skill.
---
name: app-issue-tracker
description: |
Searches the inbox for emails from a specific sender over the past 7 days, reviews
each email, and captures any reported bugs, changes, enhancements, or other work
involving an existing app into an Excel spreadsheet.
Use when the user says "find app bugs", "track app issues from emails", "capture
bug reports from [person]", "make a bug list from my inbox", "log app feedback to
Excel", or any similar request that asks to turn email feedback about an app into
a spreadsheet.
cowork:
category: productivity
icon: TaskListLtr
---
# App Issue Tracker
Turns app-related email feedback from a single sender into a structured Excel log of bugs, enhancements, and changes.
## Step 1 — Gather inputs
Before doing anything else, ask the user for both inputs in a single `AskUserQuestion` call:
1. **Sender email address** — the email address whose inbox messages should be reviewed.
2. **Excel filename** — what to name the output file (without the `.xlsx` extension; you will add it).
Do not assume defaults. If the user has already provided one of these in their request, only ask for the missing one.
## Step 2 — Pull the emails
- Resolve "the past week" as the 7 days ending at the user's current local time.
- Use `SearchM365` with `from_user` set to the supplied email address, `sources: ["email"]`, and `after`/`before` set to the 7-day window. This is faster and more targeted than paging through `ListMessages`.
- If `SearchM365` returns nothing, fall back to `ListMessages` with the same date window and filter for the sender client-side.
## Step 3 — Classify each email
Read the body of every returned email. For each one, decide whether it involves work on an existing app. Include it if it reports any of:
- **Bug** — something is broken or behaving incorrectly
- **Enhancement** — a styling, UX, or feature improvement to an existing app
- **Change** — a requested modification to existing app behavior
- **Performance issue** — slowness, crashes, or responsiveness problems
A single email may contain multiple distinct items (e.g. a bulleted list of issues). Capture each item as its own row.
**Exclude:**
- Casual/social emails (lunch, chitchat, thanks)
- Proposals for entirely new apps or future projects that are not work on the existing app
- Status updates with no actionable issue
If you exclude an email, briefly mention it to the user in the final summary so they can confirm.
## Step 4 — Build the spreadsheet
Create an `.xlsx` file with one sheet named "App Issues" and these columns:
| Date Received | Email Subject | Type | App / Area | Description | Source Email From |
Formatting:
- Header row: bold white Arial 11 on dark blue (`305496`) fill, centered, wrapped
- Body: Arial 11, top-aligned, wrapped
- Column widths roughly: 16, 32, 20, 28, 60, 38
- Freeze the header row and turn on auto-filter
- Increase row heights enough to show wrapped text
Use the `xlsx` skill's create-mode Task pattern to generate, save to `output/{user-supplied-filename}.xlsx`, and verify the file exists with `Glob output/**/*.xlsx`.
## Step 5 — Report back
Summarize for the user:
- Number of emails found from that sender
- Number captured as app issues vs. excluded (with one-line reason for each exclusion)
- A short table preview of the rows
- Confirm the file is saved
Tell the user the file is ready — do not expose folder paths or technical details.
## Notes
- If the sender returned zero emails in the window, say so plainly and offer to widen the window or check the address spelling.
- Keep types consistent across runs: `Bug`, `Enhancement`, `Change`, `Bug / Performance`. Combine with `/` only when an item legitimately spans two categories.
Copy all of that and save it as SKILL.md (sorry I couldn't make it a straight download)
Go to your OneDrive > Documents > Cowork > skills If skills isn't there then create that empty folder. All lowercase
In the skills folder create a new folder named app-issue-tracker all lower case
Put your new SKILL.md file in that folder.
Wait a minute then refresh your Cowork window, start a new chat and type / you should see your skill. 🤩
I take zero responsibility for anything that happens with this, so make sure like with everything you read on the internet, you read the file before you create it. It doesn't hurt anything but you should confirm.

Be Creative, That Is the Real Skill
Here is the thing I want you to walk away with. The demos in this guide are about app bugs and AI newsletters, but those are not your problems. Your problems are different. The pieces I just showed you; searching your inbox, reading and classifying messages, writing to Excel, generating a Word doc, posting to Teams, etc. Those are the building blocks.
The folks getting the most out of AI right now are the ones being creative with the building blocks. Look at your week. What do you do over and over? What sequence of steps would you love to skip? That is your skill.
Wrapping Up
You now know what custom skills are, you have seen a real one in action, and you have two ways to build your own. The in-Cowork builder is the friendliest path. Solve the problem first, then turn it into a skill. The manual ChatGPT route is there when you want more control or when you want to understand exactly what is happening. (Or just steal my work)
Either way, the win is the same: stop typing the same long instructions every time. Save them once. Use them forever.
Need a Hand?
If you are trying to make sense of how Copilot, Cowork, Copilot Studio, vibe coding, and the rest of the Microsoft AI ecosystem fit together for your team, that is exactly the kind of thing we help with every day. Reach out to the team at PowerApps911 and let's build something awesome together. Just click the Contact Us button and a human, not AI, will help you out.



Comments