Install
openclaw skills install @voronindenis5/wedding-toast-architectUse when asked to write, revise, time, or safety-check a wedding speech or toast (best man, maid of honor, parents, friends) — builds a role-tuned 5-part outline with per-section word budgets, estimates speaking time at 3 paces, and red-flag scans drafts for the classics that bomb (ex mentions, drunk stories, divorce jokes, inside jokes, backhanded 'finally settled' compliments) with CUT/SOFTEN/CHECK verdicts.
openclaw skills install @voronindenis5/wedding-toast-architectEvery year ~2 million US couples marry; nearly every wedding hands a friend or parent a microphone and 3 minutes they are unprepared for. The result is predictable: rambled inside jokes, accidental ex mentions, drunk-story confessions, "ball and chain" humor in front of both grandmothers — and a regretful speaker replaying it for years.
This skill treats the toast as a buildable artifact with a spec:
Pure Python stdlib. Works offline. No draft text ever leaves the machine.
Don't use for: vows (intimate, couple-authored — different genre), ceremony readings (pre-existing texts), professional MC scripts, eulogies (see note: structure overlaps but tone rules differ — this tool would over-flag).
python3 scripts/toast_architect.py build --role best-man \
--couple "Alex & Sam" --partner Sam --years-known 9 \
--stories "rafting capsize; chili cook-off disaster" \
--qualities "loyal, calm in chaos" --minutes 3
python3 scripts/toast_architect.py scan --draft draft.txt \
--protected "Jordan,Riley" --minutes 3
python3 scripts/toast_architect.py time --words 410.| Class | Severity | Why |
|---|---|---|
| ex-partner references | CUT | exes never belong in toasts |
| drunk/intoxication stories | CUT | all-ages room |
| strip club / vegas | CUT | bachelor content bombs |
| divorce / "ball and chain" jokes | CUT | reads as doubt about the marriage |
| "finally settled" backhanded frames | CUT | insults both partners |
| pregnancy mentions | CUT | not your news to announce |
| profanity | SOFTEN | shrinks the room |
| money / prenup jokes | SOFTEN | divides the room |
| looks-only compliments | SOFTEN | compliment choices instead |
| dating-app jokes | CHECK | only if couple approves the story |
inside-joke markers ( ... ) | CHECK | translate or cut |
| religion assumptions | CHECK | match the couple's faith |
| "However" early digs | CHECK | usually introduces a slight |
| cliché openers | SOFTEN | "Good evening, for those who don't know me..." |
| filler words on paper | SOFTEN | filler out loud too |
| protected names | CUT | exes, estranged, deceased, private people |
Scoring: 100 − 18·CUT − 7·SOFTEN − 3·CHECK, floored at 0. Ship at ≥85.
Speaker: best man, 9 years of friendship, worried about an ex mention.
$ toast_architect.py build --role best-man --couple "Alex & Sam" --partner Sam \
--years-known 9 --stories "rafting capsize; chili cook-off disaster" \
--qualities "loyal, calm in chaos" --minutes 3
→ 405-word budget: hook 48 / who 40 / story1 121 / story2 89 / partner 56 / toast 48
$ toast_architect.py scan --draft draft.txt --protected "Jordan" --minutes 3
→ 5 CUT / 2 SOFTEN / 1 CHECK, safety score 0/100:
CUT ex-partner reference (1x)
CUT drunk/intoxication story (1x)
CUT divorce/pessimism joke (1x)
CUT 'finally settled' framing (1x)
CUT protected name 'Jordan' (1x)
SOFTEN money joke, cliché opener CHECK inside-joke parenthetical
Rewrite fixes all CUTs; rescan: 92/100 — ready for rehearsal.
references/toast-craft.md — structure theory, role budget rationale,
delivery-day protocol (mic, glass, cards), and the repair guide for each
flag class with before/after rewrites.references/scanner-patterns.md — the full pattern table with regexes,
severity weighting, known false-positive notes, and how to extend.