Seven-skill presentation system: ingest talks into a rhetoric vault, run interactive clarification, generate a speaker profile, create presentations that match your documented patterns, produce the deck illustrations + thumbnail visual layer, create and publish talk-content Agent Skills with talk pages to a Jekyll shownotes site, and verify a recorded screencast against its storyboard. Includes a 113-entry Presentation Patterns taxonomy (83 observable: 64 patterns + 19 antipatterns; 30 unobservable: 21 patterns + 9 antipatterns) for scoring, brainstorming, and go-live preparation.
75
94%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Implements the policy in
rules/title-overlay-rules.md.
Each slide in outline.yaml gains one optional safe_zone field:
slides:
- n: 3
title: "The Question"
format: FULL
image_prompt: "[STYLE ANCHOR]. <scene description> ..."
text_overlay: "how many hours last week..."
safe_zone:
zone: upper_third
surface: "uniform backdrop drawn from the style anchor"zone — one of upper_third, middle_third, lower_third,
left_half, right_half. Horizontal bands reserve a full-width
strip; half-frame zones reserve one side of the frame for the title
column and push the subject to the opposite side. left_third /
right_third are intentionally excluded — too narrow to hold
horizontal title text. middle_third is for styles whose subject
naturally frames a clean center opening (TV sets, monitors, windows,
portrait frames, vignettes).surface — optional short phrase describing what fills the zone in
the deck's own visual vocabulary (e.g. "unbroken painted sky", "flat
studio backdrop", "parchment grain", "gradient wash"). If omitted, a
generic default is used, but results are noticeably better with an
explicit style-anchored surface.Slides without a safe_zone field generate and apply exactly as today.
Poster-theatrical decks (style_anchor.composition: poster-theatrical) use no
safe_zone fields at all — the title and footer are baked into the image and
only the QR code is inserted afterward. See rules/title-overlay-rules.md §0.
| Script | Role |
|---|---|
generate-illustrations.py | Reads safe_zone and appends the SAFE ZONE directive to each prompt before calling Gemini. |
apply-illustrations-to-deck.py | Swaps generated images into a .pptx, adds a zone-sized scrim rectangle behind the title, and positions title text. Reads the same outline for zone data. Accepts --scrim-color / --scrim-alpha. |
suggest-scrim-color.py | Samples the darkest 5% of pixels across a deck's illustrations and prints a scrim color + alpha tuned to the deck's natural shadow tone. |
All three live in skills/illustrations/scripts/.
# 1. Author outline.yaml with `safe_zone` fields
# 2. Generate illustrations — directive appended automatically
python3 "{speaker_toolkit_root}/skills/illustrations/scripts/generate-illustrations.py" outline.yaml all
# 3. (Optional) Sample a scrim color tuned to the deck's style
python3 "{speaker_toolkit_root}/skills/illustrations/scripts/suggest-scrim-color.py" illustrations/
# -> prints: scrim base #RRGGBB, recommended alpha NNNNN
# 4. Apply to deck
python3 "{speaker_toolkit_root}/skills/illustrations/scripts/apply-illustrations-to-deck.py" \
deck.pptx illustrations/ outline.yaml \
--out deck-with-titles.pptx \
--scrim-color 100903 --scrim-alpha 47553 # omit for plain 45% blacksuggest-scrim-color.py
samples the natural shadow tone — the scrim then reads as "deeper
shadow of the same style" instead of a black film.generate-illustrations.py strips any existing
TITLE SAFE ZONE block before re-appending, so re-running after a
zone edit produces the right result..tessl-plugin
rules
skills
illustrations
presentation-creator
references
patterns
build
deliver
prepare
scripts
screencast-recorder
shownotes-publisher
vault-clarification
vault-ingress
references
scripts
vault-profile