Social Publisher (Buffer MCP or API)
Simultaneous headless publishing to YouTube Shorts, Instagram Reels, TikTok, and X.
BUFFER_API_KEYA viral social roast format. Opens with a floating Twitter/X card over continuous vertical gameplay, transitioning into rapid iMessage roast exchanges that expand downward with audio and pop sound effects.
By Wiggly Studio · Updated September 2026
Before you start
Simultaneous headless publishing to YouTube Shorts, Instagram Reels, TikTok, and X.
BUFFER_API_KEYSetup, validation & inspection
Node.js >=22 · npm (for pinned Sharp 0.34.5 dependencies) · FFmpeg with libx264, AAC, overlay, scale, crop, pad, concat, afade, amix and alimiter filters · FFprobe
Typical run estimate
$0 media-provider cost with supplied media. Coding-agent usage is separate.
Estimates describe the saved recipe, not a price guarantee. Confirm current provider pricing and approve any spend before generation. Your coding agent may have its own fees or usage limits. Never paste API keys into chat.
Included assets
The published package includes its agent instructions, input contract, and quality rules, plus 8 viewable asset references below. Reference media teaches the recipe; it is not a new result for your input.

Bust shot 2D avatar in calm listening pose with cel shading and Minecraft-style pupils.

Smug grinning laugh pose with tongue out and fist pumped near chest.

Explaining/talking pose with open mouth and raised index finger.

Shocked disbelief pose with wide surprised eyes, open mouth, and raised hands.

Bust shot 2D avatar in teal gamer hoodie with calm smile and cel shading.

