skilldrop-cli 1.1.3 → 1.2.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/catalogue.json +7 -8
- package/model-routing.json +0 -16
- package/package.json +1 -1
- package/packs/ai-engineering/skills/ai-usage-report/examples/weekly-engineering-team.md +1 -1
- package/packs/ai-engineering/skills/ai-usage-report/templates/usage-event-schema.md +2 -2
- package/packs/converters/pack.json +3 -14
- package/packs/converters/skills/file-to-markdown/SKILL.md +28 -11
- package/packs/converters/skills/file-to-markdown/evals/evals.json +30 -0
- package/packs/converters/skills/file-to-markdown/evals/files/5/supplier_agreement_v3.docx +0 -0
- package/packs/converters/skills/file-to-markdown/evals/files/6/numbers.xlsx +0 -0
- package/packs/converters/skills/file-to-markdown/evals/files/6/offsite_q3.pptx +0 -0
- package/packs/converters/skills/file-to-markdown/examples/inputs/acme-brief.docx +0 -0
- package/packs/converters/skills/file-to-markdown/examples/inputs/northwind-roadmap.pptx +0 -0
- package/packs/converters/skills/file-to-markdown/examples/mixed-inputs.md +24 -16
- package/packs/converters/skills/file-to-markdown/manifest.json +2 -3
- package/packs/converters/skills/file-to-markdown/scripts/to_markdown.py +103 -10
- package/packs/converters/skills/md-to-confluence/SKILL.md +2 -2
- package/packs/converters/skills/md-to-confluence/manifest.json +2 -9
- package/packs/converters/skills/md-to-docx/SKILL.md +3 -4
- package/packs/converters/skills/md-to-docx/evals/evals.json +1 -1
- package/packs/converters/skills/md-to-docx/evals/files/1/brand/brand.json +1 -1
- package/packs/converters/skills/md-to-docx/manifest.json +4 -11
- package/packs/converters/skills/md-to-docx/reference.md +1 -1
- package/packs/converters/skills/md-to-docx/scripts/md_to_docx.py +1 -1
- package/packs/converters/skills/md-to-pptx/SKILL.md +3 -5
- package/packs/converters/skills/md-to-pptx/manifest.json +3 -16
- package/packs/converters/skills/md-to-pptx/scripts/md_to_pptx.py +1 -1
- package/packs/converters/skills/md-to-xlsx/SKILL.md +1 -1
- package/packs/converters/skills/md-to-xlsx/manifest.json +2 -2
- package/packs/core/skills/brief-intake/SKILL.md +2 -2
- package/packs/core/skills/brief-intake/manifest.json +2 -2
- package/packs/core/skills/brief-intake/templates/brief-deck.md +3 -3
- package/packs/core/skills/doc-critique/rubrics/deck.md +1 -1
- package/packs/design/pack.json +11 -21
- package/packs/design/skills/brand-kit/SKILL.md +6 -8
- package/packs/design/skills/brand-kit/manifest.json +3 -17
- package/packs/design/skills/brand-kit/templates/brand.json +1 -1
- package/packs/solution-architect/skills/interactive-diagram/SKILL.md +1 -1
- package/packs/solution-architect/skills/interactive-diagram/manifest.json +1 -2
- package/packs/stakeholder-comms/skills/audience-profile/SKILL.md +3 -3
- package/packs/stakeholder-comms/skills/audience-profile/manifest.json +2 -2
- package/packs/stakeholder-comms/skills/audience-profile/reference.md +1 -1
- package/packs/converters/skills/md-to-html/SKILL.md +0 -108
- package/packs/converters/skills/md-to-html/evals/eval_queries.json +0 -34
- package/packs/converters/skills/md-to-html/evals/evals.json +0 -44
- package/packs/converters/skills/md-to-html/evals/files/1/brand/brand.json +0 -80
- package/packs/converters/skills/md-to-html/evals/files/1/brand/logo-white.png +0 -0
- package/packs/converters/skills/md-to-html/evals/files/1/brand/logo.png +0 -0
- package/packs/converters/skills/md-to-html/evals/files/1/brand/mark.png +0 -0
- package/packs/converters/skills/md-to-html/evals/files/1/docs/q3-review.md +0 -35
- package/packs/converters/skills/md-to-html/evals/files/1/img/dashboard.png +0 -0
- package/packs/converters/skills/md-to-html/evals/files/2/brand.json +0 -13
- package/packs/converters/skills/md-to-html/evals/files/2/img/kick-net.png +0 -0
- package/packs/converters/skills/md-to-html/evals/files/2/river-survey-guide.md +0 -53
- package/packs/converters/skills/md-to-html/evals/files/3/nanas-lentil-soup.md +0 -21
- package/packs/converters/skills/md-to-html/evals/files/3/pot.png +0 -0
- package/packs/converters/skills/md-to-html/examples/inputs/chart.svg +0 -8
- package/packs/converters/skills/md-to-html/examples/inputs/ops-review.md +0 -48
- package/packs/converters/skills/md-to-html/examples/ops-review.md +0 -83
- package/packs/converters/skills/md-to-html/manifest.json +0 -43
- package/packs/converters/skills/md-to-html/reference.md +0 -70
- package/packs/converters/skills/md-to-html/scripts/md_to_html.py +0 -662
- package/packs/converters/skills/mermaid-render/SKILL.md +0 -117
- package/packs/converters/skills/mermaid-render/evals/eval_queries.json +0 -30
- package/packs/converters/skills/mermaid-render/evals/evals.json +0 -43
- package/packs/converters/skills/mermaid-render/evals/files/1/docs/contoso-orders.md +0 -23
- package/packs/converters/skills/mermaid-render/evals/files/2/dispensing-diagrams.md +0 -39
- package/packs/converters/skills/mermaid-render/examples/broken-diagrams.md +0 -147
- package/packs/converters/skills/mermaid-render/examples/inputs/broken-flowchart.mmd +0 -8
- package/packs/converters/skills/mermaid-render/examples/inputs/broken-sequence.mmd +0 -11
- package/packs/converters/skills/mermaid-render/examples/inputs/checkout-flow.mmd +0 -9
- package/packs/converters/skills/mermaid-render/examples/inputs/design-notes.md +0 -35
- package/packs/converters/skills/mermaid-render/examples/inputs/fixed-flowchart.mmd +0 -9
- package/packs/converters/skills/mermaid-render/examples/inputs/typo.mmd +0 -2
- package/packs/converters/skills/mermaid-render/manifest.json +0 -50
- package/packs/converters/skills/mermaid-render/reference.md +0 -70
- package/packs/converters/skills/mermaid-render/scripts/render_mermaid.py +0 -487
- package/packs/design/skills/deck-builder/SKILL.md +0 -209
- package/packs/design/skills/deck-builder/evals/eval_queries.json +0 -14
- package/packs/design/skills/deck-builder/evals/evals.json +0 -67
- package/packs/design/skills/deck-builder/evals/files/4/ashby-vale-board-notes.md +0 -36
- package/packs/design/skills/deck-builder/examples/exec-board-update.md +0 -108
- package/packs/design/skills/deck-builder/examples/templated-brand-deck.md +0 -148
- package/packs/design/skills/deck-builder/manifest.json +0 -18
- package/packs/design/skills/deck-builder/reference.md +0 -180
- package/packs/design/skills/deck-builder/requirements.txt +0 -3
- package/packs/design/skills/deck-builder/scripts/build_deck.py +0 -1144
- package/packs/design/skills/deck-builder/templates/deck-spec.json +0 -168
- package/packs/design/skills/deck-builder/templates/palettes.json +0 -59
- package/packs/design/skills/marketing-flyer/SKILL.md +0 -113
- package/packs/design/skills/marketing-flyer/evals/eval_queries.json +0 -30
- package/packs/design/skills/marketing-flyer/evals/evals.json +0 -45
- package/packs/design/skills/marketing-flyer/evals/files/1/brand/brand.json +0 -80
- package/packs/design/skills/marketing-flyer/evals/files/1/brand/logo-white.png +0 -0
- package/packs/design/skills/marketing-flyer/evals/files/1/brand/logo.png +0 -0
- package/packs/design/skills/marketing-flyer/evals/files/1/brand/mark.png +0 -0
- package/packs/design/skills/marketing-flyer/evals/files/2/brand.json +0 -14
- package/packs/design/skills/marketing-flyer/evals/files/2/larchfield-logo.svg +0 -4
- package/packs/design/skills/marketing-flyer/evals/files/2/manager-email.txt +0 -6
- package/packs/design/skills/marketing-flyer/evals/files/2/open-day-brief.md +0 -15
- package/packs/design/skills/marketing-flyer/examples/community-health-fair.md +0 -68
- package/packs/design/skills/marketing-flyer/manifest.json +0 -40
- package/packs/design/skills/marketing-flyer/reference.md +0 -54
- package/packs/design/skills/marketing-flyer/scripts/build_flyer.py +0 -332
- package/packs/design/skills/marketing-flyer/templates/flyer-spec.json +0 -26
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
# deck-builder — design reference
|
|
2
|
-
|
|
3
|
-
## Color palette principles
|
|
4
|
-
|
|
5
|
-
A presentation palette needs five roles. If the user gives you fewer than five colors, derive the missing ones following these rules:
|
|
6
|
-
|
|
7
|
-
| Role | Where it's used | Picking rule |
|
|
8
|
-
|---|---|---|
|
|
9
|
-
| **primary** | Title bars, section dividers, big-number captions | The user's brand colour, or the dominant colour in their material |
|
|
10
|
-
| **secondary** | Sparingly — second-tier emphasis, alt charts | Analogous or complementary to primary; ~30° apart on the wheel |
|
|
11
|
-
| **accent** | Highlight bars, the actual big numbers, quote bars | High-saturation pop colour; should NOT match background or primary |
|
|
12
|
-
| **background** | Slide background | Near-white (#FFFFFF or #F8F9FA) for most decks; near-black for dark-mode decks |
|
|
13
|
-
| **text** | Body text, bullet text | ≥ 4.5:1 contrast against background. Default `#222222` on white, `#EAEAEA` on dark |
|
|
14
|
-
|
|
15
|
-
### Hard rules
|
|
16
|
-
|
|
17
|
-
- **Contrast ≥ 4.5:1** between text and background (WCAG AA). If the user-supplied palette fails this, *substitute* and explain — don't ship an unreadable deck.
|
|
18
|
-
- **Never put primary text on primary background** — use white-on-primary or vice versa for title bars/section slides.
|
|
19
|
-
- **Accent appears on ≤ 20% of slides.** It's a pop colour, not a body colour.
|
|
20
|
-
|
|
21
|
-
### Preset palettes
|
|
22
|
-
|
|
23
|
-
These are bundled in [`templates/palettes.json`](templates/palettes.json) and selectable by name:
|
|
24
|
-
|
|
25
|
-
| Name | When to use |
|
|
26
|
-
|---|---|
|
|
27
|
-
| `corporate-blue` | Default for B2B / enterprise audiences when no brand colour is given |
|
|
28
|
-
| `monochrome` | When the deck needs to feel restrained / when content is sensitive |
|
|
29
|
-
| `vibrant` | Internal / sales / pitch decks — energetic |
|
|
30
|
-
| `dark-mode` | Engineering audiences who prefer dark, or for live demos |
|
|
31
|
-
| `editorial` | Long-form / read-ahead decks with lots of text |
|
|
32
|
-
| `forest` | Calm, nature-leaning — sustainability, long-horizon programmes |
|
|
33
|
-
| `sunset` | Warm, narrative-leaning — story-first sales and internal decks |
|
|
34
|
-
|
|
35
|
-
## Layout → content matching
|
|
36
|
-
|
|
37
|
-
The biggest deck-design mistake is "everything is a bulleted content slide". Use this mapping to pick the right layout for the content:
|
|
38
|
-
|
|
39
|
-
| Content shape | Right layout | Wrong layout |
|
|
40
|
-
|---|---|---|
|
|
41
|
-
| One key takeaway you want to land | `big_number` | `content` (gets lost in bullets) |
|
|
42
|
-
| A list of 2–6 related points | `content` | `two_column` (over-engineered) |
|
|
43
|
-
| A comparison (us vs. them, before vs. after) | `two_column` | `content` with sub-bullets |
|
|
44
|
-
| A pithy customer / SME quote | `quote` | `content` ("Customer says…") |
|
|
45
|
-
| 3+ comparable figures over time or category | `chart` | `content` with numbers in bullets |
|
|
46
|
-
| Row-and-column data, ≤ 12 rows | `table` | `two_column` faked with aligned bullets |
|
|
47
|
-
| An architecture / flow / screenshot | `image` | describing the diagram in prose |
|
|
48
|
-
| A topic break / new section | `section` | another title slide |
|
|
49
|
-
| First slide | `title` | jumping straight into `content` |
|
|
50
|
-
| Final slide with The Ask | `closing` | `content` titled "Thank you" |
|
|
51
|
-
|
|
52
|
-
## Per-audience density rules
|
|
53
|
-
|
|
54
|
-
How many bullets a slide can carry without falling apart, by audience:
|
|
55
|
-
|
|
56
|
-
| Audience | Bullets / slide | Words / bullet | Slide-title style |
|
|
57
|
-
|---|---|---|---|
|
|
58
|
-
| `exec` | 3 max | ≤ 8 | Assertion ("Postgres meets latency target") |
|
|
59
|
-
| `board` | 3 max | ≤ 6 | Outcome ("$24M ARR protected by Q3") |
|
|
60
|
-
| `technical` | 5–6 | ≤ 14 | Descriptive ok ("Migration approach") |
|
|
61
|
-
| `sales` | 3–4 | ≤ 10 | Benefit-led ("Cut close time by 40%") |
|
|
62
|
-
| `internal` | 4–5 | ≤ 12 | Topic ok ("Q3 priorities") |
|
|
63
|
-
| `investor` | 3–4 | ≤ 10 | Assertion + number where possible |
|
|
64
|
-
| `partner` | 3–4 | ≤ 10 | Mutual benefit ("Joint customers see X") |
|
|
65
|
-
| `customer` | 3–4 | ≤ 12 | Outcome for them ("You'll save…") |
|
|
66
|
-
|
|
67
|
-
## Slide-count budgets
|
|
68
|
-
|
|
69
|
-
| Audience / format | Slide count target | Hard upper bound |
|
|
70
|
-
|---|---|---|
|
|
71
|
-
| `exec` quick update (5 min) | 5 | 8 |
|
|
72
|
-
| `exec` decision review (15 min) | 8–10 | 12 |
|
|
73
|
-
| `board` quarterly (20 min) | 10 | 15 |
|
|
74
|
-
| `technical` design review (30 min) | 12–15 | 20 |
|
|
75
|
-
| `sales` first pitch (15 min) | 8 | 12 |
|
|
76
|
-
| `investor` Series-style | 10–12 | 15 |
|
|
77
|
-
| `internal` team alignment | 5–8 | 10 |
|
|
78
|
-
|
|
79
|
-
If the user's content can't fit in the upper bound, *say so* — recommend splitting into two decks rather than cramming.
|
|
80
|
-
|
|
81
|
-
## Speaker notes patterns
|
|
82
|
-
|
|
83
|
-
Every slide should have notes. The pattern that works:
|
|
84
|
-
|
|
85
|
-
1. **Hook sentence** — what the presenter opens with on this slide.
|
|
86
|
-
2. **Key emphasis** — which bullet/number to dwell on.
|
|
87
|
-
3. **Transition** — one sentence that flows into the next slide.
|
|
88
|
-
|
|
89
|
-
Speaker notes should be *what's not on the slide*, not a redundant copy.
|
|
90
|
-
|
|
91
|
-
## Common gotchas
|
|
92
|
-
|
|
93
|
-
- **Don't centre body text.** Centred bullets are harder to scan. Reserve centring for `big_number`, `quote`, and `title`/`closing` slides.
|
|
94
|
-
- **Don't underline links** — coloured-and-bold is the modern convention.
|
|
95
|
-
- **Don't use both italic and bold** in the same sentence for emphasis.
|
|
96
|
-
- **Don't mix serif and sans-serif** unless you really know what you're doing.
|
|
97
|
-
- **Slide numbers** — include them for decks > 10 slides; omit for short decks.
|
|
98
|
-
|
|
99
|
-
## Brand templates
|
|
100
|
-
|
|
101
|
-
A template is inherited, not imitated: `template` points the build at a `.pptx` or `.potx`, and
|
|
102
|
-
the deck is generated on that file's masters, theme fonts, theme colours, logos and slide size.
|
|
103
|
-
Sample slides shipped inside the template are dropped; its layouts are kept.
|
|
104
|
-
|
|
105
|
-
### The layout map
|
|
106
|
-
|
|
107
|
-
`layout_map` binds each logical layout to one of the template's layout names (or its index).
|
|
108
|
-
Discover them with `--list-layouts`. Matching is exact name first, then case-insensitive, then
|
|
109
|
-
substring — so `"content": "Title and Content"` and `"content": "title and content"` both hit.
|
|
110
|
-
|
|
111
|
-
| Logical layout | What to map it to | If unmapped |
|
|
112
|
-
|---|---|---|
|
|
113
|
-
| `title` | The template's title/cover layout | Built-in cover — **loses the brand**, always map it |
|
|
114
|
-
| `section` | Section header / divider | Built-in divider — always map it |
|
|
115
|
-
| `content` | Title and content / title and bullets | Built-in — always map it |
|
|
116
|
-
| `two_column` | Two content / comparison | Built-in two-column; acceptable |
|
|
117
|
-
| `closing` | Closing / thank-you / title-only | Built-in — always map it |
|
|
118
|
-
| `image` | Picture with caption (best), else title-only | Image drawn into the content area |
|
|
119
|
-
| `big_number`, `quote`, `table`, `chart` | Title-only | Drawn into the claimed content area; fine |
|
|
120
|
-
|
|
121
|
-
Placeholders are filled, not replaced — the run keeps the template's font, so the deck inherits
|
|
122
|
-
the brand's typography instead of Calibri. Placeholders left unfilled are deleted, so no
|
|
123
|
-
"Click to add text" ghosts survive. For `big_number`, `quote`, `table`, `chart` and `image`, the
|
|
124
|
-
largest empty body (or picture) placeholder is claimed for its rectangle and removed, so custom
|
|
125
|
-
content lands where the template intended content to go.
|
|
126
|
-
|
|
127
|
-
### Template gotchas
|
|
128
|
-
|
|
129
|
-
- **Slide size comes from the template.** `aspect` is ignored, with a warning. A 4:3 corporate
|
|
130
|
-
master produces a 4:3 deck — tell the user rather than silently letting it look cramped.
|
|
131
|
-
- **Charts and tables are drawn, not templated.** They take palette colours, not theme colours.
|
|
132
|
-
Supply brand hexes alongside the template so they match.
|
|
133
|
-
- **Slide numbers:** if the template's master already stamps them, the script does not add its
|
|
134
|
-
own.
|
|
135
|
-
- **A template that fails to open** is a hard error, never a silent fall-back to the built-in
|
|
136
|
-
design — a deck that quietly lost its branding is worse than a failed build.
|
|
137
|
-
|
|
138
|
-
## Charts
|
|
139
|
-
|
|
140
|
-
`chart` types: `column`, `bar`, `line`, `stacked_column`, `stacked_bar`, `pie`, `doughnut`.
|
|
141
|
-
|
|
142
|
-
| Question the slide answers | Type |
|
|
143
|
-
|---|---|
|
|
144
|
-
| How does this compare across categories? | `column` (≤ 7 categories) or `bar` (longer labels) |
|
|
145
|
-
| How has this moved over time? | `line` |
|
|
146
|
-
| What is the mix of a whole? | `pie`, and only with ≤ 5 slices |
|
|
147
|
-
| How does the mix change across categories? | `stacked_column` |
|
|
148
|
-
|
|
149
|
-
### Hard rules
|
|
150
|
-
|
|
151
|
-
- **Every chart carries a `takeaway`** — the sentence the audience should leave with, above the
|
|
152
|
-
plot. A chart without one makes the audience do the analysis live.
|
|
153
|
-
- **Every chart carries a `source`.** No source means the number is unverifiable, which on a
|
|
154
|
-
board deck means it is indefensible.
|
|
155
|
-
- **Never chart invented numbers.** If the user supplied three figures, chart three figures.
|
|
156
|
-
A forecast is labelled a forecast, in the series name.
|
|
157
|
-
- **`null` is the right value for a gap.** Padding a short series with zeroes draws a cliff that
|
|
158
|
-
didn't happen.
|
|
159
|
-
- **Pie charts cap at 5 slices.** More than that, use `bar` sorted descending.
|
|
160
|
-
- **One chart per slide.** Two charts is two slides, or a `two_column` with the takeaway split.
|
|
161
|
-
|
|
162
|
-
## Tables
|
|
163
|
-
|
|
164
|
-
- **≤ 12 data rows.** Past that it belongs in the appendix or an attached spreadsheet.
|
|
165
|
-
- **≤ 5 columns** at 16:9, ≤ 4 at 4:3. Wider than that and the font drops below readable.
|
|
166
|
-
- **Put the column the audience cares about last or first**, never buried in the middle.
|
|
167
|
-
- **Cells are values, not sentences.** A table cell running to two lines means the content is
|
|
168
|
-
prose and wants a `content` slide.
|
|
169
|
-
- Font size auto-shrinks past 7 and past 10 rows; header row takes `primary`, body rows zebra
|
|
170
|
-
against `#F2F4F8`.
|
|
171
|
-
|
|
172
|
-
## Images
|
|
173
|
-
|
|
174
|
-
- **Raster only.** `python-pptx` reads PNG/JPG/GIF/BMP/TIFF. SVG, EMF and PDF raise on import —
|
|
175
|
-
export to PNG at 2× the slide size before building.
|
|
176
|
-
- **Relative paths resolve against the spec file**, not the working directory.
|
|
177
|
-
- `position: "left"` / `"right"` pairs the image with bullets on the other half;
|
|
178
|
-
`"full"` (default) gives it the whole content area.
|
|
179
|
-
- A missing or unreadable image draws a bordered placeholder box naming the file, and warns.
|
|
180
|
-
That box is a build artefact, never a deliverable — resolve it before the deck is presented.
|