agentleFS
greglas75greglas75/zuvo/skills/presentation/SKILL.md

presentation

Skill7 starsChanged 27 days agoMITView on GitHub

Generate PowerPoint (PPTX) presentations from a topic, outline, or content file. Creates professional slides using python-pptx with consistent theming and typography. Modes: [topic] (from scratch), from [file] (from markdown), --slides N, --theme dark|light|corporate, --outline-only, --out [path], --lang [code].

  • Installs packages

24 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use TubeScribe, deep-research-pro and 8 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • AlekseiULSkill

    TubeScribe

    YouTube video summarizer with speaker detection, formatted documents, and audio output. Works out of the box with macOS built-in TTS. Optional recommended tools (pandoc, ffmpeg, mlx-audio) enhance quality. Requires internet for YouTube access. No paid APIs or subscriptions. Use when user sends a YouTube URL or asks to summarize/transcribe a YouTube video.

    Also in 3 projects that use this

  • GPTtangSkill

    deep-research-pro

    Multi-source deep research agent. Searches the web, synthesizes findings, and delivers cited reports. No API keys required.

    Also in 3 projects that use this

  • vanzan01Skill

    tweet-writer

    Format instructions for writing tweets.

    Also in 3 projects that use this

  • vijpatel7Skill

    audit-website

    Audit websites for SEO, performance, security, technical, content, and 15 other issue cateories with 150+ rules using the squirrelscan CLI. Returns LLM-optimized reports with health scores, broken links, meta tag analysis, and actionable recommendations. Use to discover and asses website or webapp issues and health.

    Also in 3 projects that use this

  • ReScienceLabSkill

    reddit

    Search and retrieve content from Reddit. Get posts, comments, subreddit info, and user profiles via the public JSON API. Use when user mentions Reddit, a subreddit, or r/ links.

    Also in 3 projects that use this

  • sirakinbSkill

    last30days

    Research a topic from the last 30 days on Reddit + X + Web, become an expert, and write copy-paste-ready prompts for the user's target tool.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

9 rules. 0 are common, 5 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 21 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read ../../shared/includes/run-logger.md for log format and file path resolution.

    line 23
  2. Distinctive:

    Always start with TITLE, always end with SUMMARY + CLOSING

    line 85
  3. Distinctive:

    Read the source file. Map sections to slides:

    line 93
  4. Very specific:

    If the file has more than 15 sections and --slides is set, merge related sections to fit.

    line 104
  5. Distinctive:

    If user interaction is available, ask whether to keep the script.

    line 180
  6. Very specific:

    Follow the retrospective protocol from retrospective.md.

    line 210
  7. Distinctive:

    If gate check skips: print "RETRO: skipped (trivial session)" and proceed.

    line 212
  8. Very specific:

    Append via wrapper (REQUIRED): Never >> directly to ~/.zuvo/runs.log — the wrapper is the gate that verifies a retro entry exists for this …

    line 214
  9. Distinctive:

    No walls of text -- shorten any bullet that exceeds 2 rendered lines

    line 242

“Common” is measured: kept by at least 6 in 10 of the 21 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

zuvo:presentation — PowerPoint Generator

Generate professional PPTX presentations from a topic description, outline, or existing content file. Uses python-pptx to produce slides with consistent design, speaker notes, and visual variety.

Requires: python-pptx (pip install python-pptx)

Scope: Generating slide decks from topics or content files. Out of scope: Editing existing PPTX files, complex data visualizations (charts, graphs), image generation.

Run Logging

Read ../../shared/includes/run-logger.md for log format and file path resolution. Read ../../shared/includes/retrospective.md for log format and file path resolution.

Argument Parsing

ArgumentBehavior
[topic]Plan outline from scratch, generate slides
from [file]Build slides from existing markdown or text file
--slides NTarget slide count (default: 10)
--theme dark|light|corporateColor theme (default: corporate)
--out [path]Output path (default: ./[topic-slug].pptx)
--outline-onlyGenerate outline for approval, do not create PPTX
--lang [code]Content language (default: same as topic input)

Examples:

zuvo:presentation "Q1 2026 Product Review"
zuvo:presentation from docs/architecture.md --slides 8
zuvo:presentation "Security Audit Results" --outline-only
zuvo:presentation "Quarterly Report" --lang pl --theme dark

Phase 1: Content Planning

1.1 Determine Source

InputAction
Topic stringPlan outline from scratch (1.2)
from [file]Read file, extract sections as slide candidates (1.3)

1.2 Plan from Topic

Generate a structured outline. Each slide needs:

Slide [N]: [Type]
  Title: [slide title]
  Content: [bullets or description]
  Speaker notes: [optional context]

Slide types:

TypeUse for
TITLEOpening -- presentation title, subtitle, date
SECTIONSection divider -- large title, minimal content
CONTENTStandard -- title + bullet points (max 6 bullets)
TWO_COLUMNComparison, before/after, pros/cons
QUOTEKey insight, important statement
METRICSNumbers, KPIs, statistics (2-4 big numbers)
TIMELINEProcess steps, roadmap, milestones (3-6 items)
IMAGE_PLACEHOLDERSlide with image area + caption (user fills later)
SUMMARYKey takeaways (3-5 points)
CLOSINGThank you, Q&A, contact info

Structure rules:

  • Always start with TITLE, always end with SUMMARY + CLOSING
  • Max 6 bullets per CONTENT slide, max 15 words per bullet
  • Insert a SECTION divider every 4-5 content slides
  • Include at least one METRICS or QUOTE slide for visual variety
  • Speaker notes carry context that does not belong on the slide itself

