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.
91
94%
Does it follow best practices?
Impact
91%
1.30xAverage score across 27 eval scenarios
Low
Low-risk findings worth noting
Video line added in markdown-link form
100%
100%
Video line placed in the field block, not below the abstract
100%
100%
Filename is unchanged
100%
100%
All five Resources entries preserved verbatim
100%
100%
Abstract preserved verbatim, not regenerated
100%
100%
Presentation-context paragraph preserved
100%
100%
Frontmatter is unchanged and stays minimal
100%
100%
No TODO markers or `(#)` placeholder links anywhere
100%
100%
No spurious deletions
100%
100%
Build specification format
0%
100%
Build step 0 is empty frame
0%
100%
Final build matches the full slide
0%
100%
Backwards-chaining workflow described
0%
100%
Build naming convention
0%
100%
Build slides count toward budget
37%
100%
Speaker notes on final step only
0%
100%
BLANK layout for all builds
25%
100%
Explicit preservation instructions
20%
100%
Safety suffixes mentioned
0%
100%
Parent slide replaced by build sequence
30%
100%
Model choice is priority-driven
80%
100%
Builds recognized as an edit-support requirement
40%
100%
Shortlist narrowed by data before rendering
40%
100%
Shortlist excludes the non-editing model and favors low cost
20%
100%
Confirms the choice visually, not from prose
0%
100%
Abstract word count
100%
100%
Takeaway count
100%
100%
Speaker bio included
100%
100%
Title present
100%
100%
Presentation spec produced
100%
100%
Spec includes mode
100%
100%
No full architecture
100%
50%
Speaker voice in abstract
100%
100%
Spec includes duration
0%
100%
Spec includes profanity register
33%
100%
Spec includes commercial intent
50%
100%
Spec includes shownotes slug
100%
100%
Anti-sell awareness
100%
100%
Opening pattern analyzed
100%
100%
Narrative structure analyzed
100%
100%
Humor documented
100%
100%
Audience interaction noted
100%
100%
Areas for improvement
100%
100%
Structured data fields
100%
80%
Opening type categorized correctly
87%
100%
Closing type categorized correctly
100%
100%
Verbatim signature phrases
100%
100%
Verbatim opening lines
100%
100%
Verbatim closing lines
100%
100%
Transition phrases extracted
100%
100%
JSON schema completeness
100%
100%
Schema-v5 top-level contract
30%
100%
Speaker fields from config
87%
100%
Non-pattern badges only
90%
100%
Loader-selected catalog cohort is copied
61%
88%
Classifier output is copied unchanged
93%
93%
guardrail_sources.slide_budgets is array
0%
100%
instrument_catalog populated
0%
100%
confirmed_intents carried over
80%
100%
Pacing honors the instrumentation cohort
0%
75%
Catalog history stays in its sole lane
20%
100%
Freshness gate precedes generation
0%
100%
Baked model recognized as absent from current roster
54%
100%
Explicit decision point before generation
0%
78%
No silent generation with stale model
44%
100%
Freshness gate precedes generation
0%
68%
No spurious model-change proposal
100%
100%
Proceeds to generation without re-litigating
100%
95%
Generation uses the outline's declared model
100%
100%
Per-joke grading
20%
90%
Joke questions grounded in observations
100%
100%
Meme slide questions
100%
100%
Spontaneous humor capture
100%
100%
Promotion prompt
25%
87%
Blind spot questions
100%
100%
Demo reaction questions
100%
100%
Recency adaptation — recent
100%
100%
Recency adaptation — old
100%
100%
Structured output format
66%
100%
Both checker scripts referenced
0%
46%
Data attribution FAIL surfaced
66%
100%
Closing FAIL surfaced
66%
100%
Cut-lines FAIL surfaced
0%
100%
Rushed-closing recurring issue noted
87%
100%
Vague image prompt flagged (slide 5)
80%
100%
Schema validation confirmed up front
0%
12%
Big-idea singleton confirmed
40%
100%
Thesis preview/payoff ordering confirmed
80%
100%
Illustration coverage commentary
71%
100%
Report distinguishes FAIL vs FLAG vs INFO
12%
87%
Regenerate for content additions
100%
60%
Edit for content removal
100%
100%
Simplified anchor flagged
100%
60%
Safety suffix: no new elements
100%
100%
Safety suffix: background continuation
100%
100%
Explicit preservation instructions
100%
100%
Versioned output naming
100%
100%
Fix mode for near-perfect images
100%
100%
PIL masking flagged as wrong approach
100%
100%
Missing preservation flagged
100%
100%
Content modification via edit flagged
87%
100%
Legacy provenance fails closed
100%
100%
No historical four-tier structure
100%
100%
Per-domain classification claims suppressed
100%
100%
No catalog recurrence from raw rows
100%
100%
Current taxonomy remains useful
100%
100%
Contextual findings retained
100%
100%
Actionable recovery warning
100%
100%
Explicit non-pattern recurring issue preserved
100%
100%
Actionable recommendations
100%
100%
Recommended aesthetic is comic_book
100%
100%
Decision cites the precedence step that produced the answer
13%
100%
Decision quotes the matched field value
30%
100%
No side-by-side comparison forced
100%
100%
Speaker photo path from profile
60%
100%
style_preference and title_position applied
70%
100%
Brand colors applied
100%
100%
Step 1 not silently skipped
0%
100%
Title argument is the speaker-confirmed hook verbatim
100%
100%
Iterate not restart strategy
53%
100%
Style changed to split_panel
100%
100%
Title position changed to top
100%
100%
Title text unchanged
100%
100%
Slide image unchanged
100%
100%
Face issue addressed via style variant, not preservation language
80%
100%
generate-thumbnail.py used
100%
100%
Slide image from illustrations directory
100%
100%
Original vs revised comparison
100%
100%
Speaker photo path unchanged
100%
100%
PPTX highest priority
100%
100%
Video-only talks are processable
100%
100%
No-video talks not processable
100%
0%
Multiple slide_source values used
100%
100%
Video extraction output named by YouTube ID
100%
100%
Slides fail + video available = fallback to video
100%
100%
Partial processing when one source fails
20%
100%
All fail = distinct failure status
40%
30%
Processing log explains decisions
90%
85%
Filename uses the dated convention
100%
100%
Body H1 matches talk.title
100%
100%
Frontmatter is minimal
100%
100%
Field block uses bold-label lines in markdown-link form
100%
100%
Video field is omitted entirely
100%
100%
Presentation-context paragraph anchors with 'A presentation at'
100%
100%
Abstract is a single flowing paragraph
100%
100%
Resources lists only approved entries
100%
100%
Section order is Abstract then Resources
100%
100%
No TODO markers or HTML comments left in the file
100%
100%
Filename uses the date-less convention
100%
100%
Date field is omitted from the body
100%
100%
Body H1 and field block remain intact
100%
100%
Video field is also omitted
100%
100%
Presentation-context paragraph omits the date sub-phrase
100%
0%
Frontmatter is minimal — no title, no date, no thumbnail_url
100%
100%
Abstract is a single paragraph from talk.thesis
100%
100%
Resources lists only the approved entry
100%
100%
No TODO markers and no placeholder URL syntax
100%
100%
No **Video:** line of any kind
100%
100%
No frontmatter compensation for the missing video
100%
100%
No body-text 'Coming soon' compensation
100%
100%
Slides line is present with a real URL
100%
100%
Filename uses the dated convention with the spec slug
30%
40%
Conference and Date field lines are present
100%
100%
Abstract is one flowing paragraph from talk.thesis
100%
100%
Body H1 matches talk.title
100%
100%
Resources lists both approved entries
100%
100%
No HTML comments or TODO markers
100%
100%
Agent surfaces missing shortener config
0%
100%
Agent asks user to choose a shortener
0%
100%
Agent does NOT generate QR with raw URL without asking
0%
100%
Shownotes URL uses slug from outline.yaml (talk.slug)
100%
100%
Talk slug matches spec exactly
100%
100%
Agent references generate-qr.py as the tool
0%
100%
Agent distinguishes missing config from opt-out
0%
100%
Talk slug read from outline.yaml
100%
100%
Shownotes URL constructed from pattern + outline.yaml slug
100%
100%
Bitly custom back-half is the talk slug
100%
80%
QR encodes bitly URL, not raw shownotes URL
100%
60%
generate-qr.py used, not qrcode library directly
33%
100%
Command uses --shownotes-url (not --short-url)
100%
100%
Tracking DB update mentioned
60%
100%
No silent degradation to raw URL
100%
100%
Request A routes to Strategy mode
80%
100%
Request B routes to Generation mode
80%
100%
Request C routes to Thumbnail mode
80%
100%
Step references resolve against the skill's canonical sequence
13%
80%
Request B includes builds because outline has Builds blocks
90%
100%
Request B includes apply-to-deck because .pptx exists
90%
100%
Request A finishes after the Strategy steps
90%
100%
No mode confusion across requests
100%
100%
Elicits idea direction / priorities before proposing
0%
40%
Proposes multiple candidate styles, not one from prose
0%
90%
Renders the candidates and shows them before committing
0%
0%
Does not write a model into the STYLE ANCHOR without a render
0%
0%
Skips static files
100%
100%
Skips conflict copies
100%
100%
Skips template files
100%
100%
Background colors extracted
80%
100%
Per-slide breakdown present
60%
80%
Global design statistics
100%
100%
Shape type detail
100%
100%
Font extraction
37%
50%
Footer detection
90%
100%
Recursive directory scan
100%
100%
Valid JSON output
100%
100%
Top-level DB structure
70%
100%
Config captures source directories
100%
60%
Talk fields extracted
100%
100%
URL fields parsed
40%
70%
New talks default to pending
25%
100%
No-sources talk flagged as unprocessable
73%
20%
Slide source determination
20%
50%
Static files skipped
25%
100%
Conflict copies skipped
25%
100%
Template files skipped
75%
100%
PPTX-to-talk matching
100%
100%
Scan report with counts
100%
100%
Wide-angle detection
100%
100%
Hash threshold recommendation
100%
100%
Slide region crop suggestion
87%
100%
Multi-language transcript handling
100%
70%
Whisper hallucination detection
100%
100%
Transcript source tracking
100%
100%
Speaker identity verification
100%
100%
Recording type classification
100%
100%
Structured diagnostics output
100%
100%
Clean recording passes cleanly
100%
100%
Table of Contents