Communitygithub.com

evgenspm/launchfilm

Write the launch post that goes with the film: X / Twitter post, LinkedIn post, Product Hunt tagline, description and maker comment, written in the founder's own voice, concrete, no AI slop ("excited to announce", em dashes, buzzwords). Triggers: write the tweet, launch post, LinkedIn post, Product Hunt copy, PH tagline, maker comment, caption for the video, announcement copy. Use after the film is rendered (or when the user asks for post copy for an existing film); starts from `npx launchfilm post <slug>` and the film's BRIEF.md and STORYBOARD.md, writes out/<slug>/POST.md. Never posts anything. Not for the film's own on-screen script or VO (story).

What is launchfilm?

launchfilm is a Claude Code agent skill that write the launch post that goes with the film: X / Twitter post, LinkedIn post, Product Hunt tagline, description and maker comment, written in the founder's own voice, concrete, no AI slop ("excited to announce", em dashes, buzzwords). Triggers: write the tweet, launch post, LinkedIn post, Product Hunt copy, PH tagline, maker comment, caption for the video, announcement copy. Use after the film is rendered (or when the user asks for post copy for an existing film); starts from `npx launchfilm post <slug>` and the film's BRIEF.md and STORYBOARD.md, writes out/<slug>/POST.md. Never posts anything. Not for the film's own on-screen script or VO (story).

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/evgenspm/launchfilm/tree/HEAD/skills/launch-post

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation


name: launch-post description: Write the launch post that goes with the film: X / Twitter post, LinkedIn post, Product Hunt tagline, description and maker comment, written in the founder's own voice, concrete, no AI slop ("excited to announce", em dashes, buzzwords). Triggers: write the tweet, launch post, LinkedIn post, Product Hunt copy, PH tagline, maker comment, caption for the video, announcement copy. Use after the film is rendered (or when the user asks for post copy for an existing film); starts from npx launchfilm post <slug> and the film's BRIEF.md and STORYBOARD.md, writes out//POST.md. Never posts anything. Not for the film's own on-screen script or VO (story).

launch-post: copy that sounds like the founder

The film does the showing; the post says one concrete thing and gets out of the way. Write like the founder writes, not like a launch template. Output: launch-video/out/<slug>/POST.md. You never post, schedule or open a browser.

Inputs (read all before writing)

  1. npx launchfilm post <slug>: the scaffold (sections for X, LinkedIn, Product Hunt, plus credit lines). Start from it.
  2. films/<slug>/BRIEF.md: product, message, audience, CTA, URL, must-not-claim.
  3. films/<slug>/STORYBOARD.md: VO script and on-screen claims (the post must not contradict them).
  4. The film facts: length, presets rendered, what the viewer sees in the first 2 s.
  5. The founder's voice: their README intro, changelog, past posts or messages the user pastes. Note sentence length, capitalization habits, use of "I" vs "we", emoji habits. Match them. No samples → plain, short, first person.

Steps

  1. Pick the one concrete thing: what the product does, for whom, in one sentence with a noun and a verb. "Acme Ledger sends the payment reminders so you don't have to." beats "Meet the future of invoicing."
  2. Find one real specific: a number the user can back (from BRIEF.md with a source), a before/after, a time, a limitation stated plainly. No number without a source.
  3. Write per platform: references/x.md, references/linkedin.md, references/product-hunt.md. Limits are hard; count them.
  4. Run the slop check (below). If a de-slop skill is installed (for example one named stop-slop), run it on the draft too.
  5. Credit line: add it only if the user said they want one, as the last line, from npx launchfilm credit lines or the lines in launch-film references/credit.md. Default: no credit line in the post.
  6. Write out/<slug>/POST.md with each variant and its measured length. Show the user the X post and the LinkedIn first line inline; the rest stays in the file.

