presentation-prep
Use when organizing raw content into slide-ready format, or when the user says "prepare slides", "structure this for a presentation", "brief for pptx".
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when organizing raw content into slide-ready format, or when the user says "prepare slides", "structure this for a presentation", "brief for pptx".
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
| name | presentation-prep |
| description | Use when organizing raw content into slide-ready format, or when the user says "prepare slides", "structure this for a presentation", "brief for pptx". |
Transforms raw content into slide-ready structure using David Phillips' 5 cognitive principles ("How to Avoid Death by PowerPoint").
Each slide = one idea. Two messages → two slides. Human attention hijacks toward the familiar (a name, a number) and loses the rest.
The visually largest element captures eyes automatically. Most templates make the title the largest element — wrong.
Above 6 objects, the brain is forced to count instead of see — 500% more cognitive effort; audience disengages.
Progressive reveal is the default. Almost every content slide should split into multiple reveals — animations: none is the exception, reserved for opening/closing slides.
The body of a content slide is a keyword phrase (2–4 words), not a complete sentence. Descriptive sentences belong in notes. If you find yourself writing "Well-defined issues take time…" on a slide, that's prose — extract the keyword ("Repetitive work") and move the sentence to notes.
Do not add icons unless the user explicitly asks. When the user requests icons:
Ensure footer clearance with an explicit calculation:
N items × (itemH + gap) ≤ (footerY - listTop)
Example: a 5-item list between y=1.1 and y=5.1 → itemH + gap = 0.80 (e.g. itemH=0.68, gap=0.12).
| File | Purpose |
|---|---|
assets/reference-presentation.odp | 18-slide neutral reference (dark theme): opening/closing slides, pill labels, dominant keywords, progressive-build sequences, warning tables, flow diagrams. Use as visual spec when implementing from scratch. |
assets/animation-example.odp | Minimal working example of progressive reveal animations in LibreOffice/Impress format. |
For ODP animation XML and implementation details, see references/odp-animations.md.
Deliver as YAML:
Field definitions:
| Field | What goes here |
|---|---|
message | The ONE idea this slide communicates — one sentence max |
visual | The dominant visual element(s): image, icon, keyword, code snippet, table, or diagram. Describe what appears — not layout, not size, not position. Size follows Principle 3 automatically. Forbidden: size words (large, small), position words (centered, left, right, horizontal, side by side, top, bottom), the "Small title: '...'" pattern, and animation descriptions (those belong in animations). |
notes | Everything the presenter would speak — text that must NOT appear on the slide (Principle 2) |
animations | progressive-build (default) or none (opening/closing only). In pptxgenjs (no native animation support): implement as duplicate slides — one per reveal. Active: full brightness, bold. Previous: dimmed (DIM from validated palette). Future: hidden. Title and section labels persist on every duplicate. Arrows: full brightness toward active item; dimmed between already-shown items. For ODP native animations, see references/odp-animations.md. |
objects | Count every visible element: title, keywords, icons, list items, images, table rows |
deck:
title: "Presentation Title"
filename: "presentation-title.pptx"
background: dark # dark recommended; light only if explicitly requested
transition: fade # uniform across all slides
slides:
- id: 1
type: opening # title slide with presentation theme
message: "..."
visual: "Icon or thematic image + presentation name as dominant keyword"
notes: "..."
animations: none
objects: 2
- id: 2
message: "..."
visual: "Keyword or diagram that anchors the message — no layout instructions"
notes: "Full spoken text — nothing from here should appear on the slide"
animations: none # or: progressive-build (dim previous items to ~40% opacity as each bullet is revealed)
objects: 4
- id: N
type: closing # thank-you + contact info; omit if context doesn't call for it
message: "..."
visual: "..."
notes: "..."
animations: none
objects: 2
| Token | Hex | Use |
|---|---|---|
BG | 0A0E1A | Slide background |
WHITE | FFFFFF | Active keyword, label |
BODY | C0D2E4 | Body text (high contrast on BG) |
DIM | 6B7A8D | Previous-reveal items, dimmed keyword (validated for projector; avoid 565E6B — too dark) |
ACCENT | 4A9EF4 | Footer rule, flow-diagram borders |
Section label: 10pt, bold, white, charSpacing: 3, uppercase. Footer: thin horizontal line at y=5.2 in ACCENT with transparency: 60 — anchors the bottom of every content slide.
After generating the .pptx, convert to images (soffice --convert-to pdf + pdftoppm -jpeg -r 150) and dispatch a subagent for visual inspection. The subagent catches problems the generator cannot see: overflow, dead space, invisible icons, last item clipping the footer, insufficient dimming for projector, vertical position inconsistencies across slides in the same section.
Iterate until zero critical issues remain.
Read HANDOFF.md and continue from where we left off
Use when ending a session, completing a milestone, or stopping mid-task and context must be preserved for the next agent
Use when the user shares a URL or article and asks to extract key learnings, summarize topics, or generate a digest formatted for Google Chat, Slack, Discord, Telegram, or similar messaging tools. Accepts an optional format parameter.
Use when working with Kubernetes clusters, manifests, and related tasks.
Use when writing a CV, bio, LinkedIn post, or talk abstract for Silvio; when calibrating technical recommendations to Silvio's experience ("do I have experience with X?"); or when an introduction or speaker section is needed. Loads timeline, stack, credentials, and preferences on demand via the pointer table.
Use when reviewing or tightening a Markdown file that will be read by an agent (SKILL.md, CLAUDE.md, custom agent prompts, slash-command instructions) to make it more discoverable, imperative, and token-efficient. Accepts a file path or a skill name (e.g. "handoff").