slidemind 0.4.1 → 0.4.2
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 -1
- package/.codex-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/skills/search/SKILL.md +8 -4
- package/src/cli/help.mjs +2 -1
- package/src/cli/search.mjs +11 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "slidemind",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Connect Claude Code to the slidemind PowerPoint add-in — build and edit native, on-brand PowerPoint decks against the active corporate design, from the terminal.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "statworx",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "slidemind",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Connect Codex to the slidemind PowerPoint add-in — build and edit native, on-brand PowerPoint decks against the active corporate design. Requires the slidemind CLI (npm install -g slidemind); the skills explain the install when it is missing.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "statworx",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "slidemind",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Connect Claude Code, Codex & opencode to the slidemind PowerPoint add-in — let your coding agent build and edit native, on-brand PowerPoint decks against your active corporate design, from the terminal.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/skills/search/SKILL.md
CHANGED
|
@@ -115,12 +115,16 @@ Follow `workflow/search.md` for the discipline; this is the CLI shape of its loo
|
|
|
115
115
|
return nothing right now; pick another target.
|
|
116
116
|
2. **Choose the target + intent.** Slide engines (`subtype slide`), content collections and scopes
|
|
117
117
|
support two intents: **content** (the slide's text is the signal — title, body, tables, notes)
|
|
118
|
-
and **visual** (the slide image is the signal). Image/icon engines (`subtype image`)
|
|
119
|
-
**
|
|
118
|
+
and **visual** (the slide image is the signal). Image/icon engines (`subtype image`) search
|
|
119
|
+
**visually** by default, and so do **template collections** (`subtype template`): their text is
|
|
120
120
|
placeholder, so query the structure the content needs ("loop diagram with 5 steps",
|
|
121
121
|
"three-column comparison"), never the topic. Match the intent to the ask: "a slide that says X" /
|
|
122
122
|
"covers topic Y" → `--intent content`; "a slide that looks like X" / brand imagery →
|
|
123
|
-
`--intent visual`. `--intent auto` lets the engine decide.
|
|
123
|
+
`--intent visual`. `--intent auto` lets the engine decide. An image engine also takes
|
|
124
|
+
**`--intent keyword`**: a lexical match on the asset's FILE NAME, no embedding at all — the
|
|
125
|
+
one way to find a NAMED asset, such as a colleague's photo (`JaneDoe_business.png`), which a
|
|
126
|
+
visual search for "Jane Doe" ranks no better than any other face. Every query word must occur
|
|
127
|
+
in the file name; type names without accents (`Andre`, not `André`).
|
|
124
128
|
3. **Search — no window to choose.** `slidemind search "<query>" --engine <id> --intent
|
|
125
129
|
<auto|content|visual> [--top N]` (leave `--to` off). A **scope** target additionally needs
|
|
126
130
|
`--result-type slide|image` (it has no subtype of its own; the CLI defaults it to `slide`). Omit
|
|
@@ -271,7 +275,7 @@ insert live, fold into a deck, engine fetch). You are the local harness — this
|
|
|
271
275
|
| Verb (`workflow/search.md`) | Your equivalent (local harness) |
|
|
272
276
|
|---|---|
|
|
273
277
|
| **discover engines** ("list what you can reach") | `slidemind ls engines [--type collection\|search\|scope] [--subtype …]` — returns the engine catalog **plus the search scopes** (pick an `id`; never guess one). The catalog is per-user; `--to` is accepted but never needed. No window needed where the add-in serves the pane-free routes. |
|
|
274
|
-
| **engine search** (with `intent`) | `slidemind search "<query>" --engine <id> --intent <auto\|content\|visual> [--top N] [--deck <deck>]` — leave `--to` off → a `searchId` + numbered results, plus the exact follow-up commands for the path it took; each result may carry a `source:` link — **always cite it back** |
|
|
278
|
+
| **engine search** (with `intent`) | `slidemind search "<query>" --engine <id> --intent <auto\|content\|visual\|keyword> [--top N] [--deck <deck>]` — leave `--to` off → a `searchId` + numbered results, plus the exact follow-up commands for the path it took; each result may carry a `source:` link — **always cite it back** |
|
|
275
279
|
| **search a scope** (unfiltered corpus, no engine) | `slidemind search "<query>" --engine <scope:all\|scope:sharepoint> --result-type <slide\|image> [--intent …]` — `--result-type` is required for a scope (defaults to `slide`). Results reuse identically to engine results. |
|
|
276
280
|
| **pull an on-demand thumbnail** for a stored result | `slidemind view-slide --search <searchId> --pick <n>` — SLIDE-library results only; image/icon results have no preview ("no image returned") — download and Read the file instead (add `--to <searchWindow>` only on the relayed path) · or `slidemind search … --json` for the structured payload. |
|
|
277
281
|
| **read a result's SOURCE deck** (the presentation it came from) | `slidemind read-source --search <searchId> --pick <n> [--from-slide N] [--to-slide N] [--out <file.md>]` — Markdown of the whole source presentation, one section per slide (add `--to <searchWindow>` only on the relayed path). Indexed text, not the live file. Slide results only. |
|
package/src/cli/help.mjs
CHANGED
|
@@ -143,7 +143,8 @@ export function printHelp(cmd = null) {
|
|
|
143
143
|
` --engine <id> engine, or scope:all | scope:sharepoint to search unfiltered\n` +
|
|
144
144
|
` (default: first image engine; scope:all for slide intents)\n` +
|
|
145
145
|
` --result-type <t> slide | image — required for a scope:* target\n` +
|
|
146
|
-
` --intent <i> auto | content | visual (slide engines)\n` +
|
|
146
|
+
` --intent <i> auto | content | visual (slide engines) | keyword\n` +
|
|
147
|
+
` (image engines: match the FILE NAME, e.g. a person's photo)\n` +
|
|
147
148
|
` --top <N> max results\n` +
|
|
148
149
|
` --deck <deck> use this deck's bound design\n` +
|
|
149
150
|
` --to <presId> pin a window on the relayed path (ignored pane-free)\n` +
|
package/src/cli/search.mjs
CHANGED
|
@@ -53,9 +53,9 @@ export async function cmdSearch(rest) {
|
|
|
53
53
|
}
|
|
54
54
|
} else if (a === "--intent") {
|
|
55
55
|
intent = rest[++i];
|
|
56
|
-
if (!intent) fail("--intent expects auto|content|visual");
|
|
57
|
-
if (!["auto", "content", "visual"].includes(intent)) {
|
|
58
|
-
fail(`--intent expects auto|content|visual, got '${intent}'`);
|
|
56
|
+
if (!intent) fail("--intent expects auto|content|visual|keyword");
|
|
57
|
+
if (!["auto", "content", "visual", "keyword"].includes(intent)) {
|
|
58
|
+
fail(`--intent expects auto|content|visual|keyword, got '${intent}'`);
|
|
59
59
|
}
|
|
60
60
|
} else if (a === "--top") {
|
|
61
61
|
const next = rest[++i];
|
|
@@ -73,7 +73,7 @@ export async function cmdSearch(rest) {
|
|
|
73
73
|
const query = queryParts.join(" ").trim();
|
|
74
74
|
if (!query) {
|
|
75
75
|
fail(
|
|
76
|
-
`usage: slidemind search "<query>" [--engine <id|scope:all|scope:sharepoint>] [--result-type slide|image] [--intent auto|content|visual] [--top <N>] [--deck <deck>] [--to <presId>] [--json]`,
|
|
76
|
+
`usage: slidemind search "<query>" [--engine <id|scope:all|scope:sharepoint>] [--result-type slide|image] [--intent auto|content|visual|keyword] [--top <N>] [--deck <deck>] [--to <presId>] [--json]`,
|
|
77
77
|
);
|
|
78
78
|
}
|
|
79
79
|
|
|
@@ -118,7 +118,13 @@ export async function cmdSearch(rest) {
|
|
|
118
118
|
// as slide results (the footer then taught add-slide instead of
|
|
119
119
|
// download-result). Omitted subtype → the backend derives it from what the
|
|
120
120
|
// results actually are.
|
|
121
|
-
|
|
121
|
+
//
|
|
122
|
+
// `--intent keyword` is the opposite case: a lexical FILE-NAME match that the
|
|
123
|
+
// add-in runs over the image index only (it coerces keyword to content on
|
|
124
|
+
// any other index), so it asserts "image" the way content asserts "slide".
|
|
125
|
+
// It is what finds a named asset — a colleague's photo `JaneDoe_business.png`
|
|
126
|
+
// — which no embedding of the query "Jane Doe" ranks reliably.
|
|
127
|
+
let subtype = intent === "content" ? "slide" : intent === "keyword" ? "image" : null;
|
|
122
128
|
// `--engine Icons` — a display name straight off `ls engines` — would reach
|
|
123
129
|
// the backend verbatim and 404 as "Engine not found". Humans type names,
|
|
124
130
|
// agents paste ids; when the value cannot be an id (spaces, non-hex), look it
|