Skip to content

Add three skills: booth-loop-video, browser-uat-analyst, travel-cost-estimator - #253

Open
amacey-msft wants to merge 2 commits into
microsoft:mainfrom
amacey-msft:amacey-msft-three-skills
Open

Add three skills: booth-loop-video, browser-uat-analyst, travel-cost-estimator#253
amacey-msft wants to merge 2 commits into
microsoft:mainfrom
amacey-msft:amacey-msft-three-skills

Conversation

@amacey-msft

Copy link
Copy Markdown

Three skills, all field-tested in Scout, generalised for the gallery. Each is a submissions/<slug>/ folder with metadata.json, README.md, and an unpacked SKILL.md. No generated content committed — npm run check:submissions passes locally (81/81).

booth-loop-video

Renders a silent, looping 1920×1080 MP4 for a conference stand, kiosk, or lobby screen by generating and running a Pillow + ffmpeg script. There's currently nothing in the gallery that produces motion, and this isn't a deck export — every frame is painted, so easing, animated counters, and typed reveals are all in play.

Most of the skill is the list of things that go wrong, written down:

  • The z-order rule. Pillow paints in call order, so drawing a hub then its spokes runs the connector lines straight through the labels. Forces a two-pass draw for any node-and-edge layout. Invisible until you look at a rendered frame, which is why previews are mandatory.
  • -pix_fmt yuv420p — without it the file plays in VLC and nowhere else. Not QuickTime, not PowerPoint, not the screen at the venue.
  • Cross-platform font probing with a reported result. A hardcoded path silently falls back to a bitmap font and produces a video that looks broken.
  • Frames go to the system temp dir, never a cloud-synced folder.

browser-uat-analyst

Evidence-driven UAT for anything browser-observable — Copilot Studio agents, Power Platform apps and flows, Dataverse, D365, admin centres, custom web apps. Complements copilot-studio-test-planner, which covers planning; this one covers execution and reporting.

The differentiator is failure classification. Every failure gets tagged as a product limitation, product defect, test-harness limitation, tenant/config issue, auth issue, or model drift. Filing a tenant misconfiguration as a product bug is what gets a test report dismissed, and agents do it constantly. Related habits it enforces:

  • "Blocked" is a real result. An unobserved behaviour never gets upgraded to a pass.
  • The evidence ledger has a "what it proves" column — if you can't fill it in, the screenshot is decoration.
  • Failed approaches get their own slides rather than being cut.
  • Rich chat UI is tested as five separate capabilities (Markdown formatting, Adaptive Card JSON, hosted images, generated images, interactive actions) because they fail independently and differently in the test pane vs Teams. Model-emitted card JSON rendering as a code block is the classic catch.

travel-cost-estimator

Prices a trip from live fares in a corporate booking tool, then benchmarks the lines the booking tool doesn't cover — ground, meals, parking — against the user's own approved expense reports rather than inventing them.

The guardrail is the first thing in the skill and it's absolute: search and price only, never click into a booking funnel or anything on a traveller-details or payment page. These are live booking systems with real money and real change fees. Reading fares off a results page is safe; the results page is where it stops. If a flow lands somewhere with a confirm button it halts and reports rather than clicking its way back out. Every estimate states "Nothing booked."

It also carries the DOM patterns that make these portals workable at all:

  • Date fields are hidden inputs behind a calendar widget. Assigning .value is ignored by the framework — you have to go through HTMLInputElement.prototype's native setter and dispatch input/change/blur. The technique transfers even where the field names don't.
  • Location controls are select2 widgets whose real <select> is aria-hidden and unclickable.
  • Pick the airport option, not the metro/city option — different inventory set.
  • A search click that times out waiting for navigation usually submitted; retrying double-submits.
  • A session-token deep link expires into a misleading "Cookies are disabled" page.
  • Resolve Teams recipients by UPN, not vanity SMTP alias. First.Last@company.com works for mail and fails Teams chat creation with user_not_found, which looks like "this person doesn't exist" and isn't.

