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
Read three vault documents in order from the vault root.
A. Rhetoric vault summary — rhetoric-style-summary.md
The constitution. Contains all cataloged patterns across rhetoric dimensions, areas for improvement, speaker-confirmed intent, and per-talk observation log.
Pay special attention to the Speaker-Confirmed Intent section. These are ground-truth
design decisions that override any pattern inference. Read the confirmed_intents array
in the speaker profile for the structured version.
B. Slide design spec — slide-design-spec.md
Visual design reference: background colors, typography, footer structure, shape census, template layout catalog, and generation rules.
C. Speaker profile — speaker-profile.json
Structured design decisions: presentation modes, rhetoric defaults, confirmed intents, guardrail sources, pacing data, infrastructure, and instrument catalog.
The summary is the rich narrative; the profile is the structured data. When you need nuance, voice examples, or context — read the summary. When you need thresholds, counts, or rules — read the profile.
Freshness check: Compare speaker-profile.json → generated_date against the
Last updated line in rhetoric-style-summary.md. If the summary is newer, warn:
"The vault summary was updated {date} but the speaker profile was generated {date}. Run 'update speaker profile' to sync, or proceed with the current profile?"
Pattern-history authorization: run
"{python_path}" "{speaker_toolkit_root}/skills/presentation-creator/scripts/pattern_history_status.py"
against the loaded profile and summary before reading any catalog-derived history. Use
- as its profile argument when no profile exists. Surface a disabled result's exact
warning.
history_enabled: true says that at least one policy-bound classification domain is
available, not that all derived fields are authorized. For every classification use,
require its name in available_classification_domains (Python consumers use
domain_available(domain)). The domains are mastery_and_novelty, underuse,
signature_combinations, antipattern_recurrence, trends, and modes.
opportunity_rows_available: true means only that exact raw occurrence rows are
auditable. It does not authorize history tiers or labels. Treat the emitted
history_source as the sole source selector. Read only the named source and never merge
catalog history inputs. Source resolution is owned by
pattern_history_status.py resolve_creator_pattern_history(). A disabled history
lane does not invalidate the whole profile. Keep using independent pacing, visual,
infrastructure, publishing, presentation-mode, instrument-catalog, and confirmed-intent
fields.
Gate each historical claim independently:
mastery_and_novelty.underuse.signature_combinations.trends.modes.recurring_antipatterns.The current pattern taxonomy remains available for analyzing the new outline. Profile
schemas v1/v2/v3 are non-pattern compatibility inputs; schema v4 has auditable
occurrence rows only; schema v5 binds classifications to a versioned policy.
Schema-v4/v5 top-level guardrail_sources.recurring_issues[] and badges[] are separate:
use an entry only when it explicitly carries source_lane: "non_pattern". Catalog
warnings and reinforcement come from authorized pattern_profile history, never from
an unmarked duplicate in a top-level lane.
If the profile is absent, malformed, or history-disabled, Section 15 does not restore
history by implication. Use Section 15 history only when its current block carries
explicit provenance matching the bundled catalog/scoring generation and a complete
structured contract accepted by
"{python_path}" "{speaker_toolkit_root}/skills/vault-profile/scripts/section15_pattern_history.py".
That parser delegates the payload to the shared profile provenance assessor. Section
15 v2 is occurrence-only; Section 15 v3 is policy-bound, and every consumer must still
require its relevant available domain. A date, a recent heading, an unlabeled count,
or ordinary prose is insufficient; use taxonomy-only fallback when the proof is absent.
When an older profile is available for comparison, compare catalog fingerprint and
pattern-scoring schema before catalog-derived values. Different identities mean a
generation reset. Report the reset, but do not describe the score, frequency, mastery,
strength, or underuse differences as improvement or regression. Even within one
generation, raw-score comparisons are unavailable across a changed or null
opportunity_coverage_identity.
A changed policy_semantic_sha256 within the same generation is a classification
comparison reset. Do not describe tier, recurrence, combination, or trend changes
across that policy boundary as speaker improvement or regression.
Extract from the conversation what the user has already shared. Common starting points:
Before any further data-gathering, set the planning stance for the rest of the workflow. Per the mentor pattern (and Duarte's central reframe in Resonate), the talk's planning posture is audience-as-hero, presenter-as-mentor — Yoda not Luke; Mr. Miyagi not Daniel.
This is not just a delivery posture; it shapes every Phase 0–6 decision. Before moving to the spec, ask the speaker (or yourself if the speaker has already articulated it):
"Who is the audience, and what journey are they on that you can mentor them through?"
The answer surfaces three things at once: who the hero is, what their current ordinary world looks like, and what the special world (the proposed change) is. If the speaker frames the answer as "I want to talk about X" (presenter-as-hero — your topic at the center), redirect: "What does the audience need to walk away with, that they don't currently have?" The reframe matters because every downstream decision (thesis, structure, examples, asks, visuals) is sized differently depending on whether the speaker is at the center or the audience is.
Ask a second audience question, and ask it now rather than at review time — it decides what gets built, not just what gets scored:
"Is this room mixed in what it accepts as proof, or does it all speak one language?"
This is the walk-around cover-or-match decision (see references/patterns/prepare/walk-around.md), and it sets the required talk.audience_spread field.
heterogeneous — a conference keynote, an all-hands, a mixed-seniority room. The talk covers all four registers: A precision and evidence, B process and sequence, C human impact, D implication. Each register left unanswered is a slice of the room whose question the talk never reaches.homogeneous — one engineering team, a board, a room of clinicians. The talk matches the room's register, and talk.dominant_register names it. Airtime spent on registers nobody in the room uses is stolen from the one everybody uses.Two failure modes to head off while the speaker is still answering:
heterogeneous. Coverage is the safe default; matching is the bet.references/patterns/prepare/_anti_golden-rule.md).Record the answer in the spec. check-rhetorical.py enforces the declaration at Phase 4; its decision contract lives in _check_register_coverage's docstring.
What this step owes that check: talk.audience_spread, talk.dominant_register when the room is homogeneous, and — during Phase 3 — a registers: list on each walk-around application naming which questions that claim answers. Judging which registers a claim lands is the agent's call; the script only reads what the agent declared.
Summarize what you know and what you need.
.tessl-plugin
rules
skills
illustrations
presentation-creator
references
patterns
build
deliver
prepare
scripts
shownotes-publisher
vault-clarification
vault-ingress
references
scripts
vault-profile