CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/speaker-toolkit

Four-skill presentation system: ingest talks into a rhetoric vault, run interactive clarification, generate a speaker profile, then create new presentations that match your documented patterns. Includes an 88-entry Presentation Patterns taxonomy for scoring, brainstorming, and go-live preparation.

96

1.21x
Quality

93%

Does it follow best practices?

Impact

97%

1.21x

Average score across 30 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

Evaluation results

100%

Guardrail Audit for a Draft Conference Talk

Criteria
Without context
With context

All 9 guardrail items present

100%

100%

PASS/FAIL/WARN labels used

100%

100%

WARN for near-limit Act 1

100%

100%

Data attribution flagged

100%

100%

Cut lines missing flagged

100%

100%

Profile slide budgets used

100%

100%

Recurring issue flagged

100%

100%

Pattern score projection

100%

100%

Structured summary block

100%

100%

100%

22%

Pattern Strategy for a Conference Talk

Criteria
Without context
With context

4-tier structure present

50%

100%

Signature tier from profile

100%

100%

Contextual tier from profile

100%

100%

Shake It Up has 1-2 items

0%

100%

[RECURRING] tag used

100%

100%

[CONTEXTUAL] tag used

100%

100%

New to You from never_used

100%

100%

Actionable recommendations

100%

100%

70%

-21%

Slide Deck Visual Audit Report

Criteria
Without context
With context

Skips static files

100%

100%

Skips conflict copies

100%

100%

Skips template files

100%

100%

Background colors extracted

100%

0%

Per-slide breakdown present

60%

70%

Global design statistics

100%

30%

Shape type detail

100%

100%

Font extraction

37%

0%

Footer detection

100%

80%

Recursive directory scan

100%

100%

Valid JSON output

100%

100%

100%

18%

Talk Library Organizer

Criteria
Without context
With context

Top-level DB structure

70%

100%

Config captures source directories

100%

100%

Talk fields extracted

75%

100%

URL fields parsed

30%

100%

New talks default to pending

37%

100%

No-sources talk flagged as unprocessable

100%

100%

Slide source determination

100%

100%

Static files skipped

100%

100%

Conflict copies skipped

100%

100%

Template files skipped

100%

100%

PPTX-to-talk matching

100%

100%

Scan report with counts

100%

100%

95%

15%

Presentation Analytics: Multi-Source Slide Ingestion

Criteria
Without context
With context

PPTX highest priority

100%

100%

Video-only talks are processable

100%

100%

No-video talks not processable

100%

100%

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

0%

100%

All fail = distinct failure status

0%

50%

Processing log explains decisions

100%

100%

99%

58%

Illustrated Conference Talk Outline

Criteria
Without context
With context

Illustration Style Anchor section present

58%

100%

Multiple format anchors

0%

100%

Visual continuity conventions documented

100%

100%

Format field on every slide

0%

100%

EXCEPTION slides have justification

25%

100%

Image prompt uses [STYLE ANCHOR] token

0%

100%

Illustration field present

12%

100%

Prompt richer than description

25%

100%

Visual continuity: FIG numbering

100%

87%

Visual continuity: progressive form

100%

100%

Standard outline structure preserved

62%

100%

98%

12%

Illustrated Presentation Quality Audit

Criteria
Without context
With context

Standard guardrails present

50%

100%

Illustration coverage guardrail runs

100%

100%

Missing Format field detected

100%

100%

Missing EXCEPTION justification detected

100%

100%

Missing [STYLE ANCHOR] detected

100%

100%

Low-quality prompts flagged

100%

100%

Data attribution issue flagged

100%

100%

Rushed closing detected

100%

100%

Cut lines missing

0%

100%

Correct PASS/FAIL labeling

100%

75%

Illustration checks in guardrail summary

87%

100%

93%

51%

Adding Progressive Reveals to an Illustrated Talk

Criteria
Without context
With context

Build specification format

60%

80%

Build-00 is empty frame

0%

50%

Final build tagged [FULL]

10%

100%

Backwards-chaining workflow described

50%

100%

Build naming convention

0%

100%

Build slides count toward budget

100%

100%

Speaker notes on final step only

0%

100%

BLANK layout for all builds

100%

100%

Explicit preservation instructions

40%

100%

Safety suffixes mentioned

0%

100%

Parent slide replaced by build sequence

100%

100%

88%

5%

Illustration Fix Triage and Quality Audit

Criteria
Without context
With context

Regenerate for content additions

0%

100%

Edit for content removal

100%

100%

Simplified anchor flagged

100%

100%

Safety suffix: no new elements

62%

75%

Safety suffix: background continuation

100%

75%

Explicit preservation instructions

100%

100%

Versioned output naming

100%

100%

Fix mode for near-perfect images

100%

0%

PIL masking flagged as wrong approach

100%

100%

Missing preservation flagged

100%

100%

Content modification via edit flagged

50%

100%

100%

10%

Speaker Notes Injection with Keynote Compatibility

Criteria
Without context
With context

Output deck exists and opens

100%

100%

Slide count preserved

