@taloswork/ose-shared 0.1.8 → 0.1.10
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/mcp/gen/mcp.json +2 -2
- package/package.json +3 -3
- package/skills/cozy-static-svg/SKILL.md +76 -0
- package/skills/cozy-static-svg/references/approved-preview.png +0 -0
- package/skills/cozy-static-svg/references/cross-platform.md +73 -0
- package/skills/cozy-static-svg/references/moon_keeps_watch.svg +229 -0
- package/skills/cozy-static-svg/references/style-anchor.md +271 -0
- package/skills/cozy-static-svg/scripts/artkit.py +321 -0
- package/skills/cozy-static-svg/scripts/to_png.py +333 -0
- package/skills/diagram-design/SKILL.md +568 -0
- package/skills/diagram-design/assets/example-architecture-dark.html +182 -0
- package/skills/diagram-design/assets/example-architecture-full.html +194 -0
- package/skills/diagram-design/assets/example-architecture.html +183 -0
- package/skills/diagram-design/assets/example-bar-dark.html +129 -0
- package/skills/diagram-design/assets/example-bar-full.html +105 -0
- package/skills/diagram-design/assets/example-bar.html +129 -0
- package/skills/diagram-design/assets/example-data-flow-dark.html +143 -0
- package/skills/diagram-design/assets/example-data-flow-full.html +185 -0
- package/skills/diagram-design/assets/example-data-flow.html +143 -0
- package/skills/diagram-design/assets/example-datalake-dark.html +243 -0
- package/skills/diagram-design/assets/example-datalake-full.html +248 -0
- package/skills/diagram-design/assets/example-datalake.html +269 -0
- package/skills/diagram-design/assets/example-dp-integration-dark.html +80 -0
- package/skills/diagram-design/assets/example-dp-integration-full.html +90 -0
- package/skills/diagram-design/assets/example-dp-integration.html +80 -0
- package/skills/diagram-design/assets/example-dp-security-matrix-dark.html +31 -0
- package/skills/diagram-design/assets/example-dp-security-matrix-full.html +32 -0
- package/skills/diagram-design/assets/example-dp-security-matrix.html +88 -0
- package/skills/diagram-design/assets/example-er-dark.html +202 -0
- package/skills/diagram-design/assets/example-er-full.html +205 -0
- package/skills/diagram-design/assets/example-er.html +202 -0
- package/skills/diagram-design/assets/example-flowchart-dark.html +156 -0
- package/skills/diagram-design/assets/example-flowchart-full.html +159 -0
- package/skills/diagram-design/assets/example-flowchart.html +156 -0
- package/skills/diagram-design/assets/example-gantt-dark.html +137 -0
- package/skills/diagram-design/assets/example-gantt-full.html +127 -0
- package/skills/diagram-design/assets/example-gantt.html +137 -0
- package/skills/diagram-design/assets/example-high-level-dark.html +251 -0
- package/skills/diagram-design/assets/example-high-level-full.html +247 -0
- package/skills/diagram-design/assets/example-high-level-vertical-dark.html +274 -0
- package/skills/diagram-design/assets/example-high-level-vertical-full.html +252 -0
- package/skills/diagram-design/assets/example-high-level-vertical.html +325 -0
- package/skills/diagram-design/assets/example-high-level.html +301 -0
- package/skills/diagram-design/assets/example-import-drawio.html +185 -0
- package/skills/diagram-design/assets/example-import-mermaid.html +70 -0
- package/skills/diagram-design/assets/example-it-state-dark.html +90 -0
- package/skills/diagram-design/assets/example-it-state-full.html +69 -0
- package/skills/diagram-design/assets/example-it-state.html +128 -0
- package/skills/diagram-design/assets/example-layers-dark.html +123 -0
- package/skills/diagram-design/assets/example-layers-full.html +126 -0
- package/skills/diagram-design/assets/example-layers.html +123 -0
- package/skills/diagram-design/assets/example-line-dark.html +111 -0
- package/skills/diagram-design/assets/example-line-full.html +105 -0
- package/skills/diagram-design/assets/example-line.html +111 -0
- package/skills/diagram-design/assets/example-loop-dark.html +100 -0
- package/skills/diagram-design/assets/example-loop-full.html +137 -0
- package/skills/diagram-design/assets/example-loop-terminal.html +347 -0
- package/skills/diagram-design/assets/example-loop.html +100 -0
- package/skills/diagram-design/assets/example-medallion-dark.html +159 -0
- package/skills/diagram-design/assets/example-medallion-full.html +201 -0
- package/skills/diagram-design/assets/example-medallion.html +159 -0
- package/skills/diagram-design/assets/example-nested-dark.html +132 -0
- package/skills/diagram-design/assets/example-nested-full.html +135 -0
- package/skills/diagram-design/assets/example-nested.html +136 -0
- package/skills/diagram-design/assets/example-org-chart-dark.html +45 -0
- package/skills/diagram-design/assets/example-org-chart-full.html +45 -0
- package/skills/diagram-design/assets/example-org-chart.html +45 -0
- package/skills/diagram-design/assets/example-paved-road-animated.html +546 -0
- package/skills/diagram-design/assets/example-policy-trace-animated.html +490 -0
- package/skills/diagram-design/assets/example-process-dark.html +64 -0
- package/skills/diagram-design/assets/example-process-full.html +74 -0
- package/skills/diagram-design/assets/example-process.html +64 -0
- package/skills/diagram-design/assets/example-pyramid-dark.html +119 -0
- package/skills/diagram-design/assets/example-pyramid-full.html +122 -0
- package/skills/diagram-design/assets/example-pyramid.html +119 -0
- package/skills/diagram-design/assets/example-quadrant-consultant.html +166 -0
- package/skills/diagram-design/assets/example-quadrant-dark.html +135 -0
- package/skills/diagram-design/assets/example-quadrant-full.html +138 -0
- package/skills/diagram-design/assets/example-quadrant.html +135 -0
- package/skills/diagram-design/assets/example-queue-animated.html +577 -0
- package/skills/diagram-design/assets/example-radar-dark.html +139 -0
- package/skills/diagram-design/assets/example-radar-full.html +135 -0
- package/skills/diagram-design/assets/example-radar.html +139 -0
- package/skills/diagram-design/assets/example-scatter-dark.html +141 -0
- package/skills/diagram-design/assets/example-scatter-full.html +116 -0
- package/skills/diagram-design/assets/example-scatter.html +141 -0
- package/skills/diagram-design/assets/example-sequence-dark.html +222 -0
- package/skills/diagram-design/assets/example-sequence-full.html +388 -0
- package/skills/diagram-design/assets/example-sequence-oauth-dark.html +188 -0
- package/skills/diagram-design/assets/example-sequence-oauth-full.html +350 -0
- package/skills/diagram-design/assets/example-sequence-oauth.html +227 -0
- package/skills/diagram-design/assets/example-sequence.html +222 -0
- package/skills/diagram-design/assets/example-state-dark.html +147 -0
- package/skills/diagram-design/assets/example-state-full.html +150 -0
- package/skills/diagram-design/assets/example-state.html +147 -0
- package/skills/diagram-design/assets/example-swimlane-dark.html +172 -0
- package/skills/diagram-design/assets/example-swimlane-full.html +175 -0
- package/skills/diagram-design/assets/example-swimlane.html +172 -0
- package/skills/diagram-design/assets/example-timeline-dark.html +135 -0
- package/skills/diagram-design/assets/example-timeline-full.html +138 -0
- package/skills/diagram-design/assets/example-timeline.html +135 -0
- package/skills/diagram-design/assets/example-tree-dark.html +173 -0
- package/skills/diagram-design/assets/example-tree-full.html +176 -0
- package/skills/diagram-design/assets/example-tree.html +173 -0
- package/skills/diagram-design/assets/example-venn-dark.html +132 -0
- package/skills/diagram-design/assets/example-venn-full.html +135 -0
- package/skills/diagram-design/assets/example-venn.html +110 -0
- package/skills/diagram-design/assets/icons.html +230 -0
- package/skills/diagram-design/assets/index.html +369 -0
- package/skills/diagram-design/assets/template-dark.html +85 -0
- package/skills/diagram-design/assets/template-full.html +413 -0
- package/skills/diagram-design/assets/template-motion.html +434 -0
- package/skills/diagram-design/assets/template-terminal.html +173 -0
- package/skills/diagram-design/assets/template.html +86 -0
- package/skills/diagram-design/references/animation.md +141 -0
- package/skills/diagram-design/references/export.md +136 -0
- package/skills/diagram-design/references/import-drawio.md +171 -0
- package/skills/diagram-design/references/import-mermaid.md +126 -0
- package/skills/diagram-design/references/onboarding.md +297 -0
- package/skills/diagram-design/references/output-spec.md +181 -0
- package/skills/diagram-design/references/primitive-annotation.md +36 -0
- package/skills/diagram-design/references/primitive-icons.md +827 -0
- package/skills/diagram-design/references/primitive-sketchy.md +43 -0
- package/skills/diagram-design/references/primitive-terminal.md +76 -0
- package/skills/diagram-design/references/semantic-patterns.md +122 -0
- package/skills/diagram-design/references/style-guide.md +139 -0
- package/skills/diagram-design/references/type-architecture.md +78 -0
- package/skills/diagram-design/references/type-bar.md +48 -0
- package/skills/diagram-design/references/type-data-flow.md +374 -0
- package/skills/diagram-design/references/type-dp-integration.md +410 -0
- package/skills/diagram-design/references/type-dp-security-matrix.md +379 -0
- package/skills/diagram-design/references/type-er.md +23 -0
- package/skills/diagram-design/references/type-flowchart.md +23 -0
- package/skills/diagram-design/references/type-gantt.md +45 -0
- package/skills/diagram-design/references/type-high-level.md +458 -0
- package/skills/diagram-design/references/type-it-state.md +470 -0
- package/skills/diagram-design/references/type-layers.md +26 -0
- package/skills/diagram-design/references/type-line.md +44 -0
- package/skills/diagram-design/references/type-loop.md +223 -0
- package/skills/diagram-design/references/type-medallion.md +356 -0
- package/skills/diagram-design/references/type-nested.md +22 -0
- package/skills/diagram-design/references/type-org-chart.md +44 -0
- package/skills/diagram-design/references/type-process.md +495 -0
- package/skills/diagram-design/references/type-pyramid.md +33 -0
- package/skills/diagram-design/references/type-quadrant.md +81 -0
- package/skills/diagram-design/references/type-radar.md +80 -0
- package/skills/diagram-design/references/type-scatter.md +39 -0
- package/skills/diagram-design/references/type-sequence.md +130 -0
- package/skills/diagram-design/references/type-state.md +21 -0
- package/skills/diagram-design/references/type-swimlane.md +20 -0
- package/skills/diagram-design/references/type-timeline.md +20 -0
- package/skills/diagram-design/references/type-tree.md +24 -0
- package/skills/diagram-design/references/type-venn.md +26 -0
- package/skills/diagram-design/scripts/drawio_extract.py +856 -0
- package/skills/diagram-design/scripts/mermaid_extract.py +1285 -0
- package/skills/diagram-design/scripts/self_check.py +389 -0
- package/skills/document/SKILL.md +63 -75
- package/skills/document/bin/deck-build.cjs +51 -1
- package/skills/document/bin/deck-qa.cjs +18745 -279
- package/skills/document/bin/doc-convert.cjs +9280 -76489
- package/skills/document/bin/doc-fill.cjs +0 -0
- package/skills/document/bin/doc-gen.cjs +3043 -46825
- package/skills/document/bin/doc-run.cjs +65095 -1967
- package/skills/document/bin/doc-scan.cjs +0 -0
- package/skills/document/bin/doc-text.cjs +0 -0
- package/skills/document/bin/doc-validate.cjs +18067 -226
- package/skills/document/bin/doc-xml.cjs +1 -1
- package/skills/document/bin/docx-annotate.cjs +0 -0
- package/skills/document/bin/html2pptx.cjs +32498 -145280
- package/skills/document/bin/ocr-worker.cjs +0 -0
- package/skills/document/bin/ocr.cjs +0 -0
- package/skills/document/bin/pdf-form.cjs +0 -0
- package/skills/document/bin/pdf-images.cjs +0 -0
- package/skills/document/bin/pdf-ops.cjs +0 -0
- package/skills/document/bin/pdf-render.cjs +11 -9
- package/skills/document/bin/pdf-tables.cjs +0 -0
- package/skills/document/bin/pptx-clone.cjs +21 -25
- package/skills/document/bin/pptx-embed-fonts.cjs +8 -6
- package/skills/document/bin/pptx-set-image.cjs +0 -0
- package/skills/document/bin/pptx-slide.cjs +22 -32
- package/skills/document/bin/pptx-theme.cjs +1 -20
- package/skills/document/bin/pptx-tokenize.cjs +1 -1
- package/skills/document/bin/xlsx-query.cjs +0 -0
- package/skills/document/bin/xlsx-recalc.cjs +0 -0
- package/skills/document/bin-reference.md +35 -0
- package/skills/document/content-pipeline.md +19 -18
- package/skills/document/deck-design.md +110 -211
- package/skills/document/layouts/README.md +4 -33
- package/skills/document/motion/README.md +4 -2
- package/skills/document/office.md +5 -1
- package/skills/document/rewrite.md +43 -99
- package/skills/document/styles/README.md +0 -7
- package/skills/document/theme-system.md +1 -0
- package/skills/document/themes/README.md +5 -5
- package/skills/document/themes/anthropic-clay.json +1 -7
- package/skills/document/themes/apple-keynote.json +1 -7
- package/skills/document/themes/black-gold.json +1 -2
- package/skills/document/themes/cinereel.json +1 -2
- package/skills/document/themes/cool-tech.json +1 -2
- package/skills/document/themes/hand-drawn.json +1 -2
- package/skills/document/themes/ivory-gold.json +1 -2
- package/skills/document/themes/magazine-ink.json +1 -2
- package/skills/document/themes/mckinsey-consulting.json +1 -7
- package/skills/document/themes/mono.json +1 -2
- package/skills/document/themes/swiss-grid.json +1 -2
- package/skills/document/themes/warm-editorial.json +1 -2
- package/skills/image-layout/SKILL.md +1 -1
- package/skills/image-layout/bin/html2img.cjs +0 -0
|
@@ -1,28 +1,30 @@
|
|
|
1
1
|
# Generate / edit documents (L3)
|
|
2
2
|
|
|
3
|
-
## Themes — the presentation layer for `doc-gen` DOCUMENTS (docx / pdf
|
|
3
|
+
## Themes — the presentation layer for `doc-gen` DOCUMENTS (docx / pdf)
|
|
4
4
|
|
|
5
5
|
> **Decks use skins, not themes.** For an html2pptx deck (路演/汇报/pitch), pick a
|
|
6
6
|
> **skin** via `--style` (`styles/README.md`, the SKILL deck route) — NOT a
|
|
7
7
|
> `themes/*.json`. The `themes/` + `--theme` system below is for `doc-gen`
|
|
8
|
-
> DOCUMENTS (Word/PDF reports
|
|
8
|
+
> DOCUMENTS (Word/PDF reports) — a separate, still-valid path. `doc-gen` makes no
|
|
9
|
+
> decks at all; `html2pptx --theme` reads a theme's colors/fonts and its three
|
|
10
|
+
> slide colors (`pptx{background,titleColor,textColor}`).
|
|
9
11
|
|
|
10
12
|
Content (the spec) and presentation (the theme) are separate. A theme is a JSON
|
|
11
|
-
file — template skills ship their own; this skill ships **
|
|
12
|
-
(theme = colors/fonts for `doc-gen` output
|
|
13
|
-
|
|
14
|
-
`
|
|
13
|
+
file — template skills ship their own; this skill ships **12 built-ins** in `themes/`
|
|
14
|
+
(theme = colors/fonts for `doc-gen` output; `themes/README.md` lists them with their
|
|
15
|
+
best fit): `cool-tech` · `apple-keynote` · `mckinsey-consulting` · `anthropic-clay` ·
|
|
16
|
+
`black-gold` · `hand-drawn` · `mono` · `warm-editorial` · `ivory-gold` · `cinereel` ·
|
|
17
|
+
`magazine-ink` · `swiss-grid`. For a plain Word/PDF report, `mckinsey-consulting` (white · deep
|
|
15
18
|
navy · structured tables) is a safe default; `mono` for a stark minimal look.
|
|
16
19
|
|
|
17
20
|
```
|
|
18
21
|
node <skill>/bin/doc-gen.cjs docx out.docx spec.json --theme <skill>/themes/mckinsey-consulting.json
|
|
19
22
|
```
|
|
20
23
|
|
|
21
|
-
**Topic-adaptive color (
|
|
22
|
-
`--topic "<
|
|
24
|
+
**Topic-adaptive color (when the user hasn't named a theme/brand)**: pass
|
|
25
|
+
`--topic "<subject>"` (or put `"topic"` in the spec). The engine picks a
|
|
23
26
|
palette that FITS the subject — deterministically, by keyword then stable hash —
|
|
24
|
-
instead of the same default
|
|
25
|
-
on the richness tokens (motif + gradient wash + depth). `--palette <id>` forces a
|
|
27
|
+
instead of the same default every time (the #1 "AI-generated" tell). `--palette <id>` forces a
|
|
26
28
|
named one; `doc-gen --list-palettes` prints the library. A `--theme` file or a
|
|
27
29
|
saved/brand preference (step 1 below) still wins — use `--topic` for the "just
|
|
28
30
|
make it look designed-for-this" case, not when the user has a look in mind.
|
|
@@ -60,10 +62,10 @@ existing deck can seed one too: `pptx-theme ref.pptx <skill>/themes/custom/x.jso
|
|
|
60
62
|
|
|
61
63
|
```
|
|
62
64
|
node <skill>/bin/pptx-theme.cjs ref.pptx /tmp/ref-theme.json
|
|
63
|
-
node <skill>/bin/
|
|
65
|
+
node <skill>/bin/html2pptx.cjs deck.html out.pptx --theme /tmp/ref-theme.json
|
|
64
66
|
```
|
|
65
67
|
|
|
66
|
-
This captures colors/fonts
|
|
68
|
+
This captures colors/fonts (heuristic fallbacks print on
|
|
67
69
|
stderr), NOT slide layouts — to reuse the deck's actual LAYOUTS, tokenize it into
|
|
68
70
|
a fillable template instead (see "Reuse a user's UPLOADED deck" below:
|
|
69
71
|
`pptx-tokenize` → `doc-fill`).
|
|
@@ -71,26 +73,18 @@ a fillable template instead (see "Reuse a user's UPLOADED deck" below:
|
|
|
71
73
|
Theme fields (all optional; invalid values default + warn on stderr, never fail):
|
|
72
74
|
`bestFor` (one-line 适用场景, for the picker) · `fonts{heading,body}` ·
|
|
73
75
|
`colors{primary,accent,secondary,text,muted,tableHeaderBg,tableBorder}`
|
|
74
|
-
(`accent`
|
|
75
|
-
`
|
|
76
|
-
`page{size:A4|Letter,margin,header,footer}` (`{title}` `{page}` `{pages}` interpolate;
|
|
76
|
+
(`accent` defaults to `primary`; `secondary` defaults to `muted`) ·
|
|
77
|
+
`page{size:A4|Letter,margin,header,footer}` (`margin` is a CSS length string such as `margin:"20mm"` — mm/cm/in/pt/px; a bare number is not accepted and falls back to the default margin, which changes the page count; `{title}` `{page}` `{pages}` interpolate;
|
|
77
78
|
**page header/footer: prefer Latin/digits — CJK there renders blank in the PDF path**) ·
|
|
78
79
|
`heading{h1..h4}{size,color,bold,spaceAfter}` (color takes hex or a palette key like `"primary"`) ·
|
|
79
80
|
`body{size,lineHeight,justify}` · `cover{enabled,subtitle,date,logo}` (base64 logo; title moves onto the cover) ·
|
|
80
|
-
`pptx{background,titleColor,textColor
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
white-paper regardless. `motif` stamps a repeated accent on content slides;
|
|
84
|
-
`bgWash` makes the master background a subtle gradient; `depth` gives statement
|
|
85
|
-
slides (cover/section/ending) a gradient background + an oversized ghosted accent
|
|
86
|
-
shape (layered, not flat). Background lives on the slide MASTER — edit it once in
|
|
87
|
-
PowerPoint to reflow every slide.)
|
|
81
|
+
`pptx{background,titleColor,textColor}` — read only by `html2pptx --theme`, as the
|
|
82
|
+
slide background / title / body CSS colors (dark deck = dark `background` + light
|
|
83
|
+
`titleColor`/`textColor`; docx/PDF stay white-paper regardless).
|
|
88
84
|
|
|
89
85
|
Per format the theme becomes: **pdf** CSS + cover page + live page headers/footers;
|
|
90
86
|
**docx** real document styles (Heading1–4, default font/size, table header shading)
|
|
91
|
-
+ header/footer parts + cover page
|
|
92
|
-
slide numbers) + themed title/body — and content **flow-layouts**: it never overlaps,
|
|
93
|
-
overflow spills to a "(续)" continuation slide. A spec may embed `"theme": {...}`;
|
|
87
|
+
+ header/footer parts + cover page. A spec may embed `"theme": {...}`;
|
|
94
88
|
`--theme <file>` wins.
|
|
95
89
|
|
|
96
90
|
## Template decks — `bin/pptx-clone` (one styled slide per data item)
|
|
@@ -192,18 +186,20 @@ each, drop the template slide).
|
|
|
192
186
|
layouts → `pptx-theme` (extract palette) + our families. Repeat a styled slide
|
|
193
187
|
per data row → `pptx-clone`.
|
|
194
188
|
|
|
195
|
-
All-Node generation (no Python): `docx`, `
|
|
196
|
-
capability tier as the Anthropic docx/pptx/xlsx skills.
|
|
189
|
+
All-Node generation (no Python): `docx`, `exceljs`, and Chromium for PDF; decks go
|
|
190
|
+
through html2pptx. Same capability tier as the Anthropic docx/pptx/xlsx skills.
|
|
197
191
|
|
|
198
192
|
## Generate — `bin/doc-gen` (self-contained; no npm install, works offline)
|
|
199
193
|
|
|
200
194
|
```
|
|
201
|
-
node <skill>/bin/doc-gen.cjs <docx|xlsx|
|
|
195
|
+
node <skill>/bin/doc-gen.cjs <docx|xlsx|pdf> <out> <spec.json>
|
|
202
196
|
```
|
|
203
197
|
Simple spec shapes:
|
|
204
198
|
- **docx / pdf**: `{ "title"?: "...", "paragraphs": ["...", ...] }`
|
|
205
199
|
- **xlsx**: `{ "sheets": { "SheetName": [["h1","h2"], ["a", 1], ...] } }` (row 1 = bold header)
|
|
206
|
-
|
|
200
|
+
|
|
201
|
+
`doc-gen pptx` exits 64 and points at html2pptx: decks are laid out as HTML
|
|
202
|
+
(deck-design.md), never generated from a slide spec.
|
|
207
203
|
|
|
208
204
|
`doc-gen` validates these shapes **strictly before rendering**: unknown fields are
|
|
209
205
|
errors, not ignored. For DOCX/PDF use `paragraphs` and/or `blocks`—never
|
|
@@ -221,76 +217,20 @@ Rich spec shapes (use these for real documents, not just prose):
|
|
|
221
217
|
- **xlsx** per sheet, either the row array above OR
|
|
222
218
|
`{ "rows": [...], "header"?, "columnWidths"?: [n...], "numFmt"?: ["#,##0.00"...] }`.
|
|
223
219
|
A cell string starting with `=` is written as a **live formula** (e.g. `"=SUM(A2:A3)"`).
|
|
224
|
-
|
|
225
|
-
`"chart": {type:"bar|line|pie|doughnut|area", labels:[...], series:[{name, values:[...]}]}` —
|
|
226
|
-
charts are NATIVE (PowerPoint-editable c:chart parts), series colors cycle the
|
|
227
|
-
theme's layered palette (accent→secondary→primary), dark decks get readable
|
|
228
|
-
axis/legend text automatically. Prefer a chart over a numbers table when the
|
|
229
|
-
point is a trend or comparison.
|
|
230
|
-
- **pptx design archetypes** (per slide — USE THESE for pitch/roadshow decks
|
|
231
|
-
(路演/汇报/评审/宣讲), not bullets-of-everything; all theme-colored,
|
|
232
|
-
flow-layouted, overflow-safe). **For a substantive deck, first read
|
|
233
|
-
content-pipeline.md** (research → pyramid structure → per-page content
|
|
234
|
-
structure → the mapping to these archetypes → density + diversity rules).
|
|
235
|
-
Catalog:
|
|
236
|
-
- **Role**: `"cover": {title, subtitle?, presenter?, date?, variant?}` (封面,
|
|
237
|
-
own slide) · `"toc": {items:[{index?,title,desc?}], variant?:"numbered|grid"}`
|
|
238
|
-
(目录) · `"section": {title, subtitle?, index?, variant?:"centered|left|index"}`
|
|
239
|
-
(章节页,own slide) · `"ending": {message, cta?, contact?, variant?}` (结尾).
|
|
240
|
-
- **Metrics**: `"kpiCards"` — array OR `{items:[{value,label?,delta?,icon?}], variant?:"row|grid|hero|iconTop"}`
|
|
241
|
-
("+x%" green, "-x%" red; `iconTop` shows the card's lucide `icon` above the number) ·
|
|
242
|
-
`"bigStat": {value, label?, context?, sub?:[kpi]}` (单个巨型数字).
|
|
243
|
-
- **Content**: `"cards"` — array OR `{items:[{title,text?,accent?,icon?,image?}], variant?:"accentBar|numbered|iconCircle|imageTop"}`
|
|
244
|
-
(`iconCircle` = lucide `icon` in an accent circle; `imageTop` = the card's base64 `image` as a top banner) ·
|
|
245
|
-
`"comparison": {columns:[{title,badge?,rows:[…],recommended?}], dimensions?:[…], variant?:"columns|matrix"}`
|
|
246
|
-
(2–3 栏对比;`matrix` = 特性打勾矩阵,cells 是 有/是/✓ → 绿勾、无/否/- → 叉,否则文字) ·
|
|
247
|
-
`"quadrant": {xAxis?,yAxis?, cells:[TL,TR,BL,BR]}` (2×2 矩阵) ·
|
|
248
|
-
`"iconList": {items:[{icon?,title,text?,accent?}], variant?:"rows|grid"}` (icon = a
|
|
249
|
-
lucide name e.g. "zap"/"shield"/"target"/"users"/"trending-up"; unknown → marker fallback) ·
|
|
250
|
-
`"quote": {text, author?, role?}`.
|
|
251
|
-
- **Process/time**: `"steps": {items:[{label,detail?,output?,duration?}], variant?:"horizontal|vertical"}` ·
|
|
252
|
-
`"timeline"` — array OR `{items:[{label,text?}], variant?:"horizontal|vertical|detailCards"}`
|
|
253
|
-
(`detailCards` = nodes on a line each with a styled detail card beneath).
|
|
254
|
-
- **Media**: `"splitImage": {image:{data}, side?:"left|right", title?, bullets?:[…], cards?:[…]}`.
|
|
255
|
-
Render order within a slide: kpiCards → cards → comparison → quadrant → bigStat →
|
|
256
|
-
quote → toc → steps → iconList → splitImage → timeline → bullets → table → image → chart.
|
|
257
|
-
**Vary variants across pages** (content-pipeline.md diversity rule) — a
|
|
258
|
-
monotone deck of one variant reads as lazy.
|
|
259
|
-
|
|
260
|
-
**Designed HTML render (`--design html`, in-app, magazine ceiling)**: the SAME
|
|
261
|
-
spec, but `cover`/`section`/`bigStat`/`comparison`/`quadrant`/`splitImage`/
|
|
262
|
-
`iconList` slides render through curated HTML/CSS templates (fuller design)
|
|
263
|
-
instead of native shapes:
|
|
264
|
-
`doc-gen.cjs pptx out.pptx spec.json --theme <t> --design html`.
|
|
265
|
-
Trade-off — richer look, but the output is a flat collage (editable text, **no
|
|
266
|
-
master/placeholder structure**); charts fall back to native. It needs the
|
|
267
|
-
app's Chromium; **headless or any slide without a designed template auto-falls
|
|
268
|
-
back to the native renderer** (same spec, no failure). Use it when the user
|
|
269
|
-
wants a polished pitch/cover and the deck is mostly the covered archetypes;
|
|
270
|
-
stick with the default (native) for editable structure, charts, or headless.
|
|
271
|
-
A layout the templates still can't express → deck-design.md freeform html2pptx.
|
|
272
|
-
|
|
273
|
-
Under the hood it uses `docx` / `exceljs` / `pptxgenjs` / `pdf-lib` — the same
|
|
220
|
+
Under the hood it uses `docx` / `exceljs`, and prints PDF in Chromium — the same
|
|
274
221
|
tier as the Anthropic docx/pptx/xlsx skills, but all-Node (no Python /
|
|
275
222
|
LibreOffice) and bundled into the script. For anything past these shapes, write a
|
|
276
223
|
short Node script using those libraries directly (they are on the skill's path).
|
|
277
224
|
|
|
278
|
-
**PDF rendering (
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
it embeds a subset Unicode font from a system font or `$TALOS_PDF_FONT` /
|
|
288
|
-
`spec.fontPath`; if none is found it errors clearly — set `$TALOS_PDF_FONT`, or
|
|
289
|
-
generate `.docx` (OOXML references fonts by name, so CJK just works). Output
|
|
290
|
-
tags `[pdf (pdf-lib)]`.
|
|
291
|
-
|
|
292
|
-
Either way, **prefer `.docx` for the richest CJK layout** when a PDF isn't
|
|
293
|
-
strictly required.
|
|
225
|
+
**PDF rendering (always Chromium, one layout everywhere):** `doc-gen pdf`
|
|
226
|
+
renders your spec as themed HTML and prints it in Chromium — professional CJK
|
|
227
|
+
line-breaking, per-glyph font fallback (Latin + 中文 mixed just works),
|
|
228
|
+
justification, tables, clickable links that wrap inside the page, and the
|
|
229
|
+
theme's page size and margin. Inside Talos it goes through the app's service
|
|
230
|
+
(`[pdf (chromium)]`); elsewhere it uses a headless Chromium
|
|
231
|
+
(`[pdf (headless chromium)]`, needs Playwright). With neither it exits 69 and
|
|
232
|
+
writes nothing — tell the user the PDF could not be produced. The spec's
|
|
233
|
+
`blocks` (headings/lists/tables) are supported, not just `title`/`paragraphs`.
|
|
294
234
|
|
|
295
235
|
## Fill a template — `bin/doc-fill` (preserves styling; the best "edit" path)
|
|
296
236
|
|
|
@@ -361,9 +301,13 @@ node <skill>/bin/doc-run.cjs --list # the guaranteed module registry
|
|
|
361
301
|
```
|
|
362
302
|
|
|
363
303
|
Inside the script, plain CommonJS `require()` of these names is guaranteed:
|
|
364
|
-
`pptxgenjs` (
|
|
365
|
-
|
|
366
|
-
|
|
304
|
+
`pptxgenjs` (non-deck pptx only — data tables, one-off shapes; every deck goes through html2pptx) · `docx` (Word) · `exceljs` (formatted workbooks: fills,
|
|
305
|
+
fonts, borders, merges, formulas) · `xlsx` (SheetJS: reading and plain-data
|
|
306
|
+
workbooks only — it writes no cell styles) · `pdf-lib` (PDF assembly) ·
|
|
307
|
+
`jszip` / `pizzip` (OOXML zip surgery) · `hyperformula` (formula evaluation).
|
|
308
|
+
An exceljs formula is written without a cached result; run
|
|
309
|
+
`bin/xlsx-recalc.cjs` on the file when the values must show before Excel
|
|
310
|
+
recalculates. Nothing else is guaranteed — do not
|
|
367
311
|
`require` other packages, and never run `npm install`.
|
|
368
312
|
|
|
369
313
|
Rules of the tier ladder (try in this order, don't skip levels). **NOTE — decks
|
|
@@ -126,13 +126,6 @@ Opt-outs (auto-pick skips these; `--backdrop` still works explicitly if ever
|
|
|
126
126
|
needed): `mckinsey`, `mono` → 纯色(no backdrop, by design) · `cinereel` → 常驻胶片
|
|
127
127
|
取景框(每页恒定,故意排除在自动挑选之外).
|
|
128
128
|
|
|
129
|
-
Leave `--backdrop` unset and html2pptx **auto-picks one of the skin's available
|
|
130
|
-
`backdrop*.html` variants**, seeded by the deck's HTML content — the same
|
|
131
|
-
deck.html always resolves to the same variant (stable across the QA fix-loop's
|
|
132
|
-
re-renders), but different decks land on different variants, so repeat
|
|
133
|
-
generations of the same skin don't all look identical. Pass `--backdrop
|
|
134
|
-
<variant>` only when you need a specific one pinned.
|
|
135
|
-
|
|
136
129
|
## Extend
|
|
137
130
|
|
|
138
131
|
Add a skin = **one `styles/<name>/skin.css`** defining the full class contract
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Built-in themes
|
|
2
2
|
|
|
3
|
-
**12
|
|
4
|
-
是 doc-theme 契约的纯 JSON
|
|
3
|
+
**12 套主题**,给 `doc-gen --theme themes/<name>.json`(Word/PDF 文档)使用;`html2pptx --theme`
|
|
4
|
+
是 legacy 路径,deck 一律用 `--style <catalog id>`。每个文件是 doc-theme 契约的纯 JSON
|
|
5
|
+
(`bestFor` = 适用场景)。
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
非 deck 文档(Word/PDF/Excel)没有家族概念,只吃主题的调色板(白纸 + 品牌色标题/表格)。
|
|
7
|
+
主题只管**颜色 / 字体**;"配对家族"一列是同名 deck 风格(`catalog.json` 的 entry),
|
|
8
|
+
方便文档与 deck 配色一致。非 deck 文档没有版式概念,只吃主题的调色板(白纸 + 品牌色标题/表格)。
|
|
9
9
|
|
|
10
10
|
| 主题 | 配对家族 | 基调 | 适用场景 |
|
|
11
11
|
|---|---|---|---|
|
|
@@ -33,12 +33,6 @@
|
|
|
33
33
|
"pptx": {
|
|
34
34
|
"background": "#f0eee6",
|
|
35
35
|
"titleColor": "#191919",
|
|
36
|
-
"textColor": "#191919"
|
|
37
|
-
"titleSize": 26,
|
|
38
|
-
"bodySize": 16,
|
|
39
|
-
"motif": "none",
|
|
40
|
-
"bgWash": true,
|
|
41
|
-
"depth": true,
|
|
42
|
-
"slideNumber": true
|
|
36
|
+
"textColor": "#191919"
|
|
43
37
|
}
|
|
44
38
|
}
|
|
@@ -25,12 +25,6 @@
|
|
|
25
25
|
"pptx": {
|
|
26
26
|
"background": "#000000",
|
|
27
27
|
"titleColor": "#f5f5f7",
|
|
28
|
-
"textColor": "#f5f5f7"
|
|
29
|
-
"titleSize": 32,
|
|
30
|
-
"bodySize": 18,
|
|
31
|
-
"motif": "none",
|
|
32
|
-
"bgWash": true,
|
|
33
|
-
"depth": false,
|
|
34
|
-
"slideNumber": false
|
|
28
|
+
"textColor": "#f5f5f7"
|
|
35
29
|
}
|
|
36
30
|
}
|
|
@@ -41,12 +41,6 @@
|
|
|
41
41
|
"pptx": {
|
|
42
42
|
"background": "#ffffff",
|
|
43
43
|
"titleColor": "#051c2c",
|
|
44
|
-
"textColor": "#1c2b3a"
|
|
45
|
-
"titleSize": 24,
|
|
46
|
-
"bodySize": 15,
|
|
47
|
-
"motif": "none",
|
|
48
|
-
"bgWash": false,
|
|
49
|
-
"depth": false,
|
|
50
|
-
"slideNumber": true
|
|
44
|
+
"textColor": "#1c2b3a"
|
|
51
45
|
}
|
|
52
46
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: image-layout
|
|
3
|
-
description: "Use
|
|
3
|
+
description: "Use when EXISTING images (files already on disk) are combined or altered as pixels: 拼图 / 拼接 / 宫格 / 九宫格 / 长图 / 对比图 / 加水印 / 加标签 / 裁剪 / 圆角 / 缩放, stitch / combine / collage / contact sheet / side-by-side / before-after / watermark / label / crop / resize. The mechanical test: if the images do not exist as files yet, this is NOT the skill. Do NOT trigger for generating NEW images, INCLUDING when the request names a layout word ('生成一张九宫格的图' is one generated picture); documents (document skill); Xiaohongshu cards (talos-xhs-ops); or upscaling / background removal, which need a model."
|
|
4
4
|
license: Proprietary. LICENSE.txt has complete terms
|
|
5
5
|
---
|
|
6
6
|
|
|
File without changes
|