slidemind 0.1.5 → 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 +22 -14
- package/README.md +33 -15
- package/bin/slidemind.mjs +1124 -34
- package/package.json +2 -5
- package/skills/create-slides/SKILL.md +95 -47
- package/skills/search/SKILL.md +29 -26
- package/src/bridge/build-and-push.mjs +353 -66
- package/src/bridge/bundle.mjs +49 -7
- package/src/bridge/capture.mjs +2 -2
- package/src/bridge/client.mjs +572 -43
- 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 +41 -36
- package/src/installers/opencode.mjs +10 -18
- package/src/lib/reused-slides.mjs +2 -4
- package/src/mcp/server.mjs +0 -810
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, download-bundle, init, build, build-pptx, 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/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,12 +93,16 @@ 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
|
|
99
|
+
slidemind read [presId] # pull the current content of an open presentation (--mode summary|raw) (HOST REQUIRED)
|
|
96
100
|
slidemind download-bundle [deck] # materialize the active corporate design's bundle locally
|
|
97
|
-
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)
|
|
98
102
|
slidemind build <deck> # build self-contained HTML preview
|
|
99
103
|
slidemind review <deck> # spatial preview-review gate; blocks for approve/comments (host-free)
|
|
100
104
|
slidemind build-pptx <deck> # render native .pptx via the add-in (HOST REQUIRED)
|
|
105
|
+
slidemind view-draft <deck> # render the deck's slides to per-slide PNGs so the agent can look before review; no push, no .pptx (host-free once the bundle is materialized)
|
|
101
106
|
slidemind push <deck> # render + push slides into a running PowerPoint (HOST REQUIRED)
|
|
102
107
|
slidemind ls engines # list the live engine catalog (image + slide; --type/--subtype) (HOST REQUIRED)
|
|
103
108
|
slidemind search "<query>" # search an engine for imagery or slides (--engine/--intent/--top) (HOST REQUIRED)
|
|
@@ -108,7 +113,7 @@ slidemind whoami # list every paired environment (* = default)
|
|
|
108
113
|
slidemind use <url|env> # set the default environment
|
|
109
114
|
slidemind logout [url|env] # unpair one environment (--all unpairs every one)
|
|
110
115
|
slidemind init --for <target> # install skill into claude | codex | opencode | all (also clears the bundle cache)
|
|
111
|
-
slidemind uninstall --for <target> # remove skill
|
|
116
|
+
slidemind uninstall --for <target> # remove the skill (also clears the bundle cache)
|
|
112
117
|
```
|
|
113
118
|
|
|
114
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`.
|
|
@@ -134,17 +139,20 @@ Both skills are **brand-agnostic workflow guidance** and must not duplicate any
|
|
|
134
139
|
- No hardcoded colors, sizes, or fonts in slide files. Everything goes through the tokens in the bundle's `corporate-design.css`.
|
|
135
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.
|
|
136
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.
|
|
137
|
-
- 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).
|
|
138
143
|
|
|
139
144
|
## Build commands (terse reference)
|
|
140
145
|
|
|
141
146
|
```bash
|
|
142
|
-
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
|
|
143
149
|
slidemind build <deck> # HTML preview (reads the materialized bundle)
|
|
144
150
|
slidemind build <deck> --open # HTML + open in browser
|
|
145
151
|
slidemind review <deck> # spatial preview-review gate; blocks until approve/comments (host-free)
|
|
146
152
|
slidemind build-pptx <deck> # native PPTX rendered server-side via the add-in (host required)
|
|
153
|
+
slidemind view-draft <deck> # per-slide PNG draft preview, no push/no .pptx — the agent's look-before-review self-check (host-free once the bundle is cached)
|
|
147
154
|
slidemind push <deck> # render + push into a running PowerPoint (host required)
|
|
155
|
+
slidemind read [presId] # pull current content of an open presentation (--mode summary|raw) (host required)
|
|
148
156
|
slidemind ls engines # list the live engine catalog (image + slide) (host required)
|
|
149
157
|
slidemind search "<query>" # search an engine for imagery or slides (host required)
|
|
150
158
|
slidemind insert-slide [opts] # reuse found slide(s) live into a window (host required)
|
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`:
|
|
@@ -128,21 +128,23 @@ npx slidemind <command>
|
|
|
128
128
|
|
|
129
129
|
The CLI talks to PowerPoint through the add-in's cloud relay, so you pair once per machine.
|
|
130
130
|
|
|
131
|
-
1. In PowerPoint, open the **slidemind add-in** task pane
|
|
132
|
-
2. It shows a one-time command. Copy and run it:
|
|
131
|
+
1. In PowerPoint, open the **slidemind add-in** task pane → **Settings → General → Connect CLI**, and press **Pair**.
|
|
132
|
+
2. It shows a one-time command (it expires in ~10 min — press **Pair** again for a fresh one). Copy and run it:
|
|
133
133
|
|
|
134
134
|
```bash
|
|
135
135
|
slidemind pair <code>
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
3.
|
|
138
|
+
3. **Restart the add-in once.** Pairing turns CLI integration on, but the task pane that's already running may not pick up the connection — so close the slidemind task pane and reopen it from the ribbon (if needed, reopen the presentation). The wizard doesn't prompt for this, but a freshly-booted pane is what registers your window with the CLI.
|
|
139
|
+
|
|
140
|
+
4. Verify the link:
|
|
139
141
|
|
|
140
142
|
```bash
|
|
141
143
|
slidemind whoami # lists the paired environment(s)
|
|
142
144
|
slidemind presentations # lists open PowerPoint windows the add-in sees
|
|
143
145
|
```
|
|
144
146
|
|
|
145
|
-
If `slidemind presentations` is empty
|
|
147
|
+
If `slidemind presentations` is empty even though PowerPoint is open with the add-in and an active corporate design, restart the add-in (step 3) and retry.
|
|
146
148
|
|
|
147
149
|
```bash
|
|
148
150
|
slidemind logout # unpair this machine
|
|
@@ -153,17 +155,21 @@ slidemind logout # unpair this machine
|
|
|
153
155
|
## Quick start
|
|
154
156
|
|
|
155
157
|
```bash
|
|
156
|
-
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)
|
|
157
160
|
slidemind build my-deck # build a self-contained HTML preview (offline)
|
|
158
161
|
slidemind review my-deck # spatial preview review: leave comments / approve in the browser (offline)
|
|
159
162
|
slidemind build-pptx my-deck # render a native .pptx via the add-in (host required)
|
|
160
163
|
slidemind push my-deck # stream slides straight into an open PowerPoint (host required)
|
|
164
|
+
slidemind read <presId> # pull the current content of an open presentation (host required)
|
|
161
165
|
slidemind ls engines # list the active design's image + slide engines (host required)
|
|
162
166
|
slidemind search "shield" # search an engine for imagery or slides (host required)
|
|
163
167
|
slidemind insert-slide ... # reuse a found slide live into an open PowerPoint (host required)
|
|
164
168
|
slidemind add-slide ... # fold a found slide into a deck as a native .pptx (host required)
|
|
165
169
|
```
|
|
166
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
|
+
|
|
167
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`.
|
|
168
174
|
|
|
169
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.
|
|
@@ -180,32 +186,43 @@ Your agent (Claude Code, Codex, or opencode) auto-discovers the `slidemind-creat
|
|
|
180
186
|
|
|
181
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`.
|
|
182
188
|
|
|
183
|
-
|
|
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).
|
|
184
190
|
|
|
185
191
|
---
|
|
186
192
|
|
|
187
193
|
## Command reference
|
|
188
194
|
|
|
189
195
|
```text
|
|
190
|
-
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
|
|
191
200
|
slidemind build <deck> Build a self-contained HTML preview (offline)
|
|
192
201
|
slidemind review <deck> Spatial preview review; blocks for approve/comments (offline)
|
|
193
202
|
slidemind build-pptx <deck> Render a native .pptx via the add-in (host required)
|
|
203
|
+
slidemind view-draft <deck> Render slides to per-slide PNGs, no push — look before review (offline once cached)
|
|
204
|
+
--to <presId> --out <dir> --open
|
|
194
205
|
slidemind push <deck> Build + push slides into an open PowerPoint (host required)
|
|
195
206
|
slidemind ls engines List the live engine catalog (image + slide) (host required)
|
|
196
207
|
slidemind search "<query>" Search an engine for imagery or slides (host required)
|
|
197
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>]
|
|
198
211
|
slidemind insert-slide [opts] Insert reused slide results live into a window (host required)
|
|
199
212
|
--search <id> --pick <n[,n,...]> --to <presId> [--at <N>]
|
|
200
213
|
slidemind add-slide [opts] Fold reused slide results into a deck as native .pptx (host required)
|
|
201
214
|
--search <id> --pick <n[,n,...]> --deck <deck> [--to <presId>] [--at <N>]
|
|
202
|
-
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)
|
|
203
218
|
slidemind presentations List PowerPoint windows registered with the add-in
|
|
219
|
+
slidemind read [presId] Pull the current content of an open presentation (host required)
|
|
220
|
+
--mode summary|raw (default raw) [--to <presId>] [--json]
|
|
204
221
|
slidemind pair <code> Pair with an add-in (copy the code from "Connect CLI")
|
|
205
222
|
slidemind whoami Show paired environment(s)
|
|
206
223
|
slidemind use <url|env> Set the default environment
|
|
207
224
|
slidemind logout [url|env] Unpair an environment (--all unpairs every one)
|
|
208
|
-
slidemind init --for <target> Install the skill
|
|
225
|
+
slidemind init --for <target> Install the skill into a harness (clears the bundle cache)
|
|
209
226
|
slidemind uninstall --for <t> Remove a previously-installed skill (clears the bundle cache)
|
|
210
227
|
slidemind update [--for <t>] Fetch the latest release and redeploy
|
|
211
228
|
slidemind --help Full usage
|
|
@@ -286,8 +303,9 @@ Equivalently: `npm install -g slidemind@latest && slidemind init --for all`.
|
|
|
286
303
|
|---|---|
|
|
287
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`. |
|
|
288
305
|
| PowerShell: *running scripts is disabled* | npm's `.ps1` shim hit the execution policy. Use `slidemind.cmd <command>`, or `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned`. |
|
|
289
|
-
|
|
|
290
|
-
| `
|
|
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). |
|
|
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. |
|
|
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. |
|
|
291
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. |
|
|
292
310
|
| `EACCES` on `npm install -g` (macOS/Linux) | Don't `sudo npm`. Use a user-owned Node via [nvm](https://github.com/nvm-sh/nvm) or Homebrew, or set a user-writable npm prefix. |
|
|
293
311
|
|
|
@@ -296,7 +314,7 @@ Equivalently: `npm install -g slidemind@latest && slidemind init --for all`.
|
|
|
296
314
|
## Uninstall
|
|
297
315
|
|
|
298
316
|
```bash
|
|
299
|
-
slidemind uninstall --for all # remove the skill
|
|
317
|
+
slidemind uninstall --for all # remove the skill from each harness
|
|
300
318
|
npm uninstall -g slidemind # remove the CLI
|
|
301
319
|
```
|
|
302
320
|
|