@taloswork/ose-shared 0.1.9 → 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.
Files changed (56) hide show
  1. package/mcp/gen/mcp.json +2 -2
  2. package/package.json +3 -3
  3. package/skills/cozy-static-svg/SKILL.md +1 -1
  4. package/skills/diagram-design/SKILL.md +1 -1
  5. package/skills/document/SKILL.md +63 -75
  6. package/skills/document/bin/deck-build.cjs +51 -1
  7. package/skills/document/bin/deck-qa.cjs +18745 -279
  8. package/skills/document/bin/doc-convert.cjs +9280 -76489
  9. package/skills/document/bin/doc-fill.cjs +0 -0
  10. package/skills/document/bin/doc-gen.cjs +3043 -46825
  11. package/skills/document/bin/doc-run.cjs +65095 -1967
  12. package/skills/document/bin/doc-scan.cjs +0 -0
  13. package/skills/document/bin/doc-text.cjs +0 -0
  14. package/skills/document/bin/doc-validate.cjs +18067 -226
  15. package/skills/document/bin/doc-xml.cjs +1 -1
  16. package/skills/document/bin/docx-annotate.cjs +0 -0
  17. package/skills/document/bin/html2pptx.cjs +32498 -145280
  18. package/skills/document/bin/ocr-worker.cjs +0 -0
  19. package/skills/document/bin/ocr.cjs +0 -0
  20. package/skills/document/bin/pdf-form.cjs +0 -0
  21. package/skills/document/bin/pdf-images.cjs +0 -0
  22. package/skills/document/bin/pdf-ops.cjs +0 -0
  23. package/skills/document/bin/pdf-render.cjs +11 -9
  24. package/skills/document/bin/pdf-tables.cjs +0 -0
  25. package/skills/document/bin/pptx-clone.cjs +21 -25
  26. package/skills/document/bin/pptx-embed-fonts.cjs +8 -6
  27. package/skills/document/bin/pptx-set-image.cjs +0 -0
  28. package/skills/document/bin/pptx-slide.cjs +22 -32
  29. package/skills/document/bin/pptx-theme.cjs +1 -20
  30. package/skills/document/bin/pptx-tokenize.cjs +1 -1
  31. package/skills/document/bin/xlsx-query.cjs +0 -0
  32. package/skills/document/bin/xlsx-recalc.cjs +0 -0
  33. package/skills/document/bin-reference.md +35 -0
  34. package/skills/document/content-pipeline.md +19 -18
  35. package/skills/document/deck-design.md +110 -211
  36. package/skills/document/layouts/README.md +4 -33
  37. package/skills/document/motion/README.md +4 -2
  38. package/skills/document/office.md +5 -1
  39. package/skills/document/rewrite.md +43 -99
  40. package/skills/document/styles/README.md +0 -7
  41. package/skills/document/theme-system.md +1 -0
  42. package/skills/document/themes/README.md +5 -5
  43. package/skills/document/themes/anthropic-clay.json +1 -7
  44. package/skills/document/themes/apple-keynote.json +1 -7
  45. package/skills/document/themes/black-gold.json +1 -2
  46. package/skills/document/themes/cinereel.json +1 -2
  47. package/skills/document/themes/cool-tech.json +1 -2
  48. package/skills/document/themes/hand-drawn.json +1 -2
  49. package/skills/document/themes/ivory-gold.json +1 -2
  50. package/skills/document/themes/magazine-ink.json +1 -2
  51. package/skills/document/themes/mckinsey-consulting.json +1 -7
  52. package/skills/document/themes/mono.json +1 -2
  53. package/skills/document/themes/swiss-grid.json +1 -2
  54. package/skills/document/themes/warm-editorial.json +1 -2
  55. package/skills/image-layout/SKILL.md +1 -1
  56. 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 / spec-pptx)
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, structured-spec decks) — a separate, still-valid path.
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 **8 built-ins** in `themes/`
12
- (theme = colors/fonts for `doc-gen` output): `cool-tech` · `apple-keynote` ·
13
- `mckinsey-consulting` · `anthropic-clay` · `black-gold` · `hand-drawn` · `mono` ·
14
- `warm-editorial`. For a plain Word/PDF report, `mckinsey-consulting` (white · deep
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 (pptx, when the user hasn't named a theme/brand)**: pass
22
- `--topic "<deck subject>"` (or put `"topic"` in the spec). The engine picks a
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 on every deck (the #1 "AI-generated" tell), and turns
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/doc-gen.cjs pptx out.pptx spec.json --theme /tmp/ref-theme.json
65
+ node <skill>/bin/html2pptx.cjs deck.html out.pptx --theme /tmp/ref-theme.json
64
66
  ```
65
67
 
66
- This captures colors/fonts/title-body sizes (heuristic fallbacks print on
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` drives timeline markers/card bars/KPI numbers and defaults to
75
- `primary`; `secondary` defaults to `muted`) ·
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,titleSize,bodySize,logo,logoPos,slideNumber,
81
- motif:"none|corner|sidebar",bgWash,depth}`
82
- (dark deck = dark `background` + light `titleColor`/`textColor`; docx/PDF stay
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; **pptx** a slide master (background/logo/footer/
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`, `pptxgenjs`, `exceljs`, `pdf-lib`. Same
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|pptx|pdf> <out> <spec.json>
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
- - **pptx**: `{ "slides": [{ "title"?: "...", "bullets"?: ["...", ...] }] }`
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
- - **pptx** per slide, add any of `"table": [[...]]`, `"image": {data, x,y,w,h}`,
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 (two engines, automatic):**
279
- - **In-app (default): Chromium `printToPDF`.** When running inside Talos,
280
- `doc-gen pdf` renders your spec as HTML through the main process → professional
281
- CJK line-breaking, per-glyph font fallback (Latin + 中文 mixed just works),
282
- justification, tables. This is the formal-delivery path. Output tags
283
- `[pdf (chromium)]`. The spec's `blocks` (headings/lists/tables) are supported
284
- here too, not just `title`/`paragraphs`.
285
- - **Headless fallback: pdf-lib.** Outside the app (no render service), it uses the
286
- bundled pdf-lib engine (word-wrap + CJK char-wrap + per-script fonts). For CJK
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` (decks) · `docx` (Word) · `xlsx` (SheetJS workbooks) ·
365
- `pdf-lib` (PDF assembly) · `jszip` / `pizzip` (OOXML zip surgery) ·
366
- `hyperformula` (formula evaluation). Nothing else is guaranteed — do not
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
@@ -43,6 +43,7 @@ rewrite a layout.
43
43
  ```json
44
44
  {
45
45
  "style": "cool",
46
+ "scenario": "发布会",
46
47
  "themeVersion": 2,
47
48
  "decorRhythm": "auto",
48
49
  "mediaStyle": "device-stage",
@@ -1,11 +1,11 @@
1
1
  # Built-in themes
2
2
 
3
- **12 套主题**,`doc-gen --theme themes/<name>.json` 或 `html2pptx --theme` 使用。每个文件
4
- 是 doc-theme 契约的纯 JSON(`bestFor` = 适用场景)。
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
- **一个主题 = 一套自洽视觉**,与一个 `templates/<家族>` **一一对应**:主题管**颜色 / 字体**,
7
- 家族管**版式**(slide 布局 + 签名装饰)。用户选一次主题 = 同时定了配色和布局。
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
  }
@@ -18,7 +18,6 @@
18
18
  "pptx": {
19
19
  "background": "#0b0b0d",
20
20
  "titleColor": "#f5e6b8",
21
- "textColor": "#cbbd97",
22
- "slideNumber": true
21
+ "textColor": "#cbbd97"
23
22
  }
24
23
  }
