skills/golem-powers/presentation-builder/SKILL.md
Step-by-step presentation builder using Michal's Speakers Workshop method, Oren Efraim's rules, and Uri Alon's techniques. Three sessions: find the premise, build structure and slides, then practice delivery. Use when: preparing a talk, building slides, refining a pitch, practicing a presentation, or reviewing presentation structure. Supports VoiceLayer for spoken practice runs. NOT for: writing blog posts, LinkedIn content, or general writing tasks.
npx skillsauth add etanhey/golems presentation-builderInstall 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.
Standing-preference binding (inherited from coach, inlined here for standalone use).
When the user states a stylistic/structural preference 2+ times in a session ("less terms", "fewer bullets", "more visuals", "premise-only", "no headers", "shorter", "denser", "simpler"), treat it as a STANDING preference for the rest of the session — not a per-turn correction. On the 2nd occurrence: self-prompt before every subsequent deliverable with
"STANDING PREFERENCE (this session): {verbatim quote}. Conform before deliver.", run a self-check, and re-draft if non-compliant — do not deliver and ask "is this better?". Ifbrain_storeis available: at boot, first search fortag:standingentries from the last 2 hours withvalid_untilnot expired — adopt theirsession_idif found (compaction-safe), otherwise mint a freshsession-{YYYY-MM-DDTHH:MM:SSZ}fromdate '+%Y-%m-%dT%H:%M:%SZ'. Tag entries withsession-preference + standing + {session-id},importance:3, and put bothsession_id:andvalid_until: end-of-session-...in the body. Future-session searches must requiresession_idmatch (not just date) before applying. Ifcoachis also loaded, prefer its canonical definition.
Build great presentations step by step. Based on Michal's Speakers Workshop (TechGym/Melio), Oren Efraim's "Art of Building and Delivering Great Presentations", Uri Alon (Weizmann), and 6+ expert sources.
Full rules reference (local, gitignored):
docs.local/speakers-workshop/presentation-rules.md
/presentation-builder [workflow]
Workflows:
/presentation-builder premise — Find and refine the single premise (Session 1)/presentation-builder build — Frame, draft with AI, polish, slides, opening/closing (Session 2)/presentation-builder review — Review and practice a finished presentation (Session 3)/presentation-builder full — Walk through the entire process start to finish/presentation-builder rules — Show all extracted presentation rules (quick reference)Goal: One sentence that captures the entire talk. Everything else flows from this.
Process:
Uri Alon's Rule: Every good talk has ONE single premise. Write it FIRST. If a slide doesn't support it, cut it.
Output: A single premise sentence + audience definition + time constraint.
This is the main work session. Follow this order strictly:
Use Oren Efraim's 10-minute structure (scales to any length):
Ask the user to map their content to these 5 sections.
Help the user write a prompt for AI to generate a first draft:
Go through the draft and:
For each slide, check:
Oren Efraim: 10-30 seconds per slide. If you need more time, split the slide.
Opening is the LAST thing you write. You need to know all your slides before you know the best hook.
5 Hook Types (Oren Efraim):
| Type | How | Example | |------|-----|---------| | Question | Trigger curiosity | "What happens when you build something for yourself and it becomes a system?" | | Shared Pain | Empathy hook | "Remember deleting the production database?" | | Personal Story | Create proximity | "Two years ago I couldn't speak in front of anyone..." | | Stunning Fact | Challenge assumptions | "We see 1,200 presentations a year. We remember 3%." | | Paint a Future | Optimism hook | "Imagine a world where every talk you give is remembered." |
Closing: The LAST point MUST callback to the opening. Full circle = closure.
Session 2 output: A complete presentation wireframe — structure, polished slides, opening, closing. Ready to practice.
Goal: Make the presentation as good as possible. Practice, get feedback, refine.
This is where you take the wireframe from Session 2 and turn it into a performance.
If voice is available (VoiceLayer), use voice_ask for practice runs:
Show your opening, get live feedback, iterate. This is the final polish before the real event.
When VoiceLayer is available, use it for:
voice_ask — speak the opening, get timed feedbackvoice_ask — "How did it go? What would you change?"voice_speak — capture insights silently (use insight: prefix)voice_speak — hear it spoken, check if it sounds naturaltools
The human-eval UX contract for Phoenix views: turn-by-turn scrollable replay (not a scorecard), hide-but-copyable IDs, collapsed thinking, identity chips, tool filters, tiny frozen starter datasets, mark-wrong-in-thread, mobile-first. Use when: building or reviewing ANY Phoenix/eval view, annotation UI, session replay, or human-grading surface. Triggers: phoenix view, eval UI, annotation view, session replay, human eval UX, grading interface. NOT for: Phoenix data pipelines/ingest (capture scripts have their own specs).
tools
macOS systems specialist — AppKit NSPanel architecture, launchd services, socket activation, MCP bridge resilience, syspolicyd, and high-frequency SwiftUI dashboards. Use when building menu-bar apps, LaunchAgents, debugging syspolicyd/Gatekeeper/TCC, resilient UDS/MCP bridges, or SwiftUI dashboards at 10Hz+.
development
Bulk LLM-judging protocol for fleet-dispatched verdict runs (KG cluster, eval harness). Use when: dispatching or running judge workers (J1/J2/RT), planning bulk-apply from verdict JSONL, or triaging evidence_degraded outputs. Triggers: judge fleet, bulk judge, R3 verdicts, kg-judge, RT gate, evidence_degraded. NOT for: single-item code review, Phoenix view UX (use phoenix-human-view), or non-judge eval pipelines.
development
Quiet-down protocol for sprint close: when the fleet wraps, delete ALL polling crons and monitors, send ONE final dashboard + ONE message, then go SILENT. Use when: fleet wraps, all workers done, overnight queue exhausted, sprint close, Etan asleep/away with nothing approved left. Triggers: fleet wrap, wrap the fleet, stand down, going quiet, sprint close. NOT for: mid-sprint monitoring (keep your loops), spawning a successor (use /session-handoff first).