agentsclimarketplace

Dark tech report generator

Skill purpose1004/dark-tech-report-generator

Turn a report.json into an editable, dark-tech-style PowerPoint (.pptx) work report. Use for monthly / quarterly / half-year / annual reports when the user wants an editable PPTX deck. Supports zh/en labels, configurable fonts and status colors. 把 report.json 生成暗黑科技风、可编辑的 PPTX 工作汇报(月报/季报/半年报/年报),支持中英文与可配置字体、状态色。From its SKILL.md

Install
npx -y skills add purpose1004/dark-tech-report-generator

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 5 commands, including `npm install pptxgenjs` and 4 more.

SKILL.md

3.8 KB, 996 tokens by cl100k_base, as published. Nobody here has run it

Dark-Tech Report Generator

Render a structured report.json into a dark-tech, editable .pptx deck. Data and styling are separated: content lives in JSON, layout lives in src/build.js. Re-run after editing data.

Runs on any harness (Claude Code / Cursor / Codex / plain CLI). Pure JS, offline, deterministic.

Prerequisites

  • Node.js (>= 18)
  • npm install pptxgenjs (run once in this folder)

Usage

# CLI (after `npm install`):
npx dark-tech-report <input.json> [output.pptx]
# or run the script directly:
node src/build.js <input.json> [output.pptx]

Default output: same dir & name as input, .pptx. Invalid input prints ERROR: lines and exits 1; non-fatal issues print WARN:.

Themes

meta.theme: "dark" (default) / "midnight" / "light", or an object { "preset": "dark", "accent": "FF6B35", ... } to override individual colors. Presets live in src/themes.js.

Schema & validation

Full JSON Schema: report.schema.json (draft-07) — use it for editor autocomplete or to let an agent self-check its report.json. src/build.js also runs a built-in lightweight structural check before rendering.

Localization

  • meta.locale: "zh" (default) or "en" — switches built-in UI strings (section titles, legend, column headers).
  • Override any label via meta.labels (deep-merged over the locale pack). Example: "labels": { "kpiCols": { "kpi": "本月目标", "actual": "实际进展" } }.
  • Add a new language by adding a locale block in src/labels.js.

Status colors (decoupled from language)

Each scorecard item resolves a color by, in order:

  1. item.color (hex) — explicit override
  2. item.level — one of done | doing | pending | bonus
  3. item.status text — matched against aliases in src/labels.js (zh + en)

Colors: done=green, doing=blue, pending=grey, bonus=purple.

Fonts (cross-platform)

meta.fonts = { zh, latin, mono }. Defaults: zh Microsoft YaHei, latin Arial, mono Consolas. For CJK on macOS/Linux, set meta.fonts.zh to a CJK font present on the target machine (e.g. "Noto Sans SC", "PingFang SC").

Data schema (report.json)

All fields optional; missing sections are skipped. Full examples in examples/.

  • meta: title eyebrow period author dept date summary locale labels fonts logo(path) highlights_title next_title next_eyebrow summary_slogan
  • cover.info_cards: 1–3 × {label, value, note}
  • metrics: any count (3/row) × {label, value, unit?, note?}
  • kpi_scorecard: array; each item → one slide
    • simple: {category, items:[{kpi, actual, status|level|color}]}
    • merged (one table with a Category column): {category, merged:true, items:[{cat, kpi, actual, status|level}]}
  • main_lines: array
    • timeline slide: {name, subtitle?, timeline:[{month|label, title, desc}], value?}
    • two-column points (auto-paired): {name, subtitle?, points:[...]}
  • highlights: 4 per slide × {title, headline?, points:[...]}
  • issues: N columns × {title, content}
  • next_half (or next_plan): rows × {goal, milestone, node?}
  • summary: string

Styling (built-in)

16:9, dark #0A1224 + glow accents (green #4CE2B0 / blue #5F8CFF), rounded panels, hairline borders, auto page numbers.

QA (optional, cross-platform)

LibreOffice: soffice --headless --convert-to pdf out.pptx then pdftoppm -png out.pdf slide. Or open the .pptx in PowerPoint and edit directly.

What ships with it: 20 files

141.7 KB alongside SKILL.md, 5 of them executable

scripts/

src/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.