Six-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, and publish talk pages to a Jekyll shownotes site. Includes a 111-entry Presentation Patterns taxonomy (81 observable: 62 patterns + 19 antipatterns; 30 unobservable: 21 patterns + 9 antipatterns) for scoring, brainstorming, and go-live preparation.
—
—
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
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
shownotes-publisher
vault-clarification
vault-ingress
references
scripts
vault-profile