@marver-design/marver 0.19.2 → 0.21.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/CHANGELOG.md +90 -0
- package/README.md +8 -10
- package/dist/{bake-kaf5kGZ7.mjs → bake-BID6mo-N.mjs} +1 -1
- package/dist/{boards-BmxcT3Lc.mjs → boards-BwiDAmPf.mjs} +95 -48
- package/dist/{boards-PuVzw5Wp.mjs → boards-DnLewfj8.mjs} +20 -11
- package/dist/{build-7ed5H2vT.mjs → build-C7MqQ7hq.mjs} +18 -8
- package/dist/cli.mjs +19 -13
- package/dist/{daemon-DbHvLQUL.mjs → daemon-CRZFpl6K.mjs} +1 -1
- package/dist/{dev-D3mP2x27.mjs → dev-BNZF4Mup.mjs} +5 -5
- package/dist/{init-BQYCS3EU.mjs → init-C34BY3R4.mjs} +34 -33
- package/dist/{manifest-B01PSyDc.mjs → manifest-mMfUhPtL.mjs} +8 -5
- package/dist/{plugin-DI-7NAnx.mjs → plugin-omHLCn91.mjs} +34 -26
- package/dist/{poster-DNh6N27C.mjs → poster-BvxiAzy1.mjs} +1 -1
- package/dist/{publish-bakes-Dp-ZFk3d.mjs → publish-bakes-BqzAAa3w.mjs} +8 -2
- package/dist/{shot-DMDvDbeP.mjs → shot-DswS4iRK.mjs} +7 -7
- package/docs/live-jam.md +1 -1
- package/docs/slides.md +89 -89
- package/docs/sticky-notes.md +9 -0
- package/package.json +1 -1
- package/src/client/const.ts +27 -9
- package/src/client/content/chart.tsx +8 -8
- package/src/client/content/index.tsx +5 -4
- package/src/client/content/slide.tsx +26 -201
- package/src/client/frame-host/main.tsx +10 -0
- package/src/client/shell/BoardList.tsx +111 -52
- package/src/client/shell/Comments.tsx +12 -4
- package/src/client/shell/Play.tsx +26 -14
- package/src/client/shell/Toolbar.tsx +7 -5
- package/src/client/shell/canvas/FrameNode.tsx +16 -2
- package/src/client/shell/store.ts +8 -8
- package/src/client/shell/styles.css +10 -9
- package/src/client/stage/main.tsx +56 -7
- package/src/shared/board-tree.ts +271 -140
- package/templates/AGENTS-embedded.md +3 -3
- package/templates/AGENTS-studio.md +3 -3
- package/templates/instructions/boards.md +47 -22
- package/templates/instructions/reference/deck-layouts.md +153 -199
- package/templates/instructions/reference/deck-story.md +6 -6
- package/templates/instructions/slides.md +275 -383
|
@@ -62,23 +62,33 @@ viewport and lays it out:
|
|
|
62
62
|
|
|
63
63
|
## Folders - organising the sidebar
|
|
64
64
|
|
|
65
|
-
Boards can sit in folders,
|
|
66
|
-
|
|
65
|
+
Boards can sit in folders, two levels deep: a folder holds boards and folders, a folder
|
|
66
|
+
inside a folder (a **sub-folder**) holds boards only. A board can sit at the root, in a
|
|
67
|
+
folder, or in a sub-folder. Files are the truth, and two files carry it:
|
|
67
68
|
|
|
68
69
|
- **Membership lives on the board**: `"folder": "research"` in the board file, next
|
|
69
|
-
to `order
|
|
70
|
-
|
|
70
|
+
to `order` - always the ONE folder it sits in directly, at either level (a board in a
|
|
71
|
+
sub-folder names the sub-folder, never a path). `order` then ranks it among its
|
|
72
|
+
siblings: at every level, the boards and folders there share one sequence (the root's
|
|
73
|
+
boards and top-level folders; a folder's boards and sub-folders; a sub-folder's boards). Same grammar as board names
|
|
71
74
|
(`^[a-z0-9][a-z0-9-]*$`); an invalid value means top level. `all-scenes` never
|
|
72
75
|
lives in a folder.
|
|
73
76
|
- **Folders live in `design/boards/_folders.json`** - the underscore marks it as
|
|
74
77
|
infrastructure, never a board:
|
|
75
78
|
|
|
76
79
|
```json
|
|
77
|
-
{ "version":
|
|
80
|
+
{ "version": 2, "folders": [
|
|
78
81
|
{ "name": "research", "order": 1, "title": "R&D", "description": "The thinking behind the live boards - specs, flows, references" },
|
|
82
|
+
{ "name": "flows", "parent": "research", "order": 2, "description": "One board per user flow" },
|
|
79
83
|
{ "name": "archive", "order": 3, "description": "Retired directions and scene versions, oldest first" } ] }
|
|
80
84
|
```
|
|
81
85
|
|
|
86
|
+
**Nesting lives here only**: a sub-folder's entry carries `"parent": "<folder>"`, and the
|
|
87
|
+
file says `"version": 2` while any entry has a parent (`"version": 1` when none does - an
|
|
88
|
+
older Marver can read that, and refuses a version-2 file rather than lose its nesting).
|
|
89
|
+
A parent must itself be a registered top-level folder; a sub-folder never holds a
|
|
90
|
+
folder. Folder names are unique across both levels.
|
|
91
|
+
|
|
82
92
|
A folder's `name` is its slug - the identity its boards point at with `folder`; its
|
|
83
93
|
`title` (optional, free text) is what humans see, exactly as on a board; its
|
|
84
94
|
`description` says what belongs in it - the next session files boards right without
|
|
@@ -87,7 +97,8 @@ Files are the truth, and two files carry it:
|
|
|
87
97
|
It exists so an EMPTY folder can exist and so a folder has a rank at the root.
|
|
88
98
|
A folder a board names but the registry lacks is still real (it sorts after the
|
|
89
99
|
ranked items, by name) - two boards with `"folder": "research"` make a Research
|
|
90
|
-
folder on their own.
|
|
100
|
+
folder on their own. Such an implied folder is always top-level: to nest it, register
|
|
101
|
+
it with its `parent`. A malformed registry is an error the canvas shows, not an
|
|
91
102
|
empty one - fix it, never delete it.
|
|
92
103
|
|
|
93
104
|
**Look before you organise: `npx marver boards`** prints the sidebar as the files say
|
|
@@ -99,39 +110,53 @@ have rearranged things since you last looked, and their arrangement stands.
|
|
|
99
110
|
The moves, each a file edit, so the files always agree:
|
|
100
111
|
- **Create** a folder: add `{ "name": "<slug>", "order": <n>, "description": "…" }`
|
|
101
112
|
to the registry's `folders` (create the file if absent) - or just point a board at it.
|
|
102
|
-
|
|
103
|
-
among that folder's boards
|
|
104
|
-
|
|
113
|
+
**Create a sub-folder**: the same entry with `"parent": "<top-level folder>"`, its
|
|
114
|
+
`order` among that folder's boards and sub-folders, and `"version": 2` on the file.
|
|
115
|
+
- **Move a folder in or out**: set its `parent` (only a folder with no sub-folders of its
|
|
116
|
+
own can move into another - never three levels) or delete it; re-rank the siblings you
|
|
117
|
+
touch, and set `"version"` to 2 while any parent remains, 1 when none does.
|
|
118
|
+
- **Move a board in**: write `"folder": "<slug>"` on the board - any folder, at either
|
|
119
|
+
level - and give it an `order` among that folder's boards and sub-folders. **Move it
|
|
120
|
+
out**: delete the `folder` field and give it an `order` among the top-level items.
|
|
105
121
|
- **Rank** folders and boards: `order` on the board (among its siblings) and on the
|
|
106
122
|
registry entry (among the top-level items). Renumber the siblings you touch.
|
|
107
123
|
- **Retitle** a folder (or a board): set `title` on the registry entry (on the board
|
|
108
124
|
file). **Rename a slug** - a folder's `name`, a board's file name - only when asked,
|
|
109
|
-
and as one refactor: a folder slug is on every member's `folder` field
|
|
110
|
-
all, AND the registry entry - a registry rename
|
|
111
|
-
|
|
125
|
+
and as one refactor: a folder slug is on every member's `folder` field and on
|
|
126
|
+
every sub-folder's `parent` (rewrite them all, AND the registry entry - a registry rename
|
|
127
|
+
alone leaves the members in the old, implied folder and the sub-folders pointing at a
|
|
128
|
+
parent that no longer exists); a board file name is in `publish.json`, in its comment threads and in
|
|
112
129
|
every path anyone copied. A title does what a rename usually wanted.
|
|
113
|
-
- **Delete** a folder:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
130
|
+
- **Delete** a folder: what it holds moves up one level, into its place - a top-level
|
|
131
|
+
folder's boards lose `folder` and its sub-folders lose `parent` (they become top-level
|
|
132
|
+
folders, keeping their boards); a sub-folder's boards take its parent as their `folder`.
|
|
133
|
+
Then remove its registry entry and re-rank the level it emptied into. Folders organise,
|
|
134
|
+
never own: deleting one never deletes a board.
|
|
135
|
+
- The **landing board** is the first board in sidebar order, reading down through
|
|
136
|
+
folders and sub-folders - rank a folder first and its first board opens the canvas.
|
|
117
137
|
|
|
118
138
|
Use folders proactively, the way a tidy studio would: a canvas past six or eight
|
|
119
139
|
boards wants grouping - the live feature boards at the top level, `research` /
|
|
120
140
|
`specs` for the thinking, `decks` for slides, `archive` for history and versions
|
|
121
|
-
last.
|
|
141
|
+
last. Reach for a sub-folder when a folder itself grows past six or eight boards and
|
|
142
|
+
splits naturally (features by surface, archive by year) - not before; one level reads
|
|
143
|
+
faster than two. Propose the grouping in one sentence and do it; keep folder names short and
|
|
122
144
|
plain.
|
|
123
145
|
|
|
124
146
|
The human does all of this too - from the sidebar: New folder (right-click the Boards
|
|
125
|
-
header, or its `+`),
|
|
126
|
-
folder,
|
|
127
|
-
|
|
147
|
+
header, or its `+`), New folder inside (a top-level folder's menu), Rename (the title -
|
|
148
|
+
slugs never move from the sidebar), Delete folder, Move to top level (a board in a folder,
|
|
149
|
+
a sub-folder), Move to new folder (a board), and DRAG: boards into and out of folders at
|
|
150
|
+
either level, folders among boards and - when they hold no sub-folders - into a top-level
|
|
151
|
+
folder. Each drag rewrites `order` (and
|
|
128
152
|
`folder`) on the boards it touches and the registry - the shell owns those fields
|
|
129
153
|
while the canvas is open, exactly as it owns `order`; write membership and new
|
|
130
154
|
folders freely, and never rewrite an arrangement the human just made. The shell
|
|
131
155
|
refuses a write that would overwrite an edit it has not seen (your file write and
|
|
132
156
|
the human's drag can never silently erase each other), so read a board file before
|
|
133
|
-
you rewrite it. Published canvases show the folders of the published boards only
|
|
134
|
-
folder with nothing published never reaches
|
|
157
|
+
you rewrite it. Published canvases show the folders of the published boards only - a
|
|
158
|
+
sub-folder's parent included; a folder with nothing published at any depth never reaches
|
|
159
|
+
the bundle.
|
|
135
160
|
|
|
136
161
|
## The default composition: one horizontal band
|
|
137
162
|
|
|
@@ -1,186 +1,143 @@
|
|
|
1
|
-
# Deck layouts -
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
1
|
+
# Deck layouts - an idea bank
|
|
2
|
+
|
|
3
|
+
Compositions to borrow when a slide needs a shape and none comes. Nothing
|
|
4
|
+
here is required and nothing has a size: the stage, the brand and the
|
|
5
|
+
message decide. When no idea fits what the slide has to say, compose your
|
|
6
|
+
own - that is what code is for.
|
|
7
|
+
|
|
8
|
+
## Seeing a deck as silhouettes
|
|
9
|
+
|
|
10
|
+
A silhouette is the largest geometry the eye sees when the words blur. It is
|
|
11
|
+
the quickest way to check a deck has range:
|
|
12
|
+
|
|
13
|
+
- **statement** - one sentence owns the stage.
|
|
14
|
+
- **hero** - one number, quote, image or object owns most of it; the
|
|
15
|
+
headline frames it.
|
|
16
|
+
- **split** - two unequal fields: one argues, one proves.
|
|
17
|
+
- **grid** - a few true peers side by side.
|
|
18
|
+
- **stream** - a path across the stage: time, sequence, cause, hand-off.
|
|
19
|
+
- **field** - one chart, table, diagram or document fills the slide.
|
|
20
|
+
- **bookend** - cover, section turn, closing: a door, not a page.
|
|
21
|
+
|
|
22
|
+
A deck that reads as one silhouette with different words underneath looks
|
|
23
|
+
templated. Vary by what each message needs, not by a quota.
|
|
24
|
+
|
|
25
|
+
## Patterns from a strong consulting deck
|
|
26
|
+
|
|
27
|
+
Thirteen slides for a finance pitch: a regular-weight sans at large sizes,
|
|
28
|
+
paper / ink / one blue as whole-slide tones, the client's own photography,
|
|
29
|
+
and a line-drawing system on a dotted grid. A shared master (the firm's
|
|
30
|
+
mark, "prepared for … · confidential · date") sits on every content slide.
|
|
31
|
+
The compositions, generically:
|
|
32
|
+
|
|
33
|
+
1. **Paired cover** - ink ground, no master. Left half: the firm's mark ×
|
|
34
|
+
the client's mark, centred. Right half: one black-and-white photograph to
|
|
35
|
+
the edges.
|
|
36
|
+
2. **Statement on ink** - the master, then one sentence at display size,
|
|
37
|
+
left-aligned, low on the stage. Nothing else. The opening answer.
|
|
38
|
+
3. **Problem split** - left: a three-line headline, one muted paragraph, and
|
|
39
|
+
a wide line drawing under it. Right: three numbered failure modes, each a
|
|
40
|
+
hairline, a small number, a short title and one muted line.
|
|
41
|
+
4. **Process with its loop** - four numbered stages along a ruled line with
|
|
42
|
+
small arrowheads; under them an SVG route drawn back from a later stage to
|
|
43
|
+
an earlier one, in the deck's one "problem" colour, captioned in the loop.
|
|
44
|
+
5. **Half-bleed opportunity** - copy on the left (headline, a line, two
|
|
45
|
+
ruled benefits); a photograph bleeding off the right edge behind the
|
|
46
|
+
master, under a uniform dark scrim.
|
|
47
|
+
6. **Illustrated mechanism** - headline and intro, then three columns: a
|
|
48
|
+
drawing on the shared grid, a hairline, a numbered step title, one line.
|
|
49
|
+
The accent appears in only one drawing - the step that matters most.
|
|
50
|
+
7. **Principles on ink** - headline on the left; four ruled rows on the
|
|
51
|
+
right, each a small square drawing, a title and one line.
|
|
52
|
+
8. **Two lanes** - a small badge naming the case, the headline, then a
|
|
53
|
+
"context" row and a "solution" row, each copy on the left and a three-step
|
|
54
|
+
drawn flow on the right.
|
|
55
|
+
9. **Evidence on the accent ground** - the headline states the result; three
|
|
56
|
+
figures at display size with a short title and a line each; the source's
|
|
57
|
+
limits in small type at the foot.
|
|
58
|
+
10. **Stage columns** - three numbered columns (analyse / build / operate),
|
|
59
|
+
each a title, a question and its measures, separated by hairlines.
|
|
60
|
+
11. **Invitation** - a large headline and one drawing on the left; a muted
|
|
61
|
+
kicker and three ruled sections (who to invite, what to share, what you
|
|
62
|
+
get) on the right.
|
|
63
|
+
12. **Photo end card** - a full-bleed photograph under a scrim, the mark
|
|
64
|
+
top left, the contact bottom left. No ask - that was the slide before.
|
|
65
|
+
|
|
66
|
+
What makes them work together: one master, one type voice, hairlines
|
|
67
|
+
instead of boxes, an accent that appears once per slide, imagery that could
|
|
68
|
+
only belong to this client - and each composition chosen for its message.
|
|
69
|
+
|
|
70
|
+
## The atlas, by job
|
|
71
|
+
|
|
72
|
+
A wider vocabulary. Each is a starting point - change it until it fits.
|
|
70
73
|
|
|
71
74
|
**Parallel points**
|
|
72
|
-
- **cards** -
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
- **
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
numbered variant carries ghost numerals for ordered reasons. Budget: item ≤2
|
|
82
|
-
lines at 24px. Anchor: the list.
|
|
83
|
-
- **split** - argument left (1-3 short paragraphs, optional `sl-support`
|
|
84
|
-
sub-head), ONE visual right (metric, card, image, chart). The workhorse of
|
|
85
|
-
analytical slides. Anchor: the visual.
|
|
86
|
-
- **insight + evidence** - one large insight left (≤30 words, `sl-support`),
|
|
87
|
-
3-4 evidence items right (one-line title + one line). Anchor: the insight.
|
|
75
|
+
- **cards** - a few equal items (label · title · line); one may be accented
|
|
76
|
+
as the recommended option.
|
|
77
|
+
- **spectrum** - narrow items low to high, left to right: maturity, a scale.
|
|
78
|
+
- **columns** - parallel headers with descriptions, an optional strip of
|
|
79
|
+
figures beneath.
|
|
80
|
+
- **stacked list** - the argument on the left, an ordered list on the right,
|
|
81
|
+
large ghost numerals for order.
|
|
82
|
+
- **insight + evidence** - one large insight on the left, three or four
|
|
83
|
+
short proofs on the right.
|
|
88
84
|
|
|
89
85
|
**Proof**
|
|
90
|
-
- **metric** - one
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
- **
|
|
94
|
-
|
|
95
|
-
- **
|
|
96
|
-
|
|
97
|
-
- **table** - header row with a rule under it, zebra rows, numbers right-aligned,
|
|
98
|
-
units in the header. Budget at 24px: ≤5 columns × ≤6 rows, header ≤15 chars,
|
|
99
|
-
cell ≤14; more than that is two slides or a chart.
|
|
100
|
-
- **mini grid** - N×M small value + label cells with hairline dividers, for a
|
|
101
|
-
dashboard glance. Budget: ≤12 cells (4×3).
|
|
102
|
-
- **takeaway bar** (modifier) - a full-width dark bar at the foot with the
|
|
103
|
-
so-what, centred, no trailing full stop, ≤12 words. Never a paraphrase of the
|
|
104
|
-
assertion - a different angle or nothing.
|
|
86
|
+
- **metric** - one figure at display size, a label, a line of context.
|
|
87
|
+
- **stat row** - three or four figures across, a label under each.
|
|
88
|
+
- **trajectory** - from → to pairs ("$100k → $480k MRR").
|
|
89
|
+
- **table** - a header rule, quiet rows, numbers right-aligned, units in the
|
|
90
|
+
header. Past a handful of rows it wants to be a chart or two slides.
|
|
91
|
+
- **takeaway bar** - a full-width band at the foot carrying the so-what -
|
|
92
|
+
a different angle from the headline, never a paraphrase.
|
|
105
93
|
|
|
106
94
|
**Contrast**
|
|
107
|
-
- **before / after** -
|
|
108
|
-
- **scenarios** - bear / base / bull columns over
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
**Process** (the subject, never the
|
|
112
|
-
- **flow** -
|
|
113
|
-
|
|
114
|
-
- **
|
|
115
|
-
|
|
116
|
-
- **
|
|
117
|
-
|
|
118
|
-
- **swim lanes** - lanes (rows) × stages (columns) with mini-cards at the
|
|
119
|
-
intersections: hand-offs, RACI, cross-functional flow. Budget: ≤4 lanes × ≤5
|
|
120
|
-
columns, card ≤8 words.
|
|
121
|
-
- **funnel** - 3-8 narrowing tiers, the drop-off stated. Budget: label + one
|
|
122
|
-
line ≤5 tiers; labels only at 6-8.
|
|
95
|
+
- **before / after** - two sides, the "after" accented.
|
|
96
|
+
- **scenarios** - bear / base / bull columns over the same metrics, the
|
|
97
|
+
recommended one highlighted.
|
|
98
|
+
|
|
99
|
+
**Process** (the subject of the slide, never how the deck was made)
|
|
100
|
+
- **flow** - steps with forward arrows.
|
|
101
|
+
- **cycle** - nodes around a centre.
|
|
102
|
+
- **loop** - a flow with the failure path drawn back across it.
|
|
103
|
+
- **chain** - primary chevrons with the enabling activities as bars beneath.
|
|
104
|
+
- **swim lanes** - lanes × stages, small cards at the intersections.
|
|
105
|
+
- **funnel** - narrowing tiers with the drop-off stated.
|
|
123
106
|
|
|
124
107
|
**Time**
|
|
125
|
-
- **
|
|
126
|
-
|
|
127
|
-
- **
|
|
128
|
-
above and below the spine when they crowd.
|
|
108
|
+
- **timeline** - a horizontal spine with dated beats above and below.
|
|
109
|
+
- **roadmap phases** - phases with their contents.
|
|
110
|
+
- **schedule** - sections × time, task bars, milestone diamonds.
|
|
129
111
|
|
|
130
112
|
**Structure and position**
|
|
131
|
-
- **layers** -
|
|
132
|
-
|
|
133
|
-
- **
|
|
134
|
-
- **
|
|
135
|
-
- **
|
|
136
|
-
- **
|
|
137
|
-
|
|
138
|
-
- **
|
|
139
|
-
valuation range, benchmarks. Budget: ≤6 ticks.
|
|
140
|
-
- **capability matrix** - competitors × capabilities with empty / half / full
|
|
141
|
-
circles (CSS), us in the first column. Budget: ≤6 × ≤7.
|
|
113
|
+
- **layers** - stacked horizontal layers, the foundation darkest.
|
|
114
|
+
- **org** - boxes and connectors, two levels.
|
|
115
|
+
- **venn** - two or three circles with a named overlap.
|
|
116
|
+
- **concentric** - TAM / SAM / SOM rings.
|
|
117
|
+
- **pyramid** - tiers for priority (volume is a funnel).
|
|
118
|
+
- **matrix** - a 2×2 positioning with plotted items.
|
|
119
|
+
- **number line** - ticks with one highlighted range.
|
|
120
|
+
- **capability matrix** - competitors × capabilities, empty / half / full marks.
|
|
142
121
|
|
|
143
122
|
**Status**
|
|
144
|
-
- **scorecard** - rows with a red / amber / green
|
|
145
|
-
- **heat map** - rows × columns of
|
|
146
|
-
|
|
147
|
-
- **tracker** - initiative · owner · phase · next milestone; or decision · owner ·
|
|
148
|
-
date · status. Budget: ≤6 rows, owners as initials badges.
|
|
123
|
+
- **scorecard** - rows with a red / amber / green mark and a one-line note.
|
|
124
|
+
- **heat map** - rows × columns of status cells, with a legend.
|
|
125
|
+
- **tracker** - initiative · owner · phase · next milestone.
|
|
149
126
|
|
|
150
127
|
**People and voice**
|
|
151
|
-
- **
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
- **
|
|
155
|
-
|
|
156
|
-
- **manifesto** - a single large claim in `sl-support` or `sl-display`, one
|
|
157
|
-
accent-coloured phrase, an attribution line. Budget: ≤20 words. Anchor: the
|
|
158
|
-
accent phrase.
|
|
128
|
+
- **quote** - the words and the person, nothing else.
|
|
129
|
+
- **testimonials** - a few attributed quotes with initials and company.
|
|
130
|
+
- **team** - people with name, role, a short bio when there are few.
|
|
131
|
+
- **manifesto** - one large claim with one accented phrase.
|
|
132
|
+
- **wall** - logos or faces in a grid, no captions.
|
|
159
133
|
|
|
160
134
|
**Images**
|
|
161
|
-
- **
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
## Budgets that keep type at design size
|
|
168
|
-
|
|
169
|
-
| Element | Cap |
|
|
170
|
-
|---|---|
|
|
171
|
-
| card kicker · hero · body | 20 · 30 · 120 chars (bodies only at ≤3 cards) |
|
|
172
|
-
| narrow (spectrum) card | 8 · 15 · 40 chars |
|
|
173
|
-
| metric value · label · sub | 8 · 20 · 30 chars |
|
|
174
|
-
| table header · cell | 15 · 14 chars, ≤5 × ≤6 |
|
|
175
|
-
| flow / cycle label · body | 15 · 40 chars |
|
|
176
|
-
| timeline date · title · body | 8 · 20 · 20 chars |
|
|
177
|
-
| quote | 30 words; testimonial 25 (≤4) / 15 (5-6); quote-wall 15 |
|
|
178
|
-
| bio | 30 words at ≤4 people; name 15 chars, role 22 |
|
|
179
|
-
| takeaway bar | 12 words, one line |
|
|
180
|
-
| body paragraphs | 3-5 short paragraphs, ~600 chars total |
|
|
181
|
-
|
|
182
|
-
A breach is a different recipe or a split. Type never shrinks to fit - the review
|
|
183
|
-
gate reads shrunk type as the tell it is.
|
|
135
|
+
- **full-bleed** - the image to every edge, a scrim, a short headline.
|
|
136
|
+
- **half-bleed** - copy on one side, the image bleeding off the other.
|
|
137
|
+
- **framed source** - a real screenshot, report page or product shot on one
|
|
138
|
+
side, the text saying what it shows on the other. Never redraw a source
|
|
139
|
+
chart as a fake: rebuild it as a `Chart` from its data, or show the real
|
|
140
|
+
render.
|
|
184
141
|
|
|
185
142
|
## Rebuilding an existing deck
|
|
186
143
|
|
|
@@ -188,43 +145,40 @@ When the human hands you a finished deck to rebuild on the canvas, ask which
|
|
|
188
145
|
mode - and default to faithful:
|
|
189
146
|
|
|
190
147
|
- **Faithful** - their order, their words, exactly. You may normalise
|
|
191
|
-
punctuation
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
| Source shape | Layout |
|
|
148
|
+
punctuation and number formats; you may not change a word. Suggested
|
|
149
|
+
rewrites go in a comment on the frame, never on the slide.
|
|
150
|
+
- **Editorial** (opt-in) - order kept, copy passed through the slides
|
|
151
|
+
guide's words: jargon, hedges and filler out; numbers, names and dates
|
|
152
|
+
verbatim; titles turned into claims where the source supports them.
|
|
153
|
+
|
|
154
|
+
Then map shapes - a companion visual only where the source supplies one; a
|
|
155
|
+
paragraph with no metric, image or chart behind it is a text-led
|
|
156
|
+
composition, and that whitespace is honest:
|
|
157
|
+
|
|
158
|
+
| Source shape | Composition |
|
|
203
159
|
|---|---|
|
|
204
160
|
| a paragraph | split when the source has a companion (metric, image, chart); else text-led |
|
|
205
|
-
| 3 bullets | cards |
|
|
161
|
+
| 3 bullets | cards or columns |
|
|
206
162
|
| 4-6 bullets | stacked list (numbered if ordered) |
|
|
207
|
-
| up to 4 numbers |
|
|
163
|
+
| up to 4 numbers | stat row or metric grid |
|
|
208
164
|
| a quote | quote |
|
|
209
|
-
| a table | table
|
|
165
|
+
| a table | table, or two slides when it is long |
|
|
210
166
|
| a chart with its data | `Chart` from the data |
|
|
211
|
-
| an image, chart, schedule
|
|
167
|
+
| an image, chart, schedule or diagram you cannot rebuild losslessly | framed source |
|
|
212
168
|
|
|
213
169
|
## Charts and diagrams - the extra mile
|
|
214
170
|
|
|
215
|
-
- **Decision flows**: boil choices to yes / no, quantify the branches (%,
|
|
216
|
-
so the eye follows the path that matters, hang customer quotes on
|
|
217
|
-
they support.
|
|
218
|
-
- **Waterfalls** beat tables for build-ups and breakdowns: left to right in
|
|
219
|
-
logical order, the one or two bars that matter highlighted, a few
|
|
220
|
-
pre-empt the room's questions.
|
|
221
|
-
- **When a slide must be complex**: large visual cues
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
- **Aggregate.** The chart is not the model.
|
|
225
|
-
detail
|
|
226
|
-
- **Formatting**: label bars directly and drop the value axis when the chart
|
|
227
|
-
simple
|
|
228
|
-
|
|
229
|
-
next); same hue = same thing on every slide; charts aligned to the grid and to
|
|
230
|
-
each other across slides.
|
|
171
|
+
- **Decision flows**: boil choices to yes / no, quantify the branches (%,
|
|
172
|
+
volumes) so the eye follows the path that matters, hang customer quotes on
|
|
173
|
+
the node they support.
|
|
174
|
+
- **Waterfalls** beat tables for build-ups and breakdowns: left to right in
|
|
175
|
+
the logical order, the one or two bars that matter highlighted, a few
|
|
176
|
+
callouts that pre-empt the room's questions.
|
|
177
|
+
- **When a slide must be complex**: large visual cues on the point, grouping
|
|
178
|
+
and colour that steer the reading, and the voiceover ON the page - the
|
|
179
|
+
slide must make sense with no presenter.
|
|
180
|
+
- **Aggregate.** The chart is not the model. A single series is fine.
|
|
181
|
+
Overlay detail on the base chart instead of adding a second chart.
|
|
182
|
+
- **Formatting**: label bars directly and drop the value axis when the chart
|
|
183
|
+
is simple; growth rates visible; one label size across the deck; series in
|
|
184
|
+
logical order; the same hue means the same thing on every slide.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Deck story - the argument before the slides
|
|
2
2
|
|
|
3
|
-
The slides
|
|
4
|
-
depth behind steps
|
|
3
|
+
The slides guide (instructions/slides.md) gives the method. This file is the
|
|
4
|
+
depth behind its first steps: how to find the answer, shape the argument, calibrate it to
|
|
5
5
|
the room, and write words that carry it. Pull it when the material is thin or
|
|
6
6
|
rich, the audience is senior, or the first slide list reads like a table of
|
|
7
7
|
contents.
|
|
@@ -91,9 +91,9 @@ proposed in the frame's comment - that is writing, not invention.
|
|
|
91
91
|
("Decide fast", "See everything"), and use it identically everywhere it applies.
|
|
92
92
|
- **Mine the material for specifics** and keep them verbatim: "19 of 25 operators"
|
|
93
93
|
beats "most operators"; "$100k to $480k MRR" (from X to Y) beats "grew strongly".
|
|
94
|
-
- **
|
|
95
|
-
|
|
96
|
-
the
|
|
94
|
+
- **Headlines fit their composition.** A headline that runs to three or four
|
|
95
|
+
lines usually holds two ideas - compress the phrasing, keep the claim, and
|
|
96
|
+
check the render: where the line breaks is part of the design.
|
|
97
97
|
- **Paragraphs over bullets for narrative.** 15-30 words, one to three per block.
|
|
98
98
|
Bullets are for parallel lists and action items; a bullet with "and" is two.
|
|
99
99
|
- **Tone follows the energy.** Urgent: "Double down now or miss the target."
|
|
@@ -102,7 +102,7 @@ proposed in the frame's comment - that is writing, not invention.
|
|
|
102
102
|
- **Voice follows the deck type.** Strategy commits to positions. A pitch is warm
|
|
103
103
|
and aspirational. A case study attributes results to named actions. A status
|
|
104
104
|
update is crisp - state, delta, next.
|
|
105
|
-
- **Kill list, extended.** Beyond the
|
|
105
|
+
- **Kill list, extended.** Beyond the guide's: "utilize", "unlock", "harness",
|
|
106
106
|
"empower", "seamless", "delve", "unleash", "synergize", "operationalize",
|
|
107
107
|
"cutting-edge", "best-in-class", "at the end of the day", "in terms of".
|
|
108
108
|
- **The ask closes.** Decision, owner, date: "Approve $200k for Q3 retention by
|