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.
Files changed (105) hide show
  1. package/catalogue.json +7 -8
  2. package/model-routing.json +0 -16
  3. package/package.json +1 -1
  4. package/packs/ai-engineering/skills/ai-usage-report/examples/weekly-engineering-team.md +1 -1
  5. package/packs/ai-engineering/skills/ai-usage-report/templates/usage-event-schema.md +2 -2
  6. package/packs/converters/pack.json +3 -14
  7. package/packs/converters/skills/file-to-markdown/SKILL.md +28 -11
  8. package/packs/converters/skills/file-to-markdown/evals/evals.json +30 -0
  9. package/packs/converters/skills/file-to-markdown/evals/files/5/supplier_agreement_v3.docx +0 -0
  10. package/packs/converters/skills/file-to-markdown/evals/files/6/numbers.xlsx +0 -0
  11. package/packs/converters/skills/file-to-markdown/evals/files/6/offsite_q3.pptx +0 -0
  12. package/packs/converters/skills/file-to-markdown/examples/inputs/acme-brief.docx +0 -0
  13. package/packs/converters/skills/file-to-markdown/examples/inputs/northwind-roadmap.pptx +0 -0
  14. package/packs/converters/skills/file-to-markdown/examples/mixed-inputs.md +24 -16
  15. package/packs/converters/skills/file-to-markdown/manifest.json +2 -3
  16. package/packs/converters/skills/file-to-markdown/scripts/to_markdown.py +103 -10
  17. package/packs/converters/skills/md-to-confluence/SKILL.md +2 -2
  18. package/packs/converters/skills/md-to-confluence/manifest.json +2 -9
  19. package/packs/converters/skills/md-to-docx/SKILL.md +3 -4
  20. package/packs/converters/skills/md-to-docx/evals/evals.json +1 -1
  21. package/packs/converters/skills/md-to-docx/evals/files/1/brand/brand.json +1 -1
  22. package/packs/converters/skills/md-to-docx/manifest.json +4 -11
  23. package/packs/converters/skills/md-to-docx/reference.md +1 -1
  24. package/packs/converters/skills/md-to-docx/scripts/md_to_docx.py +1 -1
  25. package/packs/converters/skills/md-to-pptx/SKILL.md +3 -5
  26. package/packs/converters/skills/md-to-pptx/manifest.json +3 -16
  27. package/packs/converters/skills/md-to-pptx/scripts/md_to_pptx.py +1 -1
  28. package/packs/converters/skills/md-to-xlsx/SKILL.md +1 -1
  29. package/packs/converters/skills/md-to-xlsx/manifest.json +2 -2
  30. package/packs/core/skills/brief-intake/SKILL.md +2 -2
  31. package/packs/core/skills/brief-intake/manifest.json +2 -2
  32. package/packs/core/skills/brief-intake/templates/brief-deck.md +3 -3
  33. package/packs/core/skills/doc-critique/rubrics/deck.md +1 -1
  34. package/packs/design/pack.json +11 -21
  35. package/packs/design/skills/brand-kit/SKILL.md +6 -8
  36. package/packs/design/skills/brand-kit/manifest.json +3 -17
  37. package/packs/design/skills/brand-kit/templates/brand.json +1 -1
  38. package/packs/solution-architect/skills/interactive-diagram/SKILL.md +1 -1
  39. package/packs/solution-architect/skills/interactive-diagram/manifest.json +1 -2
  40. package/packs/stakeholder-comms/skills/audience-profile/SKILL.md +3 -3
  41. package/packs/stakeholder-comms/skills/audience-profile/manifest.json +2 -2
  42. package/packs/stakeholder-comms/skills/audience-profile/reference.md +1 -1
  43. package/packs/converters/skills/md-to-html/SKILL.md +0 -108
  44. package/packs/converters/skills/md-to-html/evals/eval_queries.json +0 -34
  45. package/packs/converters/skills/md-to-html/evals/evals.json +0 -44
  46. package/packs/converters/skills/md-to-html/evals/files/1/brand/brand.json +0 -80
  47. package/packs/converters/skills/md-to-html/evals/files/1/brand/logo-white.png +0 -0
  48. package/packs/converters/skills/md-to-html/evals/files/1/brand/logo.png +0 -0
  49. package/packs/converters/skills/md-to-html/evals/files/1/brand/mark.png +0 -0
  50. package/packs/converters/skills/md-to-html/evals/files/1/docs/q3-review.md +0 -35
  51. package/packs/converters/skills/md-to-html/evals/files/1/img/dashboard.png +0 -0
  52. package/packs/converters/skills/md-to-html/evals/files/2/brand.json +0 -13
  53. package/packs/converters/skills/md-to-html/evals/files/2/img/kick-net.png +0 -0
  54. package/packs/converters/skills/md-to-html/evals/files/2/river-survey-guide.md +0 -53
  55. package/packs/converters/skills/md-to-html/evals/files/3/nanas-lentil-soup.md +0 -21
  56. package/packs/converters/skills/md-to-html/evals/files/3/pot.png +0 -0
  57. package/packs/converters/skills/md-to-html/examples/inputs/chart.svg +0 -8
  58. package/packs/converters/skills/md-to-html/examples/inputs/ops-review.md +0 -48
  59. package/packs/converters/skills/md-to-html/examples/ops-review.md +0 -83
  60. package/packs/converters/skills/md-to-html/manifest.json +0 -43
  61. package/packs/converters/skills/md-to-html/reference.md +0 -70
  62. package/packs/converters/skills/md-to-html/scripts/md_to_html.py +0 -662
  63. package/packs/converters/skills/mermaid-render/SKILL.md +0 -117
  64. package/packs/converters/skills/mermaid-render/evals/eval_queries.json +0 -30
  65. package/packs/converters/skills/mermaid-render/evals/evals.json +0 -43
  66. package/packs/converters/skills/mermaid-render/evals/files/1/docs/contoso-orders.md +0 -23
  67. package/packs/converters/skills/mermaid-render/evals/files/2/dispensing-diagrams.md +0 -39
  68. package/packs/converters/skills/mermaid-render/examples/broken-diagrams.md +0 -147
  69. package/packs/converters/skills/mermaid-render/examples/inputs/broken-flowchart.mmd +0 -8
  70. package/packs/converters/skills/mermaid-render/examples/inputs/broken-sequence.mmd +0 -11
  71. package/packs/converters/skills/mermaid-render/examples/inputs/checkout-flow.mmd +0 -9
  72. package/packs/converters/skills/mermaid-render/examples/inputs/design-notes.md +0 -35
  73. package/packs/converters/skills/mermaid-render/examples/inputs/fixed-flowchart.mmd +0 -9
  74. package/packs/converters/skills/mermaid-render/examples/inputs/typo.mmd +0 -2
  75. package/packs/converters/skills/mermaid-render/manifest.json +0 -50
  76. package/packs/converters/skills/mermaid-render/reference.md +0 -70
  77. package/packs/converters/skills/mermaid-render/scripts/render_mermaid.py +0 -487
  78. package/packs/design/skills/deck-builder/SKILL.md +0 -209
  79. package/packs/design/skills/deck-builder/evals/eval_queries.json +0 -14
  80. package/packs/design/skills/deck-builder/evals/evals.json +0 -67
  81. package/packs/design/skills/deck-builder/evals/files/4/ashby-vale-board-notes.md +0 -36
  82. package/packs/design/skills/deck-builder/examples/exec-board-update.md +0 -108
  83. package/packs/design/skills/deck-builder/examples/templated-brand-deck.md +0 -148
  84. package/packs/design/skills/deck-builder/manifest.json +0 -18
  85. package/packs/design/skills/deck-builder/reference.md +0 -180
  86. package/packs/design/skills/deck-builder/requirements.txt +0 -3
  87. package/packs/design/skills/deck-builder/scripts/build_deck.py +0 -1144
  88. package/packs/design/skills/deck-builder/templates/deck-spec.json +0 -168
  89. package/packs/design/skills/deck-builder/templates/palettes.json +0 -59
  90. package/packs/design/skills/marketing-flyer/SKILL.md +0 -113
  91. package/packs/design/skills/marketing-flyer/evals/eval_queries.json +0 -30
  92. package/packs/design/skills/marketing-flyer/evals/evals.json +0 -45
  93. package/packs/design/skills/marketing-flyer/evals/files/1/brand/brand.json +0 -80
  94. package/packs/design/skills/marketing-flyer/evals/files/1/brand/logo-white.png +0 -0
  95. package/packs/design/skills/marketing-flyer/evals/files/1/brand/logo.png +0 -0
  96. package/packs/design/skills/marketing-flyer/evals/files/1/brand/mark.png +0 -0
  97. package/packs/design/skills/marketing-flyer/evals/files/2/brand.json +0 -14
  98. package/packs/design/skills/marketing-flyer/evals/files/2/larchfield-logo.svg +0 -4
  99. package/packs/design/skills/marketing-flyer/evals/files/2/manager-email.txt +0 -6
  100. package/packs/design/skills/marketing-flyer/evals/files/2/open-day-brief.md +0 -15
  101. package/packs/design/skills/marketing-flyer/examples/community-health-fair.md +0 -68
  102. package/packs/design/skills/marketing-flyer/manifest.json +0 -40
  103. package/packs/design/skills/marketing-flyer/reference.md +0 -54
  104. package/packs/design/skills/marketing-flyer/scripts/build_flyer.py +0 -332
  105. package/packs/design/skills/marketing-flyer/templates/flyer-spec.json +0 -26
