skilldrop-cli 1.1.3 → 1.3.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.
Files changed (142) hide show
  1. package/README.md +1 -1
  2. package/catalogue.json +7 -8
  3. package/model-routing.json +0 -16
  4. package/package.json +1 -1
  5. package/packs/ai-engineering/loops/adopt/LOOP.md +120 -0
  6. package/packs/ai-engineering/loops/adopt/evals/eval_queries.json +10 -0
  7. package/packs/ai-engineering/loops/adopt/evals/evals.json +69 -0
  8. package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/ai-ideas.md +15 -0
  9. package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/org-context.md +27 -0
  10. package/packs/ai-engineering/loops/adopt/evals/files/adopt-first-wave-to-sign-off/staff-survey.csv +11 -0
  11. package/packs/ai-engineering/loops/adopt/evals/files/adopt-sponsor-slice-blocked-by-client-data/ai-ideas.md +13 -0
  12. package/packs/ai-engineering/loops/adopt/evals/files/adopt-sponsor-slice-blocked-by-client-data/firm-context.md +23 -0
  13. package/packs/ai-engineering/loops/adopt/loop.json +53 -0
  14. package/packs/ai-engineering/loops/ship-agent/LOOP.md +128 -0
  15. package/packs/ai-engineering/loops/ship-agent/evals/eval_queries.json +10 -0
  16. package/packs/ai-engineering/loops/ship-agent/evals/evals.json +70 -0
  17. package/packs/ai-engineering/loops/ship-agent/evals/files/ship-agent-auto-reply-exfil-open/agent-brief.md +33 -0
  18. package/packs/ai-engineering/loops/ship-agent/evals/files/ship-agent-changelog-config-reopens-path/agent-brief.md +33 -0
  19. package/packs/ai-engineering/loops/ship-agent/evals/files/ship-agent-changelog-config-reopens-path/claude-settings.json +25 -0
  20. package/packs/ai-engineering/loops/ship-agent/evals/files/ship-agent-changelog-config-reopens-path/sample-merged-prs.md +30 -0
  21. package/packs/ai-engineering/loops/ship-agent/loop.json +53 -0
  22. package/packs/ai-engineering/skills/ai-usage-report/examples/weekly-engineering-team.md +1 -1
  23. package/packs/ai-engineering/skills/ai-usage-report/templates/usage-event-schema.md +2 -2
  24. package/packs/converters/pack.json +3 -14
  25. package/packs/converters/skills/file-to-markdown/SKILL.md +28 -11
  26. package/packs/converters/skills/file-to-markdown/evals/evals.json +30 -0
  27. package/packs/converters/skills/file-to-markdown/evals/files/5/supplier_agreement_v3.docx +0 -0
  28. package/packs/converters/skills/file-to-markdown/evals/files/6/numbers.xlsx +0 -0
  29. package/packs/converters/skills/file-to-markdown/evals/files/6/offsite_q3.pptx +0 -0
  30. package/packs/converters/skills/file-to-markdown/examples/inputs/acme-brief.docx +0 -0
  31. package/packs/converters/skills/file-to-markdown/examples/inputs/northwind-roadmap.pptx +0 -0
  32. package/packs/converters/skills/file-to-markdown/examples/mixed-inputs.md +24 -16
  33. package/packs/converters/skills/file-to-markdown/manifest.json +2 -3
  34. package/packs/converters/skills/file-to-markdown/scripts/to_markdown.py +103 -10
  35. package/packs/converters/skills/md-to-confluence/SKILL.md +2 -2
  36. package/packs/converters/skills/md-to-confluence/manifest.json +2 -9
  37. package/packs/converters/skills/md-to-docx/SKILL.md +3 -4
  38. package/packs/converters/skills/md-to-docx/evals/evals.json +1 -1
  39. package/packs/converters/skills/md-to-docx/evals/files/1/brand/brand.json +1 -1
  40. package/packs/converters/skills/md-to-docx/manifest.json +4 -11
  41. package/packs/converters/skills/md-to-docx/reference.md +1 -1
  42. package/packs/converters/skills/md-to-docx/scripts/md_to_docx.py +1 -1
  43. package/packs/converters/skills/md-to-pptx/SKILL.md +3 -5
  44. package/packs/converters/skills/md-to-pptx/manifest.json +3 -16
  45. package/packs/converters/skills/md-to-pptx/scripts/md_to_pptx.py +1 -1
  46. package/packs/converters/skills/md-to-xlsx/SKILL.md +1 -1
  47. package/packs/converters/skills/md-to-xlsx/manifest.json +2 -2
  48. package/packs/core/skills/brief-intake/SKILL.md +2 -2
  49. package/packs/core/skills/brief-intake/manifest.json +2 -2
  50. package/packs/core/skills/brief-intake/templates/brief-deck.md +3 -3
  51. package/packs/core/skills/doc-critique/rubrics/deck.md +1 -1
  52. package/packs/design/pack.json +11 -21
  53. package/packs/design/skills/brand-kit/SKILL.md +6 -8
  54. package/packs/design/skills/brand-kit/manifest.json +3 -17
  55. package/packs/design/skills/brand-kit/templates/brand.json +1 -1
  56. package/packs/experience-design/loops/clarify/LOOP.md +114 -0
  57. package/packs/experience-design/loops/clarify/evals/eval_queries.json +10 -0
  58. package/packs/experience-design/loops/clarify/evals/evals.json +68 -0
  59. package/packs/experience-design/loops/clarify/evals/files/clarify-garden-waste-no-complaint-data/form-fields.csv +12 -0
  60. package/packs/experience-design/loops/clarify/evals/files/clarify-garden-waste-no-complaint-data/garden-waste-page.md +29 -0
  61. package/packs/experience-design/loops/clarify/evals/files/clarify-parking-permit-with-call-data/backoffice-notes.md +14 -0
  62. package/packs/experience-design/loops/clarify/evals/files/clarify-parking-permit-with-call-data/calls-q3.csv +8 -0
  63. package/packs/experience-design/loops/clarify/evals/files/clarify-parking-permit-with-call-data/form-fields.csv +12 -0
  64. package/packs/experience-design/loops/clarify/evals/files/clarify-parking-permit-with-call-data/permit-page.md +27 -0
  65. package/packs/experience-design/loops/clarify/loop.json +35 -0
  66. package/packs/infra-as-code/loops/provision/LOOP.md +128 -0
  67. package/packs/infra-as-code/loops/provision/evals/eval_queries.json +9 -0
  68. package/packs/infra-as-code/loops/provision/evals/evals.json +67 -0
  69. package/packs/infra-as-code/loops/provision/evals/files/provision-rds-no-plan-yet/.terraform.lock.hcl.fixture +24 -0
  70. package/packs/infra-as-code/loops/provision/evals/files/provision-rds-no-plan-yet/network.md +36 -0
  71. package/packs/infra-as-code/loops/provision/evals/files/provision-replica-plan-replaces-primary/main.tf +74 -0
  72. package/packs/infra-as-code/loops/provision/evals/files/provision-replica-plan-replaces-primary/plan.json +901 -0
  73. package/packs/infra-as-code/loops/provision/evals/files/provision-replica-plan-replaces-primary/variables.tf +47 -0
  74. package/packs/infra-as-code/loops/provision/loop.json +41 -0
  75. package/packs/solution-architect/skills/interactive-diagram/SKILL.md +1 -1
  76. package/packs/solution-architect/skills/interactive-diagram/manifest.json +1 -2
  77. package/packs/stakeholder-comms/skills/audience-profile/SKILL.md +3 -3
  78. package/packs/stakeholder-comms/skills/audience-profile/manifest.json +2 -2
  79. package/packs/stakeholder-comms/skills/audience-profile/reference.md +1 -1
  80. package/packs/converters/skills/md-to-html/SKILL.md +0 -108
  81. package/packs/converters/skills/md-to-html/evals/eval_queries.json +0 -34
  82. package/packs/converters/skills/md-to-html/evals/evals.json +0 -44
  83. package/packs/converters/skills/md-to-html/evals/files/1/brand/brand.json +0 -80
  84. package/packs/converters/skills/md-to-html/evals/files/1/brand/logo-white.png +0 -0
  85. package/packs/converters/skills/md-to-html/evals/files/1/brand/logo.png +0 -0
  86. package/packs/converters/skills/md-to-html/evals/files/1/brand/mark.png +0 -0
  87. package/packs/converters/skills/md-to-html/evals/files/1/docs/q3-review.md +0 -35
  88. package/packs/converters/skills/md-to-html/evals/files/1/img/dashboard.png +0 -0
  89. package/packs/converters/skills/md-to-html/evals/files/2/brand.json +0 -13
  90. package/packs/converters/skills/md-to-html/evals/files/2/img/kick-net.png +0 -0
  91. package/packs/converters/skills/md-to-html/evals/files/2/river-survey-guide.md +0 -53
  92. package/packs/converters/skills/md-to-html/evals/files/3/nanas-lentil-soup.md +0 -21
  93. package/packs/converters/skills/md-to-html/evals/files/3/pot.png +0 -0
  94. package/packs/converters/skills/md-to-html/examples/inputs/chart.svg +0 -8
  95. package/packs/converters/skills/md-to-html/examples/inputs/ops-review.md +0 -48
  96. package/packs/converters/skills/md-to-html/examples/ops-review.md +0 -83
  97. package/packs/converters/skills/md-to-html/manifest.json +0 -43
  98. package/packs/converters/skills/md-to-html/reference.md +0 -70
  99. package/packs/converters/skills/md-to-html/scripts/md_to_html.py +0 -662
  100. package/packs/converters/skills/mermaid-render/SKILL.md +0 -117
  101. package/packs/converters/skills/mermaid-render/evals/eval_queries.json +0 -30
  102. package/packs/converters/skills/mermaid-render/evals/evals.json +0 -43
  103. package/packs/converters/skills/mermaid-render/evals/files/1/docs/contoso-orders.md +0 -23
  104. package/packs/converters/skills/mermaid-render/evals/files/2/dispensing-diagrams.md +0 -39
  105. package/packs/converters/skills/mermaid-render/examples/broken-diagrams.md +0 -147
  106. package/packs/converters/skills/mermaid-render/examples/inputs/broken-flowchart.mmd +0 -8
  107. package/packs/converters/skills/mermaid-render/examples/inputs/broken-sequence.mmd +0 -11
  108. package/packs/converters/skills/mermaid-render/examples/inputs/checkout-flow.mmd +0 -9
  109. package/packs/converters/skills/mermaid-render/examples/inputs/design-notes.md +0 -35
  110. package/packs/converters/skills/mermaid-render/examples/inputs/fixed-flowchart.mmd +0 -9
  111. package/packs/converters/skills/mermaid-render/examples/inputs/typo.mmd +0 -2
  112. package/packs/converters/skills/mermaid-render/manifest.json +0 -50
  113. package/packs/converters/skills/mermaid-render/reference.md +0 -70
  114. package/packs/converters/skills/mermaid-render/scripts/render_mermaid.py +0 -487
  115. package/packs/design/skills/deck-builder/SKILL.md +0 -209
  116. package/packs/design/skills/deck-builder/evals/eval_queries.json +0 -14
  117. package/packs/design/skills/deck-builder/evals/evals.json +0 -67
  118. package/packs/design/skills/deck-builder/evals/files/4/ashby-vale-board-notes.md +0 -36
  119. package/packs/design/skills/deck-builder/examples/exec-board-update.md +0 -108
  120. package/packs/design/skills/deck-builder/examples/templated-brand-deck.md +0 -148
  121. package/packs/design/skills/deck-builder/manifest.json +0 -18
  122. package/packs/design/skills/deck-builder/reference.md +0 -180
  123. package/packs/design/skills/deck-builder/requirements.txt +0 -3
  124. package/packs/design/skills/deck-builder/scripts/build_deck.py +0 -1144
  125. package/packs/design/skills/deck-builder/templates/deck-spec.json +0 -168
  126. package/packs/design/skills/deck-builder/templates/palettes.json +0 -59
  127. package/packs/design/skills/marketing-flyer/SKILL.md +0 -113
  128. package/packs/design/skills/marketing-flyer/evals/eval_queries.json +0 -30
  129. package/packs/design/skills/marketing-flyer/evals/evals.json +0 -45
  130. package/packs/design/skills/marketing-flyer/evals/files/1/brand/brand.json +0 -80
  131. package/packs/design/skills/marketing-flyer/evals/files/1/brand/logo-white.png +0 -0
  132. package/packs/design/skills/marketing-flyer/evals/files/1/brand/logo.png +0 -0
  133. package/packs/design/skills/marketing-flyer/evals/files/1/brand/mark.png +0 -0
  134. package/packs/design/skills/marketing-flyer/evals/files/2/brand.json +0 -14
  135. package/packs/design/skills/marketing-flyer/evals/files/2/larchfield-logo.svg +0 -4
  136. package/packs/design/skills/marketing-flyer/evals/files/2/manager-email.txt +0 -6
  137. package/packs/design/skills/marketing-flyer/evals/files/2/open-day-brief.md +0 -15
  138. package/packs/design/skills/marketing-flyer/examples/community-health-fair.md +0 -68
  139. package/packs/design/skills/marketing-flyer/manifest.json +0 -40
  140. package/packs/design/skills/marketing-flyer/reference.md +0 -54
  141. package/packs/design/skills/marketing-flyer/scripts/build_flyer.py +0 -332
  142. 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.
@@ -1,3 +0,0 @@
1
- # Pinned, not ranged: an open range lets a future release install itself unreviewed.
2
- # python-pptx 1.0.2 requires Python >= 3.8.
3
- python-pptx==1.0.2