CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/speaker-toolkit

Seven-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, publish talk pages to a Jekyll shownotes site, and verify a recorded screencast against its storyboard. Includes a 113-entry Presentation Patterns taxonomy (83 observable: 64 patterns + 19 antipatterns; 30 unobservable: 21 patterns + 9 antipatterns) for scoring, brainstorming, and go-live preparation.

74

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

SKILL.mdskills/screencast-recorder/

name:
screencast-recorder
description:
Verify a recorded screen sequence against its approved storyboard: route and data revision, content framing and label readability, deliberate pans, the pointer landing on what it clicks, clip-to-clip continuity, and whether each visual proof occurs while its phrase is actually spoken. Use when checking a demo or screencast take before shipping it, when a recorded sequence must be proved rather than trusted, or when a clip join must be shown to be invisible. Verification only — this skill does not record.
user_invocable:
Yes

Screencast Recorder — Verification Lane

Process steps in order. Do not skip ahead.

This skill verifies a take. It does not record one.

Resolve the absolute path of this loaded SKILL.md, then set speaker_toolkit_root to the plugin root two directories above the directory containing this file. Never derive it from the consumer working directory. Treat {speaker_toolkit_root} as absolute in every toolkit-owned command; sequence, media, and output paths remain consumer-owned.

Step 1 — Resolve the interpreter

python3 "{speaker_toolkit_root}/skills/screencast-recorder/scripts/resolve-interpreter.py" <vault_root>

Emits {"ok": true, "python_path": ..., "vault_root": ..., "database": ...}. Set python_path from that value; it is the interpreter authority for every command below.

Exit 1 means it could not be resolved — the diagnostic names the cause. Repair through its owner:

Skill(skill: "vault-ingress")

Never fall back to whichever python3 is on PATH.

Proceed immediately to Step 2.

Step 2 — Obtain the sequence description

The recording rig emits one JSON file describing the take: delivery resolution, narration words with real timestamps, per-clip entry/exit manifests and events, and the storyboard rows with their machine-checkable requirements. Shape, every field, and every finding code:

skills/screencast-recorder/references/sequence-contract.md

The approved storyboard itself stays prose and stays human-approved. Conditions like "leave room for the laugh" are judgments no verifier makes. This file carries only the half a machine can decide.

Proceed immediately to Step 3.

Step 3 — Verify

"{python_path}" "{speaker_toolkit_root}/skills/screencast-recorder/scripts/verify-storyboard.py" <sequence.json>

Exit 0 when every checked axis passes, 1 on any finding, 2 on usage error. The verdict names each finding's axis, subject, and what was expected against what was observed. Proceed immediately to Step 4.

Step 4 — Read the unverified axes before reporting a pass

An axis reads unverified for either of two reasons, and neither is a pass.

axes.pixels is always unverified. Three checks are outside this lane: a click visible in the encoded frames, OS chrome absent from the crop, and confirming in the delivered pixels what the readability check computes from the recorded measurement.

Any other axis reads unverified when no row declared a requirement on it. unverified_axes names which case applies.

Report those as unchecked. Never restate an unverified axis as a pass.

If findings exist, return to the earliest invalid artifact — the storyboard row, the clip, or the narration take. Do not accumulate local timing, cursor, or crop patches against a take that a gate already rejected. Finish here.

skills

README.md

tile.json