Skip to content
dsh.fish
Bundle

dsh-deck-builder

DeepSeek Harness tool plugin: convert Markdown into a self-contained HTML presentation (slides) with themes and keyboard navigation. Zero dependencies, no core changes.

Source
Blaczz
stars
2 stars
License
MIT
Updated
Updated 10 days ago

Readme

# 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:
<markdown content>
```

The agent calls `deck_build`, producing `deck-<title>.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).

Install

dsh plugin --profile web add github:Blaczz/dsh-deck-builder

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script โ€” that is permission to run the packageโ€™s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source