[ PACK LIBRARY / DESIGN & BRAND ]
REQUIRES
Use this when a launch or fundraising story needs a presentation, a narrated video, and short vertical clips. The chain creates the deck first, uses its slides and copy for the video, then cuts the video into social clips.
claude plugin install gemskills@b-open-io (skills: gemskills:deck-creator, gemskills:generate-video; roster: Lisa (gemskills:content))claude plugin install creative@b-open-io (skills: creative:voice-clone; roster: Frames (creative:audio-specialist))GEMINI_API_KEY - slide images and Veo video generationELEVENLABS_API_KEY - narration voice (voice-clone / TTS); IVC voice cloning needs a Starter-tier ElevenLabs account or aboveffmpeg (brew install ffmpeg) - audio prep and clip cutting; REPLICATE_API_TOKEN if you use Replicate-Veo features (reference frames, 9:16 at higher res){{STORY}} The narrative in 3-5 sentences: what it is, who it is for, the ask.
{{AUDIENCE}} Who watches/reads, e.g. "seed investors" or "developer users".
{{DECK_DIR}} Working directory for the deck and its assets, e.g. ./launch-deck.
{{ART_STYLE}} Optional style id from the library (e.g. pixl, deco) applied to every slide for consistency. Omit for a clean business theme.
{{VOICE}} Narration voice: path/URL to reference audio to clone, or "default" for a stock TTS voice.
{{CLIP_TARGETS}} Which social cutdowns you need, e.g. "3x 9:16 clips, 8s each, hook + one point + CTA".
In {{DECK_DIR}}: deck.pdf and DECK-INDEX.md, one narrated master .mp4,
and the set of vertical social clips named per {{CLIP_TARGETS}} - all telling
the same story, produced from one brief.
db-explainer-video - spin a dedicated feature-explainer off the same voice
and style.db-campaign-landing-chain - build the landing page these assets point to.db-social-asset-batch - generate the still social posts that surround the
video clips in the campaign.db-custom-art-style - capture the deck's look as a reusable style so the next
campaign matches this one.Run a three-link chain. Each link names who owns it, what it consumes, and what
"done" means before the next link starts. Do not collapse the links - the whole
point is that the deck is the single source the video and clips derive from.
LINK 1 - Lisa (Visual Content Specialist) builds the deck.
Load `gemskills:deck-creator` and follow its phased workflow in {{DECK_DIR}}.
Discovery is already answered: topic/story = {{STORY}}, audience = {{AUDIENCE}},
~10-12 slides, output mode html+pdf. Write THEME.md and DECK-PLAN.md, then apply
{{ART_STYLE}} (pass --style to every slide generation so all slides match). Plan
the copy with one message per slide and a problem -> solution -> proof -> ask arc.
Generate slides, stitch the PDF, and write DECK-INDEX.md.
DONE when: DECK-INDEX.md lists every slide, deck.pdf renders, and DECK-PLAN.md
holds the per-slide headline + narration line. HANDOFF to Frames: the ordered
slide PNGs plus the per-slide narration lines from DECK-PLAN.md.
LINK 2 - Frames (Audio Producer) turns the deck into a narrated video.
First, the voice. If {{VOICE}} is a reference clip, load `creative:voice-clone`
and run its pipeline (source -> prepare -> clone) to get a voice_id; surface it.
If {{VOICE}} is "default", skip cloning and use a known stock ElevenLabs voice_id
from the account. Then generate the narration for each slide's line with
voice-clone's test subcommand pointed at that voice_id
(voice-clone.ts test --voice-id <id> --text "<line>" --output-dir <dir>), which is
the skill's text-to-speech path; collect one audio file per slide.
Then animate. Load `gemskills:generate-video` and, per slide, produce a short
motion clip using the slide PNG as the starting frame (--input) at 16:9 so the
aspect matches; keep motion subtle (slow push/parallax), let the narration drive
timing. Run generation as a background task (Veo takes up to several minutes) and
read only the output path. Assemble slides + narration into one video with ffmpeg.
DONE when: a single narrated .mp4 plays start to finish and matches the deck order.
HANDOFF to Lisa: the master .mp4 and the DECK-PLAN.md arc.
LINK 3 - Lisa cuts social clips.
From the master video and {{CLIP_TARGETS}}, cut vertical (9:16) clips with ffmpeg,
each a self-contained hook + one point + CTA drawn from the deck arc - do not
invent new claims, only reuse what the deck already says. Where a 9:16 reframe
crops badly, regenerate that segment at --aspect 9:16 rather than letterboxing.
DONE when: every clip in {{CLIP_TARGETS}} exists, is under the platform length,
and reads on mute-then-unmute.
Negative prompts: never read generated .mp4 or slide images back into context -
report file paths and have me play them with `open <file>`. Do not re-brief the
story between links; the deck copy is the script. Do not letterbox 16:9 into 9:16;
reframe or regenerate. Do not fabricate metrics or quotes for the clips.