Selectors are written against Cytric/Amadeus-family portals; Concur and Egencia use different field names but the same techniques.

Notes for reviewers

  • All three were sanitised from personal working versions — no employer-internal URLs, real names, mailbox addresses, expense figures, or machine paths remain.
  • travel-cost-estimator is deliberately estimate-only. If a reviewer thinks the booking guardrail should be stated even more loudly, I'm happy to strengthen it further.
  • Happy to split this into three PRs if that's easier to review.

…skills

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings August 4, 2026 12:46
@amacey-msft

amacey-msft commented Aug 4, 2026 via email

Copy link
Copy Markdown
Author

@amacey-msft

amacey-msft commented Aug 4, 2026 via email

Copy link
Copy Markdown
Author

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds three new Scout-focused skill submissions to the gallery, each packaged as a standard submissions/<slug>/ folder with metadata.json, README.md, and an agent-facing SKILL.md.

Changes:

  • Added booth-loop-video skill for generating a silent looping MP4 via Python (Pillow) and ffmpeg, with preview-first workflow guidance.
  • Added browser-uat-analyst skill for evidence-driven browser UAT (Playwright execution, screenshot ledger, and failure classification).
  • Added travel-cost-estimator skill for estimate-only trip pricing from live booking results plus expense-report benchmarking, with explicit “never book” guardrails.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
submissions/travel-cost-estimator/SKILL.md New agent skill for estimate-only travel costing with booking-funnel guardrails and DOM automation patterns.
submissions/travel-cost-estimator/README.md Human-facing overview, requirements, and usage notes for Travel Cost Estimator.
submissions/travel-cost-estimator/metadata.json Submission metadata for Travel Cost Estimator (Scout platform, tags, author, dates).
submissions/browser-uat-analyst/SKILL.md New agent skill defining an evidence-first, classification-driven browser UAT workflow.
submissions/browser-uat-analyst/README.md Human-facing overview, requirements, and usage notes for Browser UAT Analyst.
submissions/browser-uat-analyst/metadata.json Submission metadata for Browser UAT Analyst (Scout platform, tags, author, dates).
submissions/booth-loop-video/SKILL.md New agent skill for generating a booth/kiosk looping video via a Python render script.
submissions/booth-loop-video/README.md Human-facing overview, requirements, and usage notes for Booth Loop Video.
submissions/booth-loop-video/metadata.json Submission metadata for Booth Loop Video (Scout platform, tags, author, dates).

Comment thread submissions/travel-cost-estimator/SKILL.md Outdated
themselves. You:

1. Write a single self-contained script at `work/booth_video.py`.
2. Install dependencies if missing: `pip install pillow imageio imageio-ffmpeg numpy`

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated dependencies - change is fine.

@amacey-msft

amacey-msft commented Aug 4, 2026 via email

Copy link
Copy Markdown
Author

remove hardcoded dates - good

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 4, 2026 13:24

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated no new comments.

Suppressed comments (2)

submissions/booth-loop-video/SKILL.md:21

  • Using bare pip install ... is unreliable on Scout devices (multiple Python installs, pip not on PATH, pip pointing at a different interpreter). Using python -m pip ... is more robust and matches other submissions in this repo.
2. Install dependencies if missing: `pip install pillow imageio imageio-ffmpeg numpy`

submissions/travel-cost-estimator/SKILL.md:51

  • The preferences table markdown is malformed: the header row declares 3 columns (| | |) but the separator row declares 2 (|---|---|). This will render incorrectly on GitHub and on the gallery page, making the “Step 0” checklist harder to follow.
| | |
|---|---|
| Home airport | |
| Preferred airline / alliance | |
| Preferred hotel chain | |
| Cabin class permitted by policy | |
| Trip dates and destination | |
| Rental car likely? | |

@amacey-msft

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree company="Microsoft"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants