Copilot Cowork, which is currently in “Fronter” release at the time of writing, is the next level of Copilot work support. This is a huge paradigm shift from the conversational AI we have been using for the past 2 years to the repeatable, reliable, work companion that Cowork can be.
As you start working with AI systems you start becoming a “prompt master”. Prompts are great, you ask, and the AI provides you with an answer. What prompts lack is the ability to follow a repeatable process. A “Skill” is a reliable, reusable, workflow for a specific task.
Prompts are like asking a coworker for a favor.
Skills are like giving the a job description.
Cowork skills introduce:
- Declarative definitions of what the AI should do
- Structured inputs and outputs
- Governance and versioning
- Reusability across teams and apps
- Integration with real systems (M365, data sources, APIs, line-of-business apps)
We can ask Cowork to create a new Skill, but for the purpose of this example, we are going to do it all manually. The results of this is also how you can share a Skill with someone else.
First off, Cowork stores everything you do in your OneDrive.

Each Skill will need a folder in the skills folder. If the skills folder isn’t there, just create it.
Let’s create a “Project Status Report” skill.
- Create a folder called projectstatusreport
- Create a text file and name it SKILL.md (note the case!)
---
name: projectstatusreport
description: |
Generates a weekly project status report email from a meeting transcript. Use when
user asks to "create a weekly status report from this transcript", "turn this
meeting into a status update email", "draft a project status email", "send a
weekly update from the standup transcript", "build a status email from the
meeting", or provides a transcript and asks for a structured weekly status update.
Produces an HTML email draft in Outlook with sections for executive summary,
accomplishments, decisions, risks/blockers, action items (with owners), and next
week's focus. RAG status is inferred from transcript tone. Default behavior is
to create a draft for user review — only sends when the user explicitly says
"send".
Do NOT use for: ad-hoc meeting summaries with no project context (use
meeting-intel), general leadership updates not tied to a recurring project (use
stakeholder-comms), or scheduling status review meetings (use schedule-meeting).
cowork:
category: communication
icon: Mail
---
# Weekly Project Status Report (Email)
Turns a project meeting transcript into a polished weekly status report email.
## When to Use
- User provides a transcript (uploaded file, pasted text, or recent Teams meeting) and asks for a weekly status report email
- User says "weekly update", "status report", or "project status email" in the context of a meeting they had
## When NOT to Use
- User wants a quick meeting summary, not a recurring status report → use `meeting-intel`
- User wants a general leadership update not tied to a project → use `stakeholder-comms`
- No transcript available → ask the user to provide one or point to a Teams meeting
## Inputs
Locate the transcript in this priority order:
1. **Attached file** in the user's message (read directly)
2. **Uploaded file** in `input/` (use `Glob input/**/*` for `.txt`, `.vtt`, `.docx`, `.md`)
3. **Recent Teams meeting** — if the user references a meeting, use `GetMyRecentTranscripts` or `ListMeetingTranscripts` + `GetMeetingTranscript`
4. **Pasted text** in the chat
If none found, ask the user where the transcript is.
## Process
### Step 1: Extract the transcript
- For .vtt/.txt: read the file directly
- For .docx: use the `docx` skill to extract text
- For Teams: fetch via `GetMeetingTranscript`
### Step 2: Identify project context
From the transcript, extract: project name, reporting period (week ending date), participants, project lead/sponsor. If the project name isn't obvious, use `[Project Name]` placeholder and flag for the user.
### Step 3: Extract structured content
Read the transcript and identify:
- **Accomplishments** — work completed or advanced (past-tense progress statements)
- **Decisions** — choices made ("we decided", "let's go with", "agreed")
- **Risks & blockers** — issues raised ("blocked", "risk", "concern", "waiting on")
- **Action items** — commitments ("I'll", "[name] will", "by [date]"); capture owner and due date
- **Next week's focus** — stated upcoming priorities
Every item must trace to a specific passage in the transcript. Do not fabricate progress, decisions, or owners. If a section has no clear content, write `None captured this week.` rather than inventing items.
### Step 4: Determine RAG status
- **Green** — on track, no significant blockers
- **Amber** — minor risks or slippage, manageable
- **Red** — significant blockers, missed milestones, escalation needed
Infer from transcript tone. If unclear, default to **Amber** and note this in the email.
### Step 5: Identify recipients
Determine who to send to in this priority order:
1. User explicitly named recipients in the request → use those
2. Distribution list mentioned in the transcript ("we'll send the update to…") → resolve via `SearchPeople`
3. Meeting attendees from the transcript → resolve via `SearchPeople` and propose
4. None of the above → ask the user who should receive it
Always resolve names to email addresses via `SearchPeople` / `GetUserDetails` — never construct emails from names.
### Step 6: Compose the email
**Subject line:** `Weekly Status — [Project Name] — Week of [Date]`
**Body** (HTML, structured for skim-readability):
- Lead with **Status:** [RAG indicator] and a 2-3 sentence executive summary
- **Accomplishments This Week** — bulleted list
- **Decisions Made** — bulleted list with brief context
- **Risks & Blockers** — small table: Item | Impact | Owner | Mitigation
- **Action Items** — small table: Action | Owner | Due
- **Next Week's Focus** — bulleted list
- Close with: `Source: meeting on [date]. Reply with corrections.`
Use HTML formatting (headings, tables, lists) for clean Outlook rendering. The Cowork branding footer is appended automatically.
### Step 7: Default to draft, not send
Use `CreateDraftMessage` by default. Tell the user: "I've drafted your weekly status email — open Outlook to review and send. Want me to send it now or change anything (recipients, RAG status, sections)?"
Only call `SendEmailWithAttachments` if the user explicitly said "send" in the original request, or confirms after seeing the draft.
### Step 8: Confirm
Tell the user the draft is ready, the recipients identified, the RAG status, and offer one-line refinements (audience, recipients, sections).
## Defaults
| Setting | Default |
|---------|---------|
| Output | Outlook email **draft** (not sent) |
| Audience | Mixed stakeholders (exec summary + detail below) |
| Length | Short — fits in a single screen scroll |
| RAG when unclear | Amber, with note |
| Subject format | `Weekly Status — [Project] — Week of [Date]` |
If the user wants PDF, Word, or inline summary instead, switch accordingly (delegate to `pdf`, `docx`, or just respond inline).
## Guardrails
- **Never fabricate** names, dates, decisions, or commitments not in the transcript. Use `[placeholder]` instead.
- **Always draft, never auto-send** unless the user explicitly says "send".
- **Always resolve recipients via people tools** — never guess email addresses from names.
- **Trace every claim** to the transcript — if you can't, omit it.
- **Don't evaluate individuals** — report commitments and progress, don't judge performance.
I realize this is a little bit of a wall of text, but give it a read. Note the steps are clearly defined. There are default outputs. Importantly there are guardrails all defined in the markdown file.
Note that the folder, and skill name in the text all match.

We now wait a little while, up to 30 minutes, for the Skill to be picked up by Cowork. You might need to restart Cowork, or even ask it to refresh the Skills list.
Once it is loaded, I can go into Cowork and start with something like “Create a weekly status report from this transcript:” and provide it some transcription text.
Let’s give it a meeting transcription to work with.
Meeting: Weekly Team Sync
Date: Tuesday, 10:00 AM
Attendees: Jordan (PM), Riley (Design), Sam (Engineering), Priya (Support)
Jordan (PM):
Okay, let’s do quick updates. Doesn’t have to be formal — just tell me where things landed this week. I’ll start.
So, I spent most of my time coordinating the rollout plan for the new onboarding flow. We’re mostly on track, but the vendor still hasn’t delivered the final asset pack. I pinged them again yesterday. That’s kind of the big blocker right now.
Next week I’m hoping to finalize the launch checklist, but that depends on getting those assets.
Riley (Design):
Yeah, same blocker on my side. I can’t finish the last two screens without the updated illustrations.
But I did wrap up the accessibility pass on the first half of the flow — color contrast, alt text, spacing, all that.
Also, small thing: I helped marketing tweak the hero banner for the spring campaign. Not really part of this project, but it took a couple hours.
Next week I’ll jump back into the onboarding screens as soon as the assets show up.
Sam (Engineering):
Uh, okay, so… mixed week.
I got the API changes deployed to staging — that part’s good.
But we hit a weird issue with the authentication service. It’s not breaking anything yet, but it’s throwing warnings in the logs. I opened a ticket with the platform team.
I also helped support debug two customer issues. One of them was actually related to the onboarding flow, so that was useful context.
Next week I’m planning to finish the integration tests and start load testing if everything looks stable.
Priya (Support):
Right, so from support:
We had a spike in tickets related to the old onboarding flow — mostly confusion around the second step. Nothing urgent, but it’s more volume than usual.
I documented the top issues and sent them to Jordan.
Also, thanks Sam for jumping on those two cases — that helped a lot.
Next week I’ll keep monitoring the ticket trends and update the FAQ if needed.
Jordan (PM):
Cool, thanks everyone. I’ll compile this into the weekly digest later today.