100%

100%

Notes present on correct slides

100%

100%

Notes content matches input

100%

100%

notesMaster relationship declared

100%

100%

notesMasterIdLst element present

100%

100%

notesMasterIdLst references a real relationship

100%

100%

notesMasterIdLst is not duplicated

100%

100%

Skill script used, not ad-hoc code

0%

100%

Verification report documents the checks

100%

100%

100%

5%

Talk Processing Batch Report

Criteria
Without context
With context

Full success categorized correctly

100%

100%

Transcript fail + slides OK = partial

100%

100%

Slides fail + transcript OK = partial

50%

100%

Both fail = skip/fail status

100%

100%

Missing sources = distinct skip

100%

100%

No video = not processable

100%

100%

Slide source set to pptx

100%

100%

Slide source set to both

100%

100%

Slide source set to pdf

100%

100%

Summary additive only

100%

100%

Summary has new content

100%

100%

99%

59%

Conference Talk Rhetoric Analysis

Criteria
Without context
With context

Opening pattern analyzed

100%

100%

Narrative structure analyzed

100%

100%

Humor documented

100%

100%

Audience interaction noted

100%

100%

Areas for improvement

0%

100%

Structured data fields

0%

100%

Opening type categorized correctly

62%

87%

Closing type categorized correctly

62%

100%

Verbatim signature phrases

25%

100%

Verbatim opening lines

0%

100%

Verbatim closing lines

0%

100%

Transition phrases extracted

50%

100%

JSON schema completeness

0%

100%

100%

2%

PowerPoint Deck Build Plan

Criteria
Without context
With context

Template demo slides removed

100%

100%

Speaker notes present

100%

100%

Footer on every slide

100%

100%

Layout selection from profile

80%

100%

No adjacent color repeat

100%

100%

White/black reserved for images

100%

100%

No slide numbers

100%

100%

Footer color adapts

100%

100%

Correct slide count

100%

100%

Build plan documents decisions

100%

100%

100%

Co-Presented Talk Adaptation

Criteria
Without context
With context

Speaker prefixes in notes

100%

100%

Footer includes co-presenter

100%

100%

Role split documented

100%

100%

Handoff points marked

100%

100%

Riley owns tooling section

100%

100%

Riley owns incident section

100%

100%

Morgan keeps opening/closing

100%

100%

Adaptation checklist produced

100%

100%

Three-part close preserved

100%

100%

Verbal handoff cues

100%

100%

100%

6%

Conference CFP Submission

Criteria
Without context
With context

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%

100%

Speaker voice in abstract

100%

100%

Spec includes duration

100%

100%

Spec includes profanity register

100%

100%

Spec includes commercial intent

100%

100%

Spec includes shownotes slug

0%

100%

Anti-sell awareness

100%

100%

100%

48%

Generate a Speaker Profile from a Completed Vault

Criteria
Without context
With context

Required top-level keys

20%

100%

Speaker fields from config

100%

100%

Speaker badges present

100%

100%

Speaker badges grounded in vault stats

100%

100%

Signature patterns with usage counts

50%

100%

never_used_patterns listed

0%

100%

guardrail_sources.slide_budgets is array

0%

100%

instrument_catalog populated

0%

100%

confirmed_intents carried over

100%

100%

pacing data populated

87%

100%

antipattern_frequency present

0%

100%

99%

25%

Build a Conference Talk Outline

Criteria
Without context
With context

Presentation Spec block

100%

90%

Section time + slide range headers

100%

100%

Opening sequence structure

100%

100%

Multiple typed placeholder categories

0%

100%

Meme brief format

0%

100%

CUT LINE marker

100%

100%

Callback flags

40%

100%

Speaker notes in outline

100%

100%

Closing sequence completeness

100%

100%

Slide count within budget

100%

100%

100%

57%

Rhetoric Vault: Process a Conference Talk

Criteria
Without context
With context

Analysis file location

100%

100%

All 14 dimensions present

60%

100%

English-only quote format

30%

100%

Language-tagged verbal signatures

12%

100%

Structured data fields

25%

100%

Pattern score formula

0%

100%

Observable patterns only

100%

100%

Verbatim examples

33%

100%

Tracking DB updated

20%

100%

Areas for improvement present

66%

100%

Presentation Patterns Scoring section

50%

100%

96%

16%

QR Code Generation with Background Color Matching

Criteria
Without context
With context

Deck saved and re-opens

100%

100%

New picture shape on closing slide

100%

100%

QR decodes to expected URL

100%

100%

QR background matches slide purple

100%

100%

QR foreground is white (auto-contrast)

100%

100%

QR PNG dimensions are consistent

100%

100%

Tracking database has qr_codes entry

60%

100%

QR PNG path is relative

40%

100%

Skill script used, not ad-hoc code

0%

62%

Verification report documents observed values

60%

100%

100%

11%

QR Generation with Unconfigured Shortener — Silent Degradation Test

Criteria
Without context
With context

Agent surfaces missing shortener config

100%

100%

Agent asks user to choose a shortener

100%

100%

