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 111-entry Presentation Patterns taxonomy (81 observable: 62 patterns + 19 antipatterns; 30 unobservable: 21 patterns + 9 antipatterns) for scoring, brainstorming, and go-live preparation.
—
—
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
Triggered separately — days or weeks after delivery. Not part of the linear Phase 0-6 flow. The talk has been given, the recording exists, and the speaker wants a YouTube thumbnail and/or to update shownotes with the video.
Before ANY Phase 7 action, load these files. If any is missing, STOP and ask.
speaker-profile.json — thumbnail preferences, video publishing configsecrets.json — API keys (Gemini for thumbnail generation)outline.yaml — source of truth for talk slug, metadata, slides, and illustration refs.
Load via scripts/outline_schema.py.Read the tracking database through the main presentation-creator compatibility
gate. Thumbnail and shownotes lookup may read schema 0 or 1. Any database update
in this phase requires current database schema 1 and talk schema 5 before the
thumbnail, shownotes, or video side effect paired with it. Route schema 0 through
Skill(skill: "vault-ingress"); preserve all schema fields and apply the main
skill's exact-generation atomic-write contract.
If shownotes don't exist and the speaker wants Step 7.2, STOP and ask — either run Phase 6 Step 6.1 first, or get the shownotes URL manually.
Delegate to the illustrations skill — it owns slide selection, photo resolution, aesthetic precedence, composition via Gemini, speaker iteration, shownotes copy, and tracking-database updates:
Skill(skill: "illustrations")See skills/illustrations/references/thumbnails.md for the full
workflow. Returns control here once the thumbnail is approved and the
tracking database is updated.
Update the existing shownotes page with the video recording link.
Check that shownotes were published in Phase 6 Step 6.1. Look for:
publishing_process.shownotes.url.base +
publishing_process.shownotes.url.template (substitute {slug} and any
date variables) — see phase6-publishing.md for the full template semanticsIf shownotes don't exist, STOP and ask the speaker. Options:
Read publishing_process.video_publishing from speaker profile:
enabled — if false, skip this stepembed_method — youtube_embed, link_only, or bothshownotes_video_section — where/how the video section goes in shownotesvideo_description_template — template for YouTube video descriptionIf video_publishing is not configured, ask interactively:
Create the video section content based on embed_method:
Include the video title, conference name, and year from the presentation spec.
Use the same publishing method as Phase 6 Step 6.1:
Persist video_added_to_shownotes: true and the YouTube video_url (plus the
derived youtube_id when absent) with one update_talk_publishing mutation.
The expect object must cover exactly the fields being set with values from the
latest strict read. Dry-run, review, apply against the reported input SHA, and
re-read through the
owner mutation contract.
Keep that talk record at schema_version: 5; this workflow is an authorized
current writer, not a schema owner or migrator.
POST-EVENT REPORT — {talk title}
==================================
[DONE/SKIP] Thumbnail: {path, dimensions, size}
[DONE/SKIP] Video to shownotes: {shownotes URL, embed method}
[INFO] YouTube URL: {url}
==================================.tessl-plugin
rules
skills
illustrations
presentation-creator
references
patterns
build
deliver
prepare
scripts
shownotes-publisher
vault-clarification
vault-ingress
references
scripts
vault-profile