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 102-entry Presentation Patterns taxonomy (91 observable, 11 unobservable go-live items) for scoring, brainstorming, and go-live preparation.

86

1.24x
Quality

92%

Does it follow best practices?

Impact

86%

1.24x

Average score across 26 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-24/

{
  "context": "Tests the negative-case behavior of the SKILL.md Step 2 freshness gate: when the outline's model is a current roster flagship, the gate should run AND pass without inserting friction. The gate is the deterministic precheck `model_registry.py --check-freshness` plus a check that the baked model is in the current MODEL_REGISTRY roster. Baseline agents (no tile) skip the gate entirely, so running the freshness precheck is the tile-specific lift here; the remaining criteria are defensive — they catch regressions where the tile inserts friction where none was warranted.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Freshness gate precedes generation",
      "description": "Before invoking generate-illustrations.py, 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. This is the tile-specific behavior — without the skill loaded, an agent jumps straight to generation. A run that skips the freshness gate fails this criterion.",
      "max_score": 32
    },
    {
      "name": "No spurious model-change proposal",
      "description": "The agent does NOT propose editing the registry roster and does NOT propose changing the outline's model, when the baked model (`gpt-image-2`) is among the current MODEL_REGISTRY roster. Surfacing such a proposal anyway fails this criterion.",
      "max_score": 27
    },
    {
      "name": "Proceeds to generation without re-litigating",
      "description": "After the freshness gate passes, the agent moves on to invoke generate-illustrations.py (or otherwise produce slide images) as the next concrete action. Halting at the freshness gate to ask the speaker to reconfirm a model choice that has no surfaced gap fails this criterion.",
      "max_score": 23
    },
    {
      "name": "Generation uses the outline's declared model",
      "description": "If image generation is invoked, the command uses the model declared in the outline header — not a different model picked or substituted by the agent.",
      "max_score": 18
    }
  ]
}

CHANGELOG.md

README.md

tessl.json

tile.json