Plugin directory / UI & Skins / dsh-slides
dsh-slides
Verified · install-tested on dsh literaf
What it does
Slides for DeepSeek Harness: the agent writes a talk to one self-contained HTML file — presents fullscreen offline, speaker notes stay off the screen, prints to PDF. Five finished themes.
Works — verified, early-stage project
Slides for DeepSeek Harness: the agent writes a talk to one self-contained HTML file — presents fullscreen offline, speaker notes stay off the screen, prints to PDF. Five finished themes. It installs cleanly and boots without issues in our testing. It's early-stage but functional.
“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
dsh-slides
Slides for DeepSeek Harness
English | 中文
Give the agent a make_slides tool and it writes a talk to one self-contained HTML file — opens in any browser, presents fullscreen, keeps your speaker notes off the screen, and prints to PDF with Ctrl+P. Ask for formats: ["html", "pptx"] and it writes an editable PowerPoint file alongside it, speaker notes included.
The file loads nothing at presentation time. No CDN, no webfont, no image host. A deck that needs the network is a deck that can fail in the room you are presenting in.

Install
dsh plugin --profile web add dsh-slides
dsh web
Then just ask: "turn these results into a 10-minute talk".
What the agent gets
One tool, make_slides, taking a deck as structured data rather than markdown the user has to convert:
| Layout | Holds |
|---|---|
title |
Deck title, subtitle, presenter. Generated for you from the deck fields — do not write one |
section |
A divider between parts of the talk |
bullets |
A claim as the heading, points beneath it, optionally a figure alongside |
image |
A figure with a caption, filling the slide |
quote |
A pulled quote with an attribution |
Omit layout and it is inferred from the fields you filled in.
Every slide takes notes — the speaker notes. They never appear on the slide; the presenter reveals them with S during the talk. This is the point of the tool: the claim goes on the slide, the talking goes in the notes, and the agent is told so in its guidance.
Bullets support **bold**, *italic* and `code`. Everything is escaped before formatting is applied, so content can never inject markup into the deck.
Formats
formats defaults to ["html"]. Add "pptx" when the deck has to be edited by a co-author or uploaded to a conference system:
| HTML | PPTX | |
|---|---|---|
| Presents offline | Yes, nothing is fetched | Yes |
| Speaker notes | S during the talk |
In PowerPoint's notes pane |
| Prints to PDF | Ctrl+P, one slide per page | Through PowerPoint |
| Editable by a co-author | Not really | Yes |
| Images | Embed as data: URIs to stay self-contained |
data: URIs are embedded; URLs stay links |
Both come from the same deck and the same inline-markup parse, so they cannot drift apart.
Presenting
| Key | |
|---|---|
→ ← Space |
Next / previous slide |
S |
Show and hide speaker notes |
F |
Fullscreen |
Home End |
First / last slide |
Ctrl+P |
Print — one slide per page, chrome hidden, straight to PDF |
Clicking works too: the left third goes back, the rest goes forward. The URL carries the slide number, so a link can point at a specific slide.
Themes
Five finished looks rather than a knob per property. Pick one; do not assemble one.
| Theme | |
|---|---|
plain |
White ground, sans-serif, thin accent rules. The default; disappears behind the content |
ink |
Warm paper ground with a serif face. Reads like a printed paper; suits a seminar or a defense |
midnight |
Deep blue ground, light type. Holds up in a bright room where a white deck washes out |
slate |
Neutral greys, no colour accent. For decks whose figures carry all the colour |
sunrise |
Off-white ground with a warm accent. A lighter register for a talk meant to persuade |

Font stacks name system faces only, for the same reason the deck loads nothing else.
Configuration
The bundle inserts one row (id: slides). Override it from your profile's cordis.patch.yml (a patch replaces the whole config, so restate every key you keep):
- id: slides
config:
outputDir: slides/ # where decks are written, relative to the workspace
defaultTheme: plain # plain | ink | midnight | slate | sunrise
promptGuidance: true # register the deck-writing guidance
promptOrder: 150
Notes
- Decks are written through
ctx.fs, so a sandboxing filesystem backend fences the write like any other tool. The tool is therefore registered only where a filesystem provider is composed — with none, neither the tool nor its guidance appears, instead of offering a call that always fails. ctx.fsexposes text writes only, and a sandboxing backend fences exactly those. So the pptx write asks for the path through the sanctionedwriteTextfirst: the backend applies its real policy and refuses withFS_SANDBOX_DENIEDbefore any bytes exist, and only a path it allowed is then filled in. Resolving a path and writing to it directly would go around the fence, becauseresolveis not one of the fenced operations.- Images are yours to supply. A
data:URI keeps the deck self-contained; anhttpsURL works but makes the deck depend on that host at presentation time. - This package renders decks and knows nothing about where the content came from. Packages that do —
dsh-paper-slidesfor academic talks — compose beside it and drivemake_slides.
Known limitations
- No incremental reveal. A slide appears whole. Builds and transitions are the kind of thing that reads as generated when an agent picks them.
- The pptx is a clean deck, not a designed one. It carries your content, theme colours, fonts, bullets and notes into PowerPoint; it does not reproduce the HTML deck pixel for pixel, and it uses no master slides or animations.
License
MIT
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install dsh-slides for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:literaf/dsh-slides Headless (CLI) profile:
dsh plugin --profile headless add github:literaf/dsh-slides Test report
Verified: L1 install + L2 load + L3 runtime from GitHub source on dsh 0.1.0-rc.6.