DeepSeek Harness Plugin

STARDUSTLC666/dsh-ppt

Stars ★ 8 Downloads (30d) 7,785 Category Docs & Rendering Added 2026-08-17 npm dsh-ppt

Presentation skill and tools: one sentence or one document to an HTML slideshow plus editable PPTX, seven layouts (incl. quote and native PPTX tables), speaker notes (HTML S-key panel and native notes slides), five built-in themes, default theme/language config and bilingual support.

Install

# from npm (prebuilt)

dsh plugin --profile web add dsh-ppt

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:STARDUSTLC666/dsh-ppt

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

0.5.0 update (2026-09-27)

Includes presenter previews, thumbnails and timer controls. Unsupported or rejected fullscreen requests now show an actionable message instead of silently failing.

Validation host: Harness 0.2.0-rc.1 built from official sources (commit 407e65c8) with Node 24.16.0 on 2026-09-28. All 70 plugin tests pass in an isolated environment; all 18 plugins mount together in one host registering 1 skills and 2 tools, with tool schemas and health-check contracts passing. No live ports or external services were exercised in this round.

One sentence or one document → a complete presentation: HTML web slideshow + PPTX export, 5 visual themes, slide transitions + bullet entrance animations, bilingual Chinese/English.

DeepSeek Harness (DSH) presentation skill + tool plugin: turns a sentence, a paragraph, or a Markdown document into a ready-to-present HTML slideshow and an editable PPTX. Pure Node, zero runtime dependencies, one codebase for Windows / macOS / Linux.

Capabilities

Capability Description
ppt_create tool Markdown / structured slides → *.html + *.pptx + *.json
ppt_themes tool Lists the 5 built-in themes and their best use cases; pass preview: true with outputDir to write a side-by-side gallery plus one SVG palette card per theme
7 layouts cover / section / bullets / statement / quote / table / closing
Speaker notes <!-- note: ... --> comments or the notes field: press S in the HTML player; native PPTX notes slides (presenter view)
Motion On by default: HTML slide-in transitions + staggered bullet entrances; native PPTX fade transitions + click-to-reveal bullets. motion: 'off' / --motion off for a fully static deck
Markdown extras Tables (| ... |), blockquotes (>), and note comments are auto-detected into matching layouts
dsh-ppt skill A complete six-step SOP registered into DSH
Standalone SKILL.md Copy skills/dsh-ppt/ into Claude Code / Cursor / Gemini CLI / Codex for cross-harness use
Visual engine Reuses the hyperframes visual style library; HTML and PPTX share the same theme source

Example:

Turn this sentence into a deck: "AI support cuts first response time to 8 seconds", with a dark tech theme.

Turn docs/quarterly-review.md into a bilingual presentation and export PPTX.

Compatibility

Installation

dsh plugin --profile web add dsh-ppt

After restart, the ppt_create / ppt_themes tools and the dsh-ppt skill are available. The plugin ships with an empty config and won't crash startup.

Uninstall

dsh plugin --profile web remove dsh-ppt

Then restart the web service. To clean up fully, also remove the plugin entry from your profile cordis.patch.yml if you overrode it.

Quick start

Inside DSH (recommended)

1. ppt_themes { preview: true, outputDir: "dist" }   # themes + gallery
2. ppt_create {
     title: "Fewer Meetings",
     content: "# Problem\n- Too many meetings\n\n# Solution\n- Async decisions",
     theme: "data",
     lang: "en"
   }
3. Open the returned HTML path in a browser; edit the PPTX in PowerPoint / WPS / Keynote

Any harness (standalone SKILL.md)

Copy skills/dsh-ppt/ to any Agent Skills directory, then:

node <skill-dir>/scripts/build-deck.mjs \
  --title "Product Launch" \
  --content deck.md \
  --theme data \
  --lang en \
  --out dist/deck

Artifacts:

Existing artifacts are not overwritten by default: if any member of the trio already exists, the whole set receives a shared -1, -2, ... suffix. Replacement requires explicit overwrite: true (or --overwrite in the CLI).

