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

criteria.jsonevals/scenario-23/

{
  "context": "Tests whether the agent follows the correct Phase 6 publishing step ordering (resources extraction as Step 0 before shownotes), uses extract-resources.py for resource gathering, reads resources.json for the shownotes resource links section instead of re-scanning the outline, and mentions speaker review of extracted resources.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Resources step appears before shownotes",
      "description": "The publishing-plan.md lists a resources extraction step (Step 0 or equivalent) that runs BEFORE the shownotes generation step. Resources extraction is not skipped or merged into shownotes",
      "max_score": 15
    },
    {
      "name": "extract-resources.py referenced for extraction",
      "description": "The plan references extract-resources.py (the skill script) as the tool for resource extraction, not manual outline scanning or ad-hoc extraction",
      "max_score": 15
    },
    {
      "name": "Speaker review mentioned",
      "description": "The plan includes a step where the speaker reviews, approves, or edits the extracted resources before they are used in shownotes. Resources are described as candidates requiring approval, not auto-published",
      "max_score": 10
    },
    {
      "name": "Shownotes reads from resources.json",
      "description": "The plan states that shownotes generation reads resource links from resources.json (or equivalent extracted output), not by re-scanning the outline independently",
      "max_score": 15
    },
    {
      "name": "Only approved resources in shownotes",
      "description": "The plan or shownotes draft mentions that only approved/confirmed resources are included in shownotes, not the entire unfiltered extraction",
      "max_score": 10
    },
    {
      "name": "Shownotes URL from spec slug",
      "description": "The shownotes URL is 'https://jbaru.ch/2026-04-16-devnexus-robocoders-judgment-day', constructed from profile pattern + spec slug. Not invented",
      "max_score": 10
    },
    {
      "name": "Shownotes draft has resources section",
      "description": "The shownotes-draft.md includes a section for resource links (URLs, repos, books, or tools from the outline), not just title and abstract",
      "max_score": 10
    },
    {
      "name": "All Phase 6 steps covered",
      "description": "The publishing plan covers resources, export, shownotes, and QR code steps (not just resources and shownotes). Additional steps and go-live checklist may be included",
      "max_score": 5
    },
    {
      "name": "QR step references generate-qr.py",
      "description": "The QR code step in the plan references generate-qr.py as the script to use, not direct qrcode library calls",
      "max_score": 5
    },
    {
      "name": "resources.json in talk directory",
      "description": "The plan places resources.json in the talk working directory (alongside the outline), not at the vault level or some other location",
      "max_score": 5
    }
  ]
}

evals

README.md

tile.json