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, create and publish talk-content Agent Skills with 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.
75
94%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Read before using local audio/video or the YouTube Whisper fallback. The public
entrypoint remains fetch-transcript.py; its module docstring owns arguments,
JSON output, exit codes, and transcript-replacement authorization.
Require the database-configured interpreter's lanes before using them:
"{python_path}" "{speaker_toolkit_root}/skills/vault-ingress/scripts/check-runtime.py" \
--lanes core,source-media,whisper --require-lanes core,source-media,whisperFor the YouTube download fallback, include youtube-download in both lists.
For probe-only library work, require core,source-media without Whisper.
check-runtime.py's LANE_REQUIREMENTS and version maps own dependencies and
pins. A failed optional lane does not invalidate independent captions or slides.
fetch-transcript.py --audio; never
pre-open, hash, hydrate, copy, or invoke ffprobe on the source yourself.local_media_evidence.py's probe_local_media owns availability, generation
binding, snapshot hashing, probe facts, and private-workspace cleanup.local_media_contract.py's named MEDIA_* constants, admission helpers, and
bounded_whisper_result own supported containers and resource ceilings.local_media_transcription.py's transcribe_local_media accepts a current
in-memory media/video probe from its owner. It reuses those facts and rechecks
source generation. A serialized or hand-constructed receipt is not authority
to skip acquisition.transcribe_local_words uses the same acquisition owner for bounded interior
samples. Read sampled-word-evidence.md before using
this independent word-evidence lane; it does not write catalog transcripts.local_media_download.py's download_youtube_audio yields a private local
artifact plus provider duration and removes the workspace when its consumer
exits. It does not register or preserve a recording in the vault.whisper_repetitive_text; see
skills/vault-ingress/scripts/local_media_contract.py —
WHISPER_REPETITION_POLICY_VERSION and _reject_repetitive_whisper_text.
This is a decoder-loop guard, not a complete hallucination detector. A refusal
returns no truncated transcript and preserves the prior bundle. It does not
migrate an existing quality receipt or authenticate a recording's catalog identity.The fetcher reports worker refusal through its existing failure JSON and stderr.
Use LocalMediaError.reason_code for library callers. Repair unavailable runtime
lanes, restore a locally available supported source, or retry after source edits
finish. Never bypass worker admission or increase a threshold from skill prose.
A failed local probe, transcription, resource check, cleanup, or precommit
generation check leaves prior transcript, quality, and timing artifacts intact.
This includes a stale quality receipt: failure does not authorize weakening its
provenance. --force authorizes transcript replacement, not bypassing validation.
Acquisition proves source bytes and duration, not that a recording belongs to a catalog talk. Keep the separate owner-binding preflight gate; do not patch a receipt, infer a missing recording, or relabel old analysis to clear it.
.tessl-plugin
rules
skills
illustrations
presentation-creator
references
patterns
build
deliver
prepare
scripts
screencast-recorder
shownotes-publisher
vault-clarification
vault-ingress
references
scripts
vault-profile