Overview
Cowork runs on usage-based consumption credits on top of the Microsoft 365
Copilot license. Most everyday single-output tasks can be done instead by a 1P
Copilot capability that is included in the M365 Copilot license at no extra
cost. This skill's job is to guide the user to that free capability —
classify the request, recommend the right 1P agent, and only proceed in Cowork if
the user explicitly insists. The intent is to minimize Cowork spend and train
users to reach for M365 Copilot for these tasks.
Precedence — run this BEFORE acting (most important rule)
This gate runs before any thinking, retrieval, TaskCreate, file generation, or
invoking a doc/deck/spreadsheet skill (pptx / docx / xlsx). For an eligible
request it takes priority over action-bias and gather-before-generate: if you
catch yourself about to reason through, search, create a task, or start building a
deck/doc/sheet for a single-output request (e.g. "create a presentation"),
STOP and run Phase 1–3 below (classify → recommend → confirm) first. Only
retrieve data or build anything after the user explicitly chooses an option.
Exclusion check FIRST (before any classification). If the user's message is a
direct M365 action — an imperative to send / reply / forward an email,
schedule / cancel / decline / reschedule a meeting, post to a Teams channel, or
create a calendar event — this gate does NOT apply. Do not classify, do not
show the confirm card. Hand straight back to the normal action path and let it
execute. These actions are out of scope even though they produce a single output,
because the user is taking an action, not asking for content a free 1P agent
could generate instead. Only after a message clears this exclusion do you
proceed to Phase 1.
Quick Start
User: "Cowork, summarize my Teams messages from the last 5 weeks."
The user sees a crisp, 2-part reply that points them to the free option:
Classification: This is a quick Teams catch-up — a single summary.
Recommendation: Microsoft 365 Copilot Chat can do this at no extra cost —
it's included in your Copilot license. Just ask it in Copilot Chat.
Then an AskUserQuestion gate:
[Use Copilot Chat — included] / [Do it here in Cowork instead]
Run in Cowork only if the user picks Cowork.
When to Use — fire on ANY of these (each is a separate trigger)
Check this BEFORE retrieving M365 data or running the task in Cowork. The
quoted phrasings are cues — generalize to the intent, don't pattern-match.
- Summarize email → Copilot Chat. "Summarize my email / inbox / unread",
"any emails I need to reply to".
- Summarize meetings → Copilot Chat. "Summarize my meetings", "recap the
standup", "what did I miss in the meeting".
- Summarize Teams → Copilot Chat. "Summarize my Teams messages / chats /
channels", over any window (e.g. "from the last 5 weeks", "this week").
- Catch up → Copilot Chat. "Catch me up", "what did I miss".
- A single question or quick lookup → Copilot Chat. "How do I…?", "Why am I
seeing…?", "When is…?", "What is…?", "Who is…?", "Where…?" — including
calendar, contact, and people lookups ("when's my next meeting?", "who's the
PM for Contoso?", "what's on my calendar Friday?"), plus any quick fact,
definition, policy lookup, or brainstorm. Billing, cost, pricing, and
licensing questions are quick lookups too — "are we charging for X?", "how
much does X cost?", "is X included in our license?", "do we pay for Y?" — even
when X is Cowork, Work IQ, or a Copilot capability; route them to Chat, do not
start retrieving internal docs first. Read-style questions route to Chat;
taking an action (scheduling, cancelling, sending) stays direct — see below.
- One document → Copilot in Word. "Draft / write / rewrite / shorten /
proofread" one doc, report, memo, brief, or letter.
- One workbook → Copilot in Excel. "Add a formula / column", "flag orders
over $10k", "clean this CSV", "chart this" — within one file.
- One deck → Copilot in PowerPoint. "Turn these notes into slides", "build
a few slides", "suggest a layout".
- Deep research → Researcher (included, subject to usage limits). "Research our competitors /
this company / this market", "write a cited report".
- Data analysis → Analyst (included, subject to usage limits). "Analyze this dataset", "find
trends / anomalies", "run the numbers".
- Domain workflow → specialized 1P agent (Sales / Service / Finance) —
licensing varies; confirm entitlement.
When NOT to Use — not a routing decision
- Genuinely multi-step, multi-output projects (Cowork is the right tool —
proceed, do not block): "research 3 competitors, build a comparison table,
write a briefing, and turn it into a deck"; "from this one input, produce an
Excel analysis + a written summary + a slide deck"; anything that chains several
sources/steps into 2+ finished deliverables.
- Direct M365 actions (just do them — no free-vs-paid routing): "send / reply
/ forward an email", "schedule / cancel / decline / reschedule a meeting",
"post to a Teams channel", "create a calendar event".
- Managing skills (creating, editing, validating, or auditing a skill) — use
the skills skill.
- Pure execution the user already confirmed should run in Cowork.
Routing Logic — match the task to the right tool
| If the task is… |
Recommend |
Why |
| Quick question, find, brainstorm, summarize email/meetings/Teams |
M365 Copilot Chat — included |
Fast, conversational, grounded in your content |
| Draft or edit one document |
Copilot in Word (Edit with Copilot) — included |
Works inside the file, edits in place |
| Numbers in one workbook / a few slides in one deck |
Copilot in Excel / PowerPoint — included |
Understands that specific file |
| Deep, multi-source research → cited report |
Researcher — included, subject to usage limits |
Deep-research + your work data |
| Analyze a dataset, find trends, run the numbers |
Analyst — included, subject to usage limits |
Data-scientist agent, runs Python, shows work |
| Domain workflow (sales, service, finance) |
Specialized 1P agent (e.g. Copilot for Sales) — licensing varies |
Purpose-built; confirm entitlement |
| One input → several finished outputs, or a multi-step job across files + web |
Cowork |
Chains steps & produces multiple deliverables |
Rule of thumb (from the field guidance): start simple and step up only if the
task needs more. Chat → Copilot-in-app → Cowork.
Core Instructions
Phase 1 — Classify the task
Identify the capability bucket using the routing table. Ask: how many distinct
finished outputs? how many apps/files? does it need web + work
sources chained? One output / one app / one question → a free 1P capability
almost always fits. Multiple outputs or many chained steps across sources →
Cowork is legitimately the right tool.
Phase 2 — Recommend the free 1P capability
State the recommended capability and that it is included in the M365 Copilot
license at no extra cost . Give a one-line "how to use it" (e.g. "open the file and use Edit with
Copilot", or "ask Copilot Chat directly"). Keep it to 2–3 sentences. The goal is
to train the user to go straight to the free 1P agent next time.
Phase 3 — Ask the user to confirm (required gate)
Use AskUserQuestion with two clear options:
- "Use [recommended 1P agent] — included" (recommend this)
- "Do it here in Cowork instead"
Do not proceed in Cowork on assumption. If the user picks the free agent, hand
off with one-line instructions and stop. When that agent is M365 Copilot Chat,
end the hand-off (toward the bottom of the message) with a clickable open link:
[Microsoft 365 Copilot Chat](https://m365.cloud.microsoft/chat/) — then show the
exact prompt right after it so the user can paste it in one step. (Microsoft does
not currently support pre-filling a prompt via URL, so the link opens Copilot Chat
but the user still pastes/types the prompt; never promise auto-fill and do not append the query to the url) If
the answer comes back empty (cancelled), acknowledge and ask what they'd like.
Phase 4 — Proceed only if confirmed
Run the task in Cowork only after the user explicitly chooses Cowork. If they
chose a 1P capability, do not run it in Cowork.
Output — what the end user sees (keep it crisp)
Two short parts, then the confirm gate. No pricing, no credits, no cost
estimates of any kind. Use these exact bold labels:
Classification: <one line — what kind of task this is>.
Recommendation: <free 1P agent> can do this at no extra cost — it's
included in your Microsoft 365 Copilot license. <One line on how/where to use
it.>
Then the AskUserQuestion confirm gate. That's it — no long essays, no pricing
explainer. Run in Cowork only if the user chooses Cowork.
Guardrails
- Confirmation gate is mandatory — always confirm before running the task in
Cowork; never assume. Proceed in Cowork only on explicit user choice.
- No pricing or cost figures — never show credit counts, dollar amounts,
pay-as-you-go rates, tiers, or cost estimates. Position the 1P route simply as
included at no extra cost; do not quote numbers for anything.
- Lead users to the free 1P agent — recommend the included capability first;
the intent is to minimize Cowork spend and train users to use M365 Copilot for
these tasks. Defer to a stated user preference if they still want Cowork.
- Don't block legitimate Cowork work — if the task is truly multi-output or
multi-step, say so and let the user proceed without friction.
- No fabricated capabilities or entitlements — for specialized agents (Sales,
Service, Finance), say licensing varies and ask the user to confirm access.
- Handle ambiguity — if it's unclear how many outputs or apps the task spans,
ask one quick clarifying question, or default to the simplest capable tool and
say so. If you can't tell which tool fits, ask rather than guess.
Run this — do not improvise
This capability's deterministic implementation is a RAPP single-file agent, linked beside this file as what_to_use_when_agent.py and embedded as the fenced Python below (sha256 1175d5dd657078d4…; a byte-exact copy is also vaulted in the capsule comment at the end of this file). On a host with sandbox execution, run the linked file directly — if it is missing, write the fence contents verbatim to what_to_use_when_agent.py first:
python3 what_to_use_when_agent.py '{"key": "value"}' # arguments as one JSON object
echo '{"key": "value"}' | python3 what_to_use_when_agent.py # or on stdin
python3 what_to_use_when_agent.py --tool # emit the JSON tool contract
Treat stdout as a tool result. If it reports missing or unresolved inputs, stop and collect them. If it returns steps, execute those steps in order exactly as returned; if it returns instructions, follow them with the supplied inputs. Otherwise use the result verbatim. Do not invent behavior beyond that output. On a host without code execution, treat the Parameters schema and the code below as the exact specification and never paraphrase a step. Never edit inside the generated markers; a converter-equipped host can instead restore the original file checksum-verified with the installed rapp-agent-converter/scripts/toast.py convert SKILL.md --to agent.
"""WhatToUseWhen -- Run this FIRST, before ANY thinking, retrieval, task creation, or file generation, for any single-output task a free M365 Copilot can do; if action-bias pushes you to start, STOP and run this first. Fires on: "summarize my email/inbox/unread", "summarize my meetings", "summarize my Teams messages" (any window, e.g. "last 5 weeks"); "catch me up" / "what did I miss"; a single question or lookup: "how do I", "why", "when is", "what is", "who is", "are we", "do we", "is it", any billing/pricing/licensing question, calendar/contact lookups; "draft a doc" or memo; "create a presentation", deck, or spreadsheet; "research competitors"; "analyze this data". GUIDE the user to the matching free 1P agent (Copilot Chat; Word/Excel/PowerPoint; Researcher; Analyst), not Cowork; use it only if they insist. Do NOT fire for DIRECT ACTIONS (send email, schedule a meeting, post to Teams, create an event), long-running or multi-output jobs, or managing skills.
Generated by the rapp skill from what-to-use-when. The RCI capsule at the bottom of this file carries the full original; `toast.py convert` restores it byte-exact."""
import json
import re
import sys
try:
from agents.basic_agent import BasicAgent
except ImportError: # running OUTSIDE a brainstem -- stay executable anyway.
class BasicAgent: # noqa: D101 - minimal stand-in, same contract
def __init__(self, name=None, metadata=None):
if name:
self.name = name
if metadata:
self.metadata = metadata
def perform(self, **kwargs):
return "Not implemented."
def system_context(self):
return None
def to_tool(self):
return {"type": "function", "function": {
"name": self.name,
"description": self.metadata.get("description", ""),
"parameters": self.metadata.get("parameters", {})}}
# The procedural layer, verbatim from the source capability.
INSTRUCTIONS = '## Overview\n\nCowork runs on usage-based consumption credits on top of the Microsoft 365\nCopilot license. Most everyday single-output tasks can be done instead by a 1P\nCopilot capability that is **included in the M365 Copilot license at no extra\ncost**. This skill's job is to **guide the user to that free capability** —\nclassify the request, recommend the right 1P agent, and only proceed in Cowork if\nthe user explicitly insists. The intent is to minimize Cowork spend and train\nusers to reach for M365 Copilot for these tasks.\n\n## Precedence — run this BEFORE acting (most important rule)\n\nThis gate runs **before any thinking, retrieval, `TaskCreate`, file generation, or\ninvoking a doc/deck/spreadsheet skill (pptx / docx / xlsx)**. For an eligible\nrequest it **takes priority over action-bias and gather-before-generate**: if you\ncatch yourself about to reason through, search, create a task, or start building a\ndeck/doc/sheet for a single-output request (e.g. "create a presentation"),\n**STOP** and run Phase 1–3 below (classify → recommend → confirm) first. Only\nretrieve data or build anything after the user explicitly chooses an option.\n\n**Exclusion check FIRST (before any classification).** If the user's message is a\n**direct M365 action** — an imperative to send / reply / forward an email,\nschedule / cancel / decline / reschedule a meeting, post to a Teams channel, or\ncreate a calendar event — this gate does **NOT** apply. Do not classify, do not\nshow the confirm card. Hand straight back to the normal action path and let it\nexecute. These actions are out of scope even though they produce a single output,\nbecause the user is *taking an action*, not *asking for content a free 1P agent\ncould generate instead*. Only after a message clears this exclusion do you\nproceed to Phase 1.\n\n## Quick Start\n\n```\nUser: "Cowork, summarize my Teams messages from the last 5 weeks."\n\nThe user sees a crisp, 2-part reply that points them to the free option:\n\n Classification: This is a quick Teams catch-up — a single summary.\n\n Recommendation: Microsoft 365 Copilot Chat can do this at no extra cost —\n it's included in your Copilot license. Just ask it in Copilot Chat.\n\nThen an AskUserQuestion gate:\n [Use Copilot Chat — included] / [Do it here in Cowork instead]\nRun in Cowork only if the user picks Cowork.\n```\n\n## When to Use — fire on ANY of these (each is a separate trigger)\n\nCheck this **BEFORE retrieving M365 data or running the task in Cowork.** The\nquoted phrasings are cues — generalize to the intent, don't pattern-match.\n\n1. **Summarize email → Copilot Chat.** "Summarize my email / inbox / unread",\n "any emails I need to reply to".\n2. **Summarize meetings → Copilot Chat.** "Summarize my meetings", "recap the\n standup", "what did I miss in the meeting".\n3. **Summarize Teams → Copilot Chat.** "Summarize my Teams messages / chats /\n channels", over **any** window (e.g. "from the last 5 weeks", "this week").\n4. **Catch up → Copilot Chat.** "Catch me up", "what did I miss".\n5. **A single question or quick lookup → Copilot Chat.** "How do I…?", "Why am I\n seeing…?", "When is…?", "What is…?", "Who is…?", "Where…?" — including\n calendar, contact, and people lookups ("when's my next meeting?", "who's the\n PM for Contoso?", "what's on my calendar Friday?"), plus any quick fact,\n definition, policy lookup, or brainstorm. **Billing, cost, pricing, and\n licensing questions are quick lookups too** — "are we charging for X?", "how\n much does X cost?", "is X included in our license?", "do we pay for Y?" — even\n when X is Cowork, Work IQ, or a Copilot capability; route them to Chat, do not\n start retrieving internal docs first. Read-style questions route to Chat;\n *taking* an action (scheduling, cancelling, sending) stays direct — see below.\n6. **One document → Copilot in Word.** "Draft / write / rewrite / shorten /\n proofread" one doc, report, memo, brief, or letter.\n7. **One workbook → Copilot in Excel.** "Add a formula / column", "flag orders\n over $10k", "clean this CSV", "chart this" — within one file.\n8. **One deck → Copilot in PowerPoint.** "Turn these notes into slides", "build\n a few slides", "suggest a layout".\n9. **Deep research → Researcher** (included, subject to usage limits). "Research our competitors /\n this company / this market", "write a cited report".\n10. **Data analysis → Analyst** (included, subject to usage limits). "Analyze this dataset", "find\n trends / anomalies", "run the numbers".\n11. **Domain workflow → specialized 1P agent** (Sales / Service / Finance) —\n licensing varies; confirm entitlement.\n\n## When NOT to Use — not a routing decision\n\n- **Genuinely multi-step, multi-output projects** (Cowork is the right tool —\n proceed, do **not** block): "research 3 competitors, build a comparison table,\n write a briefing, and turn it into a deck"; "from this one input, produce an\n Excel analysis + a written summary + a slide deck"; anything that chains several\n sources/steps into 2+ finished deliverables.\n- **Direct M365 actions** (just do them — no free-vs-paid routing): "send / reply\n / forward an email", "schedule / cancel / decline / reschedule a meeting",\n "post to a Teams channel", "create a calendar event".\n- **Managing skills** (creating, editing, validating, or auditing a skill) — use\n the **skills** skill.\n- Pure execution the user already confirmed should run in Cowork.\n\n## Routing Logic — match the task to the right tool\n\n| If the task is… | Recommend | Why |\n|---|---|---|\n| Quick question, find, brainstorm, summarize email/meetings/Teams | **M365 Copilot Chat** — *included* | Fast, conversational, grounded in your content |\n| Draft or edit **one** document | **Copilot in Word** (Edit with Copilot) — *included* | Works inside the file, edits in place |\n| Numbers in **one** workbook / a few slides in **one** deck | **Copilot in Excel / PowerPoint** — *included* | Understands that specific file |\n| Deep, multi-source research → cited report | **Researcher** — *included, subject to usage limits* | Deep-research + your work data |\n| Analyze a dataset, find trends, run the numbers | **Analyst** — *included, subject to usage limits* | Data-scientist agent, runs Python, shows work |\n| Domain workflow (sales, service, finance) | **Specialized 1P agent** (e.g. Copilot for Sales) — *licensing varies* | Purpose-built; confirm entitlement |\n| **One input → several finished outputs**, or a **multi-step job across files + web** | **Cowork** | Chains steps & produces multiple deliverables |\n\nRule of thumb (from the field guidance): **start simple and step up only if the\ntask needs more.** Chat → Copilot-in-app → Cowork.\n\n## Core Instructions\n\n### Phase 1 — Classify the task\nIdentify the capability bucket using the routing table. Ask: how many distinct\n**finished outputs**? how many **apps/files**? does it need **web + work\nsources chained**? One output / one app / one question → a free 1P capability\nalmost always fits. Multiple outputs **or** many chained steps across sources →\nCowork is legitimately the right tool.\n\n### Phase 2 — Recommend the free 1P capability\nState the recommended capability and that it is **included in the M365 Copilot\nlicense at no extra cost** . Give a one-line "how to use it" (e.g. "open the file and use Edit with\nCopilot", or "ask Copilot Chat directly"). Keep it to 2–3 sentences. The goal is\nto **train the user to go straight to the free 1P agent next time.**\n\n### Phase 3 — Ask the user to confirm (required gate)\nUse **AskUserQuestion** with two clear options:\n- "Use **[recommended 1P agent]** — included" (recommend this)\n- "Do it here in **Cowork** instead"\n\nDo not proceed in Cowork on assumption. If the user picks the free agent, hand\noff with one-line instructions and stop. **When that agent is M365 Copilot Chat,\nend the hand-off (toward the bottom of the message) with a clickable open link:**\n`[Microsoft 365 Copilot Chat](https://m365.cloud.microsoft/chat/)` — then show the\nexact prompt right after it so the user can paste it in one step. (Microsoft does\nnot currently support pre-filling a prompt via URL, so the link opens Copilot Chat\nbut the user still pastes/types the prompt; never promise auto-fill and do not append the query to the url) If\nthe answer comes back empty (cancelled), acknowledge and ask what they'd like.\n\n### Phase 4 — Proceed only if confirmed\nRun the task in Cowork **only** after the user explicitly chooses Cowork. If they\nchose a 1P capability, do not run it in Cowork.\n\n## Output — what the end user sees (keep it crisp)\n\nTwo short parts, then the confirm gate. **No pricing, no credits, no cost\nestimates of any kind.** Use these exact bold labels:\n\n> **Classification:** <one line — what kind of task this is>.\n>\n> **Recommendation:** <free 1P agent> can do this at no extra cost — it's\n> included in your Microsoft 365 Copilot license. <One line on how/where to use\n> it.>\n\nThen the **AskUserQuestion** confirm gate. That's it — no long essays, no pricing\nexplainer. Run in Cowork only if the user chooses Cowork.\n\n## Guardrails\n\n- **Confirmation gate is mandatory** — always confirm before running the task in\n Cowork; never assume. Proceed in Cowork only on explicit user choice.\n- **No pricing or cost figures** — never show credit counts, dollar amounts,\n pay-as-you-go rates, tiers, or cost estimates. Position the 1P route simply as\n **included at no extra cost**; do not quote numbers for anything.\n- **Lead users to the free 1P agent** — recommend the included capability first;\n the intent is to minimize Cowork spend and train users to use M365 Copilot for\n these tasks. Defer to a stated user preference if they still want Cowork.\n- **Don't block legitimate Cowork work** — if the task is truly multi-output or\n multi-step, say so and let the user proceed without friction.\n- **No fabricated capabilities or entitlements** — for specialized agents (Sales,\n Service, Finance), say licensing varies and ask the user to confirm access.\n- **Handle ambiguity** — if it's unclear how many outputs or apps the task spans,\n ask one quick clarifying question, or default to the simplest capable tool and\n say so. If you can't tell which tool fits, ask rather than guess.'
# Ordered commands lifted verbatim from the capability's own documentation.
STEPS = []
class WhatToUseWhenAgent(BasicAgent):
def __init__(self):
self.name = 'WhatToUseWhen'
self.metadata = {
"name": "WhatToUseWhen",
"description": "Run this FIRST, before ANY thinking, retrieval, task creation, or file generation, for any single-output task a free M365 Copilot can do; if action-bias pushes you to start, STOP and run this first. Fires on: \"summarize my email/inbox/unread\", \"summarize my meetings\", \"summarize my Teams messages\" (any window, e.g. \"last 5 weeks\"); \"catch me up\" / \"what did I miss\"; a single question or lookup: \"how do I\", \"why\", \"when is\", \"what is\", \"who is\", \"are we\", \"do we\", \"is it\", any billing/pricing/licensing question, calendar/contact lookups; \"draft a doc\" or memo; \"create a presentation\", deck, or spreadsheet; \"research competitors\"; \"analyze this data\". GUIDE the user to the matching free 1P agent (Copilot Chat; Word/Excel/PowerPoint; Researcher; Analyst), not Cowork; use it only if they insist. Do NOT fire for DIRECT ACTIONS (send email, schedule a meeting, post to Teams, create an event), long-running or multi-output jobs, or managing skills.",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
super().__init__(name=self.name, metadata=self.metadata)
def perform(self, **kwargs): # toaster:generated-perform
return json.dumps({"status": "ok", "instructions": INSTRUCTIONS,
"inputs": kwargs,
"note": "Prose-only capability: follow INSTRUCTIONS "
"with the given inputs."}, indent=2)
if __name__ == "__main__":
# echo '{"arg": "value"}' | python3 what_to_use_when_agent.py
# python3 what_to_use_when_agent.py '{"arg": "value"}'
# python3 what_to_use_when_agent.py --tool # emit the JSON tool contract
_a = sys.argv[1:]
if _a and _a[0] == "--tool":
print(json.dumps(WhatToUseWhenAgent().to_tool(), indent=2))
else:
_raw = _a[0] if _a else (sys.stdin.read().strip() or "{}")
print(WhatToUseWhenAgent().perform(**json.loads(_raw)))
# rci-capsule:v1:H4sIAAAAAAAC/5V8CZOjSpLmX8Fy1rarUpkFEkJHvdlukwDdoAPdXW3bHMEhTnEIoZn57+sRIKWyqt5OT5u1lRKhCA8/Pv/cPez9x4uapXYYv3wPMs97ezFQosdOlDph8PL9ZZUFVGo7CTUYr5T1G6UhM4wR1ZMP+HHgOoH1RsUojR10Ub03KlUTl9JjpOLfv1FhTJmOhygLBSiunsEClBoUVAK/9dB7mKVRlpY/VCkzRoiS2BZH8WHkeGFK6WpAGeEflGNSqo5XeNccNaGiLLFRQhVhRqUhlaRqnL5Rynq+gLUNKr6LbTpxkn6jBk4ML4fBd+rHS5L5vho7N0T5BYV81fFoJ9DCK50FILfx4+Xt55d8hFIQNvnNV2uk+gm8kCSqheAF6gs+Wu4ERpi/Ueib9Q1+4alJSnFUjpALr3z9Ax7paqrb8Dsqi+BHNDzJbTWlDMegxpTvJPDeH6COUkfUOUMJPjrWpxeGbhbhg9hhDpqhxqVYuV3cP6CAcpL7H7Dqxx/h47MKVsxR+RkWuX8ElTkp/oiPoTmeBwLQUezo+F/P0VGARXoI9Abm8VBgqDGth0EKBqrkS/AhjVg1UziFEepwSJDdR35ITo8dBME3EZgFwe/wWnhXA+ku8ZokwrYAE6MU/wC/psagMT30IzBGGsZEQ3COQPUKsAWxtqGm6o+Xb9RwMxZEeATqTVCMHQR/9rHOsfTEyergKeCWKfXl7mk86OoPahfGBi1edeTRizBH8SJ0Ani8qiRA8R9UD++ZpF/fqAD/LMzD2P0DbwW6AyfzCuyssCP8C+rC/ieElDxfY29ExP+F8Urk11SPX4/nskJ9ASUYpS++UQlsYmQeVk/leG9UFIIHwTGIu71Rd/0FFLrAEUAQLwysd/D6AJ8PazrzUuceW6dQS4hWfdCWhd9IXDBt8u3l7QVdVT/yUPLy/e//eHtx4PMdCED2NM5IyMG3L//2b9T8guKLg/IfwY+gPDUONBxXcHhQ5rumJsgAGwUQIwRBsKSGk5JX0jCiQqIXSnL0OExCcA6IdLxWaYDSv9A3SsLHhaPFhaH+DigSggoaAs8KEFZyCs5CaQWorL74WE9XIxV82EkL2JXEAfX66gS6lxkgphOUsjyDTSUBBS8HIYWuaaz+CHSQ5vX1G7XGLkY095cE6xSvBzZ5fbUyx0A/uRusQNzsQ4bXV+pH1mDqTVgRECFxzIL8JkYkmjCMgnf72BPIY8ey04eXvhFYI74VxaGOSvkrIzjmj+CxO7pGcAon9e7el2DJsZZS7O2lzL4TOD6GsGqFJMLb4i3gxA6YFy9F3gRPg7DDPvtJUfgBbAmqIvb4hl0CPGQBZ0AGCnRUnfUDifviYL4SCYaDA37xsYnB3cI4VUGsGBz+K16EKNnC3k1c6/W1yjgYj36bcf65BgF4EhD/fPs124TxD4iJS4h/V0IRjUGGfgKY0qbUlyhKrwDF8Ar+5+ol16/Y7AOSryjkOZajeehHUBkMB/vra6q6kFkAIcMY+1kITvspT2GdwnEAN97Lk7xX0qHX1+8YJyCDgUOQdAAf4wR5kOi0MEsr7Sc4dOw4zCwbsIFg0AcAEO2XgIkzIKVljmeQk/4IyDHxectDkrT7UyzdT/KlSlR/gstf334Er684uYIP39PrwoZgp+rEzCwLwehBOvry8Gx4Xu82nny6egDgACjof71n5jm4NFYpsSciCI6PQw6CjZ4SxIY8gmLqdz6u22GYIKxnKiSQQ1zx9RUQ3MsSAkE2KKLkL9SXJ2+qRHV0csqv3+BsY/Oxx18eWR2HjIqXNAC9IcGROChN/AhpvD04M/E6OAVmJPjMNJw/AiFprP1cjQ3iSATmfwQPnKcxmkG+wb6HdMi4iPzw/5cH1Ip46LYaBMgr3fxhvXtOLrPDXcT0EVlGiHBkQUbC9oxAQpKhcDK72+8NMwt4AGJimoG1UlkOVo+Nb9QI+0GC0QLDlKaCiqs0G4Sxr3qVhqgIfJ/4jIdwxPwI0BXpWYoIKGGkLRMMhfkIdnrIEIkeRojIDuthvy9zKeCekenogxWVTgya1JCu4uz78A8M9BCYxHOCu63KbP0KAUM4ADgZpixYQepnRoARPwPvuwfqPcG8lt5aOaP68A/dg6hMSv2ih9uB/kho3+EatFOFzB0sl5kDWlNw4OIn//znP38EGxAfc7sSlyHg/5xsgtChT878zC+//XgpYbRSRYJwcABgOEn0RjXeIwwTpVeSJBVheoOFR/7dgEQZZTB9x2tRFP8pVL6XmRCHBRBBfIbKGTGIvWfRIybuhioPUXwrF1vdIaFa7BMZoJ7JWMX9S80+pWQKZ+RHMqXArSBan/M6BlLqF1YxyeBXuMwA4CbJ82Onb5XOAuwvvcTFZljeSTeOme94n7/D488CVie97/0PCNy/QyTBBgD46DlFly70jx8Brqg+nj+xxdJeEegzqb79VjkF8ZYdlg4shGWotiV0EgTE1VjJrOC7LyRhE+MkCKyNHRjA1bJQTBIsT+CQqPT1tUrKFfziuCDodkfhO6HE0pEC7SE4RkvQ14/gnIUpKD2yYxVbuwxkHVR3F7KMIg+7cOVfJRPBCBP8JcUAAeEUvBN2TuxQ/waSKQ/HJ3h5Tx+fjIbh90X5pZwDI5CCDv59lHTYfKRaqN5JoMwKqrCsoiGEyuFH0Pi8+b30+xf3/1wpQrpQI3xksjtk6MDA5d7br9XenYxWvyeSsJ8lKWPsXxPjJ6CgcZ6AIKeJHFXOIDISuvL6CmqBRcqq9UEGfgsvpfTEe/DfwA1A0iaWlCcUpoz+34vIP9e8b78reWEtDq/V+13hW0JNWV7++Saje1EM3tdo/a3caGcDavvwkNgBIaziz9+XJfPnZ2Xl/PlZ+OsjCPTHk8+AgLchGq/y8RtVFcklm49QCJXXvWCmvpSlOyYeBfjmNb17w98e1ftfkoc3LSSSwnhYEMDzbx8K/QsptmCJBwsYxA6UUX/DPI6KIDsR9lNq08TCkPUMZEJNUHLmKATMLCrBCLvUcFWQQNXtY/P0y77AG8HhN6pqD5BDkbV+7ROUsPBsQVxchB/86d6QwN4ZW/cEva/OBRSELOxn4ECEvezJ3n97NC32n/Afw38F+397anEA1hRk3cOTqTDPIIuTvskeI+c9+e4wQo+XRAMq9WtV+QcFtDxFj+SJvfCDOJUhT7LtA10x9MUBsCPg5Y/m1Aog6j1Jiyd/T+4rl4v+QVarKM3rB6ehvlQksbQGYZHlZ0w/4cNXLEKRUBV1rY4MEVDydYi3FjboPMCkUM/8ii4+hxaoE7dEyugSSEeHpnIodkqWev8ENDEGWK8wBkhPaJbQS4Xl4rhow9XeG+kCvYFLOcgkqgVmCFoBWdp3WbD6NXCT38hCOjOlMD3DwNQNnDLzVAxyoZf5QWlv01NxH8SAKpYIRIDuf9UZt/waU7aqLuWVbfXMxsbCzz6cI3dw/UGOgCtLkLHz0BdOo7/K99EzKoVcZ3FQZWbwCoSRHlcHnmOgCkxJqUOEhMOg/NN3SQZ5G7MWAGEgNSmByC4WQUAooh5tsUqOjyYV7P3lHhGYRWonbH/YmTRqIDh8J02+Ypi//4YEzVN7rbIk0RF+jEGDLv+EROOitIIcYn+gZA6mAaWJiZR1hoiJmQTp0SXOI3tV/bN/Xcbez02+5L49gFapO+A44PI416lBCPWHc1dh2YAA7We+hr2ByEYohgDvgcWws5m4eK2kSyKkO4SwGI+SAIuqAJ7i9RXcBNOxzw+cAIfc1ycq+gx+F8jHKPnjUTjBOlCyIhxk355JHe4MfiZ2uFBRCQTgdcDTHFxS4N+8g9xDFGRQJAJnKbt8wCwBpT91/CD+sDITLPedgSZPbSXAXu9J6qpGIdj1+gq7w+80L9Tdr9+fm6/ss3+83Wv00jugvsCNClXzEEkod78gYX7PDlSKo4HQb1LE4hgq27gV2XASquzo4cLuo+IjAE0i/8OXavB7vAkGnarAIM9I+DxWfnQQSLEDIQ5pDPDvgikpXjQBr9dRQmMdVrHZqFE4FSYArLCM5+B34VS4x4W1L/zSBSBaPuHigtQqkAseZiS11PslgbILaE5lUKLU5/4AFuTXFkGFAP/jLkHFdn+8/EmzoEK73zcLSHjgY0qfW8X4iOVYB5sS93TJhwvEiVE9xEkyK7/AZsA/u0cGLm2wTNgBX18fK5IPZL9FBtm/7Aw4YfBRDakeTiLFPYTAIpBncG0eP1dR92haVQEzCy1Hv29N6oqPCqaqQT7CAP/2P++dn7LIqRge9Z8ftSp8xiTyP+Hd9/f3x//xT8sy/mMigiHp7YkxPRfx5bjpXiXQpV3+E6v759r3gxo9Otav8OZAxYwL1AFemZACGvdALfCs4Ln2vXc2iIBl0gbzYLPBXhBhsPoj3+Ptf0r22Noifhnnv7tYX38rEOZICek0Vy1wnCdLDyFVTeSpEMFEDrlEYPz0LsQj0dOfkt/zKyTP/iRjCQX0U7L9E3VtAswAcOGVlAhAwN0E7yCN4lI96AM+Szj4Ja8+Jzciy6dE+/PGf5rLsER4t/fH+rXSXASgSdFNJLqnO/We60qnqlLcG/VTSiMSfeTU/5k4sMF7ojs4N2GeUc4aSOt9AciJ/Rk3AJNSxFJfP6XNLwlOjJhykrxIZC3TIpZL+ZNsSorM52kCSa8fPvZzGsXCAkoApqF3nHjS3+bVUsKSoJEk8kjqJeR/IHuZKAGFKnb/+vqRTMlwR8VdqYT4CU42OdJeXys/xEcnf/BVPiHJ43/f81VSOhOu7Z7zB5YNt39w5xKjDRiP+vIosk0H4ZZjBnCKdfcd4ySpHhI8k0NU2W4F2aD4fWoa/QgIZOFWBmwbxgizzntr6omavjvBuxo91c3PuMnjlvj4adxXPv+3e8PybhT+eWyF9/0RjA2s/erR07xNy3SgiOBu9/bRncwQhvAN99i+U7iz7GNeaYDvgbumuMv+q4X+9vHi6yscIqGJUfAXpBYEnCKtnNdXMBI2FRztR1Bl9jLnAxrA29grKoJEE56BNVJ+ejQaKgV9tIQ/DvUDQoyMrVQvx0WV6eDZmnS3dSUvBi6MCkTeavPKQyqXuktWbvUYpQKn8ZAF+RMyFvKKn9LUt882adxtsvo0NPyd0EqqljXqxzAGD2k/bEWIGel2/Asj0h/Bb2akVDkipb5RQzz+ULFK3wlFKW8pEOBB5GbBo70URih4JAwiA37lkXUeU1zSpopxgwD8/FPztSxqgT69QJEwxfWQQzCucZ9J4REWnkVWE1ArBACA5B6QoS0ZdH4a2lrhx0DjuRX+uClAmjJgHxxkn83B3s3RwxTjac07Rn3BozaQlwwD8aQTs31A7c+tZtKEg4yb5mE5Vaja8Ml3TJJ+vJQ/+vuzHe/C/eMD+e/mw8p+nik7yddymc8d6idEq7rU5Qihmgj9Om6GKAEcqCb8356HZlX3+qG5Kp3YpDEUmmZ5uodzPN8wqAAujHBlVva6sY1LxYNX/kKQgOTevR6v/46X/5KGhELjh1qYpoCt1Y2Dqhf6tZQAHBa82MVQRBE/BHHc79io//z7n48j/vHFTtMo+U7TPnz1TffCzPjm31+ncY+V/vrPj3EbLkyq4Rkee+HLMaBMUFsV1uUcCSyRhB8axCOPCEgeqqYUGJwwenyjvnxIhmHvR0DmdVkMpAAPQpMsIvQkitG7WTboyCCXbHhxVGqzmr3dt8LnJSdPPp3wR6DhufNjdpTiuTiRJqHTIkKlacs1/4BwwE0V/JeD4SBLQ7IxsWTZBMMAezcSIGxc3OMqi6E2GFfXFtQgyRHpPcAGZJKIYP0CCo6yoYWMr1A96m4Q5vDZKsECowHpH+PZ4F8MOJGLfsLI5t0Ui8qF73nzUU2U05hfpxuEfHq4J/7fD56rVFqFAeAtfIHV8RmG723BsnBJf61d5mVeuvedqpNRqMTFao73xa1QjozzyvsSABWk90bhyR7QsNSucPUOPRhwcFDJ4UenFoC7uplTfgb4BhdNytyT4KDB2csF0on5xKacrSa4RMNerIVAVTxVQ15CBoR/xRjyeUQIv/p37LplEng6FF6TBCUpxso54l9BCX8tl/lpOIiX+YTBf/1XZoJkIIjX+2Um+PvgfkwI/31+FxkwDkKXzglIlumLLJh+++tjVFhWs79C+GfFr8uevJM+dQXwbS0KI1JR6r+yC0YJqJdg//gb9d/MCX9yv8qLhhnAX4znW/dmEV8Koz4mmRRp4GEFh3HxdIGh5DR32at7Er8ZAJJ5cHXlrUQAkgzgpIvfZAqQGva9h81DdFB41Wf48EqKTOTBiKZjZTHmdw+NkW0IlpZeC+9lAfZdI/Q8yJKqX/5Nellq8a4m72Dud0joePyJg8JBcXkFjuzw8HQQOkycR88BvKzsuxPSDcyINI+fCNGvnOePe2CTQeijJKsuuZLeU3XSGb6j9rhX9Qu7+Dju53tgj72fGBsZHPxx76j8T252fQiA2dbPV7qqFR+3uqBaNUseo+JBAi6CyzQf4+fkmtf9pmOZK3J8l+vhkqRdRoa8pJn4RG/v0lW84x62n5owIHD26HFWtL0U8bntmeALguHjhskHE6mcEed7fK/EBCerrgdVbmeqWozh6lm1Dga/+LmifHJDk9xL/ShnidmSqjFMfE+5l8D3znAp38+17COB/Y4pqjoQ1nuzEd+ywezY1yAmnu8QYl2Raw9ZUBLFR4l0L0OwA0ZR8qHRJIJES8TEf5VFD+5c6RBBUMF9vtYLvzaQqYKi785a1qFJNf/yUNlDrkZ+pRVIEsQ3sgGjwehQxYBH2A5uv+F3TZJu8OYxuRCHGR5gUoaP+/L2UqHw/fppoPrwmYxh1yEgLOaE8Ba+0eAjSMrJy/f/eAErRyjGZoO//uvt5c6yy9usmLLAEiHpfrzA1wCuKZ4XlS+TS27xBb/9Hy+kF4k/aK0m/GbUTMa98n88zW3V9n6mrwKte2qZ4fCsO/opN6cNv6voVnrWlA033w9F31ecmPX0aJMvpa7kXy1mYNXzOR90O9NOZzmZBMV4wSn72by9a/ak1nratWpbiReWpnlBeofu5sGytdYjJmTojRExDaZznO9aKGi0N5lbL9qxcNweGlcu9DhJbO2yhjeuq7XFpkHP4xaXTXaZ48XattU125fLgEV+MK5vtG2mnhcXxp86fro2zufbbmqgw3SQxZHiMgMvjjapac+i4xIsuxb8zh75sRb5oUY3zmcv3u9aKXtbsA3v5l89Ps3CGV/fam5tu4OV5LmkMs3tJADHSLtHOFsRD8+p7nY1eTVgzf3g6nS3t+3GVLzzlrltGl35dDCu0jkv9Kzuw3v+or1X25M1iqbqwWcndrtmpDwa3Ri0ttwDuxPUVd1m6d7upLfYtdVpDooW47fcU+AwseLdMo4JF9uLXJ/a4706r228LNW6bFgbKHISryf1wB6lxnZ8M3Zjz+O5QhvpmREeOEYNNuP9/kRHo/OVWax3zK6ethr1g6vGiNkp3igYDJ02ewloY+pLHc6IrPbeEa5Ztons7Mz6gy3NDLpDSd0PhNBW3Kkm+Bc1WlzpzsTNzsvljg+n0kHkeI/11TW70OSgNxJF324sPEOLkvHIzpLr0GORI3M7f9Jv1ZXZYNHv2+eLrgSJn12SrSc403NocOlS3md9QV0y8nF/XC/NoQwBsdpsz/51ybWiun/dTZqN1s7xLxcupy+h3HaH2jpFYu/cYbfCwO02+y3ezXtWyLScs9WymtE80W02TdqBVmve9np+aW+1vddVN+5cPDtTId7Qu2mjDZx5OplefIdN42aX2x2Xo2V/2+71YQ+XGfKOpI7StG5ms2FjsuC7nBnUa925lq7iDpfdHBrtW8lJ5UdsPklCu8EWg+g4H3ea/jmezgfJyu4POusBuPg0aIwshj/kEO/TbR91ovXG8BJmEsTrNavZq5mkTYespyE7O+x6rHIbcz2T6c3lZbyDLbdy2DAc2W8qYiEmvaM36bQ85tofSu5+33Jm8zprDrW6LJ47PLItg4/OPe2MZvW5qw+ciz1ixvZAcNnT+qY0xOi4OU5ax/ZMnVuZlUv+Wu21FvK6vm6z/XwUjxCHvNNgPhSF60Ed80m9boAsw/PVoqdo7xy6x/oyag4LdWSqopaP/GZbjJLWTB6ry+iirATPcvmpcNV35/3Fv50HoZffRgm9EXaemC5McaPJuhAdjqc6Sgtz0+/O+N5y2twf1tfdhb51Low7HAZ9PzsuArVg0Moci4VgiFY3b5zZ/Trcb5wVfxifG2dNVbotRmiHiZwe2DpasjdFDC1hudk556gYhRfN0jZcKKtKkjT5OCvser71JH8vuqgvzyzErNMgPDZ7t5RfNaYj/yA44mUW7yfoyNlem7mwM7+t77eNmhiHo3mYN1L1pG7jY7LppdtejR0qzoDb27NtT13n8+Zh63aHdrMGYRXotCjeuPlktk76q6M2aamdhL3JSZfX+4JkuuOMDU/n8zk7oOs4HdXkbreJWgsVOawY+ZtZcpvO+jxrRfuQq8lXcHbHGvd0bVPXd7s+M7teV+7NkqbDxfl2E+UkC6618XJjbfgtmmujLaozyXYd5fZsHwbyaFEP9qnXSPNlwC9iVnM6ze52PZufN9vY8W5zX7eOaGvTy9DP+s3m+saO3GZ9yLb6TWPE1JTO8WSLrCP3zFUhqN3dmqW52r6G8po+7U8aJyFRaVo2aKErzPZsvybKbX8+1nS+6LE80tbLVO9YY3s+vJn8LbeOmaculmtP29USZqBmidQLLfnaEs7Ny47Xaom+n5q+6px6e4W3eXWtX9mFPmnfjpopuAV3YIquEk8cIeqPRv35DYUyd8rWYj6leZ6W8iuSx9zaq/cvgre9bNh4z/dO2wnHbIVmsFaGoThctpb107aTtoPzpDWLiuG2kI/RDkV8U74ep+7RuNFNZ2/I3LrRrF+Wet9uqfF4kotjEXL3lJkk+V5X+vmtXwudYS+J67Qn0cfNziiWvJj2HHs3EcZ8Pb1s/FnYt7c9xPMnd7aerSbduD1vMJsxexS7HO+fB9ODneiz9kybbgcafx3pYhZOpiNPU7W2LBmCcRwnxuRQpIE6Ho9MoZsv4+NaWZ4629N8vBeRxE9bS3vr1riROek3+bY92Dbz1aF2Ww0Nfm9EIMrJQZ12vB0ZU2t+iy6T4SCcnJzhpDO47HK5uzekq1tbn65NetLvOPJEYtaz45XzxTjjmsmy7rfdWJJcfX1w5gftNmcYs9eXDluG3SQNb0DT+tIb2mtpN7ch/NaaclA7AndzHd4KanXuOnYXqrikO6fzdBT2R1p0bni6UUvHyd48mae5Z65YXWqh9kAXtvPYnW3bqyXnnP2J5O35sTyd92d5S5B8b7XQrTGdao6wOowOQ3Fi0kwm1QdrZVt09Njc1GL9ulOPJ0nac729yU7QImqemzTQaNqappZq8o1ReNyfOMkUuWOPRvV+lqF0wwzo2eVanySHYBy3TluhN5RrRs0FaJ3ax/nCovlRs+newvAYjI9bftPNud3ZU/P1SGqILGN0myNpEjUHE36fWueNH0s9x9/WB0Mj55f0mT9xq0aiTWeeWi+CtHViGKs9ERfzjtFfiao4X9767cmwpip2vSPLxdl161uhxVw9N8u45QwtA3EnLOay3TIWDYsZz4aRsebp9uhgRf6BHeuj0fBsSbF9tGaucTtOghp7GTpZzmpCkrCJwKj6Zq27NZE5TUb8Woum7f7S7Gw2klZM20f6otU6XS412cVFaMwNWOMUB91wFE6PuivWpKsx7m3NhXiw6N2pLw5XfciK8vqMJvuai4ZI2ct8f8QtYm3QZxan/Hq6WNs6e6rv5CDa6eM9CjsXOjWWJ7pddOhal5vHZqwP0yG7ydT0oCr0kXbX0zpdBBEy6XX70uA3nfPCMszW4azOnL605b2hOdua6jbq1QbT/VmRIud6yY3laG+uxllNmOyv4tXs6wtvnifWcWDNvcshPyNnVue77Wx8EbTGucegg9dRtruxwE0K1Nuk0+V+X1w2SqEdF4qTzCZpMrAURdjdBMNw7LNcXzf37G27WA38YGovTSm1s8Fqb4/0YUdrtuWefzPstPA8wRXrt/o00Ybt2qbpLK66bkh8PxoXJghwsa5da06z2cTejPhT82jo115/lBylId1vJnk8kuXWut5ZF62ZBFGbZHsuZWfWVmgkBZBUKa0PjcZwpszPymBe08Ts0Mod6VRXT6Kvrdj1kYk7krmRtaS/9+p6Y3Som0luXgOGt5axHjUmqHucxrXdxUczYE7Wsh0xk6KQJP56a04CZ0uH2SZTzke007LVaXizBtue2chjZziteZPbZL+7LuWFhaRt5ySqEZ9w+dQdBIdImzrJnlMHQi3zHG21mri8zGzS1aQ+vpyH0x0tJhvLjsxezx8tXVtbtlZNDxnSqcdzqXuaALKFcu3WO02OgyLj+qf0DOFurWhjsV50b4XGFMPlqc4aF8bUfUM+0/w8pemdNHb37taXwefp9mottEYba93tWqI6yBpxKIWr/rBerIB7WgPVD+05726m/aVb7176o3oxG0q+25sU42Aq9g2aAdrdSA111+Ig87W7SbOx6IXNKDk20Djw7X1bMXV+I9cOV7shaDUpblpDoR8prFs4glEL6jrdWWujWjwsRElSGspIkq1WjRk1j+3aUl2dkslhN3AixlWajBe0buq0M6SV2oTWuQvfHq8WyqDdG1nHozFTxr7L7r1GbTpGSqPD8MfzsScmfbN59Q42so9JrJyUaVvxjwNpPO8qqhSxgqmd8tRMerud2K6na8bPAF0g50zDti3Q6TpOlF4js0J5wbh13xzFIi27zsqXakEzTvXepXddzxrrYy+aXLpHz7mOp+dD/6I7Yr3H7TNZu1nLgaKF7d7V3s+FwAoPieU49mmFGsND5xpzzWN9dGgvtOZR7rdNocnQzmoXG+2GIm2P8RTNltHiEnaDwUqRuXNTy73ounVOSas/yQ7jY1OL2FxwmO1inzdWa32botaq4xwR12u7zmQuF2saGE6abZn6WMlFZnXY9A8Gc4sbi1DwhUXKeSu9M5ODfREOp0t9d+Wng6YqNU9QY169Dn0ee4Pk1rkOOMSMzrc0VrTB9bKehwrXl+xRsmKYudPYjTuzvj7wzBq73N2icXa6Xddy7g0X9U5+Mtt9Nlx11OwsdrxJd88Mb8m2Ew9G29wSbvoxH8R0v3E24jwIfRMS8jIbn3TTUINZP1Y4rT+cmCMbyjyI7l0k+EZX5MIRI/YiNexqwrIz4oqBdrOH7aTwUR4N947JNY3kcjCablBMb0vO5AV+v4noVmGx+5vE1CbHms80AlZo0Nw41i4dTt5MQlk/bk/DWgjhO70ErKWYZ5kV5qe+O9myF+NwG7Hno2SM+rWlxE0meoBYK15OD2hw4G+A/8UijHvi7LDqNoHEZ8usxi5CqyZPc4228mV9uWmZji1J13UwWsnLAu11PT8t1XPv7J5sj1vbF9VYsGHOG+MBe7HRyQ6745FQLG+3S9Ps9xaj+mJtc5O+r+ymnXozZce5w5702kpptDhmdGleLrZ2dUarsdNFM4dtNnRBYPb2IpUzTql1zcPqFC2n3lQQGxHwQbRUBq6wWvWZwTiaBye21ln21XSx3x0OG87ia0KL6447l+VhIM68VL+FSaCcwrHOoHlyKCZBuCxcQx5JScTQR7c3lfaHpL/JxLXYa50EZgOEcsHY0/XVbfqucQo3pyApNpPerdkD2M4yIxjJ9f5Mme5HzRtUTqeec1zSQ16xDrPZsSWtmqPrYiR1Minp9xSbZmvzpn7kWrM+GrqHXjHZ6u5+7m3yQfuszjN+wKi3HafyrOoWLjc2j9No3l7Y87gl85K3nPa41uTgL0U1bbWHXnwzbwu5sWgJo8G58D31ap6LSUe8dYP9YrmZ1Fu5tGqzzdWc7TvWbGGr4602QTo3WLGZMD32ndtRiK3j5ro/TtaC5foSjTW80iaDzJ9Dude3lw1lfeps5PZlXpjL2hZtd81skvXMaBbyXcbSDrdiqOysQ8BbE8uwR+rC4kZnrbu8jm8eV/SUS3+/X9bnganIN7MJ+Tgeq/wmTZ3rzgvVdcCaq7M42Oj2qLvfLOVhrof9+VU8a32ZcYyFvW3aLWfktIYTVhwe/eU16YjXVG8vG8XIHtUz1+teDGMhrK28PWROynHO9Ni2kPMcdxzyAS1BBWGs95rsBPX5YLOx/KOXZ5o+tNpOzGx3Nb8Ys+wxyLvMQZnPRcZ0kCPzaFpbt4YX4XAyeP3SvsRCQ9rIh9vwaOSJNOV2/dMgVgq9EdsQ0IdClzNt2OISlmVMORi2c23DzBo9OUu4ZU3vDmpq7cDnxc5pXG9XyV1Ek/XEEzj/wJ07WbcTe8fD2vKVW6q16dE2HrWtVXSTHLqTLJZHbxiOcvm2umVyNqgtetl8nun9GmK3PaU1GsxdoEjTa3M+X4rd+eh4UHudYZO7LrN5fVNfjvvDrLFG16K1oTcNoyO1eIC3af3Qo73h7MBG9eVNX+i2PXE9Ud4iU7/sTlc3PBdcMmvcVtb1JiDh3Kgdik5v3PN1Nppo3rgnM2mB8vHYNGm706ZvoxBq+O2ccxdAw9fteZIMmVqjsx5xtdy6hR3att2l0xznjBswC40eWX3Vjmt8YsbNPr2+aOdmq1tbRhO/18RtMLm24/1TAOX+cDg5TQR1eBrqvVuw30aTyXa2Q7OA1ZRQHSdpzVCM3ejc6Pi6gtBWaiddq7WfCSfwiYMm6FCGh5kmt9Mpal5ak02nj+LDqSZdlkz3MixizlkaHUgX3rDV7KWtOssE8XHoBe3sWFtFLe2oOoGfzNpSekJbtlhcu2Dm4Fqcjkl6UbRg2O24157G6WiqG9s1O9W5unZhjKZ5XU73PU26NkbbyNyPt1LU7tpx7trWXrvMOrVa77qSpH7Nq/VqdU1YnNuDiMuyERfzYrbgV6tjWG+uV1PUGs/C1u7UYPqG5I+cXb/ZGUsMZFRxLZ23/mhnFYwVT2y5fWMvWleJ+nltLgh7WhIGl/Gs2UQn4ya0WH7sHedQ/faMzsneKJKW5QV/nhpTceaK7cJyiuuiPePnbMeHYk/LOnI+34ud82Hf2cwvg9nItafXXDq3T/zovKvV5M3R2xRhIqvC0NifLmkqxwuuIyqbgdkROa6e2qAuOhs0b+gq+ts21zLF07jGnWudQz1kOorqd+naVJjJNz9p73jRdvons8UFLU8Ltj39IE7rNbY5U9Tx9WQap+C2PK+NpVifpM1ETc1NJiRet2WLAyFYNFfFUQnE+VBroc4+z25NVtmfur1aJO0Qo+gtVx3Y+47GFgOpqDX3fc9XBy7UAYmZ75Yhg7zACWfLACDzMDh4Rauj0UdRjFimu5IPRhg1T0Kg95Quo+1pW4x27VZPQipz22+Yhbzwakmx7ikQVSu74c4seu12F2EiTNet/Ox0BjvXGI06Q422PYY1tjd3sQknObNgFs4s6vZZf9uVosWydXG6bK7Uh/Q8nZ/yQ8HTh4XOieNYjDad2ibW5rv9
…(truncated)
1---2name: what-to-use-when3description: Run this FIRST, before ANY thinking, retrieval, task creation, or file generation, for any single-output task a free M365 Copilot can do; if action-bias pushes you to start, STOP and run this first. Fires on: "summarize my email/inbox/unread", "summarize my meetings", "summarize my Teams messages" (any window, e.g. "last 5 weeks"); "catch me up" / "what did I miss"; a single question or lookup: "how do I", "why", "when is", "what is", "who is", "are we", "do we", "is it", any billing/pricing/licensing question, calendar/contact lookups; "draft a doc" or memo; "create a presentation", deck, or spreadsheet; "research competitors"; "analyze this data". GUIDE the user to the matching free 1P agent (Copilot Chat; Word/Excel/PowerPoint; Researcher; Analyst), not Cowork; use it only if they insist. Do NOT fire for DIRECT ACTIONS (send email, schedule a meeting, post to Teams, create an event), long-running or multi-output jobs, or managing skills.4---56## Overview78Cowork runs on usage-based consumption credits on top of the Microsoft 3659Copilot license. Most everyday single-output tasks can be done instead by a 1P10Copilot capability that is **included in the M365 Copilot license at no extra11cost**. This skill's job is to **guide the user to that free capability** —12classify the request, recommend the right 1P agent, and only proceed in Cowork if13the user explicitly insists. The intent is to minimize Cowork spend and train14users to reach for M365 Copilot for these tasks.1516## Precedence — run this BEFORE acting (most important rule)1718This gate runs **before any thinking, retrieval, `TaskCreate`, file generation, or19invoking a doc/deck/spreadsheet skill (pptx / docx / xlsx)**. For an eligible20request it **takes priority over action-bias and gather-before-generate**: if you21catch yourself about to reason through, search, create a task, or start building a22deck/doc/sheet for a single-output request (e.g. "create a presentation"),23**STOP** and run Phase 1–3 below (classify → recommend → confirm) first. Only24retrieve data or build anything after the user explicitly chooses an option.2526**Exclusion check FIRST (before any classification).** If the user's message is a27**direct M365 action** — an imperative to send / reply / forward an email,28schedule / cancel / decline / reschedule a meeting, post to a Teams channel, or29create a calendar event — this gate does **NOT** apply. Do not classify, do not30show the confirm card. Hand straight back to the normal action path and let it31execute. These actions are out of scope even though they produce a single output,32because the user is *taking an action*, not *asking for content a free 1P agent33could generate instead*. Only after a message clears this exclusion do you34proceed to Phase 1.3536## Quick Start3738```39User: "Cowork, summarize my Teams messages from the last 5 weeks."4041The user sees a crisp, 2-part reply that points them to the free option:4243 Classification: This is a quick Teams catch-up — a single summary.4445 Recommendation: Microsoft 365 Copilot Chat can do this at no extra cost —46 it's included in your Copilot license. Just ask it in Copilot Chat.4748Then an AskUserQuestion gate:49 [Use Copilot Chat — included] / [Do it here in Cowork instead]50Run in Cowork only if the user picks Cowork.51```5253## When to Use — fire on ANY of these (each is a separate trigger)5455Check this **BEFORE retrieving M365 data or running the task in Cowork.** The56quoted phrasings are cues — generalize to the intent, don't pattern-match.57581. **Summarize email → Copilot Chat.** "Summarize my email / inbox / unread",59 "any emails I need to reply to".602. **Summarize meetings → Copilot Chat.** "Summarize my meetings", "recap the61 standup", "what did I miss in the meeting".623. **Summarize Teams → Copilot Chat.** "Summarize my Teams messages / chats /63 channels", over **any** window (e.g. "from the last 5 weeks", "this week").644. **Catch up → Copilot Chat.** "Catch me up", "what did I miss".655. **A single question or quick lookup → Copilot Chat.** "How do I…?", "Why am I66 seeing…?", "When is…?", "What is…?", "Who is…?", "Where…?" — including67 calendar, contact, and people lookups ("when's my next meeting?", "who's the68 PM for Contoso?", "what's on my calendar Friday?"), plus any quick fact,69 definition, policy lookup, or brainstorm. **Billing, cost, pricing, and70 licensing questions are quick lookups too** — "are we charging for X?", "how71 much does X cost?", "is X included in our license?", "do we pay for Y?" — even72 when X is Cowork, Work IQ, or a Copilot capability; route them to Chat, do not73 start retrieving internal docs first. Read-style questions route to Chat;74 *taking* an action (scheduling, cancelling, sending) stays direct — see below.756. **One document → Copilot in Word.** "Draft / write / rewrite / shorten /76 proofread" one doc, report, memo, brief, or letter.777. **One workbook → Copilot in Excel.** "Add a formula / column", "flag orders78 over $10k", "clean this CSV", "chart this" — within one file.798. **One deck → Copilot in PowerPoint.** "Turn these notes into slides", "build80 a few slides", "suggest a layout".819. **Deep research → Researcher** (included, subject to usage limits). "Research our competitors /82 this company / this market", "write a cited report".8310. **Data analysis → Analyst** (included, subject to usage limits). "Analyze this dataset", "find84 trends / anomalies", "run the numbers".8511. **Domain workflow → specialized 1P agent** (Sales / Service / Finance) —86 licensing varies; confirm entitlement.8788## When NOT to Use — not a routing decision8990- **Genuinely multi-step, multi-output projects** (Cowork is the right tool —91 proceed, do **not** block): "research 3 competitors, build a comparison table,92 write a briefing, and turn it into a deck"; "from this one input, produce an93 Excel analysis + a written summary + a slide deck"; anything that chains several94 sources/steps into 2+ finished deliverables.95- **Direct M365 actions** (just do them — no free-vs-paid routing): "send / reply96 / forward an email", "schedule / cancel / decline / reschedule a meeting",97 "post to a Teams channel", "create a calendar event".98- **Managing skills** (creating, editing, validating, or auditing a skill) — use99 the **skills** skill.100- Pure execution the user already confirmed should run in Cowork.101102## Routing Logic — match the task to the right tool103104| If the task is… | Recommend | Why |105|---|---|---|106| Quick question, find, brainstorm, summarize email/meetings/Teams | **M365 Copilot Chat** — *included* | Fast, conversational, grounded in your content |107| Draft or edit **one** document | **Copilot in Word** (Edit with Copilot) — *included* | Works inside the file, edits in place |108| Numbers in **one** workbook / a few slides in **one** deck | **Copilot in Excel / PowerPoint** — *included* | Understands that specific file |109| Deep, multi-source research → cited report | **Researcher** — *included, subject to usage limits* | Deep-research + your work data |110| Analyze a dataset, find trends, run the numbers | **Analyst** — *included, subject to usage limits* | Data-scientist agent, runs Python, shows work |111| Domain workflow (sales, service, finance) | **Specialized 1P agent** (e.g. Copilot for Sales) — *licensing varies* | Purpose-built; confirm entitlement |112| **One input → several finished outputs**, or a **multi-step job across files + web** | **Cowork** | Chains steps & produces multiple deliverables |113114Rule of thumb (from the field guidance): **start simple and step up only if the115task needs more.** Chat → Copilot-in-app → Cowork.116117## Core Instructions118119### Phase 1 — Classify the task120Identify the capability bucket using the routing table. Ask: how many distinct121**finished outputs**? how many **apps/files**? does it need **web + work122sources chained**? One output / one app / one question → a free 1P capability123almost always fits. Multiple outputs **or** many chained steps across sources →124Cowork is legitimately the right tool.125126### Phase 2 — Recommend the free 1P capability127State the recommended capability and that it is **included in the M365 Copilot128license at no extra cost** . Give a one-line "how to use it" (e.g. "open the file and use Edit with129Copilot", or "ask Copilot Chat directly"). Keep it to 2–3 sentences. The goal is130to **train the user to go straight to the free 1P agent next time.**131132### Phase 3 — Ask the user to confirm (required gate)133Use **AskUserQuestion** with two clear options:134- "Use **[recommended 1P agent]** — included" (recommend this)135- "Do it here in **Cowork** instead"136137Do not proceed in Cowork on assumption. If the user picks the free agent, hand138off with one-line instructions and stop. **When that agent is M365 Copilot Chat,139end the hand-off (toward the bottom of the message) with a clickable open link:**140`[Microsoft 365 Copilot Chat](https://m365.cloud.microsoft/chat/)` — then show the141exact prompt right after it so the user can paste it in one step. (Microsoft does142not currently support pre-filling a prompt via URL, so the link opens Copilot Chat143but the user still pastes/types the prompt; never promise auto-fill and do not append the query to the url) If144the answer comes back empty (cancelled), acknowledge and ask what they'd like.145146### Phase 4 — Proceed only if confirmed147Run the task in Cowork **only** after the user explicitly chooses Cowork. If they148chose a 1P capability, do not run it in Cowork.149150## Output — what the end user sees (keep it crisp)151152Two short parts, then the confirm gate. **No pricing, no credits, no cost153estimates of any kind.** Use these exact bold labels:154155> **Classification:** <one line — what kind of task this is>.156>157> **Recommendation:** <free 1P agent> can do this at no extra cost — it's158> included in your Microsoft 365 Copilot license. <One line on how/where to use159> it.>160161Then the **AskUserQuestion** confirm gate. That's it — no long essays, no pricing162explainer. Run in Cowork only if the user chooses Cowork.163164## Guardrails165166- **Confirmation gate is mandatory** — always confirm before running the task in167 Cowork; never assume. Proceed in Cowork only on explicit user choice.168- **No pricing or cost figures** — never show credit counts, dollar amounts,169 pay-as-you-go rates, tiers, or cost estimates. Position the 1P route simply as170 **included at no extra cost**; do not quote numbers for anything.171- **Lead users to the free 1P agent** — recommend the included capability first;172 the intent is to minimize Cowork spend and train users to use M365 Copilot for173 these tasks. Defer to a stated user preference if they still want Cowork.174- **Don't block legitimate Cowork work** — if the task is truly multi-output or175 multi-step, say so and let the user proceed without friction.176- **No fabricated capabilities or entitlements** — for specialized agents (Sales,177 Service, Finance), say licensing varies and ask the user to confirm access.178- **Handle ambiguity** — if it's unclear how many outputs or apps the task spans,179 ask one quick clarifying question, or default to the simplest capable tool and180 say so. If you can't tell which tool fits, ask rather than guess.181182<!-- toaster:generated:begin -->183184## Run this — do not improvise185186This capability's deterministic implementation is a RAPP single-file agent, linked beside this file as `what_to_use_when_agent.py` and embedded as the fenced Python below (sha256 1175d5dd657078d4…; a byte-exact copy is also vaulted in the capsule comment at the end of this file). On a host with sandbox execution, run the linked file directly — if it is missing, write the fence contents verbatim to `what_to_use_when_agent.py` first:187188```bash189python3 what_to_use_when_agent.py '{"key": "value"}' # arguments as one JSON object190echo '{"key": "value"}' | python3 what_to_use_when_agent.py # or on stdin191python3 what_to_use_when_agent.py --tool # emit the JSON tool contract192```193194Treat stdout as a tool result. If it reports missing or unresolved inputs, stop and collect them. If it returns `steps`, execute those steps in order exactly as returned; if it returns `instructions`, follow them with the supplied inputs. Otherwise use the result verbatim. Do not invent behavior beyond that output. On a host without code execution, treat the Parameters schema and the code below as the exact specification and never paraphrase a step. Never edit inside the generated markers; a converter-equipped host can instead restore the original file checksum-verified with the installed `rapp-agent-converter/scripts/toast.py convert SKILL.md --to agent`.195196````python # rapp:deterministic197"""WhatToUseWhen -- Run this FIRST, before ANY thinking, retrieval, task creation, or file generation, for any single-output task a free M365 Copilot can do; if action-bias pushes you to start, STOP and run this first. Fires on: "summarize my email/inbox/unread", "summarize my meetings", "summarize my Teams messages" (any window, e.g. "last 5 weeks"); "catch me up" / "what did I miss"; a single question or lookup: "how do I", "why", "when is", "what is", "who is", "are we", "do we", "is it", any billing/pricing/licensing question, calendar/contact lookups; "draft a doc" or memo; "create a presentation", deck, or spreadsheet; "research competitors"; "analyze this data". GUIDE the user to the matching free 1P agent (Copilot Chat; Word/Excel/PowerPoint; Researcher; Analyst), not Cowork; use it only if they insist. Do NOT fire for DIRECT ACTIONS (send email, schedule a meeting, post to Teams, create an event), long-running or multi-output jobs, or managing skills.198199Generated by the rapp skill from what-to-use-when. The RCI capsule at the bottom of this file carries the full original; `toast.py convert` restores it byte-exact."""200201import json202import re203import sys204205try:206 from agents.basic_agent import BasicAgent207except ImportError: # running OUTSIDE a brainstem -- stay executable anyway.208 class BasicAgent: # noqa: D101 - minimal stand-in, same contract209 def __init__(self, name=None, metadata=None):210 if name:211 self.name = name212 if metadata:213 self.metadata = metadata214215 def perform(self, **kwargs):216 return "Not implemented."217218 def system_context(self):219 return None220221 def to_tool(self):222 return {"type": "function", "function": {223 "name": self.name,224 "description": self.metadata.get("description", ""),225 "parameters": self.metadata.get("parameters", {})}}226227# The procedural layer, verbatim from the source capability.228INSTRUCTIONS = '## Overview\n\nCowork runs on usage-based consumption credits on top of the Microsoft 365\nCopilot license. Most everyday single-output tasks can be done instead by a 1P\nCopilot capability that is **included in the M365 Copilot license at no extra\ncost**. This skill's job is to **guide the user to that free capability** —\nclassify the request, recommend the right 1P agent, and only proceed in Cowork if\nthe user explicitly insists. The intent is to minimize Cowork spend and train\nusers to reach for M365 Copilot for these tasks.\n\n## Precedence — run this BEFORE acting (most important rule)\n\nThis gate runs **before any thinking, retrieval, `TaskCreate`, file generation, or\ninvoking a doc/deck/spreadsheet skill (pptx / docx / xlsx)**. For an eligible\nrequest it **takes priority over action-bias and gather-before-generate**: if you\ncatch yourself about to reason through, search, create a task, or start building a\ndeck/doc/sheet for a single-output request (e.g. "create a presentation"),\n**STOP** and run Phase 1–3 below (classify → recommend → confirm) first. Only\nretrieve data or build anything after the user explicitly chooses an option.\n\n**Exclusion check FIRST (before any classification).** If the user's message is a\n**direct M365 action** — an imperative to send / reply / forward an email,\nschedule / cancel / decline / reschedule a meeting, post to a Teams channel, or\ncreate a calendar event — this gate does **NOT** apply. Do not classify, do not\nshow the confirm card. Hand straight back to the normal action path and let it\nexecute. These actions are out of scope even though they produce a single output,\nbecause the user is *taking an action*, not *asking for content a free 1P agent\ncould generate instead*. Only after a message clears this exclusion do you\nproceed to Phase 1.\n\n## Quick Start\n\n```\nUser: "Cowork, summarize my Teams messages from the last 5 weeks."\n\nThe user sees a crisp, 2-part reply that points them to the free option:\n\n Classification: This is a quick Teams catch-up — a single summary.\n\n Recommendation: Microsoft 365 Copilot Chat can do this at no extra cost —\n it's included in your Copilot license. Just ask it in Copilot Chat.\n\nThen an AskUserQuestion gate:\n [Use Copilot Chat — included] / [Do it here in Cowork instead]\nRun in Cowork only if the user picks Cowork.\n```\n\n## When to Use — fire on ANY of these (each is a separate trigger)\n\nCheck this **BEFORE retrieving M365 data or running the task in Cowork.** The\nquoted phrasings are cues — generalize to the intent, don't pattern-match.\n\n1. **Summarize email → Copilot Chat.** "Summarize my email / inbox / unread",\n "any emails I need to reply to".\n2. **Summarize meetings → Copilot Chat.** "Summarize my meetings", "recap the\n standup", "what did I miss in the meeting".\n3. **Summarize Teams → Copilot Chat.** "Summarize my Teams messages / chats /\n channels", over **any** window (e.g. "from the last 5 weeks", "this week").\n4. **Catch up → Copilot Chat.** "Catch me up", "what did I miss".\n5. **A single question or quick lookup → Copilot Chat.** "How do I…?", "Why am I\n seeing…?", "When is…?", "What is…?", "Who is…?", "Where…?" — including\n calendar, contact, and people lookups ("when's my next meeting?", "who's the\n PM for Contoso?", "what's on my calendar Friday?"), plus any quick fact,\n definition, policy lookup, or brainstorm. **Billing, cost, pricing, and\n licensing questions are quick lookups too** — "are we charging for X?", "how\n much does X cost?", "is X included in our license?", "do we pay for Y?" — even\n when X is Cowork, Work IQ, or a Copilot capability; route them to Chat, do not\n start retrieving internal docs first. Read-style questions route to Chat;\n *taking* an action (scheduling, cancelling, sending) stays direct — see below.\n6. **One document → Copilot in Word.** "Draft / write / rewrite / shorten /\n proofread" one doc, report, memo, brief, or letter.\n7. **One workbook → Copilot in Excel.** "Add a formula / column", "flag orders\n over $10k", "clean this CSV", "chart this" — within one file.\n8. **One deck → Copilot in PowerPoint.** "Turn these notes into slides", "build\n a few slides", "suggest a layout".\n9. **Deep research → Researcher** (included, subject to usage limits). "Research our competitors /\n this company / this market", "write a cited report".\n10. **Data analysis → Analyst** (included, subject to usage limits). "Analyze this dataset", "find\n trends / anomalies", "run the numbers".\n11. **Domain workflow → specialized 1P agent** (Sales / Service / Finance) —\n licensing varies; confirm entitlement.\n\n## When NOT to Use — not a routing decision\n\n- **Genuinely multi-step, multi-output projects** (Cowork is the right tool —\n proceed, do **not** block): "research 3 competitors, build a comparison table,\n write a briefing, and turn it into a deck"; "from this one input, produce an\n Excel analysis + a written summary + a slide deck"; anything that chains several\n sources/steps into 2+ finished deliverables.\n- **Direct M365 actions** (just do them — no free-vs-paid routing): "send / reply\n / forward an email", "schedule / cancel / decline / reschedule a meeting",\n "post to a Teams channel", "create a calendar event".\n- **Managing skills** (creating, editing, validating, or auditing a skill) — use\n the **skills** skill.\n- Pure execution the user already confirmed should run in Cowork.\n\n## Routing Logic — match the task to the right tool\n\n| If the task is… | Recommend | Why |\n|---|---|---|\n| Quick question, find, brainstorm, summarize email/meetings/Teams | **M365 Copilot Chat** — *included* | Fast, conversational, grounded in your content |\n| Draft or edit **one** document | **Copilot in Word** (Edit with Copilot) — *included* | Works inside the file, edits in place |\n| Numbers in **one** workbook / a few slides in **one** deck | **Copilot in Excel / PowerPoint** — *included* | Understands that specific file |\n| Deep, multi-source research → cited report | **Researcher** — *included, subject to usage limits* | Deep-research + your work data |\n| Analyze a dataset, find trends, run the numbers | **Analyst** — *included, subject to usage limits* | Data-scientist agent, runs Python, shows work |\n| Domain workflow (sales, service, finance) | **Specialized 1P agent** (e.g. Copilot for Sales) — *licensing varies* | Purpose-built; confirm entitlement |\n| **One input → several finished outputs**, or a **multi-step job across files + web** | **Cowork** | Chains steps & produces multiple deliverables |\n\nRule of thumb (from the field guidance): **start simple and step up only if the\ntask needs more.** Chat → Copilot-in-app → Cowork.\n\n## Core Instructions\n\n### Phase 1 — Classify the task\nIdentify the capability bucket using the routing table. Ask: how many distinct\n**finished outputs**? how many **apps/files**? does it need **web + work\nsources chained**? One output / one app / one question → a free 1P capability\nalmost always fits. Multiple outputs **or** many chained steps across sources →\nCowork is legitimately the right tool.\n\n### Phase 2 — Recommend the free 1P capability\nState the recommended capability and that it is **included in the M365 Copilot\nlicense at no extra cost** . Give a one-line "how to use it" (e.g. "open the file and use Edit with\nCopilot", or "ask Copilot Chat directly"). Keep it to 2–3 sentences. The goal is\nto **train the user to go straight to the free 1P agent next time.**\n\n### Phase 3 — Ask the user to confirm (required gate)\nUse **AskUserQuestion** with two clear options:\n- "Use **[recommended 1P agent]** — included" (recommend this)\n- "Do it here in **Cowork** instead"\n\nDo not proceed in Cowork on assumption. If the user picks the free agent, hand\noff with one-line instructions and stop. **When that agent is M365 Copilot Chat,\nend the hand-off (toward the bottom of the message) with a clickable open link:**\n`[Microsoft 365 Copilot Chat](https://m365.cloud.microsoft/chat/)` — then show the\nexact prompt right after it so the user can paste it in one step. (Microsoft does\nnot currently support pre-filling a prompt via URL, so the link opens Copilot Chat\nbut the user still pastes/types the prompt; never promise auto-fill and do not append the query to the url) If\nthe answer comes back empty (cancelled), acknowledge and ask what they'd like.\n\n### Phase 4 — Proceed only if confirmed\nRun the task in Cowork **only** after the user explicitly chooses Cowork. If they\nchose a 1P capability, do not run it in Cowork.\n\n## Output — what the end user sees (keep it crisp)\n\nTwo short parts, then the confirm gate. **No pricing, no credits, no cost\nestimates of any kind.** Use these exact bold labels:\n\n> **Classification:** <one line — what kind of task this is>.\n>\n> **Recommendation:** <free 1P agent> can do this at no extra cost — it's\n> included in your Microsoft 365 Copilot license. <One line on how/where to use\n> it.>\n\nThen the **AskUserQuestion** confirm gate. That's it — no long essays, no pricing\nexplainer. Run in Cowork only if the user chooses Cowork.\n\n## Guardrails\n\n- **Confirmation gate is mandatory** — always confirm before running the task in\n Cowork; never assume. Proceed in Cowork only on explicit user choice.\n- **No pricing or cost figures** — never show credit counts, dollar amounts,\n pay-as-you-go rates, tiers, or cost estimates. Position the 1P route simply as\n **included at no extra cost**; do not quote numbers for anything.\n- **Lead users to the free 1P agent** — recommend the included capability first;\n the intent is to minimize Cowork spend and train users to use M365 Copilot for\n these tasks. Defer to a stated user preference if they still want Cowork.\n- **Don't block legitimate Cowork work** — if the task is truly multi-output or\n multi-step, say so and let the user proceed without friction.\n- **No fabricated capabilities or entitlements** — for specialized agents (Sales,\n Service, Finance), say licensing varies and ask the user to confirm access.\n- **Handle ambiguity** — if it's unclear how many outputs or apps the task spans,\n ask one quick clarifying question, or default to the simplest capable tool and\n say so. If you can't tell which tool fits, ask rather than guess.'229230# Ordered commands lifted verbatim from the capability's own documentation.231STEPS = []232233234class WhatToUseWhenAgent(BasicAgent):235 def __init__(self):236 self.name = 'WhatToUseWhen'237 self.metadata = {238 "name": "WhatToUseWhen",239 "description": "Run this FIRST, before ANY thinking, retrieval, task creation, or file generation, for any single-output task a free M365 Copilot can do; if action-bias pushes you to start, STOP and run this first. Fires on: \"summarize my email/inbox/unread\", \"summarize my meetings\", \"summarize my Teams messages\" (any window, e.g. \"last 5 weeks\"); \"catch me up\" / \"what did I miss\"; a single question or lookup: \"how do I\", \"why\", \"when is\", \"what is\", \"who is\", \"are we\", \"do we\", \"is it\", any billing/pricing/licensing question, calendar/contact lookups; \"draft a doc\" or memo; \"create a presentation\", deck, or spreadsheet; \"research competitors\"; \"analyze this data\". GUIDE the user to the matching free 1P agent (Copilot Chat; Word/Excel/PowerPoint; Researcher; Analyst), not Cowork; use it only if they insist. Do NOT fire for DIRECT ACTIONS (send email, schedule a meeting, post to Teams, create an event), long-running or multi-output jobs, or managing skills.",240 "parameters": {241 "type": "object",242 "properties": {},243 "required": []244 }245 }246 super().__init__(name=self.name, metadata=self.metadata)247248 def perform(self, **kwargs): # toaster:generated-perform249 return json.dumps({"status": "ok", "instructions": INSTRUCTIONS,250 "inputs": kwargs,251 "note": "Prose-only capability: follow INSTRUCTIONS "252 "with the given inputs."}, indent=2)253254if __name__ == "__main__":255 # echo '{"arg": "value"}' | python3 what_to_use_when_agent.py256 # python3 what_to_use_when_agent.py '{"arg": "value"}'257 # python3 what_to_use_when_agent.py --tool # emit the JSON tool contract258 _a = sys.argv[1:]259 if _a and _a[0] == "--tool":260 print(json.dumps(WhatToUseWhenAgent().to_tool(), indent=2))261 else:262 _raw = _a[0] if _a else (sys.stdin.read().strip() or "{}")263 print(WhatToUseWhenAgent().perform(**json.loads(_raw)))264265# rci-capsule:v1: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…(truncated)