skill
Scout-Compass
Scout Compass — navigate from idea to installed skill with a smooth build, preview, and install flow.
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/JeremyGracey-AI/Scout-Compass itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Oct 27, 2026Scout Compass
Navigate from idea to installed skill with a smooth build, preview, and install flow.
Note: The Agents League @ AI Skills Fest 2026 hackathon entry is scout-compass-mcp (governed agent memory — the run-time half of the lifecycle). This repository is the companion skill-authoring tool.
A toolkit for authoring Microsoft Scout SKILL.md files tuned to senior Microsoft executives.
It ships three ways to create skills:
- Python CLI (
cli/compass.py) — interactive or scriptable; writes directly into~/.copilot/skills/. - Web app (
web/app.py) — a persona-builder UI for non-technical users: fill a form (no YAML), preview the skills + automations, then one-click install into the Scout skills folder (or download a.zip). See Web app. - Meta-skill (
meta_skill/compass/SKILL.md) — drop this into Scout itself so Scout can author new exec skills on demand.
All three share the same eight executive workflow archetypes:
| Archetype | What the resulting skill produces |
|---|---|
briefing | One-page exec brief with KPI table, partner-org list, talking points |
comms | Audience-mode draft (team / partner-org / CVP / external / quick-reply / all-hands) with 3 subject lines and risk flags |
triage | Daily or weekly digest: top-of-mind (≤5), compliance flags, KPI exceptions, calendar table, delegations |
strategy | 2–4 page memo with recommendation, options table, sequencing, open questions |
meeting-prep | Run-of-show pack for a specific meeting: objective, time-boxed agenda, attendees + decision power, decisions to land, talking points |
decisions-log | Durable decision record: the call, options weighed, owner/approver, compliance + KPI tie, follow-ups, review date |
one-on-one | 1:1 prep card: since-last-time, follow-ups owed both ways, decisions to align, one earned growth/recognition note |
review-prep | MBR/QBR pack: KPI scorecard vs. target, narrative, wins, risks with recovery owners, asks for the room |
Seeded persona
The repo ships with one persona — Morgan Reyes, General Manager, Operations Enablement (Contoso Ltd.) — a fully fictional executive created for demos and tests. Charter, process domains, partner orgs, signature phrasing, and decision filters are all defined in personas/morgan_reyes.yaml.
Add more personas by dropping new YAML files into personas/ matching the same shape.
Quickstart
pip install pyyaml jinja2 flask
# CLI — generate the four core skills for Morgan
python cli/compass.py \
--persona personas/morgan_reyes.yaml \
--workflows briefing,comms,triage,strategy \
--out ~/.copilot/skills \
--prefix morgan
# CLI — interactive mode
python cli/compass.py
# Web UI
python web/app.py
# open http://127.0.0.1:5000
Installing the generated skills into Scout
Scout discovers custom skills automatically. Just place each skill folder in one of these directories (Microsoft docs):
| Tier | Path | When to use |
|---|---|---|
| Global user | ~/.copilot/skills/<slug>/SKILL.md | This machine, all conversations |
| Workspace (synced) | ~/.copilot/m-skills/<slug>/SKILL.md | Synced across your devices |
No restart needed — Scout picks them up at the start of the next conversation.
Installing the meta-skill
cp -r meta_skill/compass ~/.copilot/skills/
Then ask Scout: "Make a new comms skill for Morgan Reyes — they need help drafting board-up updates on the partner lifecycle KPIs." The meta-skill walks Scout through gathering the right persona inputs and renders a polished SKILL.md.
Repo layout
scout-compass/
├── cli/
│ └── compass.py # generator + validator + interactive CLI
├── web/
│ ├── app.py # Flask app
│ └── templates/index.html # single-page UI
├── meta_skill/
│ └── compass/
│ └── SKILL.md # the skill that teaches Scout to author exec skills
├── personas/
│ └── morgan_reyes.yaml # seed persona (fictional)
├── templates/
│ ├── briefing.md.j2 # Jinja2 templates — one per archetype
│ ├── comms.md.j2
│ ├── triage.md.j2
│ ├── strategy.md.j2
│ ├── meeting-prep.md.j2
│ ├── decisions-log.md.j2
│ ├── one-on-one.md.j2
│ └── review-prep.md.j2
└── README.md
Example skills aren't checked in — generate them by running the CLI against the seeded persona (personas/morgan_reyes.yaml).
SKILL.md spec used here
Per the Microsoft Scout docs:
- The skill name is the folder name (e.g.
morgan-briefing/), lowercase-hyphen. - YAML frontmatter delimited by
---. The only required field isdescription(what the skill does + when to use it). The generator also emits an explicitnamefor portability with the browser installer. - Markdown body with the skill instructions. Up to ~1 MB. Keep it lean — Scout loads the whole body when the skill activates.
- Drop the folder into
~/.copilot/skills/<slug>/(or~/.copilot/m-skills/<slug>/to sync across devices). Auto-discovered at the start of each conversation.
The generator's validator (--validate <path>) enforces these rules.
Design choices worth knowing
- Every generated skill names the exec by first name throughout. Generic "the user" wording is the #1 tell of a low-effort skill — Scout loses persona grounding the moment it slips.
- Compliance posture is required, even if "no material exposure." Microsoft execs operate under SOX and adjacent controls; ignoring compliance is the second-biggest tell.
- Partner orgs are listed by name. Enterprise ops work is cross-functional — Sales, Finance, Engineering, Legal, Risk, Operations, Marketing. Skills that say "the team" instead activate weakly.
- Self-check checklists in every skill. Each generated SKILL.md ends with a checklist the skill runs against its own output before delivering. This is the single highest-leverage quality lever.
- No fabricated KPIs or quotes. The templates explicitly forbid invented numbers and require inline citations.
Adding a new executive
- Copy
personas/morgan_reyes.yamltopersonas/<new>.yaml. - Fill in:
id,display_name,title,org,charter,scope.process_domains,scope.partner_orgs,voice_and_style,decision_filters. - Run the generator. No template changes needed.
Prefer not to touch YAML? Build the executive in the web app and click Export .yaml to
download a ready-to-commit personas/<id>.yaml — then drop it in personas/ and commit.
Web app
A browser app aimed at non-technical users — build an executive, preview, and install, without touching YAML.
pip install -e ".[web]" # or: pip install -r requirements.txt
python web/app.py # open http://127.0.0.1:5000
What it does:
- Persona builder — a plain-language form (name, title, org, charter, KPIs, partners, voice, plus optional support team / cadence / escalation). The server renders skills from the same Python templates the CLI uses, so output is identical.
- Skill picker & catalog — choose which of the eight archetypes to generate from grouped, described cards (each with example triggers and a recurring badge), with one-click presets ("Daily driver," "Leadership review," …), Select all / Clear, and a Browse archetypes catalog that explains the whole menu.
- Live preview — each skill with its validation errors/warnings, plus the derived automations.
- One-click install — uses the browser File System Access API to write
<slug>/SKILL.md(andautomations/) straight into the Scout skills folder you pick. The server never touches your local files. - Manage installed skills — browse the skills already in that folder, grouped by
executive, each showing its description and a live validation status (valid / warnings /
errors); preview a
SKILL.mdin place, or remove it. - Zip fallback — browsers without the File System Access API (Safari, Firefox) get a
.zipto unzip into~/.copilot/skills/. - Export persona — download what you built as a ready-to-commit
personas/<id>.yaml(the same schema the CLI reads), so a browser-built executive can be seeded into the repo without hand-writing YAML.
Accounts & persona library (Phase 2)
Signed-in users get a saved persona library — Supabase Postgres + email magic-link auth,
with row-level security so each library is private to its owner. Generation stays server-side
and no-store; the library is handled browser↔Supabase directly, so the Flask server holds
no user data or secrets. Enable it by setting SUPABASE_URL / SUPABASE_ANON_KEY (see
web/.env.example); leave them unset and the app runs library-free.
Hosting (Vercel) and the later Azure + Entra ID migration path are in
DEPLOY.md. Still unverified: the Scout automation import file schema —
cli/automations.py's automation_to_doc is the one place to change once confirmed.
Development
# Install (editable) with dev + web extras
pip install -e ".[dev,web]" # or: pip install -r requirements.txt
# Run the test suite
pytest
The validator distinguishes errors (block generation / fail --validate) from
warnings (surfaced, non-blocking). Beyond the frontmatter spec it enforces the
quality bar on the body: the executive is named in the first 200 words, the
description carries enough trigger phrases, the self-check has ≥ 5 items, a real Scout
capability is referenced, and there's no generic filler. Persona YAML is schema-checked
on load, so a sparse persona fails fast with a clear message instead of rendering empty
sections.
License
MIT. See LICENSE for details.