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 backgrounds-manifest-to-spec.py — manifest JSON to ApplyBackgrounds spec."""
import pytest
def test_spec_sorted_by_slide_number(backgrounds_manifest_to_spec):
manifest = {"backgrounds": {"10": "/a/slide-10.jpg", "2": "/a/slide-02.jpg"}}
spec = backgrounds_manifest_to_spec.manifest_to_spec(manifest)
# Numeric (not lexical) sort: 2 before 10.
assert spec == "2=/a/slide-02.jpg;10=/a/slide-10.jpg"
def test_spec_single_entry(backgrounds_manifest_to_spec):
manifest = {"backgrounds": {"3": "/img/slide-03.png"}}
assert backgrounds_manifest_to_spec.manifest_to_spec(manifest) == "3=/img/slide-03.png"
def test_empty_manifest_raises(backgrounds_manifest_to_spec):
with pytest.raises(ValueError):
backgrounds_manifest_to_spec.manifest_to_spec({"backgrounds": {}})
with pytest.raises(ValueError):
backgrounds_manifest_to_spec.manifest_to_spec({})
def test_reserved_delimiter_in_path_raises(backgrounds_manifest_to_spec):
# A ';' or '=' in a path would corrupt the spec the VBA macro parses.
with pytest.raises(ValueError):
backgrounds_manifest_to_spec.manifest_to_spec({"backgrounds": {"1": "/a/b;c.jpg"}})
with pytest.raises(ValueError):
backgrounds_manifest_to_spec.manifest_to_spec({"backgrounds": {"1": "/a/b=c.jpg"}})
def test_malformed_input_raises_valueerror_not_traceback(backgrounds_manifest_to_spec):
m2s = backgrounds_manifest_to_spec.manifest_to_spec
# Non-object manifest, non-object backgrounds, non-int key, non-string path
# all surface as ValueError (actionable), never an unhandled TypeError/etc.
for bad in (
[1, 2, 3], # manifest not a dict
{"backgrounds": ["/a/slide-01.jpg"]}, # backgrounds not a dict
{"backgrounds": {"one": "/a/slide-01.jpg"}}, # key not an integer
{"backgrounds": {"1": 12345}}, # path not a string
):
with pytest.raises(ValueError):
m2s(bad).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