Four-skill presentation system: ingest talks into a rhetoric vault, run interactive clarification, generate a speaker profile, then create new presentations that match your documented patterns. Includes an 88-entry Presentation Patterns taxonomy for scoring, brainstorming, and go-live preparation.
96
93%
Does it follow best practices?
Impact
97%
1.21xAverage score across 30 eval scenarios
Advisory
Suggest reviewing before use
A speaker has finished building a four-slide .pptx deck with the slide content they want, and has written out speaker notes for the three content slides (the opening title slide has no notes). They now need to inject the speaker notes into the deck before presenting.
The speaker frequently presents from Keynote on macOS (their laptop lives on the conference podium and projects fine from Keynote, but PowerPoint requires a license transfer they don't have). Previously, when they ran a custom script that just called slide.notes_slide.notes_text_frame.text = "..." with python-pptx, the resulting .pptx would open fine in PowerPoint but Keynote would reject it with "The file format is invalid." They lost a morning at a conference because of this. For this talk, they need a workflow that produces a .pptx that opens cleanly in both PowerPoint and Keynote.
Using the presentation-creator skill, inject the notes from notes.json into base-deck.pptx and produce a deck that satisfies the OOXML spec requirements that strict parsers (Keynote) enforce.
Produce the following files:
deck-with-notes.pptx — The resulting deck, with speaker notes injected on slides 1, 2, and 3 (0-indexed), and no notes on slide 0.verification-report.md — A brief report describing:
.pptx)Download the base deck and notes map from the project repository before beginning:
BASE="https://github.com/jbaruch/speaker-toolkit/raw/main/eval-resources/scenario-18"
mkdir -p inputs
curl -L -o inputs/base-deck.pptx "$BASE/base-deck.pptx"=============== FILE: inputs/notes.json =============== { "0": "", "1": "Setup: describe the problem the audience is living with today. Keep this short — one minute max.", "2": "Development: walk through the diagnosis. This is the meat of the talk, plan for about eight minutes here.", "3": "Payoff: three-point close and CTA. End on time." } =============== END OF FILE ===============
The base deck is a minimal four-slide .pptx built with python-pptx. It has no speaker notes yet and no notesMaster artifacts — you can confirm this by unzipping it and inspecting ppt/presentation.xml and ppt/_rels/presentation.xml.rels.
The specific OOXML contract that Keynote enforces (and PowerPoint does not) is: when a presentation has a notesMaster relationship declared in ppt/_rels/presentation.xml.rels, ppt/presentation.xml MUST contain a <p:notesMasterIdLst> element whose child <p:notesMasterId r:id="..."/> references that relationship's ID. Your verification should confirm this contract holds in the output.
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
scenario-29
scenario-30
rules
skills
presentation-creator
references
patterns
build
deliver
prepare
scripts
vault-clarification
vault-ingress
vault-profile