Two-skill presentation system: analyze your speaking style into a rhetoric knowledge vault, then create new presentations that match your documented patterns. Includes an 88-entry Presentation Patterns taxonomy for scoring, brainstorming, and go-live preparation.
Overall
score
95%
Does it follow best practices?
Validation for skill structure
This file defines the guardrail check structure — what to check, how to check it, and how to report results.
Thresholds and speaker-specific rules come from the vault at runtime:
speaker-profile.json → guardrail_sources.slide_budgets[]speaker-profile.json → guardrail_sources.act1_ratio_limits[]speaker-profile.json → guardrail_sources.recurring_issues[]speaker-profile.json → design_rules.footerspeaker-profile.json → rhetoric_defaultsspeaker-profile.json → confirmed_intents[]If the speaker profile is not available, fall back to the rhetoric vault summary Sections 15 (Areas for Improvement) and 16 (Speaker-Confirmed Intent) for prose rules.
Run these checks after Phase 3 delivery and after each Phase 4 revision.
Read guardrail_sources.slide_budgets[] from the speaker profile for the thresholds.
Match the talk's duration to the closest budget entry.
Progressive-reveal slides count toward the budget. If you show the same chart 3 times with different bars highlighted, that's 3 slides, not 1. Flag progressive reveals as budget-expensive and ask if the emphasis is worth the cost.
Demo-driven talks are the exception. If the selected mode is demo-driven, apply a much lower slide count (the live demo IS the content).
[PASS/FAIL] Slide count: {actual}/{budget} for {duration}-minute slotIf over budget, suggest specific cuts. Prioritize cutting:
Read guardrail_sources.act1_ratio_limits[] from the speaker profile for the limits.
[PASS/WARN/FAIL] Act 1 ratio: {act1_slides}/{total_slides} = {percentage}%
(limit: {max}% for {duration}-min slot)WARN if within 5% of limit. FAIL if over.
Read design_rules.footer from the speaker profile for the footer elements.
Generate the checklist dynamically from footer.elements[]:
footer.co_presented_extra)[PASS/FAIL] Branding: Footer elements specified for {conference}
[WARN] Branding: Conference hashtag not yet confirmed — flag for authorRead rhetoric_defaults.profanity_calibration and rhetoric_defaults.on_slide_profanity
from the speaker profile.
The key rule (common across speakers): keep profanity verbal-only by default. On-slide profanity limits deck reuse across venues.
[PASS/FAIL] Profanity register: {spec_register} applied consistently
[WARN/FAIL] On-slide profanity: {count} instances found — {approved/not approved}If on-slide profanity is present without explicit approval, flag it: "Slide {N} has baked-in profanity: '{text}'. This limits reuse at corporate/ family-friendly events. Keep it verbal-only, or explicitly approve for this talk?"
Survey data without visible source attribution creates credibility risk.
[PASS/FAIL] Data attribution: {N} data slides checked, {M} missing sources
Slides needing sources: {list}Expired dates, deadlines, and promotional material appear on reused slides.
[PASS/FAIL] Time-sensitive content: {count} items found
{list with slide numbers and content}Even compressed formats need a structured close. Read rhetoric_defaults.three_part_close
from the speaker profile for whether the speaker defaults to a full three-part close.
Minimum viable close:
[PASS/FAIL] Closing: {summary present?} | {CTA present?} | {social present?}
[WARN] Closing: Missing {component} — intentional or oversight?Read rhetoric_defaults.default_duration_minutes and rhetoric_defaults.modular_design
from the speaker profile. If modular design is enabled, the outline should include
explicit cut lines:
[CUT LINE] markers for shorter slot adaptation[EXPAND ZONE] markers for sections that can grow for longer slots[PASS/FAIL] Cut lines: {present/missing} for sub-default adaptation
[PASS/FAIL] Expand zones: {present/missing} for longer adaptationThis check has two layers: speaker-specific recurring issues from the vault, and taxonomy-based antipattern scanning from the Presentation Patterns reference.
Read guardrail_sources.recurring_issues[] from the speaker profile. Each entry
describes a known weakness and its specific guardrail check.
For each recurring_issues entry, run the check described in its guardrail field
and report at the severity level in its severity field.
Common anti-patterns (may or may not apply to a given speaker):
Read references/patterns/_index.md (Phase 4 section of the phase-grouped lookup table)
and profile → pattern_profile.antipattern_frequency if available.
Speaker-specific antipatterns — scan pattern_profile.antipattern_frequency for
patterns with severity: "recurring". These are flagged as [RECURRING] with the
speaker's historical frequency and trend.
Contextual antipatterns — scan the outline against ALL antipatterns from the taxonomy.
For each match, read the individual pattern file for detection heuristics and scoring
criteria. These are flagged as [CONTEXTUAL] (new detection, not historically tracked).
Contextual detection rules:
Report format:
[RECURRING] Shortchanged (8/24, decreasing) — plan cut lines for the 20-min slot
[RECURRING] Meme accretion (5/24, stable) — Act 1 meme ratio at 55%
[CONTEXTUAL] Bullet-Riddled Corpse — slides 14, 22 have 6+ bullet points
[CONTEXTUAL] Dual-Headed Monster — co-presented talk, handoff points not definedUse this template after each check:
GUARDRAIL CHECK — {talk title} — {date}
================================================
[PASS] Slide budget: {actual}/{max} for {duration}-min slot
[PASS/WARN/FAIL] Act 1 ratio: {%} (limit: {max}%)
[PASS/FAIL] Branding: {status}
[PASS/FAIL] Profanity: {register} applied, {on-slide count} on-slide
[PASS/FAIL] Data attribution: {N} slides checked, {M} issues
[PASS/FAIL] Time-sensitive: {count} items
[PASS/FAIL] Closing: summary={y/n} CTA={y/n} social={y/n}
[PASS/FAIL] Cut lines: {present/missing}
[INFO] Anti-patterns: {any flags from recurring_issues}
[RECURRING/CONTEXTUAL] Presentation Patterns: {taxonomy-based antipattern flags}
================================================Install with Tessl CLI
npx tessl i jbaruch/speaker-toolkitevals
scenario-0
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
skills
presentation-creator
references
patterns
build
deliver
prepare
rhetoric-knowledge-vault