File Purpose
*.html Standalone slideshow: arrow keys, V presenter view (separate window with real current/next previews, thumbnail strip, notes, timer, progress, pause, font size, blank screen), S notes, G thumbnail overview, F fullscreen, P print, ? shortcuts, Esc close
*.pptx Editable 16:9 presentation (hand-written OOXML, zip via node:zlib, no third-party deps)
*.json Structured manifest (version, theme, language, slides)

Built-in themes

ID Name Mood Best for
data Data Drift (default) Futuristic / immersive AI, tech launches, research
swiss Swiss Pulse Precise / rational Data, SaaS, developer tools
velvet Velvet Standard Premium / restrained Executive decks, brand, investor pitches
soft Soft Signal Warm / human Brand stories, training, personal talks
bold Maximalist Type Loud / kinetic Product launches, events, big moments

Themes are derived from dsh-hyperframes visual-styles.md. Full palettes: skills/dsh-ppt/references/themes.md. Run ppt_themes { preview: true, outputDir: "dist" } for a side-by-side gallery and SVG palette cards.

Markdown input rules

  • The first # heading becomes the cover title; its first paragraph becomes the cover subtitle.
  • Each ## section becomes one slide: lists produce bullets slides; empty sections produce section dividers.
  • Plain text without headings: the first paragraph is the cover, then every 5 sentences become one slide.
  • A single sentence automatically produces a complete 3-slide structure: cover → core idea → closing.
  • Long tables paginate automatically with repeated headers and up to 8 data rows per page. Notes stay on the first page. Tables support 8 columns and 60 characters per cell; oversized input returns an actionable error. Short rows are padded consistently in all artifacts.
  • maxSlides counts pages after expansion. Exceeding it fails before writing files; raise the limit (up to 120) or split the deck. Middle slides are never silently discarded.
  • For precise control, use structured slides (cover | section | bullets | statement | quote | table | closing), with rows for tables and notes for speaker notes.

Configuration

No required configuration. Optional:

- id: dsh-ppt
  config:
    outputDir: E:\decks   # optional; defaults to the session working directory
    maxSlides: 40         # optional; default 60 (3–120)
    defaultTheme: data    # optional; used when ppt_create has no theme
    defaultLang: en       # optional; used when ppt_create has no lang (zh/en/bilingual)

The DSH_PPT_OUTPUT_DIR env var can also set the default output directory; the ppt_create outputDir/theme/lang arguments have the highest priority.

Output paths resolve against each tool call's exec.agent.session.header.cwd: omitted paths use the session directory, relative paths (including plugin configuration) resolve within it, and absolute paths keep their meaning. Direct calls without a session fall back to the process working directory; concurrent sessions never change process cwd. Tools check exec.signal before and after loading the engine, so cancelled calls do not proceed to generation. Rendering and writing are synchronous and finish the artifact trio once started.

Bilingual support

  • lang argument: zh (default) / en / bilingual controls the player UI, page numbers, and closing defaults.
  • Content language is up to the author: for a bilingual deck, prefer "Chinese title + English subtitle" or generate two decks from the same outline.
  • Plugin docs come in Chinese (README.md) and English (this file); CLI and skill error messages are in Chinese.

Engineering quality

  • Pure Node, zero runtime dependencies: HTML template, OOXML, and zip are hand-written using only node:fs / node:path / node:zlib.
  • The skill and tools share one engine (skills/dsh-ppt/scripts/deck-core.mjs), so DSH and bare-skill output are identical.
  • Unit tests cover registration contracts, JSON Schema, theme resolution, Markdown parsing, artifact generation, PPTX part integrity, and the CLI.
  • No eval / child_process / secrets; artifacts are only written to the user-specified local directory.

Development

pnpm install
pnpm run build      # tsc → lib/
pnpm test           # build + node --test (registration/config/engine/CLI)
pnpm run smoke:cli  # bare CLI smoke test, generates .smoke-deck

Known limitations

  • The PPTX uses a blank layout plus text boxes: text is editable in PowerPoint / WPS, but no smart master placeholders yet.
  • A one-sentence input produces a minimal 3-slide structure; for richer decks, expand the content into a Markdown outline first.
  • bilingual only localizes the player UI; it does not translate content.
  • Charts and images are not supported yet; speaker notes and HTML/PPTX motion are already supported.

License

MIT. Community plugin, not affiliated with DeepSeek; @deepseek-ai/* is an officially reserved namespace.

Related projects

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.