slidemind 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -7
- package/CLAUDE.md +18 -14
- package/README.md +20 -10
- package/bin/slidemind.mjs +820 -35
- package/package.json +2 -5
- package/skills/create-slides/SKILL.md +81 -57
- package/skills/search/SKILL.md +27 -27
- package/src/bridge/build-and-push.mjs +166 -55
- package/src/bridge/bundle.mjs +49 -7
- package/src/bridge/capture.mjs +2 -2
- package/src/bridge/client.mjs +374 -44
- package/src/bridge/engine-download.mjs +89 -0
- package/src/{mcp → bridge}/recolor.mjs +10 -9
- package/src/builders/build.mjs +209 -13
- package/src/builders/lint.mjs +2 -2
- package/src/builders/review-overlay.js +22 -7
- package/src/builders/review.mjs +8 -15
- package/src/installers/claude.mjs +10 -17
- package/src/installers/codex.mjs +14 -77
- package/src/installers/opencode.mjs +10 -18
- package/src/lib/reused-slides.mjs +2 -4
- package/src/mcp/server.mjs +0 -958
package/CLAUDE.md
CHANGED
|
@@ -9,7 +9,7 @@ This repository (`STATWORX/intern-slidemind-cli`) publishes **slidemind** — th
|
|
|
9
9
|
The package contains two layers:
|
|
10
10
|
|
|
11
11
|
1. **An installable skill** (canonical markdown + assets) that ships into a coding-agent harness so the agent knows how to plan, compose, and review slides on-brand — reading every brand rule from the add-in's design bundle.
|
|
12
|
-
2. **A Node CLI
|
|
12
|
+
2. **A Node CLI** (`slidemind`) that exposes the add-in bridge (render `.pptx`, push slides into an open window, search the brand engine) to the user and the agent directly. The agent drives it by running `slidemind <command>` in its shell — there is no separate tool layer.
|
|
13
13
|
|
|
14
14
|
Both drive the same add-in bridge, so an agent and a human end up producing the same artefact: native PowerPoint slides on the active corporate design.
|
|
15
15
|
|
|
@@ -64,25 +64,26 @@ slidemind/
|
|
|
64
64
|
├── .claude-plugin/
|
|
65
65
|
│ └── plugin.json Claude Code plugin manifest
|
|
66
66
|
├── bin/
|
|
67
|
-
│ └── slidemind.mjs CLI dispatcher (presentations, read, download-bundle, init, build, build-pptx, view-draft, push, ls engines, search, insert-slide, add-slide, install, pair/whoami/use/logout)
|
|
67
|
+
│ └── slidemind.mjs CLI dispatcher (ready, doctor, presentations, read, download-bundle, new, init, build, build-pptx, view-draft, push, ls engines, search, insert-slide, add-slide, install, pair/whoami/use/logout)
|
|
68
68
|
├── skills/ canonical, installable skill payload — thin CLI workflow glue only
|
|
69
69
|
│ ├── create-slides/
|
|
70
|
-
│ │ └── SKILL.md authoring skill: host gate + intake/plan + create flow +
|
|
71
|
-
│ │
|
|
72
|
-
│ │
|
|
70
|
+
│ │ └── SKILL.md authoring skill: stage-todo bootstrap + host gate + intake/plan + create flow +
|
|
71
|
+
│ │ the vocabulary→CLI command map (the harness-neutral verbs of the bundle's
|
|
72
|
+
│ │ workflow/flow.md). Brand AND the authoring workflow craft (flow/create/edit/
|
|
73
|
+
│ │ composition/layouts/authoring/build-export) are READ from the materialized
|
|
74
|
+
│ │ bundle — owned by the add-in.
|
|
73
75
|
│ └── search/
|
|
74
76
|
│ └── SKILL.md engine-search + slide-reuse skill (installs as slidemind-search): host gate +
|
|
75
|
-
│ discover → search → pick → reuse loop + CLI
|
|
76
|
-
│ from the bundle's workflow/search.md — owned by the add-in.
|
|
77
|
+
│ discover → search → pick → reuse loop + vocabulary→CLI command map. The craft is
|
|
78
|
+
│ READ from the bundle's workflow/search.md — owned by the add-in.
|
|
77
79
|
├── src/ implementation of the slidemind CLI
|
|
78
|
-
│ ├── bridge/ add-in local-bridge: client.mjs, bundle.mjs (materialize), build-and-push.mjs (server render; native-slide splicing)
|
|
80
|
+
│ ├── bridge/ add-in local-bridge: client.mjs, bundle.mjs (materialize), build-and-push.mjs (server render; native-slide splicing), engine-download.mjs + recolor.mjs (image/icon fetch + recolour)
|
|
79
81
|
│ ├── builders/ build.mjs (HTML preview), review.mjs (spatial preview-review gate + local server), resolve-skill.mjs (→ bundle), lint.mjs (runs the add-in's engine)
|
|
80
|
-
│ ├── mcp/ MCP server: list/read/push + list_engines/search_engine/view_slide/insert_slide/add_slide_to_deck/download_result
|
|
81
82
|
│ └── installers/ per-harness installers: claude.mjs, codex.mjs, opencode.mjs, lib.mjs
|
|
82
83
|
├── archive/ retired code/assets (local exporter, icon library, brand design files) — NOT shipped
|
|
83
84
|
├── decks/ the user's working decks; sources are slides/*.jsx, design via .bundle-ref.json
|
|
84
85
|
├── docs/slidemind-cli-connect/ the connect architecture (bridge contract, bundle, engine, phasing)
|
|
85
|
-
└── test/ node:test suites (bridge client/bundle/build-and-push/resolve-skill/lint-wrapper/packaging/engine-search/native-slides/cli-dispatch/
|
|
86
|
+
└── test/ node:test suites (bridge client/bundle/build-and-push/resolve-skill/lint-wrapper/packaging/engine-search/native-slides/cli-dispatch/cli-download-result)
|
|
86
87
|
```
|
|
87
88
|
|
|
88
89
|
The skills at the **root** of `skills/` are deliberate: that's the layout Claude Code, Codex (0.128+), and opencode all expect for skill auto-discovery — `<harness-root>/skills/<name>/SKILL.md`. There are **two** skills, each auto-discovered by `listSkills()` (no installer change to add one): `create-slides` (installs as `slidemind-create-slides`) owns the user-facing plan / create / edit / render workflow, and `search` (installs as `slidemind-search`) owns engine discovery + slide reuse (search → insert live / fold into a deck). Both are **brand-agnostic** — every brand rule lives in the per-CD bundle's `design.md` / `workflow/*.md`, which the skills point the agent at. (Pre-skills opencode versions used an `agent/` shim under `~/.config/opencode/`; the installer removes any leftover from those installs on every run.)
|
|
@@ -92,10 +93,12 @@ We **do not** ship separate slash commands. Earlier versions had a top-level `co
|
|
|
92
93
|
## CLI surface
|
|
93
94
|
|
|
94
95
|
```bash
|
|
96
|
+
slidemind ready [deck] # one-shot session start: connection ladder + design resolution + bundle download + deck bind; --to/--force/--connect-only/--json (HOST REQUIRED)
|
|
97
|
+
slidemind doctor # read-only connection diagnostics (ordered next-action ladder; does NOT materialize or bind — `ready` is the preflight)
|
|
95
98
|
slidemind presentations # list PowerPoint windows registered with the add-in
|
|
96
99
|
slidemind read [presId] # pull the current content of an open presentation (--mode summary|raw) (HOST REQUIRED)
|
|
97
100
|
slidemind download-bundle [deck] # materialize the active corporate design's bundle locally
|
|
98
|
-
slidemind new <name> # scaffold ./decks/<name>/
|
|
101
|
+
slidemind new <name> # scaffold ./decks/<name>/ (auto-binds to the open design when unambiguous + bundle already materialized; --to/--no-bind)
|
|
99
102
|
slidemind build <deck> # build self-contained HTML preview
|
|
100
103
|
slidemind review <deck> # spatial preview-review gate; blocks for approve/comments (host-free)
|
|
101
104
|
slidemind build-pptx <deck> # render native .pptx via the add-in (HOST REQUIRED)
|
|
@@ -110,7 +113,7 @@ slidemind whoami # list every paired environment (* = default)
|
|
|
110
113
|
slidemind use <url|env> # set the default environment
|
|
111
114
|
slidemind logout [url|env] # unpair one environment (--all unpairs every one)
|
|
112
115
|
slidemind init --for <target> # install skill into claude | codex | opencode | all (also clears the bundle cache)
|
|
113
|
-
slidemind uninstall --for <target> # remove skill
|
|
116
|
+
slidemind uninstall --for <target> # remove the skill (also clears the bundle cache)
|
|
114
117
|
```
|
|
115
118
|
|
|
116
119
|
`<deck>` resolves as: absolute path → `./<arg>` if it exists → `./decks/<arg>`. The decks directory is `./decks/` by default; override with `SLIDEMIND_DECKS=/abs/path`.
|
|
@@ -136,12 +139,13 @@ Both skills are **brand-agnostic workflow guidance** and must not duplicate any
|
|
|
136
139
|
- No hardcoded colors, sizes, or fonts in slide files. Everything goes through the tokens in the bundle's `corporate-design.css`.
|
|
137
140
|
- **Never add a layout.** The layout palette is the closed set in `<bundle>/layouts/` — read-only. Need markup a layout doesn't expose? Build it as Mode B children of the blank-content layout the bundle's `design.md` names — never a new layout file.
|
|
138
141
|
- Re-run `slidemind push <deck>` (or `build-pptx`) after any `.jsx` change — the .pptx is rendered server-side, not edited by hand; the HTML preview is generated.
|
|
139
|
-
- For generic concept icons/images, use the brand engine: `
|
|
142
|
+
- For generic concept icons/images, use the brand engine: `slidemind search` → pick a result → `slidemind download-result` (writes into the deck's `assets/`). Don't invent SVGs. The full authoring workflow is read from the materialized bundle's `workflow/*.md` (owned by the add-in).
|
|
140
143
|
|
|
141
144
|
## Build commands (terse reference)
|
|
142
145
|
|
|
143
146
|
```bash
|
|
144
|
-
slidemind
|
|
147
|
+
slidemind ready <deck> # do this first: connection ladder + resolve the open design + materialize its bundle + bind the deck (host required)
|
|
148
|
+
slidemind download-bundle <deck> # lower-level: materialize-only (no connection ladder, no bind) — `ready` now covers this
|
|
145
149
|
slidemind build <deck> # HTML preview (reads the materialized bundle)
|
|
146
150
|
slidemind build <deck> --open # HTML + open in browser
|
|
147
151
|
slidemind review <deck> # spatial preview-review gate; blocks until approve/comments (host-free)
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ Connect **Claude Code, Codex, and opencode** to the **slidemind PowerPoint add-i
|
|
|
10
10
|
|
|
11
11
|
slidemind is a **thin client**. The corporate design, the layout palette, and the native `.pptx` render all live in the **slidemind PowerPoint add-in** — this package is the bridge that lets a coding agent drive it. It ships two things:
|
|
12
12
|
|
|
13
|
-
1. **A CLI
|
|
13
|
+
1. **A CLI** that talks to a running PowerPoint over the add-in's cloud bridge — render native `.pptx`, push slides straight into an open window, and search the active design's brand engine for imagery. The agent drives it by running `slidemind <command>` in its shell.
|
|
14
14
|
2. **An installable skill** for Claude Code, Codex, and opencode — so the agent in your editor knows how to plan, compose, and review slides on-brand from the design bundle the add-in serves.
|
|
15
15
|
|
|
16
16
|
Both drive the same add-in bridge, so an agent and a human end up producing the same artefact: native PowerPoint slides on the active corporate design.
|
|
@@ -49,7 +49,7 @@ Both drive the same add-in bridge, so an agent and a human end up producing the
|
|
|
49
49
|
|
|
50
50
|
The CLI reaches PowerPoint through the add-in's **cloud relay** (no localhost, no certificates). Because of that, the machine running the CLI **does not have to be the same machine running PowerPoint** — pair once and commands route to wherever your add-in is registered.
|
|
51
51
|
|
|
52
|
-
Commands that read the design, render, push, or reach an engine (`download-bundle`, `build-pptx`, `push`, `ls engines`, `search`, `insert-slide`, `add-slide`) **require an open PowerPoint host with the add-in and an active corporate design.**
|
|
52
|
+
Commands that read the design, render, push, or reach an engine (`ready`, `download-bundle`, `build-pptx`, `push`, `ls engines`, `search`, `insert-slide`, `add-slide`) **require an open PowerPoint host with the add-in and an active corporate design.** `build`, `review`, and `view-draft` work fully offline against a previously materialized bundle. `new` scaffolds offline too; when you're paired and a design is open it also best-effort binds the new deck (otherwise it just scaffolds and hints to run `slidemind ready <slug>`).
|
|
53
53
|
|
|
54
54
|
---
|
|
55
55
|
|
|
@@ -59,7 +59,7 @@ The package is published to **public npm** as [`slidemind`](https://www.npmjs.co
|
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
61
|
npm install -g slidemind
|
|
62
|
-
slidemind init --for all #
|
|
62
|
+
slidemind init --for all # deploy the skill into Claude Code / Codex / opencode
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
Then confirm it's on your `PATH`:
|
|
@@ -155,7 +155,8 @@ slidemind logout # unpair this machine
|
|
|
155
155
|
## Quick start
|
|
156
156
|
|
|
157
157
|
```bash
|
|
158
|
-
slidemind
|
|
158
|
+
slidemind ready # one-shot session start: check the connection, resolve the open design, fetch its bundle (host required)
|
|
159
|
+
slidemind new my-deck # scaffold ./decks/my-deck/ (auto-binds to the open design when one is available)
|
|
159
160
|
slidemind build my-deck # build a self-contained HTML preview (offline)
|
|
160
161
|
slidemind review my-deck # spatial preview review: leave comments / approve in the browser (offline)
|
|
161
162
|
slidemind build-pptx my-deck # render a native .pptx via the add-in (host required)
|
|
@@ -167,6 +168,8 @@ slidemind insert-slide ... # reuse a found slide live into an open PowerP
|
|
|
167
168
|
slidemind add-slide ... # fold a found slide into a deck as a native .pptx (host required)
|
|
168
169
|
```
|
|
169
170
|
|
|
171
|
+
`slidemind ready` is the one command to run at the start of a session — it verifies the connection, resolves whichever corporate design the add-in has open, and downloads its bundle in a single call, printing exactly one next step if anything's missing. Continuing an existing deck? `slidemind ready <deck>` also binds the deck to that design.
|
|
172
|
+
|
|
170
173
|
Decks live under `./decks/` in your current working directory — one folder per deck: `decks/<name>/slides/*.jsx`. Override the location with `SLIDEMIND_DECKS=/abs/path`.
|
|
171
174
|
|
|
172
175
|
You don't hand-write OOXML or hardcode brand colors — slides are small `.jsx` files that compose the layouts and tokens the add-in serves. The render happens server-side in PowerPoint; `slidemind build` gives you a quick HTML preview while you iterate.
|
|
@@ -183,14 +186,17 @@ Your agent (Claude Code, Codex, or opencode) auto-discovers the `slidemind-creat
|
|
|
183
186
|
|
|
184
187
|
A second skill, `slidemind-search`, owns engine discovery and **slide reuse**: ask "is there a slide on X in our library?" or "drop in our pricing slide" and the agent searches the brand's image/slide engines, then either inserts a found slide live into PowerPoint or folds it into a deck as a native `.pptx`.
|
|
185
188
|
|
|
186
|
-
|
|
189
|
+
Under the hood the skill just runs the `slidemind` CLI in the agent's shell — list open presentations, push decks, list engines, search for imagery or slides, view a result, insert a slide live, fold a slide into a deck, and download brand imagery are all plain subcommands (see the command reference below).
|
|
187
190
|
|
|
188
191
|
---
|
|
189
192
|
|
|
190
193
|
## Command reference
|
|
191
194
|
|
|
192
195
|
```text
|
|
193
|
-
slidemind
|
|
196
|
+
slidemind ready [deck] One-shot session start: connect + resolve the open design + fetch bundle + bind deck (host required)
|
|
197
|
+
--to <presId> --force --connect-only --json
|
|
198
|
+
slidemind new <name> Scaffold ./decks/<name>/ (auto-binds to the open design when available)
|
|
199
|
+
--to <presId> --no-bind
|
|
194
200
|
slidemind build <deck> Build a self-contained HTML preview (offline)
|
|
195
201
|
slidemind review <deck> Spatial preview review; blocks for approve/comments (offline)
|
|
196
202
|
slidemind build-pptx <deck> Render a native .pptx via the add-in (host required)
|
|
@@ -200,11 +206,15 @@ slidemind push <deck> Build + push slides into an open PowerPoint (h
|
|
|
200
206
|
slidemind ls engines List the live engine catalog (image + slide) (host required)
|
|
201
207
|
slidemind search "<query>" Search an engine for imagery or slides (host required)
|
|
202
208
|
--engine <id> --intent auto|content|visual --top <N>
|
|
209
|
+
slidemind view-slide [opts] Fetch a slide result's preview image to a file (host required)
|
|
210
|
+
--search <id> --pick <n> --to <presId> [--out <dir>]
|
|
203
211
|
slidemind insert-slide [opts] Insert reused slide results live into a window (host required)
|
|
204
212
|
--search <id> --pick <n[,n,...]> --to <presId> [--at <N>]
|
|
205
213
|
slidemind add-slide [opts] Fold reused slide results into a deck as native .pptx (host required)
|
|
206
214
|
--search <id> --pick <n[,n,...]> --deck <deck> [--to <presId>] [--at <N>]
|
|
207
|
-
slidemind download-
|
|
215
|
+
slidemind download-result [opts] Download image/icon result(s) into a deck's assets/ (host required)
|
|
216
|
+
--search <id> --pick <n[,n,...]> --deck <deck> --to <presId> [--icon-color <hex[,hex,...]>]
|
|
217
|
+
slidemind download-bundle [deck] Materialize the active corporate design locally (host required; lower-level — `ready` covers this)
|
|
208
218
|
slidemind presentations List PowerPoint windows registered with the add-in
|
|
209
219
|
slidemind read [presId] Pull the current content of an open presentation (host required)
|
|
210
220
|
--mode summary|raw (default raw) [--to <presId>] [--json]
|
|
@@ -212,7 +222,7 @@ slidemind pair <code> Pair with an add-in (copy the code from "Connec
|
|
|
212
222
|
slidemind whoami Show paired environment(s)
|
|
213
223
|
slidemind use <url|env> Set the default environment
|
|
214
224
|
slidemind logout [url|env] Unpair an environment (--all unpairs every one)
|
|
215
|
-
slidemind init --for <target> Install the skill
|
|
225
|
+
slidemind init --for <target> Install the skill into a harness (clears the bundle cache)
|
|
216
226
|
slidemind uninstall --for <t> Remove a previously-installed skill (clears the bundle cache)
|
|
217
227
|
slidemind update [--for <t>] Fetch the latest release and redeploy
|
|
218
228
|
slidemind --help Full usage
|
|
@@ -293,7 +303,7 @@ Equivalently: `npm install -g slidemind@latest && slidemind init --for all`.
|
|
|
293
303
|
|---|---|
|
|
294
304
|
| `slidemind: command not found` (or not recognized) | The npm global bin isn't on your `PATH`. Run `npm prefix -g` and add its `bin` (Windows: `%APPDATA%\npm`) to `PATH`, or use `npx slidemind`. |
|
|
295
305
|
| PowerShell: *running scripts is disabled* | npm's `.ps1` shim hit the execution policy. Use `slidemind.cmd <command>`, or `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned`. |
|
|
296
|
-
|
|
|
306
|
+
| A command can't reach PowerPoint (empty `presentations`, "no host", nothing seems connected) | Run **`slidemind ready`** — it checks pairing, the connection, the CLI version, and open windows in one shot and prints the single next step to take (open PowerPoint / click the pane / pair / update). |
|
|
297
307
|
| `slidemind presentations` is empty right after pairing (PowerPoint + add-in already open) | The just-paired task pane never registered. **Restart the add-in** — close the slidemind task pane and reopen it from the ribbon (or reopen the presentation). The pairing wizard doesn't prompt for this. |
|
|
298
308
|
| `Not paired` | In the add-in, open **Settings → General → Connect CLI**, press **Pair**, and run the shown `slidemind pair <code>`. Codes are one-time and expire — generate a fresh one if it's stale. |
|
|
299
309
|
| `build-pptx` / `push` / `search` error about no host | These require an open PowerPoint host with an active corporate design. `slidemind build` (HTML) is the only fully-offline preview. |
|
|
@@ -304,7 +314,7 @@ Equivalently: `npm install -g slidemind@latest && slidemind init --for all`.
|
|
|
304
314
|
## Uninstall
|
|
305
315
|
|
|
306
316
|
```bash
|
|
307
|
-
slidemind uninstall --for all # remove the skill
|
|
317
|
+
slidemind uninstall --for all # remove the skill from each harness
|
|
308
318
|
npm uninstall -g slidemind # remove the CLI
|
|
309
319
|
```
|
|
310
320
|
|