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
93%
Does it follow best practices?
Impact
97%
1.21xAverage score across 30 eval scenarios
Advisory
Suggest reviewing before use
Steering rules for Phase 6 Step 6.0 — extracting and curating resource links from a presentation outline.
ALWAYS use extract-resources.py for initial resource extraction. Do not
manually scan the outline first — the script handles URL detection, repo
matching, book patterns, RFC citations, and tool mentions consistently.
Manual scanning misses items and introduces inconsistency.
python3 skills/presentation-creator/scripts/extract-resources.py \
presentation-outline.md --spec presentation-spec.mdThe extracted list is candidates, not the final resource list. The speaker MUST review, approve, edit, or remove items before any publishing step uses them. Never auto-publish extracted resources without explicit speaker approval.
Present the extracted resources in a formatted, reviewable list grouped by type. The speaker may:
approved: true)Resources from Coda slides (closing/further-reading sections) are the most intentional — the speaker deliberately chose to surface them. Sort these higher in the review list and flag them as "from Coda section."
resources.json lives in the talk working directory alongside
presentation-outline.md and presentation-spec.md. It is talk-specific,
not vault-level. Path:
{presentations-dir}/{conference}/{year}/{talk-slug}/resources.jsonWhen shownotes are enabled (Step 6.1), the shownotes generation step reads
resources.json for the resource links section. Only approved: true items
are included. If resources.json doesn't exist or has no approved items,
the resource links section is omitted from shownotes.
The script deduplicates URLs and repos. If a GitHub repo URL appears as both a full URL and a repo reference, keep only the URL entry. When the speaker adds resources manually, check for duplicates before appending.
After resources are approved, update tracking-database.json with a
resources[] entry:
{
"talk_slug": "...",
"resources_json_path": "...",
"item_count": 12,
"categories": {"urls": 5, "repos": 1, "tools": 3, "books": 2, "rfcs": 1},
"created_at": "..."
}The publishing destination for shownotes MUST be discoverable from the speaker profile — agents should never guess, search the web, or grep local files to find where shownotes are published.
Read from speaker-profile.json:
publishing_process.shownotes_site — the shownotes host
(e.g., https://speaking.jbaru.ch)speaker.shownotes_url_pattern — uses
{shownotes_site} and {slug} placeholders
(e.g., {shownotes_site}/{slug})When checking talk metadata (video status, slide links, resource lists):
{shownotes_site} and {slug} into
speaker.shownotes_url_pattern to construct the talk URLshownotes_url_pattern is absent but shownotes_site is present,
use {shownotes_site}/{slug} as the defaultIf shownotes_site is absent from the profile, ask the speaker during
vault-clarification (Step 5B infrastructure capture).
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
scenario-29
scenario-30
rules
skills
presentation-creator
references
patterns
build
deliver
prepare
scripts
vault-clarification
vault-ingress
vault-profile