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 102-entry Presentation Patterns taxonomy (91 observable, 11 unobservable go-live items) for scoring, brainstorming, and go-live preparation.
86
92%
Does it follow best practices?
Impact
86%
1.24xAverage score across 26 eval scenarios
Advisory
Suggest reviewing before use
{
"context": "Tests whether the agent runs the SKILL.md Step 2 freshness gate before generating any deck illustrations when the outline's model was chosen in the past. The gate is the deterministic precheck `model_registry.py --check-freshness` (registry staleness) plus a check that the outline's baked model is still in the current roster (MODEL_REGISTRY in skills/illustrations/scripts/model_registry.py). A baseline agent without the illustrations skill jumps straight to generate-illustrations.py; the tile inserts the freshness gate and a speaker decision point before generation begins.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Freshness gate precedes generation",
"description": "Before invoking generate-illustrations.py to produce any slide image, the agent gates on model freshness — runs `model_registry.py --check-freshness` and/or consults the MODEL_REGISTRY roster in skills/illustrations/scripts/model_registry.py. A run that goes straight to image generation without any freshness gating fails this criterion.",
"max_score": 32
},
{
"name": "Baked model recognized as absent from current roster",
"description": "The agent recognizes that the outline's declared model (`gemini-2.0-flash-preview-image-generation`) is not present in the current MODEL_REGISTRY roster, and names at least one model that IS in the roster as an alternative the speaker could move to. Deterministic against file state: both halves are checkable from the outline and model_registry.py as committed at eval time.",
"max_score": 22
},
{
"name": "Explicit decision point before generation",
"description": "The agent presents a clear choose-one decision to the speaker — keep the baked model, re-run the style exploration (Step 3) to pick a current one, or switch to a named roster model — and waits for a response. Silently swapping the model, or proceeding to image generation without acknowledgement of the choice, fails this criterion.",
"max_score": 28
},
{
"name": "No silent generation with stale model",
"description": "If image bytes are produced during this run, they use the model the speaker explicitly confirmed in response to the decision point above. A run that calls generate-illustrations.py with the outline's original model value before the speaker responds fails this criterion.",
"max_score": 18
}
]
}.github
eval-resources
humor-postmortem-blind-spots
qr-bitly-slug-from-outline
qr-missing-shortener-detection
shownotes-publisher-omit-placeholder
shownotes-publisher-publish-no-date
shownotes-publisher-publish-with-date
shownotes-publisher-update-add-video
video-extraction-diagnostics
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
rules
scripts
skills
illustrations
presentation-creator
references
patterns
build
deliver
prepare
scripts
shownotes-publisher
vault-clarification
vault-ingress
vault-profile
tests