CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/speaker-toolkit

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.

93

1.43x
Quality

94%

Does it follow best practices?

Impact

93%

1.43x

Average score across 21 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-15/

{
  "context": "Tests whether the agent correctly adds progressive-reveal build specifications to an illustrated outline and produces a build generation plan that follows the backwards-chaining workflow, naming conventions, and slide insertion rules from the skill.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Build specification format",
      "description": "At least one slide in updated-outline-excerpt.yaml contains a `builds:` list with entries of shape `{ step: <int>, desc: <string> }`. Step numbers are unique and ascending starting at 0. The list validates against the schema's `Build` model.",
      "max_score": 10
    },
    {
      "name": "Build step 0 is empty frame",
      "description": "The `step: 0` entry describes an empty frame (title/borders only, no content elements) — not a partial reveal",
      "max_score": 10
    },
    {
      "name": "Final build matches the full slide",
      "description": "The last build step's description corresponds to the full slide image — typically by enumerating every visual element, or by noting 'all five pillars / all checkmarks revealed'",
      "max_score": 10
    },
    {
      "name": "Backwards-chaining workflow described",
      "description": "The build generation plan mentions starting from the full image and removing elements one at a time working backwards — not building up from empty",
      "max_score": 10
    },
    {
      "name": "Build naming convention",
      "description": "The plan references the correct output path: illustrations/builds/slide-NN-build-MM.jpg (or .ext) inside the illustrations directory",
      "max_score": 8
    },
    {
      "name": "Build slides count toward budget",
      "description": "The plan explicitly states that each build step counts toward `talk.slide_budget` — the schema's slide-budget validator expands every slide entry by `max(len(builds), 1)`, which the agent should call out",
      "max_score": 8
    },
    {
      "name": "Speaker notes on final step only",
      "description": "The plan specifies that speaker notes go only on the final build step (the full image); earlier build steps get empty or no notes",
      "max_score": 8
    },
    {
      "name": "BLANK layout for all builds",
      "description": "The plan specifies that all build slides use the BLANK layout with full-bleed image positioning",
      "max_score": 8
    },
    {
      "name": "Explicit preservation instructions",
      "description": "Build step descriptions include explicit preservation instructions (e.g., 'keep the road', 'keep the border') — not just what to remove but what to keep",
      "max_score": 10
    },
    {
      "name": "Safety suffixes mentioned",
      "description": "The plan mentions that edit prompts should include 'DO NOT add any new elements' and/or 'let background continue naturally' — or notes that the script auto-appends these",
      "max_score": 8
    },
    {
      "name": "Parent slide replaced by build sequence",
      "description": "The plan states that the parent slide is replaced by its build sequence in the deck (the full image appears as the final build step, not duplicated after the builds)",
      "max_score": 10
    }
  ]
}

evals

README.md

tile.json