1.3 Plan from File

Read the source file. Map sections to slides:

Markdown elementSlide type
# HeadingTITLE or SECTION
## HeadingCONTENT slide title
Bullet listsSlide bullets (split if more than 6)
TablesTWO_COLUMN or METRICS
Code blocksCONTENT with monospace note
BlockquotesQUOTE

If the file has more than 15 sections and --slides is set, merge related sections to fit.

1.4 Outline Approval

  • --outline-only: print outline and STOP
  • Interactive environment: print outline, ask Proceed? (y / edit / n)
  • Non-interactive: proceed automatically

Phase 2: Theme Configuration

Color Themes

ThemeBackgroundTextAccentAccent 2Subtitle
light#FFFFFF#1A1A2E#0066CC#00A86B#6B7280
dark#1A1A2E#F0F0F0#4DA6FF#66D9A5#9CA3AF
corporate#FFFFFF#2D3748#1A365D#C05621#718096

Typography

Title slides:    Calibri 36pt Bold
Section slides:  Calibri 32pt Bold
Slide titles:    Calibri 28pt Bold
Body text:       Calibri 18pt
Bullets:         Calibri 16pt
Speaker notes:   Calibri 12pt
Metrics:         Calibri 48pt Bold
Quotes:          Calibri 24pt Italic
Captions:        Calibri 11pt (subtitle color)

Layout (16:9 widescreen, inches)

Slide: 13.333 x 7.5
Margins: left 0.8, right 0.8, top 1.2 (below title), bottom 0.6
Title Y: 0.4, height 0.8
Content Y: 1.4, width 11.733, height 5.5
Column gap: 0.4 (TWO_COLUMN)
Footer Y: 7.0

Phase 3: Generate PPTX

3.1 Write Python Script

Generate scripts/generate_presentation.py with the planned outline and theme embedded. The script uses python-pptx to build each slide programmatically.

Script includes:

  • Theme constants (colors, fonts, dimensions)
  • Helper functions: set_slide_bg, add_textbox, add_bullets, add_accent_bar
  • Slide builder functions: one per slide type (build_title_slide, build_content_slide, build_metrics_slide, etc.)
  • Main function that creates the presentation and calls builders in sequence

Each builder function receives the specific content for that slide (title, bullets, metrics values, etc.) and applies the theme consistently.

3.2 Execute

python3 scripts/generate_presentation.py

Verify:

ls -la [output_path]
python3 -c "from pptx import Presentation; p = Presentation('[output_path]'); print(f'Slides: {len(p.slides)}')"

3.3 Cleanup

If user interaction is available, ask whether to keep the script. If not available, keep it (useful for re-generation and manual editing).


Phase 4: Output

Summary

PRESENTATION CREATED
-----
File:   [output_path]
Slides: [N]
Theme:  [theme name]
Size:   [file size]

Slide overview:
  1. [TITLE]       -- [title text]
  2. [CONTENT]     -- [title text]
  3. [METRICS]     -- [title text]
  ...

Script: scripts/generate_presentation.py
Run: <ISO-8601-Z>	presentation	<project>	-	-	<VERDICT>	-	<DURATION>	<NOTES>	<BRANCH>	<SHA7>	<INCLUDES>	<TIER>
-----

Retrospective (REQUIRED)

Follow the retrospective protocol from retrospective.md. Gate check → structured questions → TSV emit → markdown append. If gate check skips: print "RETRO: skipped (trivial session)" and proceed.

Append via wrapper (REQUIRED). Never >> directly to ~/.zuvo/runs.log — the wrapper is the gate that verifies a retro entry exists for this run. Order: retro bash executed → wrapper invoked → completion claimed.

printf '%b\n' "$RUN_LINE" | ~/.zuvo/append-runlog

Expected stdout: OK: appended to runs.log (retro verified for <skill> on <project>). If exit 2 with RETRO_REQUIRED — go execute the retro bash from retrospective.md first; never bypass with ZUVO_SKIP_RETRO_GATE=1. After the wrapper succeeds, print a Logs: evidence line (tail -1 ~/.zuvo/retros.log, grep -c "^<!-- RETRO -->" ~/.zuvo/retros.md, tail -1 ~/.zuvo/runs.log) before claiming completion. Printing the markdown retro section without executing the bash leaves all three log files empty.

<DURATION>: use N-slides (number of slides generated).

Post-Generation Tips

To modify:
  Edit scripts/generate_presentation.py and re-run
  Add images: open in PowerPoint, replace IMAGE_PLACEHOLDER slides
  Change theme: edit THEME dict in script, re-run

Content Quality Rules

  1. Max 6 bullets per slide -- split if more
  2. Max 15 words per bullet -- concise, not sentences
  3. One idea per slide -- if the title needs "and", split it
  4. Visual variety -- alternate CONTENT with METRICS, QUOTE, TWO_COLUMN
  5. Speaker notes for detail -- put context in notes, not on the slide
  6. No walls of text -- shorten any bullet that exceeds 2 rendered lines
  7. Consistent language -- match the language of the topic input

Error Handling

ErrorAction
python-pptx not installedPrint pip install python-pptx and stop
Output path not writableFall back to ./presentation.pptx
Script execution failsShow error, keep script for debugging
from [file] -- file not foundPrint error, ask for correct path

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.