# dsh-deck-builder ๐Ÿ“ฝ๏ธ > A DeepSeek Harness tool plugin: convert Markdown into a self-contained HTML presentation (slides) โ€” themes, keyboard navigation, zero dependencies, zero core changes. [English](./README.md) | [็ฎ€ไฝ“ไธญๆ–‡](./README.zh.md) A **DeepSeek Harness (DSH)** pure tool plugin that registers the `deck_build` tool, letting the agent turn any Markdown (research reports, meeting notes, course outlinesโ€ฆ) into a single-file HTML deck the user opens directly in a browser โ€” `โ†`/`โ†’` to navigate, `f` for fullscreen, one slide per page when printing. All generation logic is **zero-dependency pure functions**, and the output is fully self-contained (inline CSS/JS, no external assets, no network). ## โœจ Features - **`deck_build` tool**: `markdown` โ†’ HTML slides, returns output path / slide count / bytes. - **Three themes**: `deepseek` / `light` / `dark`, CSS variables inlined. - **Smart splitting**: splits on `---` / `***` / `___` rules, falling back to H1/H2 headings when no rules exist. - **Full Markdown rendering**: headings, paragraphs, ordered/unordered lists, code blocks, blockquotes, bold/italic, inline code, links, images. - **Zero dependencies, zero core changes**: pure `ctx.tools.register`, no client bundle, no network, no external assets. - **Pure-function tested**: splitting / rendering / escaping / self-containment all covered by unit tests. ## ๐Ÿ“ฆ Install Prereqs: DSH (`dsh web` works), Node โ‰ฅ 22.19, pnpm. ```bash # From GitHub (prebuilt lib/ committed) dsh plugin --profile web add "github:Blaczz/dsh-deck-builder#main" # Local directory cd dsh-deck-builder && npm install --legacy-peer-deps && npm run build dsh plugin --profile web add ./dsh-deck-builder ``` **Restart `dsh web` after install**, then ask the agent to "turn this into slides" or have it call `deck_build` directly. ## ๐ŸŽฌ Usage In a conversation, ask the agent to build a deck: ``` Turn this research report into slides using the deepseek theme: ``` The agent calls `deck_build`, producing `deck-.html`. Open it and use `โ†`/`โ†’` or space to navigate, `f` for fullscreen, and print/export to PDF for one-slide-per-page. Or call the tool manually: ```json { "markdown": "# Title\nbody\n\n---\n\n# Slide 2\nmore", "title": "My Deck", "theme": "deepseek", "outputPath": "slides/my-deck.html" } ``` ## ๐Ÿ› ๏ธ Development ```bash npm install --legacy-peer-deps $env:DSH_NODE_MODULES = "$env:USERPROFILE\.dsh\profiles\node_modules" npm run setup:dsh-workspace npm run verify # โ˜… one-shot gate: clean + typecheck + test + build npm test # vitest (19 tests: splitting / rendering / self-containment / themes / escaping) ``` ## Layout ``` dsh-deck-builder/ โ”œโ”€โ”€ package.json # dsh.bundle.patch (pure tool plugin, no client half) โ”œโ”€โ”€ cordis.patch.yml # bundle patch layer โ”œโ”€โ”€ scripts/ # build (tsc only) / clean / setup-dsh-workspace / verify โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ deck.ts # โ˜… pure generation: splitSlides / renderBlocks / renderDeck โ”‚ โ”œโ”€โ”€ theme.ts # theme tokens (light/dark/deepseek) โ”‚ โ””โ”€โ”€ index.ts # host half: registers the deck_build tool โ””โ”€โ”€ tests/ # deck generation + manifest contract ``` ## ๐Ÿงฉ Ecosystem positioning - **Fills a gap**: the DSH Slides/PPT category previously had only `dsh-openmaic` (teaching) and `dsh-k12-lesson-builder`; a general "Markdown โ†’ presentation" tool was missing, even though `mdPresenter` proved the demand. - **Technical route**: pure tool plugin (`ctx.tools.register` + `defineTool`), reusing the self-contained-HTML artifact shape of `hccccc01333/dsh-report-html`. - **Zero core changes**: single-file output + zero-dependency pure functions + `ctx.effect` registration. ## โš–๏ธ License MIT ยฉ 2026 Blaczz. An independent community plugin, not affiliated with [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness).