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
npx -y skills add purpose1004/dark-tech-report-generatorAssembled 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:
item.color(hex) — explicit overrideitem.level— one ofdone | doing | pending | bonusitem.statustext — matched against aliases insrc/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:titleeyebrowperiodauthordeptdatesummarylocalelabelsfontslogo(path)highlights_titlenext_titlenext_eyebrowsummary_slogancover.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}]}
- simple:
main_lines: array- timeline slide:
{name, subtitle?, timeline:[{month|label, title, desc}], value?} - two-column points (auto-paired):
{name, subtitle?, points:[...]}
- timeline slide:
highlights: 4 per slide ×{title, headline?, points:[...]}issues: N columns ×{title, content}next_half(ornext_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
examples/
- generic.zh.json2.9 KB
- monthly.en.json3.7 KB
- monthly.zh.json3.8 KB
- preview/01-cover.png23.8 KB
- preview/02-overview.png21.7 KB
- preview/03-kpi-merged.png22.1 KB
- preview/04-timeline.png22.9 KB
scripts/
- preview.jsruns2.1 KB
src/
- build.jsruns20.2 KB
- labels.jsruns1.8 KB
- themes.jsruns1.0 KB
- validate.jsruns2.0 KB
- CHANGELOG.md1.5 KB
- .gitattributes32 B
- .gitignore60 B
- LICENSE1.0 KB
- package.json998 B
- README.md2.5 KB
- README.zh-CN.md2.7 KB
- report.schema.json4.9 KB