Slop check (zero hits required)

  • Banned phrases [craft/11#banned-phrases]: excited to announce · thrilled to share · proud to announce · we're live · game-changer · revolutionary/revolutionize · seamless(ly) · AI-powered · powered by AI · unlock · unleash · supercharge · elevate · empower · next-gen · cutting-edge · state-of-the-art · best-in-class · world-class · effortless(ly) · streamline · leverage · robust · harness the power · in today's fast-paced world · say goodbye to · look no further · the future of X is here · reimagine(d) · transform the way you · take X to the next level · one-stop shop · all-in-one (unless literal) · magic/magical (unless one literal click) · "it's not just X, it's Y" · imagine a world · what if I told you · let's dive in · buckle up · without further ado · stay tuned · 10x (unless measured).
  • No em dash character. No more than 1 emoji per post. No more than 2 hashtags (default 0).
  • No triplets of parallel adjectives ("fast, simple, and powerful"). No rhetorical question as the opener unless the founder writes that way. No closing moral ("Because your time matters.").
  • No "Introducing X:" headline style on LinkedIn; X can start with the product name if it reads naturally.
  • No claims beyond BRIEF.md; no user counts, revenue or customer names without the user's confirmation. Check: both return nothing: grep -inE 'excited|thrilled|game.?changer|seamless|unlock|supercharge|elevate|empower|next.?gen|cutting.?edge|effortless|streamline|leverage|reimagin|revolution' out/<slug>/POST.md and the em dash check grep -n "$(printf '\xe2\x80\x94')" out/<slug>/POST.md (works in any POSIX shell).

POST.md format

# Post copy: <slug>
## X (video attached natively)
<variant A>  (241/280)
<variant B>  (198/280)
Reply (optional): <link + one line>

## LinkedIn (video uploaded natively, burned captions on)
<post>  (first line 94/120 chars)

## Product Hunt
Tagline: <≤ 60>  (48/60)
Description: <≤ 260>  (233/260)
Maker comment: <≤ 120 words>  (104 words)
Gallery video: YouTube link of ph-16x9

## Credit line (only if the user opted in)
<line>

Rules

  • Never post, schedule, DM, or open a browser. The user posts.
  • The video is uploaded natively on X and LinkedIn (autoplays in feed); links go in the text or the first reply.
  • One message per post. If the user wants to say three things, the other two go to the maker comment or a thread.
  • Keep the user's edits; on revision change only what they asked.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

evgenspm/launchfilm

Brand intake for a launch film, product video or promo: capture the product's real colors, fonts, logo, radius and theme from the user's repo (Tailwind config, CSS variables, shadcn tokens, next/font, logo SVG), then the live website, then screenshots, and write films/<slug>/brand.json with a source for every value. Use when starting a new film, when the brand, logo or colors changed, or when the user says "use my brand / my colors / my logo". Hard stop if capture fails: never invent a logo or colors. Not for picking a look or grade (scene-build, craft/06) or for writing copy (story).

evgenspm/launchfilm

QA a rendered launch film before anyone ships it. Use for "QA the video", "check the render", "is it ready to post", "review the film", "why does it look cheap", "check the captions/safe zones/loudness", after every render and before package. Reads the CLI's automatic report (`npx launchfilm qa <slug>`), contact sheets and stills at key timestamps, then checks text-at-time readability, contrast, platform safe zones, loudness (−14 LUFS, −1.5 dBTP), ffprobe encode specs, black and frozen frames, cuts on the beat, and the 12 amateur tells as blocking checks. Writes qa/<slug>/QA.md where every line cites a file or a measured number; a check that was not run says NOT CHECKED, never PASS. Use scene-build to fix picture problems it finds, sound to fix the mix, launch-film for the whole pipeline, reference-study for reference videos.

evgenspm/launchfilm

Launch video, launch film, product video, product launch, promo, teaser, trailer, demo video, Product Hunt video, X / LinkedIn launch clip, reel, hero loop, motion graphics, "make a video for my product", Remotion film. Router and gated pipeline for making a pro product-launch film with the launchfilm studio in ./launch-video: brief, brand intake, story and storyboard (user approves), sound, scene build, frame QA, render per platform preset, package, post copy, one-time credit note. Use this first for any request to make, remake or revise a launch or product film; it calls the sibling skills (brand-intake, story, sound, scene-build, recipes, film-qa, launch-post). Do not use it to study a reference video (use reference-study), to browse recipes only (use recipes), or for generic Remotion questions unrelated to a launch film.

evgenspm/launchfilm

Find launchfilm recipes (published launch films studied frame by frame and written down as text, some with ready Remotion code) and build the user's film from 1 to 3 of them. Use for "use a template", "start from a recipe", "make a 30s launch film from recipe <id>", "something like this style", "show me options", "which recipe fits a 30 s vertical launch", "remix recipe X with our brand", or when a storyboard needs a proven hook, feature beat, logo reveal or end card. Searches recipes/CATALOG.md or recipes/index.json, scores and picks 1 to 3, shows each with its source link, reads the recipe.md beat sheet, then scaffolds with `npx launchfilm new <slug> --recipe <id>`: ready code when Recipe.tsx exists, else TODO scenes built from the beat sheet with studio presets, keeping the recipe's timings, springs and sounds re-timed to the user's length and beat grid. Use reference-study to make a new recipe, story for the storyboard, scene-build for scenes, launch-film for the whole pipeline.

Related Skills