Five-skill presentation system: ingest talks into a rhetoric vault, run interactive clarification, generate a speaker profile, create presentations that match your documented patterns, and produce the deck illustrations + thumbnail visual layer. Includes a 102-entry Presentation Patterns taxonomy (91 observable, 11 unobservable go-live items) for scoring, brainstorming, and go-live preparation.
95
96%
Does it follow best practices?
Impact
95%
1.20xAverage score across 32 eval scenarios
Advisory
Suggest reviewing before use
Reference for Step 3 (deck illustrations) and Step 5 (apply to deck) in
SKILL.md. The illustration-rules and title-overlay-rules steering rules
are auto-loaded — apply them, don't restate them.
Before generating, ensure:
API key — add your Gemini key to {vault}/secrets.json (preferred):
{ "gemini": { "api_key": "your-key-here" } }Or set GEMINI_API_KEY as a fallback. Get a key from
https://aistudio.google.com/app/apikey.
Model availability — verify the model in the outline header is
accessible with your key. The script reads it from the
**Model:** \model-name`` line in the Illustration Style Anchor section.
Python 3 — stdlib only (urllib, json, base64). No pip install needed.
python3 skills/illustrations/scripts/generate-illustrations.py presentation-outline.md remainingremaining skips slides whose images already exist; all regenerates every
slide; specific slides can be passed as 2 5 9 or a range 2-10.
python3 skills/illustrations/scripts/generate-illustrations.py presentation-outline.md --compare 2Generates the same prompt across multiple Gemini image models for visual
comparison. Output lands in illustrations/model-comparison/.
| Command | When to use | Output |
|---|---|---|
--edit N "<prompt>" | Removing content from an existing image | slide-NN-vM.ext |
--fix N "<prompt>" | Iterating on a near-perfect image (90%+ correct) | slide-NN-vM.ext (next version) |
-v 2 5 9 | Generate without overwriting the base image | slide-NN-vM.ext |
--edit and --fix auto-append the safety suffixes (DO NOT add any new elements, Let background continue naturally). The explicit preservation
list (Keep the X. Keep the Y.) must always be added manually — the script
cannot know what to preserve.
The outline's Illustration Style Anchor block defines format codes per slide.
The apply-illustrations-to-deck.py script maps each code to a layout +
positioning:
| Outline Format | Layout | Image Handling |
|---|---|---|
FULL | BLANK | Full-bleed image at 16:9 slide dimensions (left=0, top=0, width=13.333", height=7.5"); title repositioned into the declared Safe zone |
FULL + text overlay | BLANK | Full-bleed image + manage_text overlay |
IMG+TXT | TITLE only (no body) | Image ~60% of slide on the left, title + body on the right. Exact geometry is owned by the IMGTXT_* constants in skills/illustrations/scripts/apply-illustrations-to-deck.py (image left=0.3", top=0.8", width=8.0", height=5.9"; text column left=8.5", width≈4.5") — read the constants when debugging layout, not the table |
EXCEPTION | Per content type | No generated image — real asset from [IMAGE NN] placeholder; handled by presentation-creator's slide walk, not by this skill |
{talk-dir}/illustrations/
├── slide-01.jpg ← one file per illustrated slide
├── slide-02.png
├── slide-05-v2.jpg ← versioned iterations (--fix / --edit / -v)
├── builds/ ← progressive reveal build steps (see builds.md)
│ ├── slide-05-build-00.jpg
│ ├── slide-05-build-01.jpg
│ └── slide-05-build-02.jpg
└── model-comparison/ ← --compare outputThe Safe zone: line in each FULL slide block tells the script to append a
TITLE SAFE ZONE directive to the prompt before generation. Five zones are
supported: upper_third, middle_third, lower_third, left_half,
right_half. See skills/illustrations/references/title-placement.md
for the outline schema and rules/title-overlay-rules.md
for the full policy (auto-loaded).
python3 skills/illustrations/scripts/apply-illustrations-to-deck.py \
deck.pptx illustrations/ presentation-outline.md \
--out deck-with-titles.pptx \
--scrim-color 100903 --scrim-alpha 47553 # omit for plain 45% blackThe script:
Safe zone: field, swaps the
background picture with the matching illustration from illustrations/.Format: IMG+TXT, applies the IMG+TXT layout
(image ~60% on the left, title placeholder + body on the right).- Builds: block.If no scrim color is supplied, run python3 skills/illustrations/scripts/suggest-scrim-color.py illustrations/
first to sample a deck-tuned color. For warm or cool styled decks, the
sampled color reads as "deeper shadow in the same style" instead of a flat
black film.
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
scenario-31
scenario-32
rules
skills
illustrations
presentation-creator
references
patterns
build
deliver
prepare
scripts
vault-clarification
vault-ingress
vault-profile