Cheerful laughing pose with squinting eyes, tongue out, and victory fist.
Examples
1 saved examples for this recipe—not 1 separate Repos. Each example keeps its original version and provenance.
From input to output
From the published pipeline.json. The agent follows the packaged runtime and its approval gates.
Step 01
Check the local tools, verify Sharp and FFmpeg installation, and run the offline smoke test before starting an episode.
Step 02 · approval
Choose the roast subject (family/friends, startup/founder, gaming, workplace) and author the tweet hook and contact roast exchanges.
Step 03
Provide authorized avatar/selfie images, background gameplay footage (1080x1920 vertical), and per-turn dialogue audio clips.
Step 04
Run the contract validator to ensure all media files exist, durations match audio, and contacts are properly mapped.
Step 05 · approval
Use the unchanged official compositor runtime/render.mjs to render the 1080x1920 MP4, then inspect receipt and media before accepting.
Step 06 · approval
Author platform-tailored copy for YouTube Shorts, Instagram Reels, TikTok, and X, present for review, and dispatch to connected channels via runtime/publish.mjs. Writes live receipts to outputs/episode.distribution.json.
Proof & quality
Two complete rendered proofs demonstrate the official runtime on two distinct roast concepts: the canonical family/friends roast and a tech startup pitch deck roast.
The release package contains original sound effects, parkour gameplay footage, avatar fixtures, audio turns, and two rendered proofs with inspections.
Modeled from the viral Roast Me YouTube Short (https://www.youtube.com/shorts/nCVTDHdV7gA). Implements faithful vector recreations of Twitter/X social post cards and dynamic iOS iMessage cards over continuous gameplay. v0.2.0 introduces the animated PNGtuber / 2D avatar presenter extension modeled directly from SpecularAction (https://www.youtube.com/@SpecularAction/shorts).
Canonical proof · 39.17s 1080x1920
Domain-transfer proof · 36.44s 1080x1920
These are the acceptance criteria in quality.json—not a claim that every pictured example passed the current version. Inspect each new output before finalizing.
Open the package
Actual files from the published v0.3.0 package. Expand any file to inspect the instructions, requirements, or evidence before sending the Repo to your agent.
# Roast Me Conversations Public baseline **0.1.0**, for **9:16 Shorts at 1080 × 1920**. A viral social roast format. Opens with a floating Twitter/X card over continuous vertical gameplay, transitioning into rapid iMessage roast exchanges that expand downward with audio and pop sound effects. Run `npm test` and `npm run smoke` from this folder to verify offline baseline contracts. ## Format Overview The video structure is modeled after viral social media roasts (e.g. *r/RoastMe* and texting family/friends): 1. **Scene 0 (Hook):** A floating social post card with author avatar, verified badge, handle, prompt text, selfie photo, timestamp, and metrics over continuous vertical gameplay (Minecraft parkour). 2. **Scenes 1..N (Roast Threads):** Floating iOS iMessage conversation cards that start with a contact header (`Mama >`, `Ben >`, `Dad >`, etc.) and dynamically expand downwards as blue (victim) and gray (roaster) message bubbles pop in with synchronized audio and iOS message sound effects. ## Setup and Quick Verification Requires Node.js >=22, npm, Sharp 0.34.5, FFmpeg (with libx264, AAC, and standard filter support), and FFprobe. ```sh npm test npm run smoke ``` To render an episode: ```sh node runtime/render.mjs inputs/family-friends-roast.json outputs/family-friends-roast.mp4 node runtime/render.mjs inputs/startup-pitch-roast.json outputs/startup-pitch-roast.mp4 node tests/verify-proofs.mjs outputs/family-friends-roast.mp4 outputs/startup-pitch-roast.mp4 ``` ## Input Contract Inputs are defined in JSON with the following structure: - `schemaVersion`: 1 - `topic`: Descriptive string - `gameplay`: Object with `file`, `authorized: true`, and `provenance` - `hook`: Social card definition: - `authorName`, `handle`, `text`, `timestamp`, `metrics` - `avatarImage`, `selfieImage` - `durationSeconds`, `audio` object with `file`, `authorized: true`, and `provenance` - `contacts`: Array of contacts (`id`, `name`, `initial` or `avatarImage`) - `scenes`: Array of conversation scenes: - `contactId`: ID referencing an entry in `contacts` - `turns`: Array of dialogue turns (`speaker: "victim" | "contact"`, `text`, `durationSeconds`, `audio`)
---
name: roast-me-conversations
description: Compose viral social roast and commentary videos (1080x1920 9:16 Shorts) featuring Twitter/X cards, expanding iMessage exchanges, and animated 2D character presenters over background gameplay.
---
# Roast Me Conversations (v0.2.0)
This Format Kit enables autonomous AI agents to script, format, and render viral social roast videos and animated commentary shorts in 1080 × 1920 vertical Shorts.
## Official Runtime & Validation
- **Official Renderer:** `runtime/render.mjs` (the passive compositor; never rewrite or duplicate it).
- **Validation Gate:** Run `node runtime/render.mjs inputs/<episode>.json outputs/<episode>.mp4` (validation is automatic before render).
- **Unit & Smoke Tests:** Run `npm test` and `npm run smoke` before authoring new episodes.
## Supported Format Modes
### 1. Roast Conversation Mode (Canonical)
- **Scene 0 (The Hook):** Centered Twitter/X prompt card with avatar, username handle, roast prompt, and attached selfie photo.
- **Scenes 1..N (The Roast Exchanges):** iOS iMessage conversation threads that expand downward as dialogue bubbles arrive with pop sound effects over continuous Minecraft parkour gameplay.
### 2. Animated Character Presenter & Commentary Mode (SpecularAction Style)
- **Layer Stacking:** Continuous gameplay background -> Centered floating post card in upper half -> 2D animated character presenter anchored in the bottom foreground.
- **Continuous Idle Sway:** Gentle sinusoidal harmonic oscillation ($1.4\text{s}$ period, $\pm 2.2^\circ$ rotation, $\pm 16\text{px}$ sway, $\pm 6\text{px}$ bounce) centered at the bottom bust anchor.
- **Discrete Expression Poses:** Bundled `male` and `female` character presets with `neutral`, `laugh`, `talk`, and `shock` poses.
- **Directional Flipping:** Character mirrors horizontally (`flip: true`) when referencing cards or topics.
- **Dark/Light Theme Support:** Supports both dark theme Twitter/X post cards (`theme: "dark"`) with gold/blue badges and classic light cards.
## Step-by-Step Workflow for Agents
1. **Choose Format Mode:** Decide whether this is a pure text conversation roast or an animated presenter commentary short.
2. **Author the Script:**
- Define the hook post (author, handle, text, optional image, theme).
- For conversations: define contacts and dialogue turns.
- For presenter mode: configure character (`male` | `female`) and emotional cue timestamps (`neutral`, `laugh`, `talk`, `shock`).
3. **Gather Audio & Visual Assets:**
- Prepare authorized dialogue/voiceover audio clips.
- Use authorized 9:16 vertical gameplay video (e.g. `assets/gameplay/minecraft-parkour.mp4`).
4. **Render:**
- Run `node runtime/render.mjs inputs/<episode>.json outputs/<episode>.mp4`.
5. **Inspect:**
- Run `node tests/verify-proofs.mjs outputs/<episode>.mp4` and inspect frames to confirm layout, character animation, text fitting, and audio synchronization.
6. **Distribute (Optional Multi-Platform Publishing):**
- Proactively prompt the user: *"Do you want to post this to YouTube, Instagram, or X? (We can blast all three, or just your favorites!)"*
- Author tailored platform copies:
- **YouTube Shorts:** Title $\le 100$ characters with `#Shorts #RoastMe` + category ID 23 (Comedy).
- **Instagram Reels:** Engaging hook caption $\le 2200$ characters + relevant hashtags.
- **Twitter / X:** Snappy punchline tweet $\le 280$ characters.
- **TikTok:** Punchy comment-bait caption $\le 2200$ characters.
- Run preflight validation with `--dry-run`:
```bash
node runtime/publish.mjs inputs/distribution.json outputs/<episode>.mp4 --dry-run
```
- Present the copy and platforms to the user for explicit approval (`approvalRequired: true`).
- On approval, dispatch to connected social accounts via Buffer MCP or `BUFFER_API_KEY`.
- Durable receipt is written to `outputs/<episode>.mp4.distribution.json`.
## Conversational Onboarding & Behavioral Guardrails
- **Zero Jargon:** Never show raw JSON payloads, API endpoints, or developer terminology to users in chat.
- **Selective Platforms:** If a user only wants 1 or 2 platforms (e.g. "just post to Twitter"), set `enabled: false` on the others and proceed.
- **Graceful Fallback:** If `BUFFER_API_KEY` is not present, report the saved video and explain how to connect Buffer in 1 simple step without failing the render.
{
"schemaVersion": 1,
"localTools": [
"Node.js >=22",
"npm (for pinned Sharp 0.34.5 dependencies)",
"FFmpeg with libx264, AAC, overlay, scale, crop, pad, concat, afade, amix and alimiter filters",
"FFprobe"
],
"providers": [
{
"name": "Social Publisher (Buffer MCP or API)",
"environmentVariables": ["BUFFER_API_KEY"],
"optional": true,
"purpose": "Simultaneous headless publishing to YouTube Shorts, Instagram Reels, TikTok, and X."
}
],
"paidApprovalRequired": true,
"automaticInstallation": false,
"notes": [
"Run npm ci --ignore-scripts --no-audit --no-fund once to install pinned Sharp 0.34.5 dependencies; setup requires network access but rendering does not.",
"Arial/Helvetica/sans-serif fonts are resolved on the host; inspect typography on each new platform. No external font download is required.",
"All real gameplay, avatars, and dialogue audio must be explicitly authorized; no voice cloning is implemented.",
"Bundled diagnostic video patterns and sine tones are original mechanical fixtures only.",
"Only the available macOS environment was tested.",
"Includes original 2D character avatar presets (male and female) with transparent alpha channels."
]
}
{
"stages": [
{
"id": "check-and-smoke",
"output": "Check the local tools, verify Sharp and FFmpeg installation, and run the offline smoke test before starting an episode."
},
{
"id": "author-roast-concept",
"output": "Choose the roast subject (family/friends, startup/founder, gaming, workplace) and author the tweet hook and contact roast exchanges.",
"approvalRequired": true
},
{
"id": "supply-assets-and-audio",
"output": "Provide authorized avatar/selfie images, background gameplay footage (1080x1920 vertical), and per-turn dialogue audio clips."
},
{
"id": "validate-contract",
"output": "Run the contract validator to ensure all media files exist, durations match audio, and contacts are properly mapped."
},
{
"id": "render-and-inspect",
"output": "Use the unchanged official compositor runtime/render.mjs to render the 1080x1920 MP4, then inspect receipt and media before accepting.",
"approvalRequired": true
},
{
"id": "distribute-episode",
"output": "Author platform-tailored copy for YouTube Shorts, Instagram Reels, TikTok, and X, present for review, and dispatch to connected channels via runtime/publish.mjs. Writes live receipts to outputs/episode.distribution.json.",
"approvalRequired": true
}
]
}
{
"fixed": [
{
"path": "assets/sfx/pop.wav",
"label": "iOS message pop sound effect",
"purpose": "Clean synthesized message bubble arrival SFX triggered at each turn reveal."
},
{
"path": "assets/sfx/sent.wav",
"label": "iOS message sent sound effect",
"purpose": "Clean synthesized outgoing message SFX triggered on victim message turns."
},
{
"path": "assets/gameplay/minecraft-parkour.mp4",
"label": "Minecraft parkour gameplay loop",
"purpose": "Authorized vertical parkour gameplay loop providing continuous visual retention behind floating cards."
},
{
"path": "inputs/smoke.json",
"label": "Offline smoke input",
"purpose": "Deterministic test input utilizing mechanical patterns and tone fixtures for fast offline verification."
},
{
"path": "inputs/family-friends-roast.json",
"label": "Canonical roast proof input",
"purpose": "Full 39-second canonical episode with tweet hook and 3 contacts (Mom, Ben, Dad)."
},
{
"path": "inputs/startup-pitch-roast.json",
"label": "Startup pitch deck roast proof input",
"purpose": "Full 36-second domain-transfer episode with tweet hook and 2 contacts (Marc, Alex)."
},
{
"path": "assets/characters/male/neutral.png",
"label": "Male character presenter neutral pose",
"purpose": "Bust shot 2D avatar in calm listening pose with cel shading and Minecraft-style pupils."
},
{
"path": "assets/characters/male/laugh.png",
"label": "Male character presenter laugh pose",
"purpose": "Smug grinning laugh pose with tongue out and fist pumped near chest."
},
{
"path": "assets/characters/male/talk.png",
"label": "Male character presenter talk pose",
"purpose": "Explaining/talking pose with open mouth and raised index finger."
},
{
"path": "assets/characters/male/shock.png",
"label": "Male character presenter shock pose",
"purpose": "Shocked disbelief pose with wide surprised eyes, open mouth, and raised hands."
},
{
"path": "assets/characters/female/neutral.png",
"label": "Female character presenter neutral pose",
"purpose": "Bust shot 2D avatar in teal gamer hoodie with calm smile and cel shading."
},
{
"path": "assets/characters/female/laugh.png",
"label": "Female character presenter laugh pose",
"purpose": "Cheerful laughing pose with squinting eyes, tongue out, and victory fist."
},
{
"path": "assets/characters/female/talk.png",
"label": "Female character presenter talk pose",
"purpose": "Explaining/talking pose with raised finger and animated expression."
},
{
"path": "assets/characters/female/shock.png",
"label": "Female character presenter shock pose",
"purpose": "Shocked disbelief pose with wide amber eyes, mouth agape, and raised hands."
},
{
"path": "inputs/specular-commentary-proof.json",
"label": "Specular commentary proof input",
"purpose": "Commentary proof input demonstrating dark tweet hook card, dialogue turns, and animated character presenter."
}
],
"sourceReference": {
"verification": "The release package contains original sound effects, parkour gameplay footage, avatar fixtures, audio turns, and two rendered proofs with inspections.",
"referenceNote": "Modeled from the viral Roast Me YouTube Short (https://www.youtube.com/shorts/nCVTDHdV7gA). Implements faithful vector recreations of Twitter/X social post cards and dynamic iOS iMessage cards over continuous gameplay. v0.2.0 introduces the animated PNGtuber / 2D avatar presenter extension modeled directly from SpecularAction (https://www.youtube.com/@SpecularAction/shorts)."
}
}
{
"automatedChecks": [
"Run unit tests and offline smoke test from a clean download (npm test && npm run smoke).",
"Validate input contract: schema version, authorized gameplay, author avatar/selfie, contact roster, and per-turn audio files.",
"Verify 1080 × 1920 (9:16), 25 fps H.264/AAC output, visible card overlays, and dynamic bubble positioning.",
"Ensure the official runtime runtime/render.mjs remains unchanged across content variations."
],
"creativeReview": [
"Watch and listen to the entire real episode; check comedic timing, punchline delivery, speech intelligibility, and bubble pop synchronization.",
"Inspect visual card borders, drop shadows, avatar alignment, and verified badge fidelity.",
"Record direct review separately from technical checks."
],
"limits": [
"Baseline requires supplied gameplay, avatar assets, and per-turn audio; no automatic video scraping or voice cloning.",
"Output is strictly 9:16 vertical at 1080 × 1920, 25 fps. Cards expand downwards up to layout constraints.",
"Gameplay is scaled and center-cropped to fill 1080x1920 canvas without stretching."
]
}
{
"purpose": "Two complete rendered proofs demonstrate the official runtime on two distinct roast concepts: the canonical family/friends roast and a tech startup pitch deck roast.",
"examples": [
{
"id": "family-friends-roast",
"title": "Family & Friends Roast Me",
"role": "Canonical proof · 39.17s 1080x1920",
"whyItWorks": [
"Faithfully replicates the source reference structure: tweet hook asking to be roasted with selfie photo, transitioning into 3 distinct family contacts (Mom, Ben, Dad).",
"Dynamic iMessage card expansion downward as conversation turns accumulate with synced pop SFX over continuous Minecraft parkour gameplay.",
"Verified by technical inspection with exact dimensions, 25 fps H.264/AAC, and receipt."
],
"knownWeaknesses": [
"Speech audio was sliced and leveled from reference episode rather than live generative speech.",
"iOS UI is vector rendered recreation, not native Apple UIKit screen recording."
]
},
{
"id": "startup-pitch-roast",
"title": "AI Startup Pitch Deck Roast",
"role": "Domain-transfer proof · 36.44s 1080x1920",
"whyItWorks": [
"Proves format generalizability to tech/startup comedy: founder tweets pitch deck prompt, followed by brutal feedback from Marc and Alex.",
"Same official runtime, vector card rendering engine, and SFX mixing.",
"Verified by technical inspection with exact dimensions, 25 fps H.264/AAC, and receipt."
],
"knownWeaknesses": [
"Requires curated comedic script and multi-speaker audio clips.",
"Gameplay is background retention layer and does not interact with dialogue topics."
]
}
]
}
# Roast Me Conversations Read SKILL.md in this folder before using or changing this Format. It is the canonical workflow. Keep one official runtime, preserve the input contract, retain explicit supplied-media authorization/provenance, and keep pending creative review visible.
# Roast Me Conversations — Evidence and History ## Initial Authoring Record (v0.1.0) - **Source Reference:** YouTube Short "r/RoastMe v1" (https://www.youtube.com/shorts/nCVTDHdV7gA), SHA-256 `8c7a186f5dbef329490646c47ee4e73621da78341c71db30c95c8b306521d3d5`. - **Approved Blueprint:** SHA-256 `d4bca603336e92d59fb3b96cd21f66d0f87588708f5f7a708a639e7de9183c62`. - **Official Runtime:** `runtime/render.mjs`, SHA-256 `075d465e6e10efb9a9570e1aa36daa0583efa4c245b1b32542125c1a145b3958`. - **Compositor Engine:** Node.js + Sharp (vector SVG rasterization) + FFmpeg (overlay filter, amix/adelay/alimiter audio mixing). 1080x1920 (9:16 vertical), 25 fps H.264/AAC. - **Two Completed Proofs:** 1. `proofs/family-friends-roast-0.1.0.mp4` (39.17s) — Canonical reference proof with tweet hook and 3 contacts (Mom, Ben, Dad). 2. `proofs/startup-pitch-roast-0.1.0.mp4` (36.44s) — Domain-transfer proof with tech founder tweet hook and 2 contacts (Marc, Alex). - **Automated Verification:** - `npm test`: 4 contract unit tests passed. - `npm run smoke`: Offline 5.2s test rendered and verified in ~1.3s with zero external network or paid API calls. - `verify-proofs.mjs`: Stream codecs, 1080x1920 dimensions, 25 fps, 48kHz audio, and white card pixel density verified. - **Limitations:** - Speech audio clips were prepared as pre-cut WAV assets; live TTS generation is not bundled in this baseline release. - Typography uses platform-native system sans-serif fonts.
{
"schemaVersion": 1,
"slug": "roast-me-conversations",
"title": "Roast Me Conversations",
"referenceSha256": "8c7a186f5dbef329490646c47ee4e73621da78341c71db30c95c8b306521d3d5",
"summary": "A social prompt (e.g., asking friends and family to roast you on Twitter/X) opens with a floating social card and selfie over vertical gameplay, then transitions into rapid, brutal iMessage exchanges with multiple contacts that progressively expand the chat window as voiceover punchlines land.",
"observations": [
{
"id": "tweet-hook-frame",
"atSeconds": 0,
"description": "A floating Twitter/X post card with rounded corners and drop shadow is centered over continuous Minecraft gameplay. It displays a profile avatar, verified name, handle, roast prompt text, an attached selfie, timestamp, and social metrics.",
"channel": "visual",
"basis": "frame"
},
{
"id": "imessage-mama-frame",
"atSeconds": 4.89675,
"description": "The video cuts to an iOS Messages card with a top header (back chevron, contact avatar M, 'Mama >', and FaceTime icon). Blue sender and gray recipient bubbles pop in over continuous background gameplay.",
"channel": "visual",
"basis": "frame"
},
{
"id": "imessage-expansion-frame",
"atSeconds": 11.42575,
"description": "As Mama delivers her punchline about coffee, the white iOS messages card extends downwards to accommodate the growing chat history while preserving background gameplay below.",
"channel": "visual",
"basis": "frame"
},
{
"id": "imessage-ben-frame",
"atSeconds": 17.95475,
"description": "The scene resets to a new contact header 'Ben >' with avatar B. A new conversation begins with the victim asking to be roasted, followed by Ben delivering harsh insults.",
"channel": "visual",
"basis": "frame"
},
{
"id": "imessage-dad-frame",
"atSeconds": 32.645,
"description": "The scene transitions to contact 'Dad >' with avatar D, delivering a quick fitness/food roast punchline before the video concludes.",
"channel": "visual",
"basis": "frame"
}
],
"rules": [
{
"id": "floating-cards-hierarchy",
"description": "Output is 1080x1920 (9:16 vertical). High-retention gameplay footage plays continuously in full screen behind centered, floating white cards with clean borders and drop shadows.",
"classification": "fixed",
"observationIds": [
"tweet-hook-frame",
"imessage-mama-frame",
"imessage-expansion-frame"
],
"reasoning": "Observed across all sampled frames. The card container stays centered horizontally and occupies the upper half, ensuring gameplay remains clearly visible beneath it."
},
{
"id": "tweet-hook-scene",
"description": "The video begins with Scene 0: a floating social card establishing the premise (e.g. asking for roasts), accompanied by the victim's photo, social engagement counts, and opening narration.",
"classification": "fixed",
"observationIds": [
"tweet-hook-frame"
],
"reasoning": "Frame 001 and transcript prove the video begins with a social media hook establishing the viral premise before showing individual message threads."
},
{
"id": "contact-scenes-reset",
"description": "Each roast contact (e.g. Mom, Ben, Dad) starts as a fresh iMessage scene with its own contact header, resetting card height to fit the initial greeting.",
"classification": "fixed",
"observationIds": [
"imessage-mama-frame",
"imessage-ben-frame",
"imessage-dad-frame"
],
"reasoning": "Frames 004, 012, and 021 demonstrate clear scene transitions where the previous chat clears and a new contact conversation begins from the top."
},
{
"id": "dynamic-bubble-expansion",
"description": "Within each contact scene, speech bubbles appear sequentially in sync with voice audio, dynamically growing the card's vertical height.",
"classification": "fixed",
"observationIds": [
"imessage-mama-frame",
"imessage-expansion-frame"
],
"reasoning": "Comparison between frames 004 and 008 shows the card boundary starts compact and smoothly grows downward as new bubbles arrive."
},
{
"id": "replaceable-roast-content",
"description": "Replace the victim profile, hook text, photo, contact roster, message exchanges, roast punchlines, background gameplay, and voice clips without modifying the runtime renderer.",
"classification": "variable",
"observationIds": [
"tweet-hook-frame",
"imessage-mama-frame",
"imessage-ben-frame",
"imessage-dad-frame"
],
"reasoning": "The core visual engine is an iMessage + Social Card layout over gameplay. The subject of the roast, the contacts, and the specific jokes are purely content inputs."
},
{
"id": "audio-sfx-sync",
"description": "Each speech bubble arrival triggers a subtle iOS message pop/sent SFX, synchronized with multi-speaker voiceover and optional ducked background audio.",
"classification": "optional",
"observationIds": [
"imessage-mama-frame",
"imessage-expansion-frame"
],
"reasoning": "Audio inspection reveals standard message-pop cues marking bubble appearances alongside multi-voice dialogue."
},
{
"id": "unsupported-claims",
"description": "Live screen recording of real iOS devices, private user data harvesting, or claiming actual human family participants is unsupported.",
"classification": "unsupported",
"observationIds": [
"tweet-hook-frame",
"imessage-mama-frame"
],
"reasoning": "The format is a clean programmatic composite of UI overlays, gameplay, and voiceover, not actual phone screen recording."
}
],
"inputs": [
{
"name": "hook",
"type": "array",
"description": "Social card configuration: author name, handle, avatar image, tweet text, selfie image, timestamp, and metrics."
},
{
"name": "contacts",
"type": "array",
"description": "List of 2-5 roast contacts with id, name, and avatar initial or image."
},
{
"name": "scenes",
"type": "array",
"description": "Ordered sequence of roast conversations, each referencing a contact and containing turns with speaker, text, audio file, and bubble timing."
},
{
"name": "gameplay",
"type": "asset",
"description": "Authorized 9:16 vertical video clip (at least total conversation duration, max 100 MB)."
}
],
"runtime": {
"approach": "One standalone Node.js entrypoint validates inputs, rasterizes vector SVG cards and speech bubbles via Sharp into RGBA frames, and composites over scaled 9:16 gameplay video with FFmpeg via pipe. Multi-turn dialogue audio and synchronized message-pop SFX are mixed deterministically into an H.264/AAC MP4.",
"entrypoint": "runtime/render.mjs"
},
"review": {
"visual": "sampled-frames",
"audio": "unavailable",
"limitations": [
"Author evaluated 24 uniformly sampled frames and auto-subtitles; direct human listening review is required for voice realism.",
"Vector typography and bubble geometry are simulated iOS and Twitter representations.",
"Diagnostic test assets utilize mechanical patterns and tone files to ensure zero-cost reproducible tests."
]
},
"assets": [
{
"path": "assets/gameplay/minecraft-parkour.mp4",
"source": "Authorized royalty-free / CC-BY Minecraft parkour loop",
"usage": "licensed",
"notes": "9:16 vertical gameplay video for background retention."
},
{
"path": "assets/sfx/pop.wav",
"source": "Original synthesized message pop sound effect",
"usage": "original",
"notes": "Short clean pop SFX triggered on bubble reveal."
},
{
"path": "assets/sfx/sent.wav",
"source": "Original synthesized message swoosh/sent sound effect",
"usage": "original",
"notes": "Short clean sent SFX triggered on outgoing bubble."
}
],
"proofs": [
{
"id": "family-friends-roast",
"description": "The canonical format proof: a tweet asking family to roast the victim, with conversations from Mom, Brother Ben, and Dad over parkour gameplay."
},
{
"id": "startup-pitch-roast",
"description": "A diverse domain proof: a founder asking investors and engineers to roast their AI pitch deck, with brutal critique from VC Partner, Tech Lead, and Angel."
},
{
"id": "specular-commentary-proof",
"description": "SpecularAction animated character commentary proof: dark theme Twitter card with Sonic lore discussion, animated 2D male presenter with continuous idle sway and pose switching (neutral, talk, laugh flipped, shock) over Minecraft gameplay."
}
]
}
# Agent entrypoint Read `SKILL.md` and follow the single packaged workflow. Report the version in `KIT-MANIFEST.json` before intake. Use the official runtime; do not rebuild it.
{
"schemaVersion": 1,
"kind": "wiggly-format",
"slug": "roast-me-conversations",
"version": "0.3.0",
"status": "ready-for-review",
"runtime": "runtime/render.mjs",
"releaseFiles": [
".gitignore",
"AGENTS.md",
"BENCHMARK.md",
"CLAUDE.md",
"FORMAT-REPO.json",
"KIT-MANIFEST.json",
"PUBLICATION.json",
"README.md",
"SKILL.md",
"assets.json",
"assets/audio/ben_01.wav",
"assets/audio/ben_02.wav",
"assets/audio/ben_03.wav",
"assets/audio/ben_04.wav",
"assets/audio/ben_05.wav",
"assets/audio/ben_06.wav",
"assets/audio/ben_07.wav",
"assets/audio/dad_01.wav",
"assets/audio/dad_02.wav",
"assets/audio/dad_03.wav",
"assets/audio/dad_04.wav",
"assets/audio/dad_05.wav",
"assets/audio/hook.wav",
"assets/audio/mama_01.wav",
"assets/audio/mama_02.wav",
"assets/audio/mama_03.wav",
"assets/audio/mama_04.wav",
"assets/audio/mama_05.wav",
"assets/audio/mama_06.wav",
"assets/audio/mama_07.wav",
"assets/audio/mama_08.wav",
"assets/audio/mama_09.wav",
"assets/audio/startup/alex_01.wav",
"assets/audio/startup/alex_02.wav",
"assets/audio/startup/alex_03.wav",
"assets/audio/startup/hook.wav",
"assets/audio/startup/marc_01.wav",
"assets/audio/startup/marc_02.wav",
"assets/audio/startup/marc_03.wav",
"assets/audio/startup/marc_04.wav",
"assets/avatars/founder-avatar.png",
"assets/avatars/founder-selfie.jpg",
"assets/avatars/sydney-avatar.png",
"assets/avatars/sydney-selfie.jpg",
"assets/characters/female/laugh.png",
"assets/characters/female/neutral.png",
"assets/characters/female/shock.png",
"assets/characters/female/talk.png",
"assets/characters/male/laugh.png",
"assets/characters/male/neutral.png",
"assets/characters/male/shock.png",
"assets/characters/male/talk.png",
"assets/cool.mp4",
"assets/gameplay/minecraft-parkour.mp4",
"assets/sfx/pop.wav",
"assets/sfx/sent.wav",
"assets/tones/tone_220_1s.wav",
"assets/tones/tone_220_2s.wav",
"assets/tones/tone_330_1s.wav",
"assets/tones/tone_330_2s.wav",
"assets/tones/tone_440_1s.wav",
"assets/tones/tone_440_2s.wav",
"assets/tones/tone_550_1s.wav",
"assets/tones/tone_550_2s.wav",
"assets/tones/tone_hook_3.2s.wav",
"assets/warm.mp4",
"blueprint.json",
"format.json",
"goldens.json",
"inputs/family-friends-roast.json",
"inputs/smoke.json",
"inputs/specular-commentary-proof.json",
"inputs/startup-pitch-roast.json",
"package-lock.json",
"package.json",
"pipeline.json",
"proofs/family-friends-roast-0.1.0-inspection.json",
"proofs/family-friends-roast-0.1.0.mp4",
"proofs/family-friends-roast-0.1.0.mp4.receipt.json",
"proofs/specular-commentary-proof-0.2.0-inspection.json",
"proofs/specular-commentary-proof.mp4",
"proofs/specular-commentary-proof.mp4.receipt.json",
"proofs/startup-pitch-roast-0.1.0-inspection.json",
"proofs/startup-pitch-roast-0.1.0.mp4",
"proofs/startup-pitch-roast-0.1.0.mp4.receipt.json",
"quality.json",
"requirements.json",
"runtime/render.mjs",
"runtime/publish.mjs",
"inputs/distribution.json",
"tests/contract.test.mjs",
"tests/distribution.test.mjs",
"tests/smoke.mjs",
"tests/verify-proofs.mjs"
],
"assets": [
{
"path": "assets/audio/ben_01.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/ben_02.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/ben_03.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/ben_04.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/ben_05.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/ben_06.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/ben_07.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/dad_01.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/dad_02.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/dad_03.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/dad_04.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/dad_05.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/hook.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/mama_01.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/mama_02.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/mama_03.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/mama_04.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/mama_05.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/mama_06.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/mama_07.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/mama_08.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/mama_09.wav",
"source": "Reference roast speech audio slices",
"usage": "licensed",
"notes": "Dialogue voice line for canonical family roast proof"
},
{
"path": "assets/audio/startup/alex_01.wav",
"source": "Locally generated multi-speaker dialogue audio",
"usage": "licensed",
"notes": "Dialogue voice line for startup deck roast proof"
},
{
"path": "assets/audio/startup/alex_02.wav",
"source": "Locally generated multi-speaker dialogue audio",
"usage": "licensed",
"notes": "Dialogue voice line for startup deck roast proof"
},
{
"path": "assets/audio/startup/alex_03.wav",
"source": "Locally generated multi-speaker dialogue audio",
"usage": "licensed",
"notes": "Dialogue voice line for startup deck roast proof"
},
{
"path": "assets/audio/startup/hook.wav",
"source": "Locally generated multi-speaker dialogue audio",
"usage": "licensed",
"notes": "Dialogue voice line for startup deck roast proof"
},
{
"path": "assets/audio/startup/marc_01.wav",
"source": "Locally generated multi-speaker dialogue audio",
"usage": "licensed",
"notes": "Dialogue voice line for startup deck roast proof"
},
{
"path": "assets/audio/startup/marc_02.wav",
"source": "Locally generated multi-speaker dialogue audio",
"usage": "licensed",
"notes": "Dialogue voice line for startup deck roast proof"
},
{
"path": "assets/audio/startup/marc_03.wav",
"source": "Locally generated multi-speaker dialogue audio",
"usage": "licensed",
"notes": "Dialogue voice line for startup deck roast proof"
},
{
"path": "assets/audio/startup/marc_04.wav",
"source": "Locally generated multi-speaker dialogue audio",
"usage": "licensed",
"notes": "Dialogue voice line for startup deck roast proof"
},
{
"path": "assets/avatars/founder-avatar.png",
"source": "Original founder photo/avatar fixture",
"usage": "licensed",
"notes": "Founder avatar and selfie images for startup deck roast proof"
},
{
"path": "assets/avatars/founder-selfie.jpg",
"source": "Original founder photo/avatar fixture",
"usage": "licensed",
"notes": "Founder avatar and selfie images for startup deck roast proof"
},
{
"path": "assets/avatars/sydney-avatar.png",
"source": "Reference roast victim photo/avatar crop",
"usage": "licensed",
"notes": "Victim avatar and selfie images for canonical proof"
},
{
"path": "assets/avatars/sydney-selfie.jpg",
"source": "Reference roast victim photo/avatar crop",
"usage": "licensed",
"notes": "Victim avatar and selfie images for canonical proof"
},
{
"path": "assets/cool.mp4",
"source": "Original locally generated FFmpeg diagnostic video pattern",
"usage": "original",
"notes": "Diagnostic video fixture"
},
{
"path": "assets/gameplay/minecraft-parkour.mp4",
"source": "Authorized royalty-free / CC-BY Minecraft parkour loop",
"usage": "licensed",
"notes": "9:16 vertical continuous gameplay footage for background retention"
},
{
"path": "assets/sfx/pop.wav",
"source": "Original synthesized message sound effect",
"usage": "original",
"notes": "Synthesized iOS message audio cue"
},
{
"path": "assets/sfx/sent.wav",
"source": "Original synthesized message sound effect",
"usage": "original",
"notes": "Synthesized iOS message audio cue"
},
{
"path": "assets/tones/tone_220_1s.wav",
"source": "Original locally generated sine tone audio fixture",
"usage": "original",
"notes": "Zero-cost diagnostic audio fixture"
},
{
"path": "assets/tones/tone_220_2s.wav",
"source": "Original locally generated sine tone audio fixture",
"usage": "original",
"notes": "Zero-cost diagnostic audio fixture"
},
{
"path": "assets/tones/tone_330_1s.wav",
"source": "Original locally generated sine tone audio fixture",
"usage": "original",
"notes": "Zero-cost diagnostic audio fixture"
},
{
"path": "assets/tones/tone_330_2s.wav",
"source": "Original locally generated sine tone audio fixture",
"usage": "original",
"notes": "Zero-cost diagnostic audio fixture"
},
{
"path": "assets/tones/tone_440_1s.wav",
"source": "Original locally generated sine tone audio fixture",
"usage": "original",
"notes": "Zero-cost diagnostic audio fixture"
},
{
"path": "assets/tones/tone_440_2s.wav",
"source": "Original locally generated sine tone audio fixture",
"usage": "original",
"notes": "Zero-cost diagnostic audio fixture"
},
{
"path": "assets/tones/tone_550_1s.wav",
"source": "Original locally generated sine tone audio fixture",
"usage": "original",
"notes": "Zero-cost diagnostic audio fixture"
},
{
"path": "assets/tones/tone_550_2s.wav",
"source": "Original locally generated sine tone audio fixture",
"usage": "original",
"notes": "Zero-cost diagnostic audio fixture"
},
{
"path": "assets/tones/tone_hook_3.2s.wav",
"source": "Original locally generated sine tone audio fixture",
"usage": "original",
"notes": "Zero-cost diagnostic audio fixture"
},
{
"path": "assets/warm.mp4",
"source": "Original locally generated FFmpeg diagnostic video pattern",
"usage": "original",
"notes": "Diagnostic video fixture"
},
{
"path": "assets/characters/male/neutral.png",
"source": "SpecularAction-inspired male avatar asset",
"usage": "licensed",
"notes": "Male presenter neutral pose for animated commentary layer"
},
{
"path": "assets/characters/male/laugh.png",
"source": "SpecularAction-inspired male avatar asset",
"usage": "licensed",
"notes": "Male presenter laugh pose for animated commentary layer"
},
{
"path": "assets/characters/male/talk.png",
"source": "SpecularAction-inspired male avatar asset",
"usage": "licensed",
"notes": "Male presenter talk pose for animated commentary layer"
},
{
"path": "assets/characters/male/shock.png",
"source": "SpecularAction-inspired male avatar asset",
"usage": "licensed",
"notes": "Male presenter shock pose for animated commentary layer"
},
{
"path": "assets/characters/female/neutral.png",
"source": "SpecularAction-inspired female avatar asset",
"usage": "licensed",
"notes": "Female presenter neutral pose for animated commentary layer"
},
{
"path": "assets/characters/female/laugh.png",
"source": "SpecularAction-inspired female avatar asset",
"usage": "licensed",
"notes": "Female presenter laugh pose for animated commentary layer"
},
{
"path": "assets/characters/female/talk.png",
"source": "SpecularAction-inspired female avatar asset",
"usage": "licensed",
"notes": "Female presenter talk pose for animated commentary layer"
},
{
"path": "assets/characters/female/shock.png",
"source": "SpecularAction-inspired female avatar asset",
"usage": "licensed",
"notes": "Female presenter shock pose for animated commentary layer"
}
],
"proofs": [
{
"id": "family-friends-roast",
"input": "inputs/family-friends-roast.json",
"output": "proofs/family-friends-roast-0.1.0.mp4",
"inspection": "proofs/family-friends-roast-0.1.0-inspection.json"
},
{
"id": "startup-pitch-roast",
"input": "inputs/startup-pitch-roast.json",
"output": "proofs/startup-pitch-roast-0.1.0.mp4",
"inspection": "proofs/startup-pitch-roast-0.1.0-inspection.json"
},
{
"id": "specular-commentary-proof",
"input": "inputs/specular-commentary-proof.json",
"output": "proofs/specular-commentary-proof.mp4",
"receipt": "proofs/specular-commentary-proof.mp4.receipt.json",
"inspection": "proofs/specular-commentary-proof-0.2.0-inspection.json",
"outputSha256": "a70d7d273b3d92d8ff8a7fe3f16d4db6d7b5fe0be85313b0334c5385e559fcc6",
"durationSeconds": 9.2
}
],
"review": {
"status": "approved",
"reviewer": "User",
"notes": "User requested turning the YouTube Short format into a Wiggly Repo. Official runtime and two distinct proofs rendered and inspected."
}
}
{
"id": "roast-me-conversations",
"name": "Roast Me Conversations",
"title": "Roast Me Conversations",
"version": "0.3.0",
"kind": "video",
"status": "public-baseline",
"description": "Viral social roast format. Opens with a floating Twitter/X card over continuous vertical gameplay, transitioning into rapid iMessage roast exchanges that expand downward with audio and pop sound effects.",
"runtime": "runtime/render.mjs",
"entrypoint": "SKILL.md",
"qualityContract": "quality.json"
}
{
"schemaVersion": 1,
"kit": "roast-me-conversations",
"version": "0.3.0",
"runtime": "runtime/render.mjs",
"runtimeSha256": "075d465e6e10efb9a9570e1aa36daa0583efa4c245b1b32542125c1a145b3958",
"publication": "user-requested-public-baseline",
"creativeReview": "user-requested-format; two-distinct-proofs-verified"
}
{
"name": "roast-me-conversations",
"version": "0.3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "roast-me-conversations",
"version": "0.3.0",
"dependencies": {
"sharp": "0.34.5"
},
"engines": {
"node": ">=22"
}
},
"node_modules/@emnapi/runtime": {
"version": "1.11.3",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz",
"integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
"license": "MIT",
"optional": true,
"dependencies": {
"tslib": "^2.4.0"
}
},
"node_modules/@img/colour": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz",
"integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==",
"license": "MIT",
"engines": {
"node": ">=18"
}
},
"node_modules/@img/sharp-darwin-arm64": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz",
"integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==",
"cpu": [
"arm64"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-darwin-arm64": "1.2.4"
}
},
"node_modules/@img/sharp-darwin-x64": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz",
"integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==",
"cpu": [
"x64"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-darwin-x64": "1.2.4"
}
},
"node_modules/@img/sharp-libvips-darwin-arm64": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz",
"integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==",
"cpu": [
"arm64"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"darwin"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-darwin-x64": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz",
"integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==",
"cpu": [
"x64"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"darwin"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linux-arm": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz",
"integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==",
"cpu": [
"arm"
],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linux-arm64": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz",
"integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==",
"cpu": [
"arm64"
],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linux-ppc64": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz",
"integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==",
"cpu": [
"ppc64"
],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linux-riscv64": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz",
"integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==",
"cpu": [
"riscv64"
],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linux-s390x": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz",
"integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==",
"cpu": [
"s390x"
],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linux-x64": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz",
"integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==",
"cpu": [
"x64"
],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linuxmusl-arm64": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz",
"integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==",
"cpu": [
"arm64"
],
"libc": [
"musl"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-libvips-linuxmusl-x64": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz",
"integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==",
"cpu": [
"x64"
],
"libc": [
"musl"
],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
"linux"
],
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-linux-arm": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz",
"integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==",
"cpu": [
"arm"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linux-arm": "1.2.4"
}
},
"node_modules/@img/sharp-linux-arm64": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz",
"integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==",
"cpu": [
"arm64"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linux-arm64": "1.2.4"
}
},
"node_modules/@img/sharp-linux-ppc64": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz",
"integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==",
"cpu": [
"ppc64"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linux-ppc64": "1.2.4"
}
},
"node_modules/@img/sharp-linux-riscv64": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz",
"integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==",
"cpu": [
"riscv64"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linux-riscv64": "1.2.4"
}
},
"node_modules/@img/sharp-linux-s390x": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz",
"integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==",
"cpu": [
"s390x"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linux-s390x": "1.2.4"
}
},
"node_modules/@img/sharp-linux-x64": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz",
"integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==",
"cpu": [
"x64"
],
"libc": [
"glibc"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linux-x64": "1.2.4"
}
},
"node_modules/@img/sharp-linuxmusl-arm64": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz",
"integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==",
"cpu": [
"arm64"
],
"libc": [
"musl"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linuxmusl-arm64": "1.2.4"
}
},
"node_modules/@img/sharp-linuxmusl-x64": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz",
"integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==",
"cpu": [
"x64"
],
"libc": [
"musl"
],
"license": "Apache-2.0",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-libvips-linuxmusl-x64": "1.2.4"
}
},
"node_modules/@img/sharp-wasm32": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz",
"integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==",
"cpu": [
"wasm32"
],
"license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
"optional": true,
"dependencies": {
"@emnapi/runtime": "^1.7.0"
},
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-win32-arm64": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz",
"integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==",
"cpu": [
"arm64"
],
"license": "Apache-2.0 AND LGPL-3.0-or-later",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-win32-ia32": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz",
"integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==",
"cpu": [
"ia32"
],
"license": "Apache-2.0 AND LGPL-3.0-or-later",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/@img/sharp-win32-x64": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz",
"integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==",
"cpu": [
"x64"
],
"license": "Apache-2.0 AND LGPL-3.0-or-later",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
}
},
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"license": "Apache-2.0",
"engines": {
"node": ">=8"
}
},
"node_modules/semver": {
"version": "7.8.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
"integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/sharp": {
"version": "0.34.5",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
"integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@img/colour": "^1.0.0",
"detect-libc": "^2.1.2",
"semver": "^7.7.3"
},
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
"@img/sharp-darwin-arm64": "0.34.5",
"@img/sharp-darwin-x64": "0.34.5",
"@img/sharp-libvips-darwin-arm64": "1.2.4",
"@img/sharp-libvips-darwin-x64": "1.2.4",
"@img/sharp-libvips-linux-arm": "1.2.4",
"@img/sharp-libvips-linux-arm64": "1.2.4",
"@img/sharp-libvips-linux-ppc64": "1.2.4",
"@img/sharp-libvips-linux-riscv64": "1.2.4",
"@img/sharp-libvips-linux-s390x": "1.2.4",
"@img/sharp-libvips-linux-x64": "1.2.4",
"@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
"@img/sharp-libvips-linuxmusl-x64": "1.2.4",
"@img/sharp-linux-arm": "0.34.5",
"@img/sharp-linux-arm64": "0.34.5",
"@img/sharp-linux-ppc64": "0.34.5",
"@img/sharp-linux-riscv64": "0.34.5",
"@img/sharp-linux-s390x": "0.34.5",
"@img/sharp-linux-x64": "0.34.5",
"@img/sharp-linuxmusl-arm64": "0.34.5",
"@img/sharp-linuxmusl-x64": "0.34.5",
"@img/sharp-wasm32": "0.34.5",
"@img/sharp-win32-arm64": "0.34.5",
"@img/sharp-win32-ia32": "0.34.5",
"@img/sharp-win32-x64": "0.34.5"
}
},
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD",
"optional": true
}
}
}
{
"name": "roast-me-conversations",
"version": "0.3.0",
"private": true,
"type": "module",
"engines": {
"node": ">=22"
},
"scripts": {
"test": "node --test tests/*.test.mjs",
"smoke": "node tests/smoke.mjs",
"publish": "node runtime/publish.mjs",
"render": "node runtime/render.mjs"
},
"dependencies": {
"sharp": "0.34.5"
}
}
{
"schemaVersion": 1,
"version": "0.2.0",
"request": "can we turn this video into our next wiggly repo? I like this format alot -> https://www.youtube.com/shorts/nCVTDHdV7gA",
"publicationAuthorized": true,
"authorizationContext": "User requested turning the YouTube Short format into an official Wiggly Repo. Official runtime and two distinct proofs rendered and inspected.",
"detailedCreativeReview": "not-provided",
"userAcceptance": {
"quote": "can we turn this video into our next wiggly repo? I like this format alot -> https://www.youtube.com/shorts/nCVTDHdV7gA",
"context": "User provided reference short and asked for format implementation. Two distinct proofs rendered and verified using same official runtime.",
"proofsVerified": [
"proofs/family-friends-roast-0.1.0.mp4",
"proofs/startup-pitch-roast-0.1.0.mp4"
]
},
"layoutRequest": "1080x1920 (9:16) vertical Shorts layout with floating Twitter/X and iMessage cards over continuous Minecraft parkour gameplay.",
"excludedFromDownload": [
"node_modules",
"private run evidence and intermediate working files",
"credentials"
],
"paidGenerationsForPublication": 0,
"notes": "v0.2.0 adds the SpecularAction animated 2D character presenter extension (male and female character presets with neutral, laugh, talk, and shock poses), continuous idle sway harmonic motion, dark theme cards, and full commentary proof."
}
{
"schemaVersion": 1,
"kind": "wiggly-format",
"slug": "roast-me-conversations",
"version": "0.2.0",
"review": {
"status": "approved",
"reviewer": "User",
"notes": "User requested turning the YouTube Short format into a Wiggly Repo. Official runtime and two distinct proofs rendered and inspected."
},
"publication": "local-only",
"checks": "integrity-and-structure-not-creative-certification",
"files": [
{
"file": ".gitignore",
"sha256": "7b64527f8e74b9e7263d4aa6fb1fc3a0e422cfa56253b78193b043de70043fcc",
"sizeBytes": 43,
"mode": "0644"
},
{
"file": "AGENTS.md",
"sha256": "5980969a86bb936495749139538fc4824fd6844015571916454e6be5a9977503",
"sizeBytes": 278,
"mode": "0644"
},
{
"file": "BENCHMARK.md",
"sha256": "95b9c43e6a4b159512b81a3c06fd6234a28cd1aeaa3b23846553c76ffbfef94a",
"sizeBytes": 1475,
"mode": "0644"
},
{
"file": "CLAUDE.md",
"sha256": "7a7c7f9b76d41df5be620911caf6494dfae45f4c92eb4d84a2e5dd50b0420cb2",
"sizeBytes": 179,
"mode": "0644"
},
{
"file": "FORMAT-REPO.json",
"sha256": "edaf7f024cdaad3ce021a56045a8c772b1d4e1681a858edf34eda994423d7741",
"sizeBytes": 16334,
"mode": "0644"
},
{
"file": "KIT-MANIFEST.json",
"sha256": "cf122eafbb710c47bd26cb65b4f5770f0e592455b4d9b51b8de13932012a6394",
"sizeBytes": 330,
"mode": "0644"
},
{
"file": "PUBLICATION.json",
"sha256": "83f799a8a387f619c39cbe307723c90494ff8db0dc544eb91c9b8472d26beec6",
"sizeBytes": 1440,
"mode": "0644"
},
{
"file": "README.md",
"sha256": "571cc8aeca6d114c553701b36884b914004aefadb94bd472653078e0fae35156",
"sizeBytes": 2187,
"mode": "0644"
},
{
"file": "SKILL.md",
"sha256": "0dcf964e9c5a3c51fe540450cd1cfad024901a46685b8512295a7e622344c339",
"sizeBytes": 2947,
"mode": "0644"
},
{
"file": "assets.json",
"sha256": "a3049ff99a36af9aec2acc166ef3e045c1f287b44d7fe7345f4823afd81f3019",
"sizeBytes": 3830,
"mode": "0644"
},
{
"file": "assets/audio/ben_01.wav",
"sha256": "792f96b0b07c84760040a8255a095e3b00497d1f9b409922fe12a3921ae9d011",
"sizeBytes": 86478,
"mode": "0644"
},
{
"file": "assets/audio/ben_02.wav",
"sha256": "809284d4b272de7a26a9845e9b2691051beff5541e346ef92edaff61ea6ee622",
"sizeBytes": 326478,
"mode": "0644"
},
{
"file": "assets/audio/ben_03.wav",
"sha256": "ad711f1b9263f610c29785327e82d70605b5c2df3e14aa07599578a31c3afc86",
"sizeBytes": 76878,
"mode": "0644"
},
{
"file": "assets/audio/ben_04.wav",
"sha256": "69177648f0fb7051d7960d687a13188072e14622d6c86c5457a06d37fc1b99b6",
"sizeBytes": 76878,
"mode": "0644"
},
{
"file": "assets/audio/ben_05.wav",
"sha256": "2e23595e3b13bed6b713a8226ef635f779d46d0da09a355fbb29bb32f4bd3823",
"sizeBytes": 57678,
"mode": "0644"
},
{
"file": "assets/audio/ben_06.wav",
"sha256": "1458f4ffa59439d0876b471608d5993b58d86c2568b4a122a8e3a75cb61b41ef",
"sizeBytes": 624078,
"mode": "0644"
},
{
"file": "assets/audio/ben_07.wav",
"sha256": "f2a3b4f91c30c0e660c66c2e097c16948b3e7a0ee7ef8df83dc94952231394fe",
"sizeBytes": 192078,
"mode": "0644"
},
{
"file": "assets/audio/dad_01.wav",
"sha256": "f87762ed29a68306fe909e25b8a6ded7ac9968e3d7364445aac7d6b95b567359",
"sizeBytes": 124878,
"mode": "0644"
},
{
"file": "assets/audio/dad_02.wav",
"sha256": "6706b6ca895d002611ce366a785e46db5eab02a4dcbda74b55d95d27323a318d",
"sizeBytes": 38478,
"mode": "0644"
},
{
"file": "assets/audio/dad_03.wav",
"sha256": "03927f0a88f8d162496d9b95ffcfaaf0788ab04954b21f9a4231ba47a333476b",
"sizeBytes": 48078,
"mode": "0644"
},
{
"file": "assets/audio/dad_04.wav",
"sha256": "f1f469b941b7aaaeb81569150aef7bdf26c8b794a4eaa29c46b29c52764933b0",
"sizeBytes": 432078,
"mode": "0644"
},
{
"file": "assets/audio/dad_05.wav",
"sha256": "111fb2eefc36befd3383cc54c3c339dc077584fd61a2e5cfbee22793f6c2db9d",
"sizeBytes": 93198,
"mode": "0644"
},
{
"file": "assets/audio/hook.wav",
"sha256": "1dd2564966c71ee82af673cfe9125e1e446ca356086d3e710751c65ea96e41b9",
"sizeBytes": 303342,
"mode": "0644"
},
{
"file": "assets/audio/mama_01.wav",
"sha256": "0f313bf6863107fe68ff9f75dcb54c9b90cc8630389e2ab45d9d834bf6543a64",
"sizeBytes": 153678,
"mode": "0644"
},
{
"file": "assets/audio/mama_02.wav",
"sha256": "6b213107b7e49b5d0755f15edaa14fdc10f0778c7965a9d3fb3e3422791b833c",
"sizeBytes": 71118,
"mode": "0644"
},
{
"file": "assets/audio/mama_03.wav",
"sha256": "57e702cf34124e068783096039191bb505ff8dc84fc88d741db4a3aa8d9348bb",
"sizeBytes": 86478,
"mode": "0644"
},
{
"file": "assets/audio/mama_04.wav",
"sha256": "518a63399dff7ecdcb8d09debbdc5d5a5f617e913e672a0ee6658b094cc5ad88",
"sizeBytes": 96078,
"mode": "0644"
},
{
"file": "assets/audio/mama_05.wav",
"sha256": "af20c05e1ac29d3485a3a7ec025f17249ae462d223a2abc8a13e93e066441738",
"sizeBytes": 76878,
"mode": "0644"
},
{
"file": "assets/audio/mama_06.wav",
"sha256": "5b665ae9072588154bf5dfc47f9f5fa37e5630b984b150176178c42e8886f84a",
"sizeBytes": 326478,
"mode": "0644"
},
{
"file": "assets/audio/mama_07.wav",
"sha256": "f6034250280d679bc7895151c871a3e632330df339930532ffcaf8cd915e369a",
"sizeBytes": 57678,
"mode": "0644"
},
{
"file": "assets/audio/mama_08.wav",
"sha256": "edfc9662eaefd918086a7a71240a34971923233eb8a5e01337496e44901a5549",
"sizeBytes": 220878,
"mode": "0644"
},
{
"file": "assets/audio/mama_09.wav",
"sha256": "5e0c0213378c0e6154a33c4316426ca6b950197bbf07b54d5a1b3ed20da2a52c",
"sizeBytes": 192078,
"mode": "0644"
},
{
"file": "assets/audio/startup/alex_01.wav",
"sha256": "253a2b8ed873f77f0026e38d6f7a894aa312aa66616f2210f38f155811bee5d4",
"sizeBytes": 229352,
"mode": "0644"
},
{
"file": "assets/audio/startup/alex_02.wav",
"sha256": "ce1f3fa6e3ba5d53d51ffbf7ef24439c1ae2b606f16a2eefb212ffcd3e68f3fb",
"sizeBytes": 765920,
"mode": "0644"
},
{
"file": "assets/audio/startup/alex_03.wav",
"sha256": "802eb1b948c69fbcab9147f3406bd7e3d09191f242b08b52282c502183db5e15",
"sizeBytes": 320422,
"mode": "0644"
},
{
"file": "assets/audio/startup/hook.wav",
"sha256": "6d7fa5fa7a72e4a4bb554e3be934db95892dfbcd13f43b164a5ad2baa1cf5a0e",
"sizeBytes": 476740,
"mode": "0644"
},
{
"file": "assets/audio/startup/marc_01.wav",
"sha256": "9f203ec1a86dd2955009264a0980abc0b21de0e822835e7c4869f5168b430298",
"sizeBytes": 321794,
"mode": "0644"
},
{
"file": "assets/audio/startup/marc_02.wav",
"sha256": "da7416f0c77e60fddbf641dfa374f15741931339f9d011b4790f03cc29a390b7",
"sizeBytes": 871802,
"mode": "0644"
},
{
"file": "assets/audio/startup/marc_03.wav",
"sha256": "65ebf06c9c9a2b7972c341b9a40fcfa50a4f030d675a1552f0011f7582b7f527",
"sizeBytes": 155530,
"mode": "0644"
},
{
"file": "assets/audio/startup/marc_04.wav",
"sha256": "4e5efb94f654c4174beed3e0fe0132d17edb5719a0c646368020fb0b1ac869fa",
"sizeBytes": 355762,
"mode": "0644"
},
{
"file": "assets/avatars/founder-avatar.png",
"sha256": "cfcf6606b75c4b68cd89585e2ef11bfab99b43c7d3dabcfccbddd4f688867be1",
"sizeBytes": 3298,
"mode": "0644"
},
{
"file": "assets/avatars/founder-selfie.jpg",
"sha256": "30c64f32ba85fa4d3a40598ad9228157405000481dc6d00ae705439859dc1586",
"sizeBytes": 59518,
"mode": "0644"
},
{
"file": "assets/avatars/sydney-avatar.png",
"sha256": "3d3457d46db12301f7efad73f43d50c11a19383b530af96e56a692d6dca07eb5",
"sizeBytes": 33927,
"mode": "0644"
},
{
"file": "assets/avatars/sydney-selfie.jpg",
"sha256": "7bc7f4464cd918d7102c164f487ca90de331adbd5f658731f26b3093bf0075a9",
"sizeBytes": 94573,
"mode": "0644"
},
{
"file": "assets/characters/female/laugh.png",
"sha256": "f905926ad012c3b18eeaf18989a2fa58b7460560e030e77f437955a062f9f791",
"sizeBytes": 506015,
"mode": "0644"
},
{
"file": "assets/characters/female/neutral.png",
"sha256": "dd242fca10166c730deebfdf96360be97511b1a7331b4487295a409ea9127c8b",
"sizeBytes": 439728,
"mode": "0644"
},
{
"file": "assets/characters/female/shock.png",
"sha256": "613c15422f6bebaaa0383655778061cdefa99268e1b5ce74b27edcbc33b5929b",
"sizeBytes": 598737,
"mode": "0644"
},
{
"file": "assets/characters/female/talk.png",
"sha256": "11c52a98d026b162463074f5cdbd4712f1c4a9969f058fb46fb92422b24c5499",
"sizeBytes": 485061,
"mode": "0644"
},
{
"file": "assets/characters/male/laugh.png",
"sha256": "24df0c5ea08ad7c2436ed7627a44367f5b8021bec3260b52d859743375778071",
"sizeBytes": 441403,
"mode": "0644"
},
{
"file": "assets/characters/male/neutral.png",
"sha256": "06dac4de2e55b199b61b62ab07d52031a650ea70a9b5c7a81d775ed93f589f23",
"sizeBytes": 343199,
"mode": "0644"
},
{
"file": "assets/characters/male/shock.png",
"sha256": "3f855397adbd6164f27cfdc8b03352e6453ba3bd00c0a88fdde422990fc22da8",
"sizeBytes": 512510,
"mode": "0644"
},
{
"file": "assets/characters/male/talk.png",
"sha256": "0329ecdeed6080dc66ecbf95e0a5388f8a8193620a03c24e8ef30d29e1d2ffb2",
"sizeBytes": 449173,
"mode": "0644"
},
{
"file": "assets/cool.mp4",
"sha256": "3bbd979a0be11fa7c08a80d75106055a8a64662275d73bab118d708a9534d7df",
"sizeBytes": 107743,
"mode": "0644"
},
{
"file": "assets/gameplay/minecraft-parkour.mp4",
"sha256": "a2425bb2c3ced68b7d2b20818629978cfa9f91531d60b5bbbc2b4bfd4268f931",
"sizeBytes": 27016280,
"mode": "0644"
},
{
"file": "assets/sfx/pop.wav",
"sha256": "4ce5927b311af2c96307cdc2d6c3aacf49c78847a7624b79e933e24371bbbfec",
"sizeBytes": 7724,
"mode": "0644"
},
{
"file": "assets/sfx/sent.wav",
"sha256": "fa4caf6298e5d428ec94d0eaaa412d53b7856f7eeb42c76842f336170b9e844d",
"sizeBytes": 11564,
"mode": "0644"
},
{
"file": "assets/tones/tone_220_1s.wav",
"sha256": "a32b783ec799835e9b3c654b1341ef70b77da844e6d385fe08415a7b7ba222ab",
"sizeBytes": 96078,
"mode": "0644"
},
{
"file": "assets/tones/tone_220_2s.wav",
"sha256": "5e9459590f62778387dc410db7101dc757453f0e11097c84b78dfb5214567487",
"sizeBytes": 192078,
"mode": "0644"
},
{
"file": "assets/tones/tone_330_1s.wav",
"sha256": "bae145d42ae8a57dd1425d93a6e94eb681d7ac45c2832728cb67219344d287fa",
"sizeBytes": 96078,
"mode": "0644"
},
{
"file": "assets/tones/tone_330_2s.wav",
"sha256": "8ec3b7133b5b40d7a2b8755068fa172ce469044ab86d69c36fe765c21f48c112",
"sizeBytes": 192078,
"mode": "0644"
},
{
"file": "assets/tones/tone_440_1s.wav",
"sha256": "bf6ee9b267cc34c946f1c251dd93c8aedb87e1bbb061cb2d334727cf19121c42",
"sizeBytes": 96078,
"mode": "0644"
},
{
"file": "assets/tones/tone_440_2s.wav",
"sha256": "7637819c1f3a0ffdd1795f462d633749f7e944521d6b0b20bfc78ae64e441ec4",
"sizeBytes": 192078,
"mode": "0644"
},
{
"file": "assets/tones/tone_550_1s.wav",
"sha256": "60fc04d099478e360ca759f1b50d2a17b5edfa3c76369ec2efc5d2d9b5a8afac",
"sizeBytes": 96078,
"mode": "0644"
},
{
"file": "assets/tones/tone_550_2s.wav",
"sha256": "a6d59e69efe6f8efadd89eaca43f2ab835b5b415960e244e3a3be48ce6e5a32a",
"sizeBytes": 192078,
"mode": "0644"
},
{
"file": "assets/tones/tone_hook_3.2s.wav",
"sha256": "bc317a2ddf422dde878e5947bb31943d77dd44b932df2369baccd05dbd4a18b6",
"sizeBytes": 307278,
"mode": "0644"
},
{
"file": "assets/warm.mp4",
"sha256": "82f81dd8090cb1e6d9521c9b06cba110fbc6dafd4bca2b8a8d0fcf9cee493654",
"sizeBytes": 4596692,
"mode": "0644"
},
{
"file": "blueprint.json",
"sha256": "33ce7a98f7a77df203709129400879f0f6951a52744252efe9c0d2e043100969",
"sizeBytes": 9021,
"mode": "0644"
},
{
"file": "format.json",
"sha256": "575da6a9469abc04e44c9c72839219fc5da31c6f0198f4595898f5060a522aaa",
"sizeBytes": 506,
"mode": "0644"
},
{
"file": "goldens.json",
"sha256": "81fe3c7623f5a13449dd1270482be3390fdb94f9b7db9f61121294bb5393115e",
"sizeBytes": 1748,
"mode": "0644"
},
{
"file": "inputs/family-friends-roast.json",
"sha256": "336a5cedd489a207e49a5e4511a578214e4b176c92cfcea00fafb4bb14c4d632",
"sizeBytes": 7776,
"mode": "0644"
},
{
"file": "inputs/smoke.json",
"sha256": "1e75dd9844952928c0c1f020ff741267ad300172f3bd9e1f603f729b1dd9a089",
"sizeBytes": 1613,
"mode": "0644"
},
{
"file": "inputs/specular-commentary-proof.json",
"sha256": "0c2a9938e203e9e38cc51cce3a2d84f32330406ac4ad231a1b8e4b81fc8e82ea",
"sizeBytes": 2664,
"mode": "0644"
},
{
"file": "inputs/startup-pitch-roast.json",
"sha256": "efa6d8f375243e2988d6535073c74b659ff5e87ebf3c81ab9533e2b84cb20dad",
"sizeBytes": 3697,
"mode": "0644"
},
{
"file": "package-lock.json",
"sha256": "19b02934b87c70490d6953cb19ba577119092f15ed8d51ea3fd313b1e89698af",
"sizeBytes": 19187,
"mode": "0644"
},
{
"file": "package.json",
"sha256": "3a27d551b3aaf4804aec935941d07f20a7952a1a13633f47b4b566df577cc0fa",
"sizeBytes": 327,
"mode": "0644"
},
{
"file": "pipeline.json",
"sha256": "48163e987e0a52fe1b01e81a9c9f9eb3d6431477018cbb39ff1ef3d6ad806d6a",
"sizeBytes": 1044,
"mode": "0644"
},
{
"file": "proofs/family-friends-roast-0.1.0-inspection.json",
"sha256": "6b93ea7bc5e7695b5c0c6fd73f8ee5f26dcd120bfe898695602f6aa462184223",
"sizeBytes": 813,
"mode": "0644"
},
{
"file": "proofs/family-friends-roast-0.1.0.mp4",
"sha256": "c91388878985439d75cda2ae3fa2d672722b38339ce527f3517b7321d9f1a4ba",
"sizeBytes": 23745550,
"mode": "0644"
},
{
"file": "proofs/family-friends-roast-0.1.0.mp4.receipt.json",
"sha256": "5b0be6a88ecb568a442305f4fc224ea7e2e44bda67378a9d422ce24649357984",
"sizeBytes": 579,
"mode": "0644"
},
{
"file": "proofs/specular-commentary-proof-0.2.0-inspection.json",
"sha256": "d37fd2aaee7f48ddb9ae31ecaa62513e8d8eed955dc7a21d940225be736c3a8f",
"sizeBytes": 822,
"mode": "0644"
},
{
"file": "proofs/specular-commentary-proof.mp4",
"sha256": "a70d7d273b3d92d8ff8a7fe3f16d4db6d7b5fe0be85313b0334c5385e559fcc6",
"sizeBytes": 6422562,
"mode": "0644"
},
{
"file": "proofs/specular-commentary-proof.mp4.receipt.json",
"sha256": "3a731cd9d7d8d30ce2746112c53d1dabf7c5acb7bf3786381ed640daa68d1961",
"sizeBytes": 641,
"mode": "0644"
},
{
"file": "proofs/startup-pitch-roast-0.1.0-inspection.json",
"sha256": "3507572d034ec637be2bf6735dcc367c1e40a027baac0386e89329267a4bbaa4",
"sizeBytes": 812,
"mode": "0644"
},
{
"file": "proofs/startup-pitch-roast-0.1.0.mp4",
"sha256": "ab0f460023a496ef81b4a715422bfd4606f0f7b2000056c341d78f7eb8d62fe4",
"sizeBytes": 24200239,
"mode": "0644"
},
{
"file": "proofs/startup-pitch-roast-0.1.0.mp4.receipt.json",
"sha256": "e257e9865f25b4cca17bb51db622ed6ed64659d41ceafe5081baacb145a17ce2",
"sizeBytes": 577,
"mode": "0644"
},
{
"file": "quality.json",
"sha256": "874d94e6f1efd7ada3bd6ae63628f6013271d6df0a9abca8a73b8810789eaede",
"sizeBytes": 1155,
"mode": "0644"
},
{
"file": "requirements.json",
"sha256": "fd267647a550156d66eb57ff23f17fe57df4864c9908ce7e8ec52fa26bbb4cf5",
"sizeBytes": 1014,
"mode": "0644"
},
{
"file": "runtime/render.mjs",
"sha256": "8f6b3aff46a978d1bda7144f563679c0805c716aff460c4cd3b537c964e993a4",
"sizeBytes": 28314,
"mode": "0644"
},
{
"file": "tests/contract.test.mjs",
"sha256": "df13da41cc27006bfc88214ccafbf834d5029250267f7a92bf93e34ff3c6989a",
"sizeBytes": 6036,
"mode": "0644"
},
{
"file": "tests/smoke.mjs",
"sha256": "91121b486e6bc460cdfe7d2b68d0242320046b91f470e91945a283158faa397d",
"sizeBytes": 791,
"mode": "0644"
},
{
"file": "tests/verify-proofs.mjs",
"sha256": "a475f0544aba828946c27d2ce9ce14dbcb2e5330f46cfea4e7f4d95ffd42d000",
"sizeBytes": 3238,
"mode": "0644"
}
]
}
Run it with a coding agent
The agent reads this version’s instructions, checks the requirements, and walks you through the approved workflow. Review the inputs and estimate before starting.
Typical run
$0 media-provider cost with supplied media. Coding-agent usage is separate.
You provide
A victim profile (name, handle, tweet text, selfie photo) · A roster of contacts and roast conversation scripts · Authorized per-turn dialogue voice audio clips · An authorized 9:16 vertical gameplay video (e.g. Minecraft parkour)
Output
One 1080 × 1920 vertical MP4 (9:16 Shorts), up to 60 seconds, with expanding iMessage cards and sound effects