Eight-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, create and publish talk-content Agent Skills with talk pages to a Jekyll shownotes site, verify a recorded screencast against its storyboard, and edit a Camtasia screencast into a speaker-first video with corrected captions and chapters, all informed by a 113-entry Presentation Patterns taxonomy (83 observable: 64 patterns + 19 antipatterns; 30 unobservable: 21 patterns + 9 antipatterns) for scoring, brainstorming, and go-live preparation.
75
94%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
shot-plan.json drives build-project.py, audit-framing.py, and
framing-stills.py. All times are source seconds in the recording.
{
"title": "Good is better than perfect",
"canvas": {"width": 1920, "height": 1080, "menubar": 28},
"inset": {"height": 324, "x": 640, "y": -346, "corner_radius": 120,
"border_color": "#A78BFA", "border_width": 4},
"noise_removal": 0.8,
"shots": [
{"start": 0.70, "end": 20.10, "kind": "speaker", "label": "Intro"},
{"start": 20.10, "end": 35.20, "kind": "screen", "label": "The roles",
"cues": [[20.10, 1.06, 0.5, 0.5], [22.0, 1.7, 0.14, 0.72]]}
]
}shots tile the edit with no gap or overlap. The first start is the head
trim, the last end the tail. camtasia_model.load_plan enforces the minimum
shot length (MIN_SHOT_SECONDS).speaker; the validator enforces it.kind: "speaker" is the presenter full-frame. kind: "screen" is the screen
with the presenter inset.[time, zoom, x, y]: the framing that is complete at time, reached
by an ease of MOVE_SECONDS. (x, y) is the focal point in normalized source
coordinates, top-left origin. The first cue sits at the shot start.zoom is relative to fit. camtasia_model.min_zoom(canvas) is the floor: the
smallest zoom that keeps the macOS menu bar (canvas.menubar pixels at fit)
off screen without exposing a canvas edge. The validator rejects anything
below it, and every framing is clamped the same way.inset is in canvas pixels, center-relative, y up. noise_removal is the
Camtasia AI Noise Removal amount on the mic; 0 disables it.audit-framing.py checks this..tessl-plugin
rules
skills
illustrations
presentation-creator
references
patterns
build
deliver
prepare
scripts
screencast-editor
screencast-recorder
shownotes-publisher
vault-clarification
vault-ingress
references
scripts
vault-profile