wand-decks-kit 0.8.6 → 0.9.0
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/PROMPT.md +35 -0
- package/SKILL.md +66 -2
- package/assets/closing-art.png +0 -0
- package/assets/cover-art.png +0 -0
- package/assets/orb-glow.png +0 -0
- package/docs/LAYOUTS.md +5 -0
- package/examples/template.json +639 -126
- package/lib/schema.js +24 -1
- package/package.json +1 -1
- package/tools/brandlint.py +74 -0
- package/wand.js +81 -0
- package/wand_kit.js +241 -56
package/PROMPT.md
CHANGED
|
@@ -10,6 +10,41 @@ is the workflow and the design system; the skill is the source of truth for comm
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
|
|
14
|
+
## The guideline deck (0.9)
|
|
15
|
+
|
|
16
|
+
Since 2026-09-23 the design source of truth is a real deck —
|
|
17
|
+
`Vivicta_Session_Deck.pptx`, the standard Wand sales deck as it is actually sent
|
|
18
|
+
— not the earlier reference PDFs. Everything below was **measured from it**, and
|
|
19
|
+
`brand/BRAND.md` and the kit's `T` carry the counts:
|
|
20
|
+
|
|
21
|
+
- **Tokens.** Dark ground is `240F48`, flat. Titles `FFFFFF`, body `F5F5F5`,
|
|
22
|
+
captions `BBBBBB`, lists in cards `C6BFE4`. Cards: solid `2A1F5C`, muted
|
|
23
|
+
`1B1738`, stroke `5B4BB0`. Accent text on dark `9481FF`. The old
|
|
24
|
+
`0F0C26 / B7B0DC / 2C2460` set was the reference PDFs' rendering, not the deck.
|
|
25
|
+
- **Interior dark slides carry no art.** The gradient compositions belong to
|
|
26
|
+
the cover (`cover-art.png`, orb baked in) and the closing (`closing-art.png`
|
|
27
|
+
plus `orb-glow.png` centred). `background()` paints a flat colour.
|
|
28
|
+
- **Chrome.** Tag at `0.42, 0.24`; mark at `9.40, 0.26`; footer band at
|
|
29
|
+
`y 5.29, h 0.34`, 7pt: `WAND · <deck>` left, `<confidential> · nn/NN` right.
|
|
30
|
+
- **Cover.** Title at `0.42, 1.79`, 39pt shrinking to 30; body at `3.15`; a
|
|
31
|
+
`PRESENTED TO` block bottom-right (`presentedTo: [name, title]`).
|
|
32
|
+
- **Closing.** Orb at `3.98, 0.69, 2.03²`; the line at 33pt shrinking to 22 —
|
|
33
|
+
a real ask is a sentence, not "Thank You".
|
|
34
|
+
- **Five layouts the deck has and the kit did not:** `agenda`, `team` (with a
|
|
35
|
+
headshot slot), `fourCards`, `deliverColumns`, `coDelivery`. They are the
|
|
36
|
+
slides a sales session adds to the standard deck; a tester had to hand-build
|
|
37
|
+
all five.
|
|
38
|
+
- **The brand gate.** `wand.js audit` runs `tools/brandlint.py`: every text run
|
|
39
|
+
in Geist, every colour a token, the 10 × 5.625 canvas, a footer on every
|
|
40
|
+
content slide. On the guideline deck itself it names exactly the slides the
|
|
41
|
+
tester retexted by hand (Arial on S14, Calibri on S07) — which is the point:
|
|
42
|
+
an edit-only job reports those and asks, rather than restyling unasked.
|
|
43
|
+
|
|
44
|
+
`card()` variants are theme-aware now: `solid` on a light slide is a white
|
|
45
|
+
card with a hairline, not a dark purple box hiding light ink — the agenda in
|
|
46
|
+
the template rendered as four black boxes before that fix.
|
|
47
|
+
|
|
13
48
|
## 0. Ground truth: the reference decks
|
|
14
49
|
|
|
15
50
|
Two decks in Project knowledge define the target output. **They are the specification.** When this
|
package/SKILL.md
CHANGED
|
@@ -4,7 +4,7 @@ description: Rebrand, merge, edit or author a PowerPoint deck on the Wand design
|
|
|
4
4
|
compatibility: Requires Node.js 18+ and code execution enabled in claude.ai (Settings > Features). No network access needed - dependencies are bundled. Python 3 is used to read a source .pptx and to embed fonts; without it the kit can still author and check a deck, but the output will render in Arial on machines without Geist.
|
|
5
5
|
license: Proprietary - Wand AI
|
|
6
6
|
metadata:
|
|
7
|
-
version: "0.
|
|
7
|
+
version: "0.9.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
|
|
@@ -61,7 +61,16 @@ node wand.js doctor
|
|
|
61
61
|
|
|
62
62
|
If `node_modules` is somehow missing, `npm install` in this directory.
|
|
63
63
|
|
|
64
|
-
##
|
|
64
|
+
## Before any build: show the plan, then wait
|
|
65
|
+
|
|
66
|
+
Write the slide-by-slide mapping in the chat **before** writing a line of JSON:
|
|
67
|
+
`S07 (timeline, 6 phases) → phaseCards`, one line per slide, with the reason
|
|
68
|
+
where it is not obvious. Then build. A field run skipped this, built the wrong
|
|
69
|
+
thing, and paid a full second pass. This is not optional for a rebuild, a merge
|
|
70
|
+
or an adaptation; only "author from a brief" with fewer than eight slides may
|
|
71
|
+
go straight to the spec.
|
|
72
|
+
|
|
73
|
+
## The six jobs
|
|
65
74
|
|
|
66
75
|
### Rebrand a deck they attached
|
|
67
76
|
|
|
@@ -89,6 +98,45 @@ to cover — and it says so.
|
|
|
89
98
|
spec. Ask which deck leads if they have not said. Flag duplicates rather than
|
|
90
99
|
silently dropping them, and list every merge in the review note.
|
|
91
100
|
|
|
101
|
+
### Adapt a deck and keep its graphics
|
|
102
|
+
|
|
103
|
+
The ask sounds like a rebrand but is not: *"take our standard deck, drop in an
|
|
104
|
+
agenda, a team slide and a demo placeholder, keep everything else as is."* They
|
|
105
|
+
want the source's own slides and art preserved, with a few slides retexted or
|
|
106
|
+
added. **This kit re-authors from a spec; it cannot copy a source slide's
|
|
107
|
+
shapes.** Say that in one line, then edit the source `.pptx` directly with the
|
|
108
|
+
pptx tools — and still run this kit's gates on the result:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
node wand.js audit <edited-deck>.pptx # file, pdf text, renders + contact sheet
|
|
112
|
+
node wand.js audit <edited-deck>.pptx --dump work/visible_dump.txt # + coverage
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`audit` runs every gate that does not need a spec. A deck delivered without it
|
|
116
|
+
has been checked by nobody. Say which slides were lifted unchanged, which were
|
|
117
|
+
retexted, and that the source's fonts (not Geist) carry through.
|
|
118
|
+
|
|
119
|
+
### Edit a deck they attached — not built here
|
|
120
|
+
|
|
121
|
+
"Change the date on the cover", "swap slide 4's title", "add our logo to the
|
|
122
|
+
partner slide". They want *that*, and nothing else touched.
|
|
123
|
+
|
|
124
|
+
1. Do exactly the edit, directly in the `.pptx` with the pptx tools. Do not
|
|
125
|
+
rebuild, do not restyle, do not "tidy" anything nearby.
|
|
126
|
+
2. Then run the guideline over the whole deck:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
node wand.js audit <their-deck>.pptx
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
The **brand** gate lists every slide where a text run is not Geist, a colour
|
|
133
|
+
is not a token, the canvas is not the 10 × 5.625 grid, or a content slide
|
|
134
|
+
has no footer.
|
|
135
|
+
3. Deliver the edited deck first. Then report the inconsistencies the gate
|
|
136
|
+
found — per slide, in one line each — and **ask whether to fix them**. Do not
|
|
137
|
+
fix them unasked: an edit-only job that comes back restyled is a broken
|
|
138
|
+
promise, even when the restyle is right.
|
|
139
|
+
|
|
92
140
|
### Edit a deck this kit built
|
|
93
141
|
|
|
94
142
|
```bash
|
|
@@ -124,6 +172,13 @@ optional — **sweep the entire spec for that pattern before re-running anything
|
|
|
124
172
|
Paying a full cycle per instance is the slow way to learn the same fact
|
|
125
173
|
repeatedly.
|
|
126
174
|
|
|
175
|
+
## One skill at a time
|
|
176
|
+
|
|
177
|
+
If `wand-decks` or `wand-docs` is installed beside `wand-design`, both may
|
|
178
|
+
fire on the same file. **`wand-design` leads; this file yields.** Do not run
|
|
179
|
+
two setups, and tell the user once: remove the older per-family skill, the
|
|
180
|
+
combined one covers it.
|
|
181
|
+
|
|
127
182
|
## Rules that decide whether the output is usable
|
|
128
183
|
|
|
129
184
|
1. **Faithful means verbatim.** No consolidating slides, no paraphrasing to
|
|
@@ -139,6 +194,14 @@ repeatedly.
|
|
|
139
194
|
4. **Icons are named.** `node wand.js glyphs` lists all 75. Pick by meaning.
|
|
140
195
|
They recolour to the theme, so there is no polarity to get wrong.
|
|
141
196
|
5. **Never invent content.** If the source is ambiguous, ask.
|
|
197
|
+
6. **A FAIL in the gate table is not shippable.** Not "acceptable two-line
|
|
198
|
+
wraps", not "probably fine" — either fix it and re-run, or list each failing
|
|
199
|
+
item with its measurement in the review note and let the user decide. A
|
|
200
|
+
field run shipped on `FAIL fit + bounds` with a reassurance instead of a
|
|
201
|
+
list; the reassurance was not checked against anything.
|
|
202
|
+
7. **Verbatim applies to rebuilds, merges and lifted slides.** When the job is
|
|
203
|
+
to author or retext a slide, say which slides were retexted — the review
|
|
204
|
+
note separates *lifted verbatim* from *rewritten*.
|
|
142
205
|
|
|
143
206
|
## Useful commands
|
|
144
207
|
|
|
@@ -150,6 +213,7 @@ repeatedly.
|
|
|
150
213
|
| `node wand.js check <spec>` | fit in real Geist, bounds, assets |
|
|
151
214
|
| `node wand.js preview <spec>` | writes `preview/trace.js` for the browser preview |
|
|
152
215
|
| `node wand.js inspect <deck>` | parts, relationships, embedded fonts |
|
|
216
|
+
| `node wand.js audit <deck> [--dump f]` | every spec-free gate on any .pptx, including the **brand** gate (fonts, colours, canvas, footer) — use on decks edited outside the kit |
|
|
153
217
|
|
|
154
218
|
## Deliver
|
|
155
219
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/LAYOUTS.md
CHANGED
|
@@ -24,6 +24,11 @@ full-bleed three) `deck` / `n` / `total` for the footer.
|
|
|
24
24
|
|
|
25
25
|
| Layout | Params | Use for |
|
|
26
26
|
|---|---|---|
|
|
27
|
+
| `agenda` | `items[{title,body}]` | What we'll cover — 2–5 numbered cards (guideline S03) |
|
|
28
|
+
| `team` | `items[{name,role,initials}]` | Who's in the room — headshot slot per person (guideline S02) |
|
|
29
|
+
| `fourCards` | `items[{title,body}]` | Demo objectives, pillars — four titled cards under a lede (S12) |
|
|
30
|
+
| `deliverColumns` | `columns[{heading,lead,body}]` | How we deliver — three flat columns with an accent bar (S14) |
|
|
31
|
+
| `coDelivery` | `items[{title,body}]` | Numbered rows in two columns, up to six (S13) |
|
|
27
32
|
| `threeUp` | `items[{eyebrow,title,pill,body,emph}], arrows` | 3 comparable things. `arrows: true` for a progression |
|
|
28
33
|
| `fourUpIcon` | `items[{icon,title,body}], kickerText` | 4 attributes or capabilities |
|
|
29
34
|
| `sixUpIcon` | `items[{icon,title,body}]` | 6 features. Don't use it three slides running |
|