apps/runtime/src-tauri/builtin-skills/pptx/skills/slide-making-skill/SKILL.md
Implement single-slide PowerPoint pages with PptxGenJS. Use when writing or fixing slide JS files: dimensions, positioning, text/image/chart APIs, styling rules, and export expectations for native .pptx output.
npx skillsauth add haojing8312/workclaw slide-making-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill teaches how to generate native .pptx slides using PptxGenJS (JavaScript).
Read pptxgenjs.md for the complete PptxGenJS API reference, including:
| Language | Default | Alternatives | |----------|---------|--------------| | Chinese | Microsoft YaHei (微软雅黑) | — | | English | Arial | Georgia, Calibri, Cambria, Trebuchet MS |
fontFace: "Microsoft YaHei" // Chinese text
fontFace: "Arial" // English text (or approved alternative)
Use system-safe fonts for cross-platform compatibility. Header/body can use different fonts (e.g., Georgia + Calibri).
Plain body text and caption/legend text must NOT use bold.
// ✅ Correct
slide.addText("Main Title", { bold: true, fontSize: 36, fontFace: "Arial" });
slide.addText("Body text here.", { bold: false, fontSize: 14, fontFace: "Arial" });
// ❌ Wrong
slide.addText("Body text here.", { bold: true, fontSize: 14 });
Use ONLY the provided color palette. Do NOT create or modify colors.
transparency property (0-100)// ✅ Correct: Using palette colors
slide.addShape(pres.shapes.RECTANGLE, { fill: { color: theme.primary } });
slide.addText("Title", { color: theme.accent });
// ❌ Wrong: Colors outside palette
slide.addShape(pres.shapes.RECTANGLE, { fill: { color: "1a1a2e" } });
Gradients are prohibited. Use solid colors only.
// ✅ Correct: Solid colors
slide.background = { color: theme.bg };
// ✅ Correct: Solid + transparency for overlay
slide.addShape(pres.shapes.RECTANGLE, { fill: { color: theme.accent, transparency: 50 } });
Animations and transitions are prohibited. All slides must be static.
All slides except Cover Page MUST include a page number badge in the bottom-right corner.
3 or 03), NOT "3/12"slide.addShape(pres.shapes.OVAL, {
x: 9.3, y: 5.1, w: 0.4, h: 0.4,
fill: { color: theme.accent }
});
slide.addText("3", {
x: 9.3, y: 5.1, w: 0.4, h: 0.4,
fontSize: 12, fontFace: "Arial",
color: "FFFFFF", bold: true,
align: "center", valign: "middle"
});
slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
x: 9.1, y: 5.15, w: 0.6, h: 0.35,
fill: { color: theme.accent },
rectRadius: 0.15
});
slide.addText("03", {
x: 9.1, y: 5.15, w: 0.6, h: 0.35,
fontSize: 11, fontFace: "Arial",
color: "FFFFFF", bold: true,
align: "center", valign: "middle"
});
The compile script passes a theme object with these exact keys:
| Key | Purpose | Example |
|-----|---------|---------|
| theme.primary | Darkest color, titles | "22223b" |
| theme.secondary | Dark accent, body text | "4a4e69" |
| theme.accent | Mid-tone accent | "9a8c98" |
| theme.light | Light accent | "c9ada7" |
| theme.bg | Background color | "f2e9e4" |
NEVER use other key names like background, text, muted, darkest, lightest.
Each subagent outputs a complete, runnable JS file:
// slide-01.js
const pptxgen = require("pptxgenjs");
const slideConfig = {
type: 'cover',
index: 1,
title: 'Presentation Title'
};
// ⚠️ MUST be synchronous (not async)
function createSlide(pres, theme) {
const slide = pres.addSlide();
slide.background = { color: theme.bg };
slide.addText(slideConfig.title, {
x: 0.5, y: 2, w: 9, h: 1.2,
fontSize: 48, fontFace: "Arial", // English text uses Arial
color: theme.primary, bold: true, align: "center"
});
return slide;
}
// Standalone preview - use slide-specific filename (slide-XX-preview.pptx)
if (require.main === module) {
const pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
const theme = {
primary: "22223b",
secondary: "4a4e69",
accent: "9a8c98",
light: "c9ada7",
bg: "f2e9e4"
};
createSlide(pres, theme);
// Replace XX with actual slide index (01, 02, etc.) to avoid conflicts
pres.writeFile({ fileName: "slide-01-preview.pptx" });
}
module.exports = { createSlide, slideConfig };
// ❌ WRONG - compile.js won't await
async function createSlide(pres, theme) { ... }
// ✅ CORRECT
function createSlide(pres, theme) { ... }
color: "FF0000" // ✅ CORRECT
color: "#FF0000" // ❌ CORRUPTS FILE
shadow: { color: "00000020" } // ❌ CORRUPTS FILE
shadow: { color: "000000", opacity: 0.12 } // ✅ CORRECT
// ✅ Use fit:'shrink' for long titles
slide.addText("Long Title Here", {
x: 0.5, y: 2, w: 9, h: 1,
fontSize: 48, fit: "shrink"
});
"FF0000")Assume there are problems. Your job is to find them.
Your first render is almost never correct. Approach QA as a bug hunt, not a confirmation step. If you found zero issues on first inspection, you weren't looking hard enough.
python -m markitdown slide-XX-preview.pptx
Check for missing content, typos, wrong order.
Check for leftover placeholder text:
python -m markitdown slide-XX-preview.pptx | grep -iE "xxxx|lorem|ipsum|placeholder"
If grep returns results, fix them before declaring success.
python -m markitdown slide-XX-preview.pptx → Review contentDo not declare success until you've completed at least one fix-and-verify cycle.
tools
处理通用任务:创建和修改文件、分析本地文件数据、整理文件结构、执行命令、网页检索和浏览器操作。Use when 用户未指定垂直专家但需要端到端完成任务。
development
Open, create, read, analyze, edit, or validate Excel/spreadsheet files (.xlsx, .xlsm, .csv, .tsv). Use when the user asks to create, build, modify, analyze, read, validate, or format any Excel spreadsheet, financial model, pivot table, or tabular data file. Covers: creating new xlsx from scratch, reading and analyzing existing files, editing existing xlsx with zero format loss, formula recalculation and validation, and applying professional financial formatting standards. Triggers on 'spreadsheet', 'Excel', '.xlsx', '.csv', 'pivot table', 'financial model', 'formula', or any request to produce tabular data in Excel format.
data-ai
生成、编辑和读取 PowerPoint 演示文稿。支持三类任务: 1) 读取或分析现有 PPTX 文本内容; 2) 在模板或已有演示文稿上做 XML 安全编辑; 3) 从零创建新演示文稿并输出原生 .pptx 文件。 适用于 .pptx 演示文稿创建、结构化改写、模板复用、讲稿梳理与版式优化。
tools
用于创建或优化高质量技能。适用于需要判断是否该新建技能、设计触发规则、整理复用资源并做轻量评测时。