microsoft/rich-html-presentation
>- Use this skill whenever the user asks to create, build, or revise a self-contained HTML or web slide presentation, browser slideshow, keynote-style deck, arrow-key-navigable presentation, or a deck matching a previous HTML presentation. Use it before authoring the HTML so the shared design system, channel-specific delivery, and verification steps are applied. Do not use it for PowerPoint (.pptx), static documents, or data dashboards.
npx skills add https://github.com/microsoft/cat-agent-skills --skill rich-html-presentation
If the deck is grounded in the user's world (a meeting/transcript, documents, a project, a product), retrieve it with the right tools (SearchM365, ListCalendarView + meeting-transcript tools, ReadFileContent, web_search) before authoring. Use clearly-marked placeholders (e.g. [Add Q3 number]) for anything you can't find — never invent names, numbers, quotes, or dates.
Read references/template.html and references/components.md from this skill folder. The template is the source of truth for the design system. Copy its <style> block and <script> block verbatim — do not restyle or rewrite the navigation/theme engine. Only the slide content, <title>, and .brand label change.
.card grids, .callout, .chips, .steps, the animated .tf spine timeline by default (static .timeline only as a deliberate quiet fallback), .bars bar chart for any numbers/ranking/comparison, .flow-panel/.loop, .asset-num, .plat color columns). Reuse the CSS variables and cN accent classes so both themes stay correct — avoid hard-coded light-on-dark hex..plat slide, a .callout for the one line to remember, a numbered .asset-num run, and .steps for a call to action. If the content contains any quantities (sales, counts, growth, rankings), render at least one .bars chart rather than listing the numbers as text — the user should not have to ask for a chart. Vary the layout from slide to slide so no two consecutive slides look the same.class="slide title-slide active"; every other slide is class="slide". The counter total is computed automatically.First determine which delivery surface is available — the tools differ by host, so pick the matching path:
CreateArtifact / EditArtifact / CopyArtifact tool exists): create the deck with CreateArtifact (surface="output", a .html path), passing the full HTML as content; use EditArtifact for later tweaks. output/ is read-only to the Write tool — the artifact tools are the write path. For a big rebuild, build in working/ then publish with CopyArtifact./app/created/ — check the host's file conventions rather than assuming a path), then return it as a downloadable attachment on the same turn. Do not "edit in place" and report done: on these hosts an in-place edit from a previous turn is NOT retrievable by the user — every delivery must be a fresh file attached to the current response.If unsure which surface you're on, probe for the artifact tools first and fall back to plain file return. Resolve the write path once, up front — don't burn turns retrying sandbox paths.
On hosts where you re-attach the file each turn (Copilot Studio), the single most common failure is reusing the same file name and/or editing in place — the user then gets a stale file or nothing. Every time you deliver a change, emit a brand-new incrementing name: <topic>-v1.html, <topic>-v2.html, <topic>-v3.html, … Never say "updated in place"; always attach the new file and tell the user which version is current. On artifact hosts (Cowork) only, keep a stable name and edit in place with EditArtifact.
Confirm the .html file actually reached the user before claiming done:
Glob output/**/* and confirm the .html is present.If missing, re-create/re-attach — never report success unverified.
.html file (inline CSS + JS, no external dependencies), delivered on the host's output surface — output/ on artifact hosts, an attached file on Copilot Studio and similar.[placeholders] for gaps.<style>/<script> intact so every deck matches; don't hand-roll a different look.output/, or file attached to this turn) before saying it's ready.-v2, -v3, …) on every edit so the user always gets the fresh version..pptx requests to a PowerPoint/pptx workflow, and static document requests (memos/reports) to a document-writing workflow (e.g., Markdown/HTML document), rather than forcing them into this presentation template.Take microsoft/rich-html-presentation from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.