feat(skills): recoup-internal-video-grok-1.5-imagine-facetime — FaceTime-call ads via Grok Imagine 1.5#74
Conversation
FaceTime-call ad production with Grok Imagine 1.5 on fal — the workflow proven on the Gatsby Grace × brauxelion prototype (2026-07-02). Core discovery: dialogue written in the i2v prompt is spoken verbatim with native voice + lipsync, no TTS or lipsync model. Encodes the take structure around the 15s cap (timestamped 5s beats, character cuts hide voice joints, extend-video chaining), the prompt grammar (action verbs eat lines; lipsync-from-first-word; one-person/one-hand artifact guards), the real-person likeness pipeline (letterbox before edit, outpaint bars, strip AI text) with the consent gate as policy, fal queue/storage mechanics, Whisper QC, assembly, and the hyperframes chrome + ship-posts handoffs. Measured costs: ~$10 per debugged 50s video, $0.14/s at 720p. Reference build: strategy sweetman/content/facetime-call/. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
📝 WalkthroughWalkthroughAdds a new skill specification document defining an internal FaceTime-call-style two-person ad video pipeline using Grok Imagine 1.5 on fal.ai, covering consent gating, script/take generation, prompt grammar, identity handling, fal API mechanics, assembly/rendering, and cost estimates. ChangesFaceTime Video Skill Spec
Estimated code review effort: 2 (Simple) | ~10 minutes Related PRs: None identified. Suggested labels: documentation, skills Suggested reviewers: None identified. PoemA rabbit hops through FaceTime lore, 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@skills/recoup-internal-video-grok-1.5-imagine-facetime/SKILL.md`:
- Around line 52-59: The fenced prompt example in the SKILL.md snippet is
missing a language specifier, which is causing markdownlint to flag it and
reducing readability. Update the fenced block in the prompt example to include
an appropriate language tag, keeping the existing FaceTime prompt content
intact; the relevant snippet is the one starting with the video-call description
and continuing through the three timed lines.
- Around line 15-17: The SKILL.md references external paths and secrets outside
the skill directory, which breaks the self-contained skill rule. Update the
skill documentation to use only files under this skill’s own references/ tree
and remove mentions of strategy/..., mono/api/.env.local, and other external
asset paths. Use local equivalents or copied reference material, and ensure any
guidance points to symbols or docs inside
recoup-internal-video-grok-1.5-imagine-facetime only.
- Line 2: The skill slug in the SKILL.md frontmatter does not follow the
required recoup-internal-[domain]-[verb]-[noun] pattern because it includes the
“1.5” segment. Update the name field for
recoup-internal-video-grok-1.5-imagine-facetime to a plain lowercase hyphenated
slug that matches the repo rule, keeping it aligned with the skill’s intended
domain/verb/noun identity.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: bfe60735-9534-4bb5-86e9-f13052b2a2eb
📒 Files selected for processing (1)
skills/recoup-internal-video-grok-1.5-imagine-facetime/SKILL.md
| Reference build: `strategy/recoup-rostrum-baseline/sweetman/content/facetime-call/` | ||
| (NOTES.md = full decision log; `index.html` = the hyperframes FaceTime chrome; final: | ||
| `renders/facetime-call_*.mp4`). `FAL_KEY` lives in `mono/api/.env.local`. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win
Keep the skill self-contained.
These references point outside skills/recoup-internal-video-grok-1.5-imagine-facetime/ (strategy/..., mono/api/.env.local, sweetman/content/*/assets/art/), which violates the repo rule that skills only read/execute files inside their own directory. Move any reusable material into this skill's references/ tree or replace the external paths with local docs. As per coding guidelines: "Each skill must be self-contained and read/execute only files inside its own directory (references/, scripts/, templates/, fixtures/). Never reference ../, ../../references/, another skill's directory, or plugin-root scripts/templates/."
Also applies to: 91-93
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@skills/recoup-internal-video-grok-1.5-imagine-facetime/SKILL.md` around lines
15 - 17, The SKILL.md references external paths and secrets outside the skill
directory, which breaks the self-contained skill rule. Update the skill
documentation to use only files under this skill’s own references/ tree and
remove mentions of strategy/..., mono/api/.env.local, and other external asset
paths. Use local equivalents or copied reference material, and ensure any
guidance points to symbols or docs inside
recoup-internal-video-grok-1.5-imagine-facetime only.
Source: Coding guidelines
| ``` | ||
| FaceTime video call, subtle camera micro-shake, <room/lighting>, natural casual delivery | ||
| with clear enunciation. Exactly one person in the room, only <his/her> voice, <his/her> lips | ||
| move with every word <he/she> speaks starting immediately from the very first word. | ||
| (0-5s) <The character> says, speaking from the first moment: "<line>" | ||
| (5-10s) <small physical direction> and says: "<line>" | ||
| (10-15s) Looking straight into the camera <he/she> says: "<line>" | ||
| ``` |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add a language tag to the prompt example.
The fenced block is missing a language specifier, which is already tripping markdownlint and makes the snippet less readable.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 52-52: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@skills/recoup-internal-video-grok-1.5-imagine-facetime/SKILL.md` around lines
52 - 59, The fenced prompt example in the SKILL.md snippet is missing a language
specifier, which is causing markdownlint to flag it and reducing readability.
Update the fenced block in the prompt example to include an appropriate language
tag, keeping the existing FaceTime prompt content intact; the relevant snippet
is the one starting with the video-call description and continuing through the
three timed lines.
Source: Linters/SAST tools
There was a problem hiding this comment.
2 issues found across 1 file
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="skills/recoup-internal-video-grok-1.5-imagine-facetime/SKILL.md">
<violation number="1" location="skills/recoup-internal-video-grok-1.5-imagine-facetime/SKILL.md:2">
P2: The skill slug contains `1.5`, which isn't a plain-English hyphenated token and may break skill registration/routing that expects the `recoup-internal-[domain]-[verb]-[noun]` pattern. Consider normalizing to something like `recoup-internal-video-grok-imagine-facetime` or `recoup-internal-video-grok-15-imagine-facetime`.</violation>
<violation number="2" location="skills/recoup-internal-video-grok-1.5-imagine-facetime/SKILL.md:15">
P2: This line references paths outside the skill's own directory (`strategy/recoup-rostrum-baseline/...`, `mono/api/.env.local`), which violates the self-containment rule for skills. Each skill must only read/execute files inside its own directory tree (`references/`, `scripts/`, `templates/`, `fixtures/`). Move these references into a local `references/` tree or replace with inline documentation.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
| spoken verbatim, with the speaker's own voice and correct lipsync**. No TTS, no lipsync pass — | ||
| both were bake-off losers (a lipsync pass deadens the face; HeyGen avatars read as studio ads). | ||
|
|
||
| Reference build: `strategy/recoup-rostrum-baseline/sweetman/content/facetime-call/` |
There was a problem hiding this comment.
P2: This line references paths outside the skill's own directory (strategy/recoup-rostrum-baseline/..., mono/api/.env.local), which violates the self-containment rule for skills. Each skill must only read/execute files inside its own directory tree (references/, scripts/, templates/, fixtures/). Move these references into a local references/ tree or replace with inline documentation.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At skills/recoup-internal-video-grok-1.5-imagine-facetime/SKILL.md, line 15:
<comment>This line references paths outside the skill's own directory (`strategy/recoup-rostrum-baseline/...`, `mono/api/.env.local`), which violates the self-containment rule for skills. Each skill must only read/execute files inside its own directory tree (`references/`, `scripts/`, `templates/`, `fixtures/`). Move these references into a local `references/` tree or replace with inline documentation.</comment>
<file context>
@@ -0,0 +1,119 @@
+spoken verbatim, with the speaker's own voice and correct lipsync**. No TTS, no lipsync pass —
+both were bake-off losers (a lipsync pass deadens the face; HeyGen avatars read as studio ads).
+
+Reference build: `strategy/recoup-rostrum-baseline/sweetman/content/facetime-call/`
+(NOTES.md = full decision log; `index.html` = the hyperframes FaceTime chrome; final:
+`renders/facetime-call_*.mp4`). `FAL_KEY` lives in `mono/api/.env.local`.
</file context>
| @@ -0,0 +1,119 @@ | |||
| --- | |||
| name: recoup-internal-video-grok-1.5-imagine-facetime | |||
There was a problem hiding this comment.
P2: The skill slug contains 1.5, which isn't a plain-English hyphenated token and may break skill registration/routing that expects the recoup-internal-[domain]-[verb]-[noun] pattern. Consider normalizing to something like recoup-internal-video-grok-imagine-facetime or recoup-internal-video-grok-15-imagine-facetime.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At skills/recoup-internal-video-grok-1.5-imagine-facetime/SKILL.md, line 2:
<comment>The skill slug contains `1.5`, which isn't a plain-English hyphenated token and may break skill registration/routing that expects the `recoup-internal-[domain]-[verb]-[noun]` pattern. Consider normalizing to something like `recoup-internal-video-grok-imagine-facetime` or `recoup-internal-video-grok-15-imagine-facetime`.</comment>
<file context>
@@ -0,0 +1,119 @@
+---
+name: recoup-internal-video-grok-1.5-imagine-facetime
+description: INTERNAL — Recoup staff tooling, gated by the recoup-internal keyword. Invoke ONLY when the request explicitly includes "recoup-internal" (e.g. "recoup-internal make a FaceTime ad"). Never use for customer-facing or artist requests. Produce a FaceTime-call-style ad — two people on a screen-recorded video call — where every talking-head clip is generated by Grok Imagine 1.5 on fal.ai speaking a scripted dialogue verbatim, with native voice and lipsync (no TTS, no lipsync model). Use when the user wants a FaceTime call ad, a two-person conversation video, a Grok Imagine video, or an AI-talking-artist clip. Covers script/take structure around Grok's 15s cap, the prompt grammar that gets word-perfect dialogue, the real-person likeness pipeline and its consent gate, fal mechanics, QC, assembly, and the handoff to hyperframes (chrome/render) and recoup-internal-social-ship-posts (publish/measure).
+---
</file context>
Human OK on every character frame before the first i2v call, and first-take QC before batching a character's remaining turns. Frames cost $0.022 to fix; takes ~$2 — skipping this gate roughly doubled the prototype's video spend (squished frames were caught only after ~$8-9 of takes had been generated on them). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Cut without losing a burned lesson: chrome description collapsed to 'copy the reference project' (the project is the documentation), fal mechanics reduced to the two non-discoverable traps (storage for >700KB inputs, free validation failures), intro/prose compressed, artifact clauses merged into one keep-them-all bullet. Every gate, the prompt template, the cost model, and all QC rules survive. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
New internal skill capturing today's FaceTime-ad workflow so the next run costs ~$10 and zero rediscovery, instead of $32 and a day of experiments.
Core discovery the skill is built around:
xai/grok-imagine-video/v1.5/image-to-videospeaks prompt-scripted dialogue verbatim with native voice and lipsync — no TTS, no lipsync pass (both were bake-off losers; HeyGen avatars read as studio ads and were disqualified).What it encodes (every line shipped-and-burned on the Gatsby Grace × brauxelion prototype era work, reference build in
strategy/.../sweetman/content/facetime-call/):extend-videochaining (input ≤15.0s) verified to 25s word-perfect.Scope seam kept clean: this skill ends at picture-locked footage + chrome pointer; hyperframes renders;
recoup-internal-social-ship-postspublishes and measures.🤖 Generated with Claude Code
Summary by cubic
Adds
recoup-internal-video-grok-1.5-imagine-facetimeto standardize FaceTime‑call ad production withxai/grok-imagine-video/v1.5/image-to-video. Cuts a typical run to ~$10 with repeatable steps and QC.New Features
fal-ai/whisperQC → concat/trim → FaceTime chrome viahyperframes→ handoff torecoup-internal-social-ship-posts.xai/grok-imagine-video/extend-videofor >15s; “says” beats; lipsync from first word; one-person/one-hand guards.xai/grok-imagine-imageand/edit(letterbox to 9:16 first, outpaint bars, strip clothing text); reuse one frame per character; consent and disclosure before posting.700KB inputs; validation failures are free), ffmpeg normalize/concat; $0.14/s at 720p ($10 per debugged 50s video).Refactors
SKILL.mdunder 100 lines, merged artifact clauses; gates, prompt template, QC, and cost model unchanged.hyperframesproject”; fal notes trimmed to the two non-obvious traps.Written for commit a68420f. Summary will update on new commits.
Summary by CodeRabbit