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
93%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
jbaruch/coding-policy: testing-standards Platform-Bound Untestable Carve-Out.mlx-whisper requires Apple Silicon and cannot install on the project's Linux CI runners.mlx_whisper imports, actual provider.transcribe() call, native model
access, spectrogram construction and detect_language() call inside
_transcribe_with_mlx() in
skills/vault-ingress/scripts/local_media_transcription.py are exempt.--method whisper and non-YouTube --audio delegate to that
worker. Their orchestration, media admission, resource supervision, download,
result validation, cleanup, and receipt writes are not exempt.skills/vault-ingress/references/sampled-word-evidence.md.mlx-whisper is declared as the optional whisper extra in pyproject.toml, never a base dependency. The caption path and every validator work without it.fetch-transcript.py --audio. Never call
mlx_whisper.transcribe() from skill prose.validate_transcript(), build_quality_policy(), count_words(),
resolve_video_id(), segments_to_text(), receipt validation, and atomic
writers are deterministic and carry tests in tests/test_fetch_transcript.py
and tests/test_transcript_timing.py.local_media_contract.py, local_media_evidence.py, local_media_process.py,
local_media_download.py, and local_media_transcription.py each have a
corresponding tests/test_local_media_*.py suite. Native synthetic workers
exercise authenticated framing, process limits, capped pipes, container
inspection, source-generation changes, and cleanup without provider access.yt-dlp metadata. Local duration
comes from supervised ffprobe and binds the exact source SHA-256.--min-words bypass attempts, source-duration matching, Unicode word
counting, both segment shapes, invalid UTF-8, exact provenance, no-segment
quality receipts, CRLF/LF byte drift, transactional rollback, enumerated
optional-library failures, malformed-timing downgrade, media
snapshot mutation, destination symlinks, VTT path safety, and caption fall-through.ImportError, OSError,
RuntimeError, AttributeError, TypeError, ValueError, and KeyError
make that lane unavailable; auto mode continues to its next source. Unknown
exception classes reach the tokenized outer process boundary. Provider stdout
routes to stderr so stdout remains one JSON object. Process-control signals
are not swallowed.transcripts/<id>.segments.json owns timing and acquisition provenance only.
It never owns quality policy.schema_version,
transcript_sha256, source, provenance, and segments. YouTube caption
and Whisper timing bind an 11-character video ID plus trusted provider
duration; local Whisper timing binds exact media SHA-256 plus trusted probe
duration; VTT timing binds a safe transcript-relative regular-file path,
exact artifact SHA-256, and final cue extent.transcripts/<id>.quality.json owns the exact policy that validated the
transcript. Its closed schema contains schema_version, the SHA-256 of exact
.txt bytes, exact policy, and exact provenance.{schema_version: 1, min_words: int, duration_seconds: number|null}. A low --min-words never lowers the fixed
400-word floor or a trusted duration-derived floor; any value above the
derived floor tightens it.{kind: "fixed_default"},
{kind: "youtube_duration", video_id, duration_seconds}, or
{kind: "local_media_duration", media_sha256, duration_seconds}. A
duration-bearing provenance value must equal the policy duration exactly.--duration-seconds is caller expectation, not authority. It can be used
only when it matches provider/yt-dlp duration for the exact YouTube ID or
ffprobe duration for the exact local-media digest. Worker-returned or talk
analysis metadata can never lower a threshold.transcript_source is canonical. A sidecar may confirm
matching owner-bound timing, but captions cannot promote manual, Whisper, or
unknown text, and a timing source never rewrites the talk's provenance.--force.
Invalid existing text fails closed and asks for that authorization. A caught
bundle-write failure restores the prior transcript and both receipts exactly.
Missing, malformed, mismatched, or over-bound optional timing removes stale
timing while valid transcript text and its quality receipt still commit.--audio admission rejects unavailable or unsupported source metadata
before byte I/O. A bounded worker copies and hashes one admitted generation
into an owner-cleaned private read-only snapshot for ffprobe.Run against a talk whose caption track is disabled, on Apple Silicon with the
whisper extra installed. First require the configured runtime:
"{python_path}" skills/vault-ingress/scripts/check-runtime.py --lanes core,whisper,youtube-download --require-lanes core,whisper,youtube-download"{python_path}" skills/vault-ingress/scripts/fetch-transcript.py {youtube_id} --out /tmp/{youtube_id}.txt --method whisper --existing-source unknown"method": "whisper",
"timed_path": "/tmp/{youtube_id}.segments.json",
"quality_path": "/tmp/{youtube_id}.quality.json", and a words count plausible for
the runtime (conference delivery is 110–160 wpm).jq -e --arg id "{youtube_id}" '.schema_version == 2 and .source == "whisper" and .provenance.kind == "youtube_whisper" and .provenance.video_id == $id and (.provenance.duration_seconds > 0) and (.segments | length > 0) and all(.segments[]; .start_seconds >= 0 and .end_seconds > .start_seconds and (.text | length > 0))' /tmp/{youtube_id}.segments.json exits 0.test "$(jq -r .transcript_sha256 /tmp/{youtube_id}.segments.json)" = "$(shasum -a 256 /tmp/{youtube_id}.txt | awk '{print $1}')" exits 0.jq -e '.schema_version == 1 and (.transcript_sha256 | length == 64) and .policy.schema_version == 1 and (.policy.min_words >= 1) and ((.policy.duration_seconds == null and .provenance == {"kind":"fixed_default"}) or (.policy.duration_seconds == .provenance.duration_seconds))' /tmp/{youtube_id}.quality.json exits 0, and its transcript_sha256 equals shasum -a 256 /tmp/{youtube_id}.txt./tmp/{youtube_id}.txt holds prose, not [Music] markers or a traceback.YT_DLP set to a nonexistent absolute path and a fresh output
path. Expect exit 1, a path-neutral stderr failure with the
ytdlp_dependency_unavailable reason, one JSON object with "ok": false, and no transcript or receipt
at that output path. Removing only yt-dlp from PATH is insufficient: the
fetcher deliberately resolves the configured interpreter's console script
before the compatibility PATH fallback."{python_path}" skills/vault-ingress/scripts/fetch-transcript.py local-talk-label --audio <local-file> --out /tmp/a.txt --existing-source unknown on a non-YouTube recording: exit 0, "method": "whisper", "timed_path": "/tmp/a.segments.json", "quality_path": "/tmp/a.quality.json", prose at the output path, timing schema v2 with local_media_whisper provenance, and timing plus quality provenance whose media_sha256 equals the exact input-media digest.A pass requires all eight checks.
jbaruch/coding-policy: ci-safety Install, Don't Skip. mlx-whisper cannot run on the runner's architecture and qualifies for the carve-out..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