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 102-entry Presentation Patterns taxonomy (91 observable, 11 unobservable go-live items) for scoring, brainstorming, and go-live preparation.
78
91%
Does it follow best practices?
Impact
77%
1.18xAverage score across 27 eval scenarios
Advisory
Suggest reviewing before use
All analysis output, rhetoric summary updates, tracking DB entries, and profile data MUST be written in English regardless of the talk's delivery language. For non-English talks:
"English text" (оригинальный текст).
Example: "That's the whole point" (В этом весь смысл) — NOT
"В этом весь смысл" (That's the whole point)[ru] "получается что") — do NOT merge into the main English signature listdelivery_language in the tracking DBIf the pattern taxonomy exists (skills/presentation-creator/references/patterns/_index.md)
but any talks with status "processed" or "processed_partial" have no
pattern_observations (or pattern_observations.pattern_ids is empty), mark them
"needs-reprocessing" with reprocess_reason: "pattern_scoring_added". Report:
"N talks need reprocessing for pattern scoring."
Scan observations against the pattern taxonomy index at
skills/presentation-creator/references/patterns/_index.md (path relative to plugin root).
Skip patterns marked observable: false — these are pre-event logistics and physical
stage behaviors that cannot be detected from transcripts or slides. For each observable
pattern/antipattern, determine if the talk exhibits it (strong/moderate/weak confidence),
record evidence, and compute per-talk pattern score:
count(patterns) − count(antipatterns). Return in the pattern_observations field.
The subagent's job is to return every structured field it identifies (co-presenter,
delivery language, slide counts, opening/closing types, etc.) in the structured_data
block per the return schema — never to leave them buried only in rhetoric_notes free
text. If it's in the analysis, it must be in structured_data.
Persisting those fields is deterministic and script-owned, not a manual per-run mapping —
SKILL.md Step 4 runs scripts/persist-results.py for the merge. Authors do not re-derive
that logic here.
adherence_assessment measures how consistent a talk is with the speaker's
established rhetorical baseline — not whether the talk was good in the
abstract. Adherence is consistency with this speaker's own validated style, which
is why it can only be computed once a baseline exists.
Gate: produce an assessment only when 10+ scored talks exist — talks with
status processed/processed_partial that carry a pattern_score. The assessment
anchors to pattern_score vs. the baseline. An unscored talk cannot be assessed.
Below that, return "". The subagent reads the baseline from
Section 15 of rhetoric-style-summary.md (signature patterns, recurring
antipatterns, running average pattern score) — see Rhetoric Summary — Improvement
& Adherence Sections below.
Three checks, in order:
pattern_score and distinct
pattern count versus the baseline — use the talk's mode baseline when Section
15 has a stable one (≥3 talks in that mode), otherwise the global baseline. A
lightning talk measured against a keynote baseline produces false "underuse"
findings; match like to like.Required anchors — the assessment MUST:
pattern_score relative to the running average (e.g., "4 vs.
6.8 average").Bound: 2–4 sentences of prose, not a score — the numeric signal already lives
in pattern_observations.pattern_score; the assessment interprets it against the
baseline.
rhetoric-style-summary.md Sections 1–14 mirror the 14 analysis dimensions.
Sections 15–16 are cross-talk aggregates, updated in Step 5 each batch.
The running baseline that per-talk adherence_assessment measures against. Five
required subsections:
severity (hard_limit|warning|info), the count of
talks exhibiting it, and the first/last talk filenames where it appeared.
Source: aggregate pattern_observations.antipatterns_detected and
areas_for_improvement across processed talks.average_pattern_score across
scored talks with its trajectory (improving|stable|declining), plus pattern
breadth (average distinct patterns per talk) with its trend
(widening|stable|narrowing). Track both: a score can decline from antipatterns
rising OR from breadth narrowing (using fewer patterns), and these are different
coaching messages. Maintain the same figures per presentation mode once a
mode has ≥3 scored talks (mirrors the profile's pattern_profile.by_mode); these
per-mode figures are what mode-aware adherence compares against. This is the
baseline per-talk adherence cites.pattern_profile.strengths.pattern_profile.underused_patterns.Section 15 is the human-readable source for the profile's pattern_profile and
guardrail_sources.recurring_issues (see
../../vault-profile/references/speaker-profile-schema.md);
keep the two consistent when both update.
Patterns the speaker confirmed as deliberate or accidental during a clarification session (see vault-clarification). Read-only during ingress — populated by clarification, consumed here as the intent-adherence input for Section 15.
Each ingress run, after the final Section 15 baseline is current, verifies the
speaker's active improvement_goals (set during clarification — record schema in
../../vault-clarification/references/schemas-config.md).
This closes the loop: the system stops merely diagnosing and checks whether the
issue the speaker chose to work on actually moved.
For each goal with status not in (achieved, retired):
current_value for the goal's metric from the current Section 15
baseline — and, for pacing and mode-specific goals, from the freshly regenerated
speaker profile (this step runs after Step 7, so pacing.adherence and
pattern_profile.by_mode are current). Examples by kind: antipattern → the
antipattern's frequency over recent talks; underuse → the pattern's recent usage
or distinct-pattern breadth; pacing → pacing.adherence.over_budget_rate. Write
current_value, last_checked (today), checked_by: "vault-ingress".status by comparing current_value against baseline_value and target:
achieved — current_value meets or beats target.improving — moved toward target versus baseline_value but not there yet.stalled — no meaningful movement from baseline_value.regressed — moved away from target (worse than baseline_value).set_date toward movement — a goal can't
be judged on talks that predate it.baseline_value, target, issue, or set_date — those are the
fixed yardstick; verification is non-owner and touches status fields only.Report each goal's status in the run summary. A regressed or stalled goal is the
strongest signal to surface — it is the speaker's own priority, not a machine-chosen
one.
.tessl-plugin
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
rules
skills
illustrations
presentation-creator
references
patterns
build
deliver
prepare
shownotes-publisher
vault-clarification
vault-ingress
vault-profile