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.
86
92%
Does it follow best practices?
Impact
86%
1.24xAverage score across 26 eval scenarios
Advisory
Suggest reviewing before use
"""Tests for notes-to-packed.py — 0-based notes JSON to the SetSpeakerNotes wire format."""
import pytest
RS = "\x1e"
US = "\x1f"
def test_packs_one_based_sorted_dropping_empties(notes_to_packed):
# 0-based keys -> 1-based; empty/None dropped; sorted by slide number.
packed = notes_to_packed.pack_notes(
{"2": "third", "0": "", "1": "second", "4": None}
)
assert packed == f"2{US}second{RS}3{US}third"
def test_single_note(notes_to_packed):
assert notes_to_packed.pack_notes({"0": "intro"}) == f"1{US}intro"
def test_all_empty_yields_empty_string(notes_to_packed):
assert notes_to_packed.pack_notes({"0": "", "1": None}) == ""
def test_multiline_unicode_text_preserved(notes_to_packed):
text = "Line one — with an em-dash.\nLine two: “smart quotes”."
packed = notes_to_packed.pack_notes({"0": text})
assert packed == f"1{US}{text}"
def test_non_object_raises(notes_to_packed):
with pytest.raises(ValueError):
notes_to_packed.pack_notes(["not", "a", "map"])
def test_non_integer_key_raises(notes_to_packed):
with pytest.raises(ValueError):
notes_to_packed.pack_notes({"intro": "text"})
def test_non_string_text_raises(notes_to_packed):
with pytest.raises(ValueError):
notes_to_packed.pack_notes({"0": 123})
def test_negative_index_rejected_upfront(notes_to_packed):
# 0-based indices must be >= 0 — reject here, not later inside PowerPoint.
with pytest.raises(ValueError):
notes_to_packed.pack_notes({"-1": "text"})
def test_reserved_control_char_in_text_raises(notes_to_packed):
with pytest.raises(ValueError):
notes_to_packed.pack_notes({"0": f"bad{RS}text"})
with pytest.raises(ValueError):
notes_to_packed.pack_notes({"0": f"bad{US}text"}).github
eval-resources
humor-postmortem-blind-spots
qr-bitly-slug-from-outline
qr-missing-shortener-detection
shownotes-publisher-omit-placeholder
shownotes-publisher-publish-no-date
shownotes-publisher-publish-with-date
shownotes-publisher-update-add-video
video-extraction-diagnostics
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
rules
scripts
skills
illustrations
presentation-creator
references
patterns
build
deliver
prepare
scripts
shownotes-publisher
vault-clarification
vault-ingress
vault-profile
tests