@@ -1,83 +0,0 @@
1
- # Example: a quarterly ops review as one HTML file
2
-
3
- **What the user said:** *"Turn `ops-review.md` into something the operations committee can
4
- open from an email and print. Add a contents box."*
5
-
6
- The input is [`inputs/ops-review.md`](inputs/ops-review.md). It has nested and task lists, a
7
- quote, an aligned table, a local SVG chart ([`inputs/chart.svg`](inputs/chart.svg)), a Mermaid
8
- fence, a Python code block, and two things that should not survive as-is: an inline
9
- `<script>` and a pasted `<div>` block. (A `javascript:` link would also be dropped, with a
10
- warning naming it.)
11
-
12
- ## Command
13
-
14
- ```bash
15
- python3 scripts/md_to_html.py examples/inputs/ops-review.md -o ops-review.html --toc
16
- ```
17
-
18
- ## What the script printed (real output)
19
-
20
- ```text
21
- warning: 1 Mermaid diagram(s) kept as text; use --mermaid cdn to draw them (needs network when opened), or render them to SVG with mermaid-render
22
- warning: raw HTML found and shown as text (2 place(s)); this is deliberate, see --allow-html
23
- wrote ops-review.html (6 KB): 5 headings, 1 tables, 1 code blocks, 1 Mermaid, 1 images embedded, 0 remote, 0 missing
24
- ```
25
-
26
- ## The `<main>` of the output (real, base64 shortened)
27
-
28
- ```html
29
- <h1 id="northwind-health-q3-platform-review">Northwind Health: Q3 platform review<a class="anchor" href="#northwind-health-q3-platform-review" aria-hidden="true">#</a></h1>
30
- <nav class="toc" aria-label="Contents"><p>Contents</p><ul><li><a href="#summary">Summary</a></li><li><a href="#numbers">Numbers</a></li><li><a href="#how-a-reminder-is-sent">How a reminder is sent</a></li><li><a href="#notes">Notes</a></li></ul></nav>
31
- <p>Prepared for the <strong>operations committee</strong>. Figures are <em>placeholders</em> for this example.</p>
32
- <h2 id="summary">Summary<a class="anchor" href="#summary" aria-hidden="true">#</a></h2>
33
- <ul>
34
- <li>Uptime held at the target for the quarter</li>
35
- <li>Two incidents, both under 30 minutes
36
- <ul>
37
- <li>INC-101: login latency</li>
38
- <li>INC-102: delayed reminder emails</li>
39
- </ul></li>
40
- <li class="task"><input type="checkbox" disabled checked> Migrate reminders to the new queue</li>
41
- <li class="task"><input type="checkbox" disabled> Retire the old scheduler</li>
42
- </ul>
43
- <blockquote><p>Decision needed: approve the scheduler retirement for October.</p></blockquote>
44
- <h2 id="numbers">Numbers<a class="anchor" href="#numbers" aria-hidden="true">#</a></h2>
45
- <div class="table-wrap"><table><thead><tr><th style="text-align:left">Metric</th><th style="text-align:right">Q2</th><th style="text-align:right">Q3</th><th style="text-align:center">Change</th></tr></thead><tbody><tr><td style="text-align:left">Uptime</td><td style="text-align:right">99.90%</td><td style="text-align:right">99.95%</td><td style="text-align:center">up</td></tr><tr><td style="text-align:left">Incidents</td><td style="text-align:right">4</td><td style="text-align:right">2</td><td style="text-align:center">down</td></tr><tr><td style="text-align:left"><code>p95</code> login (ms)</td><td style="text-align:right">410</td><td style="text-align:right">380</td><td style="text-align:center">down</td></tr></tbody></table></div>
46
- <p><img src="data:image/svg+xml;base64,…" alt="Weekly active members"></p>
47
- <h2 id="how-a-reminder-is-sent">How a reminder is sent<a class="anchor" href="#how-a-reminder-is-sent" aria-hidden="true">#</a></h2>
48
- <pre class="mermaid">flowchart LR
49
- Sched([Scheduler]) --&gt;|enqueue| Q{{Reminder queue}}
50
- Q --&gt; W[Worker]
51
- W --&gt;|SMTP| Mail[(Mail relay)]</pre>
52
- <p>The worker retries with this rule:</p>
53
- <pre><code class="language-python">def backoff(attempt):
54
- return min(2 ** attempt, 300) # seconds, capped at 5 minutes</code></pre>
55
- <h2 id="notes">Notes<a class="anchor" href="#notes" aria-hidden="true">#</a></h2>
56
- <p>Raw HTML is shown as text, not run: &lt;script&gt;alert(&quot;hi&quot;)&lt;/script&gt;</p>
57
- <pre class="raw-html">&lt;div style=&quot;color:red&quot;&gt;This block came from a pasted email.&lt;/div&gt;</pre>
58
- <p>See the <a href="https://northwindhealth.example/runbooks/reminders">runbook</a> for the retry rules.</p>
59
- ```
60
-
61
- ## With `--mermaid cdn`
62
-
63
- The same command with `--mermaid cdn` adds exactly one script and a policy that allows only it
64
- (real output):
65
-
66
- ```html
67
- <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data: https:; style-src 'unsafe-inline'; font-src data: https:; script-src 'sha256-FFdGvPoYRnPQ2cUJFzJW6IyZn0u1kdvZbGgLe0Qjl8Y=' https://cdn.jsdelivr.net; connect-src https://cdn.jsdelivr.net">
68
- <script type="module">import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11.4.1/dist/mermaid.esm.min.mjs";mermaid.initialize({startOnLoad:true,securityLevel:"strict"});</script>
69
- ```
70
-
71
- Opened in headless Chrome with network, the `<pre class="mermaid">` was replaced by a drawn
72
- flowchart SVG.
73
-
74
- ## What to tell the user
75
-
76
- > `ops-review.html` is ready: one 6 KB file with the chart embedded, so it works as an email
77
- > attachment. Three things to know:
78
- > - The reminder diagram shows as text. If the committee will be online, I can rebuild with
79
- > the diagram drawn (it then needs network when opened), or render it to an SVG and embed it.
80
- > - The pasted `<div>` and `<script>` show as text on purpose. Delete them from the source if they
81
- > were not meant to be there.
82
- >
83
- > Print-preview it once: the table header repeats on each page and the runbook link prints its address.
@@ -1,43 +0,0 @@
1
- {
2
- "name": "md-to-html",
3
- "version": "0.1.3",
4
- "description": "Turn a Markdown draft into one self-contained, print-friendly HTML file that survives being emailed or attached, with headings that have anchor links, tables, code, quotes, an optional table of contents, local images embedded, brand colours and fonts from a brand.json, Mermaid diagrams kept as text or drawn from a pinned CDN, and raw HTML escaped so nothing in the source runs. Use when the user wants Markdown \"as a web page\", \"as an HTML file I can send\", \"something people can open in a browser and print\", or says \"convert this to HTML\".",
5
- "entrypoint": "SKILL.md",
6
- "deps": {
7
- "npm": [],
8
- "pip": []
9
- },
10
- "env": {
11
- "required": [],
12
- "optional": []
13
- },
14
- "related": [
15
- "brand-kit",
16
- "guide-builder",
17
- "marketing-flyer",
18
- "md-to-docx",
19
- "md-to-xlsx",
20
- "mermaid-render"
21
- ],
22
- "handoff": [
23
- {
24
- "to": "mermaid-render",
25
- "when": "the document has Mermaid diagrams and readers may be offline",
26
- "purpose": "Render each diagram to SVG so it can be embedded and needs no network.",
27
- "fallback": "If mermaid-render is absent, keep the diagrams as text (the default) and tell the user they show as source, or use --mermaid cdn and say it needs network."
28
- }
29
- ],
30
- "tags": [
31
- "html",
32
- "markdown",
33
- "convert",
34
- "print",
35
- "export",
36
- "brand"
37
- ],
38
- "permissions": {"network": [], "commands": [], "files": "named-paths", "notes": "The script makes no network calls. With --mermaid cdn, the HTML it writes loads Mermaid from cdn.jsdelivr.net when someone opens it."},
39
- "model": {
40
- "tier": "light",
41
- "rationale": "A deterministic stdlib script does the conversion; the model picks options, fixes a few unsupported Markdown constructs and relays the script's warnings. Little judgment."
42
- }
43
- }
@@ -1,70 +0,0 @@
1
- # md-to-html reference
2
-
3
- ## Markdown the script supports
4
-
5
- | Construct | Supported | Notes |
6
- |---|---|---|
7
- | ATX headings `#` to `######` | ✅ | Each gets an `id` from its text (`## Rollout plan` becomes `#rollout-plan`); duplicates get `-1`, `-2` |
8
- | Setext headings (`Title` over `===`) | ❌ | Comes through as a paragraph. Rewrite as `# Title` |
9
- | Paragraphs, hard breaks (two trailing spaces or `\`) | ✅ | |
10
- | `**bold**`, `*italic*`, `_italic_`, `~~strike~~`, `` `code` `` | ✅ | |
11
- | Links `[text](...)` with an optional `"title"`, `<https://…>`, bare `https://…` | ✅ | `javascript:`, `vbscript:` and non-image `data:` targets are dropped with a warning |
12
- | Reference links `[text][id]` | ❌ | Rewrite as inline links |
13
- | Images `![alt](...)` | ✅ | Local files embedded as data URIs; remote URLs kept and warned about; missing files shown as `[image not found: alt]` |
14
- | Ordered, unordered, nested lists; `- [ ]` task lists | ✅ | A blank line between items makes the list loose (each item a paragraph) |
15
- | GFM pipe tables with `:---:` alignment | ✅ | `\|` for a literal pipe; pipes inside `` `code` `` are kept |
16
- | Fenced code (```` ``` ```` or `~~~`) with a language | ✅ | `class="language-x"` on the `<code>`, no colouring |
17
- | Indented code (4 spaces) | ✅ | |
18
- | Blockquotes `>` | ✅ | Nested Markdown inside is rendered |
19
- | `---` / `***` rules | ✅ | |
20
- | YAML front matter at the top | ✅ | Removed from the output |
21
- | Footnotes `[^1]`, definition lists, math | ❌ | Plain text. Rewrite footnotes as a Notes section |
22
- | Raw HTML | Escaped | Shown as text; see below |
23
-
24
- ## Why raw HTML is escaped by default
25
-
26
- The output is usually shared: attached to email, uploaded to an intranet, opened by people who
27
- did not write the source. Markdown drafts pick up pasted HTML from emails, web pages and other
28
- tools, and a `<script>`, an `onerror=` attribute or a `<form>` in that paste would run in every
29
- reader's browser. Escaping shows the HTML as text, so nothing is lost and nothing runs.
30
- `--allow-html` passes raw HTML *blocks* through (a line that starts with a tag, up to the next
31
- blank line). Inline tags inside a paragraph stay escaped either way.
32
-
33
- The file also carries a Content-Security-Policy that allows no scripts at all, or, with
34
- `--mermaid cdn`, only the one Mermaid loader (by hash) and jsDelivr.
35
-
36
- ## brand.json fields read
37
-
38
- From the `brand-kit` shape:
39
-
40
- | Field | Used for |
41
- |---|---|
42
- | `colors.primary` | Headings, table header background, the header rule |
43
- | `colors.secondary` | Links |
44
- | `colors.accent` | Blockquote bar |
45
- | `colors.background`, `colors.text` | Page background and body text |
46
- | `fonts.heading.family` + `fallback` | Headings |
47
- | `fonts.body.family` + `fallback` | Body text |
48
- | `logo.primary` | Embedded at the top of the page, path relative to brand.json |
49
- | `legal.footer` | Footer line |
50
-
51
- A colour that is not a hex code is ignored with a warning. Fonts are named, not embedded: the
52
- reader's machine must have them, or the fallback is used. Say so when the brand font is not a
53
- common system font.
54
-
55
- ## Print rules in the stylesheet
56
-
57
- - Page margins 18 mm top and bottom, 16 mm left and right; body text 11 pt.
58
- - Table header rows repeat on every page; tables, code blocks, quotes and images avoid page breaks inside.
59
- - Headings avoid being the last line on a page.
60
- - Code wraps instead of running off the page.
61
- - External links print their address after the link text.
62
- - Anchor `#` markers are hidden.
63
-
64
- ## Mermaid
65
-
66
- | Mode | What the reader sees | Needs network |
67
- |---|---|---|
68
- | default (`--mermaid none`) | The diagram source in a box | No |
69
- | `--mermaid cdn` | The drawn diagram, by Mermaid 11.4.1 from jsDelivr, pinned to that exact version | Yes, each time the file is opened |
70
- | Pre-render with `mermaid-render`, reference the SVG as an image | The drawn diagram, embedded | No |