@@ -18,7 +18,6 @@
18
18
  "pptx": {
19
19
  "background": "#0D0D0C",
20
20
  "titleColor": "#F5F4F0",
21
- "textColor": "#C7C5BE",
22
- "slideNumber": true
21
+ "textColor": "#C7C5BE"
23
22
  }
24
23
  }
@@ -18,7 +18,6 @@
18
18
  "pptx": {
19
19
  "background": "#0a0e1a",
20
20
  "titleColor": "#ffffff",
21
- "textColor": "#aab6d4",
22
- "slideNumber": true
21
+ "textColor": "#aab6d4"
23
22
  }
24
23
  }
@@ -18,7 +18,6 @@
18
18
  "pptx": {
19
19
  "background": "#fbfaf6",
20
20
  "titleColor": "#2b2b2b",
21
- "textColor": "#3a3a3a",
22
- "slideNumber": true
21
+ "textColor": "#3a3a3a"
23
22
  }
24
23
  }
@@ -18,7 +18,6 @@
18
18
  "pptx": {
19
19
  "background": "#EEE8DA",
20
20
  "titleColor": "#A97C3F",
21
- "textColor": "#2B2823",
22
- "slideNumber": true
21
+ "textColor": "#2B2823"
23
22
  }
24
23
  }
@@ -18,7 +18,6 @@
18
18
  "pptx": {
19
19
  "background": "#F1F3F5",
20
20
  "titleColor": "#0A1F3D",
21
- "textColor": "#384962",
22
- "slideNumber": true
21
+ "textColor": "#384962"
23
22
  }
24
23
  }
@@ -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
  }
@@ -14,7 +14,6 @@
14
14
  "pptx": {
15
15
  "background": "#ffffff",
16
16
  "titleColor": "#0a0a0a",
17
- "textColor": "#555555",
18
- "slideNumber": true
17
+ "textColor": "#555555"
19
18
  }
20
19
  }
@@ -18,7 +18,6 @@
18
18
  "pptx": {
19
19
  "background": "#FAFAF8",
20
20
  "titleColor": "#0A0A0A",
21
- "textColor": "#3D3D3B",
22
- "slideNumber": true
21
+ "textColor": "#3D3D3B"
23
22
  }
24
23
  }
@@ -18,7 +18,6 @@
18
18
  "pptx": {
19
19
  "background": "#f7f2ea",
20
20
  "titleColor": "#241a12",
21
- "textColor": "#6b5d4c",
22
- "slideNumber": true
21
+ "textColor": "#6b5d4c"
23
22
  }
24
23
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: image-layout
3
- description: "Use this skill whenever the user wants EXISTING images combined or altered as pixels — 拼图 / 拼接 / 拼一张 / 宫格 / 九宫格 / 长图 / 对比图 / 前后对比 / 加水印 / 加标签 / 加边框 / 裁剪 / 圆角 / 缩放, or stitch / combine / merge images / collage / contact sheet / side-by-side / before-after / watermark / label / crop / round corners / resize. Examples: 'combine these four into one picture', '把生成的几张图拼成九宫格', 'add a caption under each'. Method: HTML+CSS rendered by this skill's bin/html2img.cjs. 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 — '生成一张九宫格的图' asks for ONE generated picture whose COMPOSITION is a grid, not for tiling existing files; documents / PDF / PowerPoint (document skill); Xiaohongshu cards (talos-xhs-ops); or upscaling / background removal / content-aware fill, which need a model, not CSS."
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