slide-generate — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited slide-generate (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate a complete PowerPoint presentation from an analyzed template. The presentation will match the template's fonts, colors, layout patterns, and visual style.
Prerequisite: The template must be analyzed first using the slide-analyze skill.
Gather from the user (ask if not provided):
slide-workspace/templates/ if unsure)Check that the template workspace exists:
slide-workspace/templates/{template-name}/
guideline.md ← required
sample_code.js ← required
images/ ← may be emptyIf missing, inform the user to run slide-analyze on the template first.
Derive a filesystem-safe presentation name from the topic with a timestamp suffix:
YYYYMMDD-HHmmss format (use the current date/time)"Q4 Sales Review 2024" → q4-sales-review-2024-20260407-143022The timestamp ensures each run produces a unique folder so outputs are never overwritten.
Create the presentation workspace directory:
slide-workspace/presentations/{presentation-name}/Read from the template workspace:
guideline.md — design guidelinessample_code.js — primary reference: contains master definitions, layout patterns, background colors, image usage, and positioning examplesimages/ directory to get available image filenamesRead prompt rules from shared/prompts/outline-rules.md.
Using the outline rules as system instructions and the template guideline + user's topic as context, generate a presentation outline:
Save the outline to:
slide-workspace/presentations/{presentation-name}/outline.mdExtract the preamble directly from sample_code.js — no LLM generation needed.
The preamble consists of everything in sample_code.js before the first slide block, which includes:
const pptx = new PptxGenJS();pptx.defineLayout(...) (if present)pptx.defineSlideMaster(...) callsfunction addLayout0Images(slide) {...})A "slide block" begins when the first pptx.addSlide call appears. Stop extraction at that point.
Do NOT include any addSlide calls or pptx.writeFile(...).
Save the extracted section to:
slide-workspace/presentations/{presentation-name}/preamble.jsParse the outline into individual slides (each numbered item is a slide).
Read prompt rules from shared/prompts/slide-code-rules.md.
For each slide in the outline:
let slide = pptx.addSlide('MASTER_X') + content// Slide N: <title>sample_code.js patterns — do NOT use context.jsonCollect all per-slide code blocks.
Combine the code using this structure:
// Preamble
{preamble code}
// Hoisted helper functions (any `function name() {}` extracted from slide blocks)
{hoisted functions}
// Per-slide code (each wrapped in IIFE to prevent variable conflicts)
(function() {
// Slide 1: ...
})();
(function() {
// Slide 2: ...
})();
// ... more slides ...
pptx.writeFile({ fileName: 'output.pptx' });Important — function hoisting: If any slide code defines top-level named functions (e.g., function addLayout0Images(slide) {...}), extract them from the slide block and place them before the IIFEs so they are accessible across all slides.
Save to:
slide-workspace/presentations/{presentation-name}/code.jsCheck that pptxgenjs is available:
node -e "require('pptxgenjs')" 2>/dev/nullIf it fails, run the setup script:
bash shared/scripts/setup_deps.shpowershell -ExecutionPolicy Bypass -File shared/scripts/setup_deps.ps1Execute the code:
node shared/scripts/run_pptxgenjs.js \
"slide-workspace/presentations/{presentation-name}/code.js" \
"slide-workspace/templates/{template-name}/images" \
"slide-workspace/presentations/{presentation-name}/output.pptx"Report to the user:
slide-workspace/presentations/{presentation-name}/output.pptxslide-workspace/
presentations/
{presentation-name}/
outline.md ← Presentation outline
preamble.js ← PptxGenJS init + slide master definitions
code.js ← Complete combined script
output.pptx ← Generated presentation fileslide-analyze firstpptx.writeFile() is calledimages variable is pre-injected by run_pptxgenjs.js as { filename: absolutePath } — never re-declare it in code.jscontext.json is NOT used during generation — all style/layout information is derived from sample_code.js and guideline.mdsample_code.js (not LLM-generated)slide.background matching the pattern in sample_code.jsaddLayout0Images) already defined in the preamble must be called as the FIRST statement on every slide~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.