Notice how the skills list on the right lists our skill. The AI system plugged away for a moment. It noticed that there were no email addresses in the status meeting and asked me where to send it.
Here is the email it generated:
Hi all,
Here’s this week’s status update for the new onboarding flow rollout.
Status: AMBER
Progress is steady on engineering and accessibility work, but the rollout is being held up by an outstanding vendor delivery (the final asset pack), which is blocking design completion and launch checklist sign-off. No critical issues, but we need the assets this week to stay on track.
Accomplishments This Week
- API changes deployed to staging (Sam)
- Accessibility pass completed on first half of the flow 97 color contrast, alt text, spacing (Riley)
- Rollout plan coordination advanced; vendor follow-up sent (Jordan)
- Top support issues from the ticket spike documented and shared with PM (Priya)
- Two customer issues debugged jointly by Engineering and Support; one tied back to the onboarding flow (Sam, Priya)
- Side support: hero banner tweak for marketing’s spring campaign (Riley)
Decisions Made
= None captured this week.
Risks & Blockers
|
Item
|
Impact
|
Owner
|
Mitigation
|
|---|---|---|---|
|
Vendor has not delivered final asset pack
|
Blocks last two onboarding screens and launch checklist finalization
|
Jordan
|
Follow-up sent to vendor; escalate if not received this week
|
|
Authentication service throwing warnings in logs
|
Not breaking functionality, but unresolved noise in staging
|
Sam / Platform team
|
Ticket opened with platform team
|
|
Higher-than-usual support ticket volume on old onboarding flow (step 2 confusion)
|
Reinforces urgency of new flow rollout
|
Priya
|
Monitoring trends; FAQ update planned
|
Action Items
|
Action
|
Owner
|
Due
|
|---|---|---|
|
Finalize launch checklist (pending asset delivery)
|
Jordan
|
Next week
|
|
Complete remaining onboarding screens once assets arrive
|
Riley
|
Next week
|
|
Finish integration tests; begin load testing if stable
|
Sam
|
Next week
|
|
Continue ticket trend monitoring; update FAQ if needed
|
Priya
|
Ongoing
|
Next Week’s Focus
- Unblock design via vendor asset delivery
- Launch checklist finalization
- Integration tests complete; load testing begins (engineering stability dependent)
- Continued support ticket triage and FAQ refresh
Source: Weekly Team Sync, May 5, 2026. Reply with corrections.
Sent by Copilot Cowork
The amazing thing about this is that as a skill we can run this week over week and get the same format. This is the power of a repeatable, reusable, AI supported workflow.
Before you ask, yes, you can ask Copilot to help write a Skill. Simply instruct Cowork that you want to create a skill, give it some parameters, a few examples, and it will assist you with creating the markdown text.
Next level, you can add supporting scripts that can be used to programmatically review documents for missing sections. The scripts can do other work as well that exceeds the capabilities of Cowork, like implement advanced mathematics, or generate graphs, or interface with hardware. These all go in the aptly named scripts folder and can be referenced in your skill markdown.
The other thing you can add are references. If you have a specific document format, you can include a template in the references folder. If you had specific regulations you needed to follow, you can include them as PDF files in the references for the Skill to reference as it is running.
As a side note, Cowork is based on Claude. Claude can use skills the exact same way. So if you are team Claude, then this is helpful to you as well.
I hope this helps you see how to expand your AI workflow with Cowork and Skills. If you have any questions, please feel free to comment below.




Leave a comment