CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/speaker-toolkit

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

1.30x
Quality

94%

Does it follow best practices?

Impact

91%

1.30x

Average score across 27 eval scenarios

SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

Evaluation results

100%

Add the Video URL to an Existing Shownotes Page

Criteria
Without this plugin
With this plugin

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%

100%

90%

Adding Progressive Reveals to an Illustrated Talk

Criteria
Without this plugin
With this plugin

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%

100%

62%

Choose an Image Model for a Build-Heavy Deck on a Budget

Criteria
Without this plugin
With this plugin

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%

95%

8%

Conference CFP Submission

Criteria
Without this plugin
With this plugin

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%

98%

-1%

Conference Talk Rhetoric Analysis

Criteria
Without this plugin
With this plugin

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%

95%

42%

Generate a Speaker Profile from a Completed Vault

Criteria
Without this plugin
With this plugin

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%

94%

74%

Generate Deck Illustrations for an Aged Outline

Criteria
Without this plugin
With this plugin

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%

89%

21%

Generate Deck Illustrations Right After Picking a Model

Criteria
Without this plugin
With this plugin

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%

98%

16%

Humor Post-Mortem and Blind Spot Debrief

Criteria
Without this plugin
With this plugin

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%

Failed

Illustrated Conference Talk Outline

84%

41%

Illustrated Outline Quality Audit

Criteria
Without this plugin
With this plugin

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%

92%

-7%

Illustration Fix Triage and Quality Audit

Criteria
Without this plugin
With this plugin

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%

100%

Pattern Strategy for a Conference Talk

Criteria
Without this plugin
With this plugin

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%

100%

37%

Pick the Right Thumbnail Aesthetic from Vault Signals

Criteria
Without this plugin
With this plugin

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%

100%

10%

Plan Thumbnail Revision After Speaker Feedback

Criteria
Without this plugin
With this plugin

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%

80%

-4%

Presentation Analytics: Multi-Source Slide Ingestion

Criteria
Without this plugin
With this plugin

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%

100%

Publish a Delivered Talk to the Shownotes Site

Criteria
Without this plugin
With this plugin

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%

88%

-12%

Publish a Pre-Talk Shownotes Page (No Delivery Date Yet)

Criteria
Without this plugin
With this plugin

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%

94%

1%

Publish a Talk Page When the Recording Isn't Ready

Criteria
Without this plugin
With this plugin

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%

100%

75%

QR Generation for a Closing Slide

Criteria
Without this plugin
With this plugin

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%

91%

3%

QR Generation with Bitly Custom Back-Half and Slug from outline.yaml

Criteria
Without this plugin
With this plugin

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%

Failed

Rhetoric Vault: Process a Conference Talk

97%

23%

Route a Single Request to the Right Illustrations Mode

Criteria
Without this plugin
With this plugin

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%

26%

26%

Set Up the Illustration Style Anchor for a Talk

Criteria
Without this plugin
With this plugin

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%

94%

6%

Slide Deck Visual Audit Report

Criteria
Without this plugin
With this plugin

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%

78%

19%

Talk Library Organizer

Criteria
Without this plugin
With this plugin

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%

97%

-2%

Video Slide Extraction Quality Diagnostics

Criteria
Without this plugin
With this plugin

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%

Evaluated
Agent
Claude Code
Model
Claude Sonnet 4.6