Agent does NOT generate QR with raw URL without asking

100%

100%

Shownotes URL uses slug from Presentation Spec

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

100%

100%

100%

6%

QR Generation with Bitly Custom Back-Half and Slug from Spec

Criteria
Without context
With context

Talk slug read from Presentation Spec

100%

100%

Shownotes URL constructed from pattern + spec slug

100%

100%

Bitly custom back-half is the talk slug

100%

100%

QR encodes bitly URL, not raw shownotes URL

100%

100%

generate-qr.py used, not qrcode library directly

100%

100%

Command uses --shownotes-url (not --short-url)

100%

100%

Tracking DB update mentioned

0%

100%

No silent degradation to raw URL

100%

100%

100%

15%

Extract Resources for Shownotes Publishing

Criteria
Without context
With context

Extraction script used

100%

100%

Valid JSON output

100%

100%

Talk slug from spec

100%

100%

Code block URL excluded

100%

100%

Image prompt URL excluded

100%

100%

Duplicate URL deduplicated

100%

100%

Multiple resource types present

100%

100%

Book references extracted

100%

100%

RFC references extracted

100%

100%

Each resource has slide context

0%

100%

Script command includes --spec argument

0%

100%

100%

70%

Plan the Publishing Workflow for a Completed Talk

Criteria
Without context
With context

Resources step appears before shownotes

0%

100%

extract-resources.py referenced for extraction

0%

100%

Speaker review mentioned

0%

100%

Shownotes reads from resources.json

0%

100%

Only approved resources in shownotes

20%

100%

Shownotes URL from spec slug

100%

100%

Shownotes draft has resources section

100%

100%

All Phase 6 steps covered

60%

100%

QR step references generate-qr.py

100%

100%

resources.json in talk directory

0%

100%

100%

15%

Plan a YouTube Thumbnail for a Delivered Talk

Criteria
Without context
With context

3-5 slide candidates suggested

100%

100%

Illustration slides ranked highest

100%

100%

Bio slide excluded

100%

100%

Shownotes slide excluded

100%

100%

Title hook is 5 words or fewer

100%

100%

generate-thumbnail.py referenced

100%

100%

Profile style preference applied

62%

100%

Profile title position applied

57%

100%

Profile brand colors applied

60%

100%

Speaker photo from profile path

30%

100%

Face preservation mentioned

100%

100%

100%

Plan Thumbnail Revision After Speaker Feedback

Criteria
Without context
With context

Iterate not restart strategy

100%

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 preservation strengthened

100%

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%

100%

3%

Post-Event Video Publishing: Plan the Workflow

Criteria
Without context
With context

Agent detects missing shownotes

100%

100%

Shownotes creation listed as prerequisite

100%

100%

Shownotes step comes before video step

100%

100%

Agent does NOT assume shownotes exist

100%

100%

Prerequisites check includes 4 files

70%

100%

Prerequisites check includes YouTube URL

100%

100%

Agent reads video_publishing config

100%

100%

Video embed method from profile

100%

100%

85%

Adapt an Existing Talk for a New Venue

Criteria
Without context
With context

Output deck exists and opens

100%

100%

Correct total slide count

100%

100%

Placeholder at position 3

100%

100%

Placeholder at position 5

100%

100%

Placeholder at position 8

100%

100%

Yellow background on placeholders

100%

100%

Original slides preserved in order

100%

100%

Skill script used

0%

0%

Subtitles present on placeholders

100%

100%

Non-destructive output

100%

100%

95%

1%

Vault Clarification Interactive Session

Criteria
Without context
With context

Rhetoric clarification — one question at a time

70%

70%

Intent confirmation stored

80%

100%

Humor grading per beat

100%

100%

Spontaneous humor probe

90%

80%

Promote to planned recommendation

100%

100%

Blind spot — demo engagement

100%

100%

Blind spot — theatrical opening

100%

100%

Infrastructure config captured

100%

100%

Session marked complete

100%

100%

Rhetoric summary updated

100%

100%

97%

-3%

Humor Post-Mortem and Blind Spot Debrief

Criteria
Without context
With context

Per-joke grading

100%

80%

Joke questions grounded in observations

100%

91%

Meme slide questions

100%

100%

Spontaneous humor capture

100%

100%

Promotion prompt

100%

100%

Blind spot questions

100%

100%

Demo reaction questions

100%

100%

Recency adaptation — recent

100%

100%

Recency adaptation — old

100%

100%

Structured output format

100%

100%

100%

4%

Video Slide Extraction Quality Diagnostics

Criteria
Without context
With context

Wide-angle detection

100%

100%

Hash threshold recommendation

100%

100%

Slide region crop suggestion

100%

100%

Multi-language transcript handling

100%

100%

Whisper hallucination detection

100%

100%

Transcript source tracking

100%

100%

Speaker identity verification

100%

100%

Recording type classification

60%

100%

Structured diagnostics output

100%

100%

Clean recording passes cleanly

100%

100%

Evaluated
Agent
Claude
Model
Claude Sonnet 4.6

Table of Contents