{"id":"afd0e9d1-a619-400d-8ed3-6a2242779d52","entityType":"agent","slug":"clawhub-pruna-ai-visual-transition-reel","name":"visual-transition-reel","canonicalUrl":"https://www.xpersona.co/agent/clawhub-pruna-ai-visual-transition-reel","canonicalPath":"/agent/clawhub-pruna-ai-visual-transition-reel","generatedAt":"2026-10-10T14:47:04.012Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:28:49.139Z","emptyReason":null},"description":"Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:visual-transition-reel","sourceUrl":"https://clawhub.ai/pruna-ai/visual-transition-reel","homepage":"https://clawhub.ai/pruna-ai/skills/visual-transition-reel","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/pruna-ai/visual-transition-reel","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/pruna-ai/skills/visual-transition-reel","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"visual-transition-reel technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:28:49.139Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:28:49.139Z","emptyReason":null},"stars":null,"forks":null,"downloads":1432,"packageName":null,"latestVersion":"1.0.14","tractionLabel":"1.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:28:49.139Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T12:28:49.139Z","lastCrawledAt":"2026-10-10T12:28:49.139Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T12:28:49.139Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.14","createdAt":"2026-09-29T15:37:08.130Z","changelog":"visual-transition-reel v1.0.14 - Updated SKILL.md to add explicit mention of the `p-video-2-pro` mode parameter (`cost`, `speed`, `quality`) in intake questions. - Removed skill-card.md file.","fileCount":6,"zipByteSize":8073},{"version":"1.0.13","createdAt":"2026-09-17T14:00:22.831Z","changelog":"visual-transition-reel 1.0.13 - Updated skill dependencies and workflow to include the new `p-video-2-pro` for advanced cinematic video transitions. - Clarified video skill selection: use `p-video-2-pro` for cinematic reels, `p-video-2` for 1080p or imported audio, and `p-video` for simpler clips. - Adjusted guide language for video formats and audio track options. - Removed the legacy `skill-card.md` documentation file.","fileCount":6,"zipByteSize":8144},{"version":"1.0.12","createdAt":"2026-09-10T13:59:01.323Z","changelog":"visual-transition-reel 1.0.12 - Updated core dependencies to use `p-image-ideogram` for controlled photoreal stills and `p-video-2` for higher-quality clips and lip-sync, with fallback to legacy `p-image`/`p-video` for fast/cheap drafts. - Intake and workflow docs now clarify when to use advanced skills (e.g. `p-image-ideogram`, `p-video-2`) versus simpler ones. - Minor workflow, prompt, and table updates to reflect new image/video generation standards. - Removed the deprecated `skill-card.md` file.","fileCount":6,"zipByteSize":8064},{"version":"1.0.11","createdAt":"2026-09-03T14:13:06.590Z","changelog":"- Bumped skill version to 1.0.11. - Removed redundant file: skill-card.md. - No workflow or usage changes; documentation updated for housekeeping.","fileCount":6,"zipByteSize":7720},{"version":"1.0.10","createdAt":"2026-08-28T07:58:53.781Z","changelog":"Version 1.0.10 - Updated version metadata to 1.0.10. - Removed the redundant skill-card.md file. - No changes to workflow or behavior.","fileCount":6,"zipByteSize":7663},{"version":"1.0.9","createdAt":"2026-08-04T06:19:05.059Z","changelog":"visual-transition-reel 1.0.9 - Updated skill dependency guidance: clarified when to use `p-image` (for the fastest, cheapest photo generation). - Adjusted hero still phase to reflect \"approved anchor photo\" terminology and refined criteria on when to skip this phase. - Minor wording changes throughout for precision and clarity. - Removed the redundant skill-card.md file.","fileCount":6,"zipByteSize":7705},{"version":"1.0.8","createdAt":"2026-07-28T17:21:07.434Z","changelog":"visual-transition-reel 1.0.8 - Clarified intake: now explicitly directs to open a `generation-diversity` clarification intake before planning. - Intake table updated: added `Format` (aspect_ratio, transition clip resolution) as its own row. - Improved scene setup guidance and clarified when agent should wait for full scene plan. - Minor updates to phrasing in workflow and step descriptions. - Removed redundant or outdated skill card file (skill-card.md).","fileCount":6,"zipByteSize":7599},{"version":"1.0.7","createdAt":"2026-07-23T12:36:14.671Z","changelog":"**Summary:** Major simplification and cleanup; documentation and references streamlined; usage patterns clarified. - Removed legacy scripts and detailed internal references to streamline the repository. - SKILL.md rewritten for clarity: now focuses on prerequisites, install instructions, workflow sequence, and explicit redirect boundaries to other skills. - All references to previous internal workflow scripts, policies, and checklists are removed in favor of clear step-by-step usage. - Feedback gates (plan, stills, clips, bed) and intake questions remain explicit and unchanged, but the layout is clearer. - Skill boundaries and redirection table now up front, helping users choose the right skill.","fileCount":6,"zipByteSize":7641}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:visual-transition-reel","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:visual-transition-reel` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/pruna-ai/visual-transition-reel before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-visual-transition-reel/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-visual-transition-reel/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-visual-transition-reel/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-visual-transition-reel/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-visual-transition-reel/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-visual-transition-reel/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T14:47:04.007Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-visual-transition-reel/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-visual-transition-reel/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-visual-transition-reel/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-visual-transition-reel/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:28:49.139Z","emptyReason":null},"readme":"Skill: visual-transition-reel\n\nOwner: pruna-ai\n\nSummary: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\n\nTags: ai:1.0.14, generative:1.0.14, latest:1.0.14, pruna:1.0.14\n\nVersion history:\n\nv1.0.14 | 2026-09-29T15:37:08.130Z | auto\n\nvisual-transition-reel v1.0.14\n\n- Updated SKILL.md to add explicit mention of the `p-video-2-pro` mode parameter (`cost`, `speed`, `quality`) in intake questions.\n- Removed skill-card.md file.\n\nv1.0.13 | 2026-09-17T14:00:22.831Z | auto\n\nvisual-transition-reel 1.0.13\n\n- Updated skill dependencies and workflow to include the new `p-video-2-pro` for advanced cinematic video transitions.\n- Clarified video skill selection: use `p-video-2-pro` for cinematic reels, `p-video-2` for 1080p or imported audio, and `p-video` for simpler clips.\n- Adjusted guide language for video formats and audio track options.\n- Removed the legacy `skill-card.md` documentation file.\n\nv1.0.12 | 2026-09-10T13:59:01.323Z | auto\n\nvisual-transition-reel 1.0.12\n\n- Updated core dependencies to use `p-image-ideogram` for controlled photoreal stills and `p-video-2` for higher-quality clips and lip-sync, with fallback to legacy `p-image`/`p-video` for fast/cheap drafts.\n- Intake and workflow docs now clarify when to use advanced skills (e.g. `p-image-ideogram`, `p-video-2`) versus simpler ones.\n- Minor workflow, prompt, and table updates to reflect new image/video generation standards.\n- Removed the deprecated `skill-card.md` file.\n\nv1.0.11 | 2026-09-03T14:13:06.590Z | auto\n\n- Bumped skill version to 1.0.11.\n- Removed redundant file: skill-card.md.\n- No workflow or usage changes; documentation updated for housekeeping.\n\nv1.0.10 | 2026-08-28T07:58:53.781Z | auto\n\nVersion 1.0.10\n\n- Updated version metadata to 1.0.10.\n- Removed the redundant skill-card.md file.\n- No changes to workflow or behavior.\n\nv1.0.9 | 2026-08-04T06:19:05.059Z | auto\n\nvisual-transition-reel 1.0.9\n\n- Updated skill dependency guidance: clarified when to use `p-image` (for the fastest, cheapest photo generation).\n- Adjusted hero still phase to reflect \"approved anchor photo\" terminology and refined criteria on when to skip this phase.\n- Minor wording changes throughout for precision and clarity.\n- Removed the redundant skill-card.md file.\n\nv1.0.8 | 2026-07-28T17:21:07.434Z | auto\n\nvisual-transition-reel 1.0.8\n\n- Clarified intake: now explicitly directs to open a `generation-diversity` clarification intake before planning.\n- Intake table updated: added `Format` (aspect_ratio, transition clip resolution) as its own row.\n- Improved scene setup guidance and clarified when agent should wait for full scene plan.\n- Minor updates to phrasing in workflow and step descriptions.\n- Removed redundant or outdated skill card file (skill-card.md).\n\nv1.0.7 | 2026-07-23T12:36:14.671Z | auto\n\n**Summary:** Major simplification and cleanup; documentation and references streamlined; usage patterns clarified.\n\n- Removed legacy scripts and detailed internal references to streamline the repository.\n- SKILL.md rewritten for clarity: now focuses on prerequisites, install instructions, workflow sequence, and explicit redirect boundaries to other skills.\n- All references to previous internal workflow scripts, policies, and checklists are removed in favor of clear step-by-step usage.\n- Feedback gates (plan, stills, clips, bed) and intake questions remain explicit and unchanged, but the layout is clearer.\n- Skill boundaries and redirection table now up front, helping users choose the right skill.\n\nv1.0.6 | 2026-07-16T21:00:36.206Z | auto\n\n**Introduces skill-wide generation policy, new references, and workflow/policy alignment.**\n\n- Added detailed generation policy covering random seed ritual, diversity, quality checks, staged workflow, approval gates, and parallel execution.\n- Integrated new references: approval red flags, generation diversity, and random-seed-ritual.\n- Updated all workflow and referenced policy links to match new paths and policies.\n- Aligned portable runner and scripting instructions with updated directory structure and intake requirements.\n- Removed redundant or outdated files (e.g., skill-card.md), streamlined documentation for clarity.\n\nv1.0.2 | 2026-07-16T13:35:39.534Z | auto\n\nvisual-transition-reel 1.0.2\n\n- Updated version metadata to 1.0.2.\n- Minor documentation and reference updates in SKILL.md and supporting files.\n- Removed deprecated skill-card.md for cleanup.\n- No changes to workflow, usage, or core logic.\n\nv1.0.1 | 2026-07-14T15:49:58.645Z | auto\n\n- Updated to version 1.0.1 with new tool and reference links throughout all documentation.\n- Replaced previous local links with canonical GitHub and plugin paths for referenced skills and resources.\n- Clarified references to related skills and example prompts.\n- Removed deprecated files (pspm.json, skill-card.md).\n- Improved guidance on tool usage and intake questions for consistency.\n\nv0.0.1 | 2026-07-14T15:06:42.442Z | auto\n\nInitial release of the visual-transition-reel skill.\n\n- Enables creation of multi-scene visual montages or transition reels from pairs of still images.\n- Guides users through a phased workflow: scene planning, still generation or intake, video transitions, review, and assembly.\n- Supports both generated and user-uploaded start/end stills; narration is optional but not default.\n- Includes detailed intake and feedback gates to ensure all scenes are properly specified before media generation.\n- Integrates with p-image, p-image-edit, p-video, and stable-audio-2.5 for flexible media handling.\n- Final video assembled externally (e.g., ffmpeg) with optional audio bed.\n\nv1.0.0 | 2026-07-14T10:16:41.140Z | auto\n\n- Initial release of visual-transition-reel skill.\n- Supports visual montage, still transitions, action-sequence reels, and multi-scene pieces with optional narration.\n- Integrates p-image, p-image-edit, p-video, and stable-audio-2.5 to construct each scene from paired stills and transition prompts.\n- Requires a complete scene plan (table or manifest) before generation; guides user intake with structured questions for story, transitions, and assembly.\n- Provides phased workflow with feedback gates for plan, stills, clips, and final assembly, allowing review and revision at each step.\n- Assembly is performed outside Pruna, with options for style, chaining, and optional sound bed.\n\nArchive index:\n\nArchive v1.0.14: 6 files, 8073 bytes\n\nFiles: example-prompt.md (1311b), skill-card.md (1861b), skill.manifest.json (206b), SKILL.md (11931b), templates/transition-plan.template.json (2168b), _meta.json (142b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: visual-transition-reel\ndescription: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-ideogram` | Use when photo generation needs more control — photoreal results, text in the image, or structured JSON with hex colors and bounding boxes. Simpler photo generation, edits, and video use other skills in the suite. | `npx skills add PrunaAI/pruna-skills@p-image-ideogram -y` |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-2-pro` | Use when someone wants a cinematic clip from text or start/end frames — product ads, documentary shots, or dialogue with generated audio. Not for 1080p, imported audio tracks, or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2-pro -y` |\n| `p-video-2` | Use when someone wants a polished short clip from text, images, or imported audio — 1080p B-roll, start/end frame animation, or a motion shot with a mixed track. Not for cinematic generated-audio clips or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `stable-audio-2.5` | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | `npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **every reply**, name `` `visual-transition-reel` `` in backticks. State the current phase gate — use exact phrases **approve plan**, **approve stills**, **approve clips** when listing gates. Do **not** same-turn plan + paid video. Skip-review / burn-credits → follow `generation-diversity` **Red flags**.\n\n## Skill boundary\n\nMontage with **transitions between composed video clips** — not a picture-book slideshow.\n\n**Redirect before intake:**\n\n- Picture-book / illustrated slideshow / Ken Burns story with narration → `` `illustrated-story-reel` ``\n- Cinematic multi-scene B-roll chapters (full `p-video-2` audio-led scenes) → `` `narrated-multi-scene` ``\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `illustrated-story-reel` | Use when someone wants a slideshow story with narration or music — picture-book illustrated frames with Ken Burns or gentle p-video motion. | `npx skills add PrunaAI/pruna-skills@illustrated-story-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `interactive-explainer` | Use when someone wants an educational explainer with a host and characters — history or science shorts with dialogue, not voiceover-only B-roll. | `npx skills add PrunaAI/pruna-skills@interactive-explainer -y` |\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, transition prompts, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end PNGs | **approve stills** |\n| **B — Video** | `clips/*.mp4` | **approve clips** |\n| **D — Bed** | Final after concat + optional bed | User accepts |\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Scene order (1…N)? What changes between beats (location, time, emotion)? |\n| **Per scene *i*** | **Start still** (`edit_prompt` or upload)? **End still** (`last_frame_edit_prompt`)? **Transition `video_prompt`** (OPEN/MID/CLOSE motion)? `duration_seconds`? |\n| **Continuity** | Per scene: **`chain_from_previous`** only when motion continues. Otherwise composed OPENING still + hard cut. |\n| **Stills source** | Generate via **`p-image-ideogram`** hero + **`p-image-edit`** (`p-image` for a cheap draft), or user-supplied photo pairs? |\n| **Format** | `aspect_ratio`; transition clips **`480p` / `768p`** (`p-video-2-pro`) or **`720p` / `1080p`** (`p-video-2` if imported audio or 1080p is locked)? `p-video-2-pro` `mode`: `cost` (same quality as speed, but cheaper and slower), `speed` (default), or `quality`? |\n| **Global** | `style_bible`? `ritual_seed`? `frame_chain_mode` (`extract_last_frame` vs `parallel_vignettes`)? |\n| **Audio** | Native SFX only (default), optional `stable-audio-2.5` bed in post, or upgrade to triple + TTS? |\n| **Assembly** | Concat order; chain crossfade (~0.12–0.15s) vs hard cut (0)? Target total duration? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Anchor pairs + `video-prompting`\n\nStart/end stills and transition motion use **`video-prompting`** scene-anchor pairs — physically **reachable** end states; **same subject** in both plates (identity preserved). Craft OPEN/MID/CLOSE in transition prompts; still OPENING/CLOSING prefixes on `p-image-edit` plates per `image-prompting`.\n\n### Scene table (template)\n\n| `#` | Start (`image`) | End (`last_frame_image`) | Transition prompt | Duration | Chain? |\n|-----|-----------------|--------------------------|-------------------|----------|--------|\n| 1 | `edit_prompt` → still | `last_frame_edit_prompt` → still | OPEN/MID/CLOSE motion | 5s | no |\n| 2 | = scene 1 end *or* extract(clip 1) | end still | motion prompt | 4s | yes / no |\n\n## How the agent runs this\n\n1. Copy [templates/transition-plan.template.json](./templates/transition-plan.template.json) → fill from intake → **approve plan**.\n2. Hero → parallel start stills → parallel end stills → **approve stills**.\n3. Parallel (or sequential for extract-chain) `p-video-2-pro` pair jobs (or `p-video-2` if 1080p / imported audio; `p-video` for simpler clips) → **approve clips**.\n4. ffmpeg concat ± per-join crossfade → optional bed.\n\n## Generation phases\n\n| Phase | Action |\n|-------|--------|\n| **stills** | Hero + start/end PNGs (default first stop) |\n| **video** | After stills approval — `p-video-2-pro` pairs |\n| **assemble** | After clips approval — concat ± bed |\n\n## Workflow (after intake)\n\n### Phase 0 — Hero (`p-image-ideogram`)\n\nOne approved anchor photo when generating a new image:\n\n1. **`p-image-ideogram`** with `hero_prompt` + `style_bible` + ritual seed from `generation-diversity` (`p-image` for a cheap draft)\n2. Slop gate — approve before branching edits\n\nSkip when every scene uses **uploaded** start/end images.\n\n### Phase 1 — Start stills (`p-image-edit`, parallel)\n\nFor each scene without an uploaded start image:\n\n1. Upload hero URL to `/v1/files`\n2. **`p-image-edit`** with `edit_prompt` + hero in `images[]`\n3. Download → `{scene_id}.png`\n\nRun all start stills **in parallel** after hero exists (`pruna-api`).\n\n### Phase 2 — End stills (`p-image-edit`, parallel)\n\nFor each scene with `last_frame_edit_prompt`:\n\n1. Upload start still URL\n2. **`p-image-edit`** with `last_frame_edit_prompt` + start still in `images[]`\n3. Download → `{scene_id}_last.png`\n\nRun all end stills **in parallel** once start stills exist.\n\n### Phase 3 — Video (`p-video-2-pro`)\n\n**Scene anchor pair** — one job per row (`duration` 5–15s, **no** `audio`; generated audio comes from the prompt). Iterate `mode: cost` / `speed`; final `quality`:\n\n```json\n{\n  \"prompt\": \"OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"duration\": 5,\n  \"resolution\": \"768p\",\n  \"mode\": \"speed\",\n  \"prompt_upsampler\": \"turbo\"\n}\n```\n\n1080p, imported audio, or draft previews → `p-video-2` instead (720p/1080p, `fps`, optional `audio`).\n\n| `frame_chain_mode` | Start frame when `chain_from_previous: true` | Render order |\n|--------------------|----------------------------------------------|--------------|\n| **`extract_last_frame`** | ffmpeg last frame from prior clip | Sequential for chained scenes |\n| **`parallel_vignettes`** | always composed start still | Parallel (montage / hard cuts) |\n| **`planned_stills`** | prior scene end still URL | Parallel once all stills exist |\n\nExtract last frame when chaining:\n\n```bash\nffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png\n```\n\nPoll all `get_url` until done; retry failed scenes only.\n\n### Phase 4 — Review\n\nAdjust transition prompt, stills, or duration; re-run **that scene only**.\n\n### Phase 5 — Assembly\n\n1. **Normalize** clip audio (48 kHz stereo) if concat fails on mixed formats\n2. **Concat** — hard cuts:\n\n```bash\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4\n```\n\nPer-join **crossfade** (~0.12–0.15s) on chain joins — use `xfade` (video) + `acrossfade` (audio); hard-cut joins stay at 0.\n\n3. **Optional bed** — `stable-audio-2.5` under native SFX (`amix`, bed ~0.10–0.15)\n\n### Phase 6 — Manifest\n\nScene table + start/end URLs + prediction ids + `chain_from_previous` flags.\n\n## Transition prompt shape\n\nWrite **`video_prompt`** as motion between the two plates — not a repeat of the still descriptions:\n\n```text\nOPEN: [what holds at start frame]\nMID: [camera + subject motion developing]\nCLOSE: [how motion settles into end frame]\n```\n\n**Limits:** prefer 4–5s beats; avoid extreme camera whips; start/end plates should differ clearly but share identity and lighting.\n\n## When to chain vs hard cut\n\n| Use **`chain_from_previous: true`** | Use **`chain_from_previous: false`** |\n|-------------------------------------|--------------------------------------|\n| Same location, motion continues | New location or story beat |\n| Subject mid-action into next beat | Emotional pause or time jump |\n| You will **`extract_last_frame`** from prior clip | Montage vignettes (`parallel_vignettes`) |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `image-to-video` | Use when someone wants one short film beat from images — a narrated scene, story moment, or cinematic B-roll with optional voiceover. | `npx skills add PrunaAI/pruna-skills@image-to-video -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.14:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"visual-transition-reel\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696228130\n}\n\nFile v1.0.14:example-prompt.md\n\n# Scene transition video\n\nBuild smooth multi-scene reels: **`p-image`** hero → **`p-image-edit`** start/end stills → **`p-video`** transition between **`image`** and **`last_frame_image`**.\n\n## Quick start prompt\n\n> Use the **visual-transition-reel** workflow. Three-beat cyberpunk alley reel: wide alley → stair climb (chain from prior) → rooftop hard cut. Generate hero with **p-image**, branch start/end stills with **p-image-edit**, render each beat with **p-video** using OPEN/MID/CLOSE transition prompts and 4–5s duration. Chain scene 2 from the prior last frame; hard cut before rooftop. Concat with 0.15s crossfade on chain joins. 16:9, 720p.\n\n## Copy plan template\n\n```bash\nmkdir -p output/visual-transition-reel/my-transitions/{stills,clips}\ncp skills/workflows/visual-transition-reel/templates/transition-plan.template.json \\\n   output/visual-transition-reel/my-transitions/plan.json\n```\n\nEdit scene `edit_prompt`, `last_frame_edit_prompt`, and `video_prompt` rows, then follow the phase table in `this skill` (agent runs curl + ffmpeg — no Python runner).\n\n## Install\n\n```bash\nnpx skills add PrunaAI/pruna-skills@visual-transition-reel -y\n# or: npx skills add PrunaAI/pruna-skills@pruna -y\n```\n\n## Related\n\n- Visual-only spec: `video-prompting`\n- With narration: `narrated-multi-scene`\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nGuides the creation of multi-scene video montages with transitions between composed clips and optional narration.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and developers use this skill to plan and assemble multi-scene video reels with approved stills, transition clips, and optional background music.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Related skills are installed using commands without pinned versions.\n\nMitigation: Verify the source and review installed skills or pin exact versions before running install commands.\n\nRisk: Generated or uploaded media may be sent to the generation service.\n\nMitigation: Confirm permission to submit media and review sensitive content before generation.\n\nRisk: Video generation may incur costs before the user is satisfied with the result.\n\nMitigation: Require plan and still approvals before paid video generation, then review clips before assembly.\n\n## Reference(s):\n\n- [Visual Transition Reel on ClawHub](https://clawhub.ai/pruna-ai/skills/visual-transition-reel)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, JSON, Shell commands, Guidance]\n\n**Output Format:** [Markdown scene plans, JSON manifests, and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides creation of still images, video clips, and an assembled MP4 after approval gates.]\n\n## Skill Version(s):\n\n1.0.14 (source: frontmatter and server release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.14:skill.manifest.json\n\n{\n  \"references\": [],\n  \"templates\": [\n    \"transition-plan.template.json\"\n  ],\n  \"generation_phases\": {\n    \"default\": \"stills\",\n    \"phases\": [\n      \"stills\",\n      \"video\",\n      \"assemble\"\n    ]\n  }\n}\n\nFile v1.0.14:templates/transition-plan.template.json\n\n{\n  \"title\": \"Neon alley transition reel\",\n  \"hero_prompt\": \"Cinematic cyberpunk figure in magenta-cyan neon alley, wet pavement reflections, single subject centered, 16:9 one frame, photoreal cinematic still\",\n  \"ritual_seed\": \"k7Qm2xP9\",\n  \"frame_chain_mode\": \"extract_last_frame\",\n  \"assembly\": {\n    \"chain_crossfade_seconds\": 0.15,\n    \"hard_cut_crossfade_seconds\": 0\n  },\n  \"defaults\": {\n    \"resolution\": \"720p\",\n    \"fps\": 24,\n    \"aspect_ratio\": \"16:9\",\n    \"duration_seconds\": 5\n  },\n  \"style_bible\": \"Neon magenta and cyan, wet pavement reflections, cinematic 16:9, consistent subject identity\",\n  \"background_music\": {\n    \"enabled\": false,\n    \"model\": \"stability-ai/stable-audio-2.5\",\n    \"volume\": 0.12,\n    \"prompt\": \"Ambient synthwave bed, pulsing bass, no vocals, 90 BPM\"\n  },\n  \"scenes\": [\n    {\n      \"id\": \"01_alley_wide\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Wide alley, figure small in frame, neon kanji signs, rain-slick ground\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same alley, figure closer mid-walk, hand on railing, neon rim light\",\n      \"video_prompt\": \"OPEN: hold wide composition. MID: slow dolly in, figure walks toward camera. CLOSE: settle on end pose at railing.\"\n    },\n    {\n      \"id\": \"02_stair_climb\",\n      \"chain_from_previous\": true,\n      \"duration_seconds\": 4,\n      \"edit_prompt\": \"OPENING: Figure at base of fire escape stairs, looking up, neon spill from above\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same figure mid-climb, three steps up, hand on rail, city bokeh behind\",\n      \"video_prompt\": \"OPEN: pause at stair base. MID: figure mounts stairs with purpose. CLOSE: hold mid-climb end pose.\"\n    },\n    {\n      \"id\": \"03_rooftop\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Rooftop edge, figure silhouetted against city sprawl, wind in coat\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same rooftop, figure turns three-quarter toward camera, skyline gold edge light\",\n      \"video_prompt\": \"OPEN: wind ripples coat. MID: slow turn toward lens. CLOSE: hold three-quarter hero pose.\"\n    }\n  ]\n}\n\nArchive v1.0.13: 6 files, 8144 bytes\n\nFiles: example-prompt.md (1311b), skill-card.md (2172b), skill.manifest.json (206b), SKILL.md (11769b), templates/transition-plan.template.json (2168b), _meta.json (142b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: visual-transition-reel\ndescription: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\nlicense: MIT\nmetadata:\n  version: \"1.0.13\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-ideogram` | Use when photo generation needs more control — photoreal results, text in the image, or structured JSON with hex colors and bounding boxes. Simpler photo generation, edits, and video use other skills in the suite. | `npx skills add PrunaAI/pruna-skills@p-image-ideogram -y` |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-2-pro` | Use when someone wants a cinematic clip from text or start/end frames — product ads, documentary shots, or dialogue with generated audio. Not for 1080p, imported audio tracks, or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2-pro -y` |\n| `p-video-2` | Use when someone wants a polished short clip from text, images, or imported audio — 1080p B-roll, start/end frame animation, or a motion shot with a mixed track. Not for cinematic generated-audio clips or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `stable-audio-2.5` | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | `npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **every reply**, name `` `visual-transition-reel` `` in backticks. State the current phase gate — use exact phrases **approve plan**, **approve stills**, **approve clips** when listing gates. Do **not** same-turn plan + paid video. Skip-review / burn-credits → follow `generation-diversity` **Red flags**.\n\n## Skill boundary\n\nMontage with **transitions between composed video clips** — not a picture-book slideshow.\n\n**Redirect before intake:**\n\n- Picture-book / illustrated slideshow / Ken Burns story with narration → `` `illustrated-story-reel` ``\n- Cinematic multi-scene B-roll chapters (full `p-video-2` audio-led scenes) → `` `narrated-multi-scene` ``\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `illustrated-story-reel` | Use when someone wants a slideshow story with narration or music — picture-book illustrated frames with Ken Burns or gentle p-video motion. | `npx skills add PrunaAI/pruna-skills@illustrated-story-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `interactive-explainer` | Use when someone wants an educational explainer with a host and characters — history or science shorts with dialogue, not voiceover-only B-roll. | `npx skills add PrunaAI/pruna-skills@interactive-explainer -y` |\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, transition prompts, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end PNGs | **approve stills** |\n| **B — Video** | `clips/*.mp4` | **approve clips** |\n| **D — Bed** | Final after concat + optional bed | User accepts |\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Scene order (1…N)? What changes between beats (location, time, emotion)? |\n| **Per scene *i*** | **Start still** (`edit_prompt` or upload)? **End still** (`last_frame_edit_prompt`)? **Transition `video_prompt`** (OPEN/MID/CLOSE motion)? `duration_seconds`? |\n| **Continuity** | Per scene: **`chain_from_previous`** only when motion continues. Otherwise composed OPENING still + hard cut. |\n| **Stills source** | Generate via **`p-image-ideogram`** hero + **`p-image-edit`** (`p-image` for a cheap draft), or user-supplied photo pairs? |\n| **Format** | `aspect_ratio`; transition clips **`480p` / `768p`** (`p-video-2-pro`) or **`720p` / `1080p`** (`p-video-2` if imported audio or 1080p is locked)? |\n| **Global** | `style_bible`? `ritual_seed`? `frame_chain_mode` (`extract_last_frame` vs `parallel_vignettes`)? |\n| **Audio** | Native SFX only (default), optional `stable-audio-2.5` bed in post, or upgrade to triple + TTS? |\n| **Assembly** | Concat order; chain crossfade (~0.12–0.15s) vs hard cut (0)? Target total duration? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Anchor pairs + `video-prompting`\n\nStart/end stills and transition motion use **`video-prompting`** scene-anchor pairs — physically **reachable** end states; **same subject** in both plates (identity preserved). Craft OPEN/MID/CLOSE in transition prompts; still OPENING/CLOSING prefixes on `p-image-edit` plates per `image-prompting`.\n\n### Scene table (template)\n\n| `#` | Start (`image`) | End (`last_frame_image`) | Transition prompt | Duration | Chain? |\n|-----|-----------------|--------------------------|-------------------|----------|--------|\n| 1 | `edit_prompt` → still | `last_frame_edit_prompt` → still | OPEN/MID/CLOSE motion | 5s | no |\n| 2 | = scene 1 end *or* extract(clip 1) | end still | motion prompt | 4s | yes / no |\n\n## How the agent runs this\n\n1. Copy [templates/transition-plan.template.json](./templates/transition-plan.template.json) → fill from intake → **approve plan**.\n2. Hero → parallel start stills → parallel end stills → **approve stills**.\n3. Parallel (or sequential for extract-chain) `p-video-2-pro` pair jobs (or `p-video-2` if 1080p / imported audio; `p-video` for simpler clips) → **approve clips**.\n4. ffmpeg concat ± per-join crossfade → optional bed.\n\n## Generation phases\n\n| Phase | Action |\n|-------|--------|\n| **stills** | Hero + start/end PNGs (default first stop) |\n| **video** | After stills approval — `p-video-2-pro` pairs |\n| **assemble** | After clips approval — concat ± bed |\n\n## Workflow (after intake)\n\n### Phase 0 — Hero (`p-image-ideogram`)\n\nOne approved anchor photo when generating a new image:\n\n1. **`p-image-ideogram`** with `hero_prompt` + `style_bible` + ritual seed from `generation-diversity` (`p-image` for a cheap draft)\n2. Slop gate — approve before branching edits\n\nSkip when every scene uses **uploaded** start/end images.\n\n### Phase 1 — Start stills (`p-image-edit`, parallel)\n\nFor each scene without an uploaded start image:\n\n1. Upload hero URL to `/v1/files`\n2. **`p-image-edit`** with `edit_prompt` + hero in `images[]`\n3. Download → `{scene_id}.png`\n\nRun all start stills **in parallel** after hero exists (`pruna-api`).\n\n### Phase 2 — End stills (`p-image-edit`, parallel)\n\nFor each scene with `last_frame_edit_prompt`:\n\n1. Upload start still URL\n2. **`p-image-edit`** with `last_frame_edit_prompt` + start still in `images[]`\n3. Download → `{scene_id}_last.png`\n\nRun all end stills **in parallel** once start stills exist.\n\n### Phase 3 — Video (`p-video-2-pro`)\n\n**Scene anchor pair** — one job per row (`duration` 5–15s, **no** `audio`; generated audio comes from the prompt):\n\n```json\n{\n  \"prompt\": \"OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"duration\": 5,\n  \"resolution\": \"768p\",\n  \"mode\": \"speed\",\n  \"prompt_upsampler\": \"turbo\"\n}\n```\n\n1080p, imported audio, or draft previews → `p-video-2` instead (720p/1080p, `fps`, optional `audio`).\n\n| `frame_chain_mode` | Start frame when `chain_from_previous: true` | Render order |\n|--------------------|----------------------------------------------|--------------|\n| **`extract_last_frame`** | ffmpeg last frame from prior clip | Sequential for chained scenes |\n| **`parallel_vignettes`** | always composed start still | Parallel (montage / hard cuts) |\n| **`planned_stills`** | prior scene end still URL | Parallel once all stills exist |\n\nExtract last frame when chaining:\n\n```bash\nffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png\n```\n\nPoll all `get_url` until done; retry failed scenes only.\n\n### Phase 4 — Review\n\nAdjust transition prompt, stills, or duration; re-run **that scene only**.\n\n### Phase 5 — Assembly\n\n1. **Normalize** clip audio (48 kHz stereo) if concat fails on mixed formats\n2. **Concat** — hard cuts:\n\n```bash\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4\n```\n\nPer-join **crossfade** (~0.12–0.15s) on chain joins — use `xfade` (video) + `acrossfade` (audio); hard-cut joins stay at 0.\n\n3. **Optional bed** — `stable-audio-2.5` under native SFX (`amix`, bed ~0.10–0.15)\n\n### Phase 6 — Manifest\n\nScene table + start/end URLs + prediction ids + `chain_from_previous` flags.\n\n## Transition prompt shape\n\nWrite **`video_prompt`** as motion between the two plates — not a repeat of the still descriptions:\n\n```text\nOPEN: [what holds at start frame]\nMID: [camera + subject motion developing]\nCLOSE: [how motion settles into end frame]\n```\n\n**Limits:** prefer 4–5s beats; avoid extreme camera whips; start/end plates should differ clearly but share identity and lighting.\n\n## When to chain vs hard cut\n\n| Use **`chain_from_previous: true`** | Use **`chain_from_previous: false`** |\n|-------------------------------------|--------------------------------------|\n| Same location, motion continues | New location or story beat |\n| Subject mid-action into next beat | Emotional pause or time jump |\n| You will **`extract_last_frame`** from prior clip | Montage vignettes (`parallel_vignettes`) |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `image-to-video` | Use when someone wants one short film beat from images — a narrated scene, story moment, or cinematic B-roll with optional voiceover. | `npx skills add PrunaAI/pruna-skills@image-to-video -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.13:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"visual-transition-reel\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1789653622831\n}\n\nFile v1.0.13:example-prompt.md\n\n# Scene transition video\n\nBuild smooth multi-scene reels: **`p-image`** hero → **`p-image-edit`** start/end stills → **`p-video`** transition between **`image`** and **`last_frame_image`**.\n\n## Quick start prompt\n\n> Use the **visual-transition-reel** workflow. Three-beat cyberpunk alley reel: wide alley → stair climb (chain from prior) → rooftop hard cut. Generate hero with **p-image**, branch start/end stills with **p-image-edit**, render each beat with **p-video** using OPEN/MID/CLOSE transition prompts and 4–5s duration. Chain scene 2 from the prior last frame; hard cut before rooftop. Concat with 0.15s crossfade on chain joins. 16:9, 720p.\n\n## Copy plan template\n\n```bash\nmkdir -p output/visual-transition-reel/my-transitions/{stills,clips}\ncp skills/workflows/visual-transition-reel/templates/transition-plan.template.json \\\n   output/visual-transition-reel/my-transitions/plan.json\n```\n\nEdit scene `edit_prompt`, `last_frame_edit_prompt`, and `video_prompt` rows, then follow the phase table in `this skill` (agent runs curl + ffmpeg — no Python runner).\n\n## Install\n\n```bash\nnpx skills add PrunaAI/pruna-skills@visual-transition-reel -y\n# or: npx skills add PrunaAI/pruna-skills@pruna -y\n```\n\n## Related\n\n- Visual-only spec: `video-prompting`\n- With narration: `narrated-multi-scene`\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nGuides an agent through planning, generating, reviewing, and assembling a montage with transitions between composed video clips where narration is optional.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal creators and developers use this skill to plan scene anchor pairs, generate start and end stills, render transition clips, and assemble a reviewed multi-scene reel.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Install examples use unpinned external npx skills add commands.\n\nMitigation: Install only from a trusted PrunaAI source and prefer pinned versions or reviewed commits when available.\n\nRisk: The workflow can upload image assets to external media-generation services and consume generation credits.\n\nMitigation: Review prompts, input assets, and phase gates before generation, especially before paid video steps.\n\nRisk: Local media assembly uses ffmpeg on generated or supplied media files.\n\nMitigation: Run ffmpeg only on trusted local files in a controlled workspace and review generated commands before execution.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/visual-transition-reel)\n- [Example prompt](artifact/example-prompt.md)\n- [Transition plan template](artifact/templates/transition-plan.template.json)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON plan templates and inline shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May produce scene plans, media-generation prompts, file paths, ffmpeg commands, and review-gated workflow instructions.]\n\n## Skill Version(s):\n\n1.0.13 (source: server release metadata and artifact metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.13:skill.manifest.json\n\n{\n  \"references\": [],\n  \"templates\": [\n    \"transition-plan.template.json\"\n  ],\n  \"generation_phases\": {\n    \"default\": \"stills\",\n    \"phases\": [\n      \"stills\",\n      \"video\",\n      \"assemble\"\n    ]\n  }\n}\n\nFile v1.0.13:templates/transition-plan.template.json\n\n{\n  \"title\": \"Neon alley transition reel\",\n  \"hero_prompt\": \"Cinematic cyberpunk figure in magenta-cyan neon alley, wet pavement reflections, single subject centered, 16:9 one frame, photoreal cinematic still\",\n  \"ritual_seed\": \"k7Qm2xP9\",\n  \"frame_chain_mode\": \"extract_last_frame\",\n  \"assembly\": {\n    \"chain_crossfade_seconds\": 0.15,\n    \"hard_cut_crossfade_seconds\": 0\n  },\n  \"defaults\": {\n    \"resolution\": \"720p\",\n    \"fps\": 24,\n    \"aspect_ratio\": \"16:9\",\n    \"duration_seconds\": 5\n  },\n  \"style_bible\": \"Neon magenta and cyan, wet pavement reflections, cinematic 16:9, consistent subject identity\",\n  \"background_music\": {\n    \"enabled\": false,\n    \"model\": \"stability-ai/stable-audio-2.5\",\n    \"volume\": 0.12,\n    \"prompt\": \"Ambient synthwave bed, pulsing bass, no vocals, 90 BPM\"\n  },\n  \"scenes\": [\n    {\n      \"id\": \"01_alley_wide\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Wide alley, figure small in frame, neon kanji signs, rain-slick ground\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same alley, figure closer mid-walk, hand on railing, neon rim light\",\n      \"video_prompt\": \"OPEN: hold wide composition. MID: slow dolly in, figure walks toward camera. CLOSE: settle on end pose at railing.\"\n    },\n    {\n      \"id\": \"02_stair_climb\",\n      \"chain_from_previous\": true,\n      \"duration_seconds\": 4,\n      \"edit_prompt\": \"OPENING: Figure at base of fire escape stairs, looking up, neon spill from above\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same figure mid-climb, three steps up, hand on rail, city bokeh behind\",\n      \"video_prompt\": \"OPEN: pause at stair base. MID: figure mounts stairs with purpose. CLOSE: hold mid-climb end pose.\"\n    },\n    {\n      \"id\": \"03_rooftop\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Rooftop edge, figure silhouetted against city sprawl, wind in coat\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same rooftop, figure turns three-quarter toward camera, skyline gold edge light\",\n      \"video_prompt\": \"OPEN: wind ripples coat. MID: slow turn toward lens. CLOSE: hold three-quarter hero pose.\"\n    }\n  ]\n}\n\nArchive v1.0.12: 6 files, 8064 bytes\n\nFiles: example-prompt.md (1311b), skill-card.md (2397b), skill.manifest.json (206b), SKILL.md (11105b), templates/transition-plan.template.json (2168b), _meta.json (142b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: visual-transition-reel\ndescription: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\nlicense: MIT\nmetadata:\n  version: \"1.0.12\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-ideogram` | Use when photo generation needs more control — photoreal results, text in the image, or structured JSON with hex colors and bounding boxes. Simpler photo generation, edits, and video use other skills in the suite. | `npx skills add PrunaAI/pruna-skills@p-image-ideogram -y` |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-2` | Use when someone wants the best-quality short clip from text, images, or audio — polished B-roll, start/end frame animation, or a motion shot with stronger lip-sync. Not for full multi-scene films or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs the highest quality or tight lip-sync. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `stable-audio-2.5` | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | `npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **every reply**, name `` `visual-transition-reel` `` in backticks. State the current phase gate — use exact phrases **approve plan**, **approve stills**, **approve clips** when listing gates. Do **not** same-turn plan + paid video. Skip-review / burn-credits → follow `generation-diversity` **Red flags**.\n\n## Skill boundary\n\nMontage with **transitions between composed video clips** — not a picture-book slideshow.\n\n**Redirect before intake:**\n\n- Picture-book / illustrated slideshow / Ken Burns story with narration → `` `illustrated-story-reel` ``\n- Cinematic multi-scene B-roll chapters (full `p-video-2` scenes) → `` `narrated-multi-scene` ``\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `illustrated-story-reel` | Use when someone wants a slideshow story with narration or music — picture-book illustrated frames with Ken Burns or gentle p-video motion. | `npx skills add PrunaAI/pruna-skills@illustrated-story-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `interactive-explainer` | Use when someone wants an educational explainer with a host and characters — history or science shorts with dialogue, not voiceover-only B-roll. | `npx skills add PrunaAI/pruna-skills@interactive-explainer -y` |\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, transition prompts, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end PNGs | **approve stills** |\n| **B — Video** | `clips/*.mp4` | **approve clips** |\n| **D — Bed** | Final after concat + optional bed | User accepts |\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Scene order (1…N)? What changes between beats (location, time, emotion)? |\n| **Per scene *i*** | **Start still** (`edit_prompt` or upload)? **End still** (`last_frame_edit_prompt`)? **Transition `video_prompt`** (OPEN/MID/CLOSE motion)? `duration_seconds`? |\n| **Continuity** | Per scene: **`chain_from_previous`** only when motion continues. Otherwise composed OPENING still + hard cut. |\n| **Stills source** | Generate via **`p-image-ideogram`** hero + **`p-image-edit`** (`p-image` for a cheap draft), or user-supplied photo pairs? |\n| **Format** | `aspect_ratio`; transition clips **`720p` / `1080p`**? |\n| **Global** | `style_bible`? `ritual_seed`? `frame_chain_mode` (`extract_last_frame` vs `parallel_vignettes`)? |\n| **Audio** | Native SFX only (default), optional `stable-audio-2.5` bed in post, or upgrade to triple + TTS? |\n| **Assembly** | Concat order; chain crossfade (~0.12–0.15s) vs hard cut (0)? Target total duration? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Anchor pairs + `video-prompting`\n\nStart/end stills and transition motion use **`video-prompting`** scene-anchor pairs — physically **reachable** end states; **same subject** in both plates (identity preserved). Craft OPEN/MID/CLOSE in transition prompts; still OPENING/CLOSING prefixes on `p-image-edit` plates per `image-prompting`.\n\n### Scene table (template)\n\n| `#` | Start (`image`) | End (`last_frame_image`) | Transition prompt | Duration | Chain? |\n|-----|-----------------|--------------------------|-------------------|----------|--------|\n| 1 | `edit_prompt` → still | `last_frame_edit_prompt` → still | OPEN/MID/CLOSE motion | 5s | no |\n| 2 | = scene 1 end *or* extract(clip 1) | end still | motion prompt | 4s | yes / no |\n\n## How the agent runs this\n\n1. Copy [templates/transition-plan.template.json](./templates/transition-plan.template.json) → fill from intake → **approve plan**.\n2. Hero → parallel start stills → parallel end stills → **approve stills**.\n3. Parallel (or sequential for extract-chain) `p-video-2` pair jobs (quality) or `p-video` for simpler clips → **approve clips**.\n4. ffmpeg concat ± per-join crossfade → optional bed.\n\n## Generation phases\n\n| Phase | Action |\n|-------|--------|\n| **stills** | Hero + start/end PNGs (default first stop) |\n| **video** | After stills approval — `p-video-2` pairs |\n| **assemble** | After clips approval — concat ± bed |\n\n## Workflow (after intake)\n\n### Phase 0 — Hero (`p-image-ideogram`)\n\nOne approved anchor photo when generating a new image:\n\n1. **`p-image-ideogram`** with `hero_prompt` + `style_bible` + ritual seed from `generation-diversity` (`p-image` for a cheap draft)\n2. Slop gate — approve before branching edits\n\nSkip when every scene uses **uploaded** start/end images.\n\n### Phase 1 — Start stills (`p-image-edit`, parallel)\n\nFor each scene without an uploaded start image:\n\n1. Upload hero URL to `/v1/files`\n2. **`p-image-edit`** with `edit_prompt` + hero in `images[]`\n3. Download → `{scene_id}.png`\n\nRun all start stills **in parallel** after hero exists (`pruna-api`).\n\n### Phase 2 — End stills (`p-image-edit`, parallel)\n\nFor each scene with `last_frame_edit_prompt`:\n\n1. Upload start still URL\n2. **`p-image-edit`** with `last_frame_edit_prompt` + start still in `images[]`\n3. Download → `{scene_id}_last.png`\n\nRun all end stills **in parallel** once start stills exist.\n\n### Phase 3 — Video (`p-video-2`)\n\n**Scene anchor pair** — one job per row (`duration` set, **no** `audio`):\n\n```json\n{\n  \"prompt\": \"OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"duration\": 5,\n  \"resolution\": \"720p\",\n  \"fps\": 24\n}\n```\n\n| `frame_chain_mode` | Start frame when `chain_from_previous: true` | Render order |\n|--------------------|----------------------------------------------|--------------|\n| **`extract_last_frame`** | ffmpeg last frame from prior clip | Sequential for chained scenes |\n| **`parallel_vignettes`** | always composed start still | Parallel (montage / hard cuts) |\n| **`planned_stills`** | prior scene end still URL | Parallel once all stills exist |\n\nExtract last frame when chaining:\n\n```bash\nffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png\n```\n\nPoll all `get_url` until done; retry failed scenes only.\n\n### Phase 4 — Review\n\nAdjust transition prompt, stills, or duration; re-run **that scene only**.\n\n### Phase 5 — Assembly\n\n1. **Normalize** clip audio (48 kHz stereo) if concat fails on mixed formats\n2. **Concat** — hard cuts:\n\n```bash\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4\n```\n\nPer-join **crossfade** (~0.12–0.15s) on chain joins — use `xfade` (video) + `acrossfade` (audio); hard-cut joins stay at 0.\n\n3. **Optional bed** — `stable-audio-2.5` under native SFX (`amix`, bed ~0.10–0.15)\n\n### Phase 6 — Manifest\n\nScene table + start/end URLs + prediction ids + `chain_from_previous` flags.\n\n## Transition prompt shape\n\nWrite **`video_prompt`** as motion between the two plates — not a repeat of the still descriptions:\n\n```text\nOPEN: [what holds at start frame]\nMID: [camera + subject motion developing]\nCLOSE: [how motion settles into end frame]\n```\n\n**Limits:** prefer 4–5s beats; avoid extreme camera whips; start/end plates should differ clearly but share identity and lighting.\n\n## When to chain vs hard cut\n\n| Use **`chain_from_previous: true`** | Use **`chain_from_previous: false`** |\n|-------------------------------------|--------------------------------------|\n| Same location, motion continues | New location or story beat |\n| Subject mid-action into next beat | Emotional pause or time jump |\n| You will **`extract_last_frame`** from prior clip | Montage vignettes (`parallel_vignettes`) |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `image-to-video` | Use when someone wants one short film beat from images — a narrated scene, story moment, or cinematic B-roll with optional voiceover. | `npx skills add PrunaAI/pruna-skills@image-to-video -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"visual-transition-reel\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1789048741323\n}\n\nFile v1.0.12:example-prompt.md\n\n# Scene transition video\n\nBuild smooth multi-scene reels: **`p-image`** hero → **`p-image-edit`** start/end stills → **`p-video`** transition between **`image`** and **`last_frame_image`**.\n\n## Quick start prompt\n\n> Use the **visual-transition-reel** workflow. Three-beat cyberpunk alley reel: wide alley → stair climb (chain from prior) → rooftop hard cut. Generate hero with **p-image**, branch start/end stills with **p-image-edit**, render each beat with **p-video** using OPEN/MID/CLOSE transition prompts and 4–5s duration. Chain scene 2 from the prior last frame; hard cut before rooftop. Concat with 0.15s crossfade on chain joins. 16:9, 720p.\n\n## Copy plan template\n\n```bash\nmkdir -p output/visual-transition-reel/my-transitions/{stills,clips}\ncp skills/workflows/visual-transition-reel/templates/transition-plan.template.json \\\n   output/visual-transition-reel/my-transitions/plan.json\n```\n\nEdit scene `edit_prompt`, `last_frame_edit_prompt`, and `video_prompt` rows, then follow the phase table in `this skill` (agent runs curl + ffmpeg — no Python runner).\n\n## Install\n\n```bash\nnpx skills add PrunaAI/pruna-skills@visual-transition-reel -y\n# or: npx skills add PrunaAI/pruna-skills@pruna -y\n```\n\n## Related\n\n- Visual-only spec: `video-prompting`\n- With narration: `narrated-multi-scene`\n\nFile v1.0.12:skill-card.md\n\n## Description:\n\nUse when someone wants a montage with transitions between shots - action-sequence reel or multi-scene piece where narration is optional.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and content creators use this skill to plan and generate multi-scene visual reels with approved scene plans, start and end stills, transition video clips, and optional final assembly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill changes agent reply behavior globally by requiring `visual-transition-reel` to be named in every reply while loaded.\n\nMitigation: Load the skill only for the reel workflow, review its response-habit instructions before use, and unload or replace it when the task ends.\n\nRisk: The skill recommends noninteractive `npx skills add` installs that may resolve differently over time.\n\nMitigation: Install only from trusted PrunaAI sources, prefer pinned or reviewed install paths, and review dependent skills before allowing generation.\n\nRisk: The workflow can trigger paid media-generation steps for stills and videos.\n\nMitigation: Keep the required approve plan, approve stills, and approve clips gates, and do not generate paid video in the same turn as planning.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/visual-transition-reel)\n- [Example prompt](artifact/example-prompt.md)\n- [Transition plan template](artifact/templates/transition-plan.template.json)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with scene tables, JSON transition plans, inline shell commands, and media-generation prompt text]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May guide creation of image files, video clips, ffmpeg assembly commands, and a scene manifest through dependent media-generation skills.]\n\n## Skill Version(s):\n\n1.0.12 (source: server release metadata and artifact frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.12:skill.manifest.json\n\n{\n  \"references\": [],\n  \"templates\": [\n    \"transition-plan.template.json\"\n  ],\n  \"generation_phases\": {\n    \"default\": \"stills\",\n    \"phases\": [\n      \"stills\",\n      \"video\",\n      \"assemble\"\n    ]\n  }\n}\n\nFile v1.0.12:templates/transition-plan.template.json\n\n{\n  \"title\": \"Neon alley transition reel\",\n  \"hero_prompt\": \"Cinematic cyberpunk figure in magenta-cyan neon alley, wet pavement reflections, single subject centered, 16:9 one frame, photoreal cinematic still\",\n  \"ritual_seed\": \"k7Qm2xP9\",\n  \"frame_chain_mode\": \"extract_last_frame\",\n  \"assembly\": {\n    \"chain_crossfade_seconds\": 0.15,\n    \"hard_cut_crossfade_seconds\": 0\n  },\n  \"defaults\": {\n    \"resolution\": \"720p\",\n    \"fps\": 24,\n    \"aspect_ratio\": \"16:9\",\n    \"duration_seconds\": 5\n  },\n  \"style_bible\": \"Neon magenta and cyan, wet pavement reflections, cinematic 16:9, consistent subject identity\",\n  \"background_music\": {\n    \"enabled\": false,\n    \"model\": \"stability-ai/stable-audio-2.5\",\n    \"volume\": 0.12,\n    \"prompt\": \"Ambient synthwave bed, pulsing bass, no vocals, 90 BPM\"\n  },\n  \"scenes\": [\n    {\n      \"id\": \"01_alley_wide\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Wide alley, figure small in frame, neon kanji signs, rain-slick ground\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same alley, figure closer mid-walk, hand on railing, neon rim light\",\n      \"video_prompt\": \"OPEN: hold wide composition. MID: slow dolly in, figure walks toward camera. CLOSE: settle on end pose at railing.\"\n    },\n    {\n      \"id\": \"02_stair_climb\",\n      \"chain_from_previous\": true,\n      \"duration_seconds\": 4,\n      \"edit_prompt\": \"OPENING: Figure at base of fire escape stairs, looking up, neon spill from above\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same figure mid-climb, three steps up, hand on rail, city bokeh behind\",\n      \"video_prompt\": \"OPEN: pause at stair base. MID: figure mounts stairs with purpose. CLOSE: hold mid-climb end pose.\"\n    },\n    {\n      \"id\": \"03_rooftop\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Rooftop edge, figure silhouetted against city sprawl, wind in coat\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same rooftop, figure turns three-quarter toward camera, skyline gold edge light\",\n      \"video_prompt\": \"OPEN: wind ripples coat. MID: slow turn toward lens. CLOSE: hold three-quarter hero pose.\"\n    }\n  ]\n}\n\nArchive v1.0.11: 6 files, 7720 bytes\n\nFiles: example-prompt.md (1311b), skill-card.md (2192b), skill.manifest.json (206b), SKILL.md (10366b), templates/transition-plan.template.json (2168b), _meta.json (142b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: visual-transition-reel\ndescription: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\nlicense: MIT\nmetadata:\n  version: \"1.0.11\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video` | Use when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `stable-audio-2.5` | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | `npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **every reply**, name `` `visual-transition-reel` `` in backticks. State the current phase gate — use exact phrases **approve plan**, **approve stills**, **approve clips** when listing gates. Do **not** same-turn plan + paid video. Skip-review / burn-credits → follow `generation-diversity` **Red flags**.\n\n## Skill boundary\n\nMontage with **transitions between composed video clips** — not a picture-book slideshow.\n\n**Redirect before intake:**\n\n- Picture-book / illustrated slideshow / Ken Burns story with narration → `` `illustrated-story-reel` ``\n- Cinematic multi-scene B-roll chapters (full `p-video` scenes) → `` `narrated-multi-scene` ``\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `illustrated-story-reel` | Use when someone wants a slideshow story with narration or music — picture-book illustrated frames with Ken Burns or gentle p-video motion. | `npx skills add PrunaAI/pruna-skills@illustrated-story-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `interactive-explainer` | Use when someone wants an educational explainer with a host and characters — history or science shorts with dialogue, not voiceover-only B-roll. | `npx skills add PrunaAI/pruna-skills@interactive-explainer -y` |\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, transition prompts, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end PNGs | **approve stills** |\n| **B — Video** | `clips/*.mp4` | **approve clips** |\n| **D — Bed** | Final after concat + optional bed | User accepts |\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Scene order (1…N)? What changes between beats (location, time, emotion)? |\n| **Per scene *i*** | **Start still** (`edit_prompt` or upload)? **End still** (`last_frame_edit_prompt`)? **Transition `video_prompt`** (OPEN/MID/CLOSE motion)? `duration_seconds`? |\n| **Continuity** | Per scene: **`chain_from_previous`** only when motion continues. Otherwise composed OPENING still + hard cut. |\n| **Stills source** | Generate via **`p-image`** hero + **`p-image-edit`**, or user-supplied photo pairs? |\n| **Format** | `aspect_ratio`; transition clips **`720p` / `1080p`**? |\n| **Global** | `style_bible`? `ritual_seed`? `frame_chain_mode` (`extract_last_frame` vs `parallel_vignettes`)? |\n| **Audio** | Native SFX only (default), optional `stable-audio-2.5` bed in post, or upgrade to triple + TTS? |\n| **Assembly** | Concat order; chain crossfade (~0.12–0.15s) vs hard cut (0)? Target total duration? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Anchor pairs + `video-prompting`\n\nStart/end stills and transition motion use **`video-prompting`** scene-anchor pairs — physically **reachable** end states; **same subject** in both plates (identity preserved). Craft OPEN/MID/CLOSE in transition prompts; still OPENING/CLOSING prefixes on `p-image-edit` plates per `image-prompting`.\n\n### Scene table (template)\n\n| `#` | Start (`image`) | End (`last_frame_image`) | Transition prompt | Duration | Chain? |\n|-----|-----------------|--------------------------|-------------------|----------|--------|\n| 1 | `edit_prompt` → still | `last_frame_edit_prompt` → still | OPEN/MID/CLOSE motion | 5s | no |\n| 2 | = scene 1 end *or* extract(clip 1) | end still | motion prompt | 4s | yes / no |\n\n## How the agent runs this\n\n1. Copy [templates/transition-plan.template.json](./templates/transition-plan.template.json) → fill from intake → **approve plan**.\n2. Hero → parallel start stills → parallel end stills → **approve stills**.\n3. Parallel (or sequential for extract-chain) `p-video` pair jobs → **approve clips**.\n4. ffmpeg concat ± per-join crossfade → optional bed.\n\n## Generation phases\n\n| Phase | Action |\n|-------|--------|\n| **stills** | Hero + start/end PNGs (default first stop) |\n| **video** | After stills approval — `p-video` pairs |\n| **assemble** | After clips approval — concat ± bed |\n\n## Workflow (after intake)\n\n### Phase 0 — Hero (`p-image`)\n\nOne approved anchor photo when generating a new image:\n\n1. **`p-image`** with `hero_prompt` + `style_bible` + ritual seed from `generation-diversity`\n2. Slop gate — approve before branching edits\n\nSkip when every scene uses **uploaded** start/end images.\n\n### Phase 1 — Start stills (`p-image-edit`, parallel)\n\nFor each scene without an uploaded start image:\n\n1. Upload hero URL to `/v1/files`\n2. **`p-image-edit`** with `edit_prompt` + hero in `images[]`\n3. Download → `{scene_id}.png`\n\nRun all start stills **in parallel** after hero exists (`pruna-api`).\n\n### Phase 2 — End stills (`p-image-edit`, parallel)\n\nFor each scene with `last_frame_edit_prompt`:\n\n1. Upload start still URL\n2. **`p-image-edit`** with `last_frame_edit_prompt` + start still in `images[]`\n3. Download → `{scene_id}_last.png`\n\nRun all end stills **in parallel** once start stills exist.\n\n### Phase 3 — Video (`p-video`)\n\n**Scene anchor pair** — one job per row (`duration` set, **no** `audio`):\n\n```json\n{\n  \"prompt\": \"OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"duration\": 5,\n  \"resolution\": \"720p\",\n  \"fps\": 24\n}\n```\n\n| `frame_chain_mode` | Start frame when `chain_from_previous: true` | Render order |\n|--------------------|----------------------------------------------|--------------|\n| **`extract_last_frame`** | ffmpeg last frame from prior clip | Sequential for chained scenes |\n| **`parallel_vignettes`** | always composed start still | Parallel (montage / hard cuts) |\n| **`planned_stills`** | prior scene end still URL | Parallel once all stills exist |\n\nExtract last frame when chaining:\n\n```bash\nffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png\n```\n\nPoll all `get_url` until done; retry failed scenes only.\n\n### Phase 4 — Review\n\nAdjust transition prompt, stills, or duration; re-run **that scene only**.\n\n### Phase 5 — Assembly\n\n1. **Normalize** clip audio (48 kHz stereo) if concat fails on mixed formats\n2. **Concat** — hard cuts:\n\n```bash\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4\n```\n\nPer-join **crossfade** (~0.12–0.15s) on chain joins — use `xfade` (video) + `acrossfade` (audio); hard-cut joins stay at 0.\n\n3. **Optional bed** — `stable-audio-2.5` under native SFX (`amix`, bed ~0.10–0.15)\n\n### Phase 6 — Manifest\n\nScene table + start/end URLs + prediction ids + `chain_from_previous` flags.\n\n## Transition prompt shape\n\nWrite **`video_prompt`** as motion between the two plates — not a repeat of the still descriptions:\n\n```text\nOPEN: [what holds at start frame]\nMID: [camera + subject motion developing]\nCLOSE: [how motion settles into end frame]\n```\n\n**Limits:** prefer 4–5s beats; avoid extreme camera whips; start/end plates should differ clearly but share identity and lighting.\n\n## When to chain vs hard cut\n\n| Use **`chain_from_previous: true`** | Use **`chain_from_previous: false`** |\n|-------------------------------------|--------------------------------------|\n| Same location, motion continues | New location or story beat |\n| Subject mid-action into next beat | Emotional pause or time jump |\n| You will **`extract_last_frame`** from prior clip | Montage vignettes (`parallel_vignettes`) |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `image-to-video` | Use when someone wants one short film beat from images — a narrated scene, story moment, or cinematic B-roll with optional voiceover. | `npx skills add PrunaAI/pruna-skills@image-to-video -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.11:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"visual-transition-reel\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1788444786590\n}\n\nFile v1.0.11:example-prompt.md\n\n# Scene transition video\n\nBuild smooth multi-scene reels: **`p-image`** hero → **`p-image-edit`** start/end stills → **`p-video`** transition between **`image`** and **`last_frame_image`**.\n\n## Quick start prompt\n\n> Use the **visual-transition-reel** workflow. Three-beat cyberpunk alley reel: wide alley → stair climb (chain from prior) → rooftop hard cut. Generate hero with **p-image**, branch start/end stills with **p-image-edit**, render each beat with **p-video** using OPEN/MID/CLOSE transition prompts and 4–5s duration. Chain scene 2 from the prior last frame; hard cut before rooftop. Concat with 0.15s crossfade on chain joins. 16:9, 720p.\n\n## Copy plan template\n\n```bash\nmkdir -p output/visual-transition-reel/my-transitions/{stills,clips}\ncp skills/workflows/visual-transition-reel/templates/transition-plan.template.json \\\n   output/visual-transition-reel/my-transitions/plan.json\n```\n\nEdit scene `edit_prompt`, `last_frame_edit_prompt`, and `video_prompt` rows, then follow the phase table in `this skill` (agent runs curl + ffmpeg — no Python runner).\n\n## Install\n\n```bash\nnpx skills add PrunaAI/pruna-skills@visual-transition-reel -y\n# or: npx skills add PrunaAI/pruna-skills@pruna -y\n```\n\n## Related\n\n- Visual-only spec: `video-prompting`\n- With narration: `narrated-multi-scene`\n\nFile v1.0.11:skill-card.md\n\n## Description:\n\nUse when someone wants a montage with transitions between shots - an action-sequence reel or multi-scene piece where narration is optional.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and creative operators use this skill to plan, generate, review, and assemble multi-scene transition reels from start/end still pairs, optional user images, and generated video clips.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The unpinned `npx skills add` install path may resolve to a moving Pruna skill release.\n\nMitigation: Install only from the server-resolved `pruna-ai` publisher profile and review the selected release before use.\n\nRisk: Selected input images are uploaded to the generation service during still and video creation.\n\nMitigation: Use only images approved for third-party processing and avoid sensitive or restricted media.\n\nRisk: Paid video generation can consume credits if review gates are skipped.\n\nMitigation: Require the documented approve plan, approve stills, and approve clips gates before generating or assembling final media.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/visual-transition-reel)\n- [Example prompt](artifact/example-prompt.md)\n- [Transition plan template](artifact/templates/transition-plan.template.json)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, markdown, configuration, shell commands, code]\n\n**Output Format:** [Markdown guidance with JSON plan data and shell command snippets.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Coordinates local still, clip, plan, and assembled video files with explicit approval gates before paid video generation.]\n\n## Skill Version(s):\n\n1.0.11 (source: server release evidence and artifact metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.11:skill.manifest.json\n\n{\n  \"references\": [],\n  \"templates\": [\n    \"transition-plan.template.json\"\n  ],\n  \"generation_phases\": {\n    \"default\": \"stills\",\n    \"phases\": [\n      \"stills\",\n      \"video\",\n      \"assemble\"\n    ]\n  }\n}\n\nFile v1.0.11:templates/transition-plan.template.json\n\n{\n  \"title\": \"Neon alley transition reel\",\n  \"hero_prompt\": \"Cinematic cyberpunk figure in magenta-cyan neon alley, wet pavement reflections, single subject centered, 16:9 one frame, photoreal cinematic still\",\n  \"ritual_seed\": \"k7Qm2xP9\",\n  \"frame_chain_mode\": \"extract_last_frame\",\n  \"assembly\": {\n    \"chain_crossfade_seconds\": 0.15,\n    \"hard_cut_crossfade_seconds\": 0\n  },\n  \"defaults\": {\n    \"resolution\": \"720p\",\n    \"fps\": 24,\n    \"aspect_ratio\": \"16:9\",\n    \"duration_seconds\": 5\n  },\n  \"style_bible\": \"Neon magenta and cyan, wet pavement reflections, cinematic 16:9, consistent subject identity\",\n  \"background_music\": {\n    \"enabled\": false,\n    \"model\": \"stability-ai/stable-audio-2.5\",\n    \"volume\": 0.12,\n    \"prompt\": \"Ambient synthwave bed, pulsing bass, no vocals, 90 BPM\"\n  },\n  \"scenes\": [\n    {\n      \"id\": \"01_alley_wide\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Wide alley, figure small in frame, neon kanji signs, rain-slick ground\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same alley, figure closer mid-walk, hand on railing, neon rim light\",\n      \"video_prompt\": \"OPEN: hold wide composition. MID: slow dolly in, figure walks toward camera. CLOSE: settle on end pose at railing.\"\n    },\n    {\n      \"id\": \"02_stair_climb\",\n      \"chain_from_previous\": true,\n      \"duration_seconds\": 4,\n      \"edit_prompt\": \"OPENING: Figure at base of fire escape stairs, looking up, neon spill from above\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same figure mid-climb, three steps up, hand on rail, city bokeh behind\",\n      \"video_prompt\": \"OPEN: pause at stair base. MID: figure mounts stairs with purpose. CLOSE: hold mid-climb end pose.\"\n    },\n    {\n      \"id\": \"03_rooftop\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Rooftop edge, figure silhouetted against city sprawl, wind in coat\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same rooftop, figure turns three-quarter toward camera, skyline gold edge light\",\n      \"video_prompt\": \"OPEN: wind ripples coat. MID: slow turn toward lens. CLOSE: hold three-quarter hero pose.\"\n    }\n  ]\n}\n\nArchive v1.0.10: 6 files, 7663 bytes\n\nFiles: example-prompt.md (1311b), skill-card.md (2072b), skill.manifest.json (206b), SKILL.md (10366b), templates/transition-plan.template.json (2168b), _meta.json (142b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: visual-transition-reel\ndescription: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\nlicense: MIT\nmetadata:\n  version: \"1.0.10\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video` | Use when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `stable-audio-2.5` | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | `npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **every reply**, name `` `visual-transition-reel` `` in backticks. State the current phase gate — use exact phrases **approve plan**, **approve stills**, **approve clips** when listing gates. Do **not** same-turn plan + paid video. Skip-review / burn-credits → follow `generation-diversity` **Red flags**.\n\n## Skill boundary\n\nMontage with **transitions between composed video clips** — not a picture-book slideshow.\n\n**Redirect before intake:**\n\n- Picture-book / illustrated slideshow / Ken Burns story with narration → `` `illustrated-story-reel` ``\n- Cinematic multi-scene B-roll chapters (full `p-video` scenes) → `` `narrated-multi-scene` ``\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `illustrated-story-reel` | Use when someone wants a slideshow story with narration or music — picture-book illustrated frames with Ken Burns or gentle p-video motion. | `npx skills add PrunaAI/pruna-skills@illustrated-story-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `interactive-explainer` | Use when someone wants an educational explainer with a host and characters — history or science shorts with dialogue, not voiceover-only B-roll. | `npx skills add PrunaAI/pruna-skills@interactive-explainer -y` |\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, transition prompts, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end PNGs | **approve stills** |\n| **B — Video** | `clips/*.mp4` | **approve clips** |\n| **D — Bed** | Final after concat + optional bed | User accepts |\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Scene order (1…N)? What changes between beats (location, time, emotion)? |\n| **Per scene *i*** | **Start still** (`edit_prompt` or upload)? **End still** (`last_frame_edit_prompt`)? **Transition `video_prompt`** (OPEN/MID/CLOSE motion)? `duration_seconds`? |\n| **Continuity** | Per scene: **`chain_from_previous`** only when motion continues. Otherwise composed OPENING still + hard cut. |\n| **Stills source** | Generate via **`p-image`** hero + **`p-image-edit`**, or user-supplied photo pairs? |\n| **Format** | `aspect_ratio`; transition clips **`720p` / `1080p`**? |\n| **Global** | `style_bible`? `ritual_seed`? `frame_chain_mode` (`extract_last_frame` vs `parallel_vignettes`)? |\n| **Audio** | Native SFX only (default), optional `stable-audio-2.5` bed in post, or upgrade to triple + TTS? |\n| **Assembly** | Concat order; chain crossfade (~0.12–0.15s) vs hard cut (0)? Target total duration? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Anchor pairs + `video-prompting`\n\nStart/end stills and transition motion use **`video-prompting`** scene-anchor pairs — physically **reachable** end states; **same subject** in both plates (identity preserved). Craft OPEN/MID/CLOSE in transition prompts; still OPENING/CLOSING prefixes on `p-image-edit` plates per `image-prompting`.\n\n### Scene table (template)\n\n| `#` | Start (`image`) | End (`last_frame_image`) | Transition prompt | Duration | Chain? |\n|-----|-----------------|--------------------------|-------------------|----------|--------|\n| 1 | `edit_prompt` → still | `last_frame_edit_prompt` → still | OPEN/MID/CLOSE motion | 5s | no |\n| 2 | = scene 1 end *or* extract(clip 1) | end still | motion prompt | 4s | yes / no |\n\n## How the agent runs this\n\n1. Copy [templates/transition-plan.template.json](./templates/transition-plan.template.json) → fill from intake → **approve plan**.\n2. Hero → parallel start stills → parallel end stills → **approve stills**.\n3. Parallel (or sequential for extract-chain) `p-video` pair jobs → **approve clips**.\n4. ffmpeg concat ± per-join crossfade → optional bed.\n\n## Generation phases\n\n| Phase | Action |\n|-------|--------|\n| **stills** | Hero + start/end PNGs (default first stop) |\n| **video** | After stills approval — `p-video` pairs |\n| **assemble** | After clips approval — concat ± bed |\n\n## Workflow (after intake)\n\n### Phase 0 — Hero (`p-image`)\n\nOne approved anchor photo when generating a new image:\n\n1. **`p-image`** with `hero_prompt` + `style_bible` + ritual seed from `generation-diversity`\n2. Slop gate — approve before branching edits\n\nSkip when every scene uses **uploaded** start/end images.\n\n### Phase 1 — Start stills (`p-image-edit`, parallel)\n\nFor each scene without an uploaded start image:\n\n1. Upload hero URL to `/v1/files`\n2. **`p-image-edit`** with `edit_prompt` + hero in `images[]`\n3. Download → `{scene_id}.png`\n\nRun all start stills **in parallel** after hero exists (`pruna-api`).\n\n### Phase 2 — End stills (`p-image-edit`, parallel)\n\nFor each scene with `last_frame_edit_prompt`:\n\n1. Upload start still URL\n2. **`p-image-edit`** with `last_frame_edit_prompt` + start still in `images[]`\n3. Download → `{scene_id}_last.png`\n\nRun all end stills **in parallel** once start stills exist.\n\n### Phase 3 — Video (`p-video`)\n\n**Scene anchor pair** — one job per row (`duration` set, **no** `audio`):\n\n```json\n{\n  \"prompt\": \"OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"duration\": 5,\n  \"resolution\": \"720p\",\n  \"fps\": 24\n}\n```\n\n| `frame_chain_mode` | Start frame when `chain_from_previous: true` | Render order |\n|--------------------|----------------------------------------------|--------------|\n| **`extract_last_frame`** | ffmpeg last frame from prior clip | Sequential for chained scenes |\n| **`parallel_vignettes`** | always composed start still | Parallel (montage / hard cuts) |\n| **`planned_stills`** | prior scene end still URL | Parallel once all stills exist |\n\nExtract last frame when chaining:\n\n```bash\nffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png\n```\n\nPoll all `get_url` until done; retry failed scenes only.\n\n### Phase 4 — Review\n\nAdjust transition prompt, stills, or duration; re-run **that scene only**.\n\n### Phase 5 — Assembly\n\n1. **Normalize** clip audio (48 kHz stereo) if concat fails on mixed formats\n2. **Concat** — hard cuts:\n\n```bash\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4\n```\n\nPer-join **crossfade** (~0.12–0.15s) on chain joins — use `xfade` (video) + `acrossfade` (audio); hard-cut joins stay at 0.\n\n3. **Optional bed** — `stable-audio-2.5` under native SFX (`amix`, bed ~0.10–0.15)\n\n### Phase 6 — Manifest\n\nScene table + start/end URLs + prediction ids + `chain_from_previous` flags.\n\n## Transition prompt shape\n\nWrite **`video_prompt`** as motion between the two plates — not a repeat of the still descriptions:\n\n```text\nOPEN: [what holds at start frame]\nMID: [camera + subject motion developing]\nCLOSE: [how motion settles into end frame]\n```\n\n**Limits:** prefer 4–5s beats; avoid extreme camera whips; start/end plates should differ clearly but share identity and lighting.\n\n## When to chain vs hard cut\n\n| Use **`chain_from_previous: true`** | Use **`chain_from_previous: false`** |\n|-------------------------------------|--------------------------------------|\n| Same location, motion continues | New location or story beat |\n| Subject mid-action into next beat | Emotional pause or time jump |\n| You will **`extract_last_frame`** from prior clip | Montage vignettes (`parallel_vignettes`) |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `image-to-video` | Use when someone wants one short film beat from images — a narrated scene, story moment, or cinematic B-roll with optional voiceover. | `npx skills add PrunaAI/pruna-skills@image-to-video -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"visual-transition-reel\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1787903933781\n}\n\nFile v1.0.10:example-prompt.md\n\n# Scene transition video\n\nBuild smooth multi-scene reels: **`p-image`** hero → **`p-image-edit`** start/end stills → **`p-video`** transition between **`image`** and **`last_frame_image`**.\n\n## Quick start prompt\n\n> Use the **visual-transition-reel** workflow. Three-beat cyberpunk alley reel: wide alley → stair climb (chain from prior) → rooftop hard cut. Generate hero with **p-image**, branch start/end stills with **p-image-edit**, render each beat with **p-video** using OPEN/MID/CLOSE transition prompts and 4–5s duration. Chain scene 2 from the prior last frame; hard cut before rooftop. Concat with 0.15s crossfade on chain joins. 16:9, 720p.\n\n## Copy plan template\n\n```bash\nmkdir -p output/visual-transition-reel/my-transitions/{stills,clips}\ncp skills/workflows/visual-transition-reel/templates/transition-plan.template.json \\\n   output/visual-transition-reel/my-transitions/plan.json\n```\n\nEdit scene `edit_prompt`, `last_frame_edit_prompt`, and `video_prompt` rows, then follow the phase table in `this skill` (agent runs curl + ffmpeg — no Python runner).\n\n## Install\n\n```bash\nnpx skills add PrunaAI/pruna-skills@visual-transition-reel -y\n# or: npx skills add PrunaAI/pruna-skills@pruna -y\n```\n\n## Related\n\n- Visual-only spec: `video-prompting`\n- With narration: `narrated-multi-scene`\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nUse when someone wants a montage with transitions between shots - action-sequence reel or multi-scene piece where narration is optional.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and creators use this skill to plan, generate, review, and assemble visual transition reels from hero imagery, start and end stills, paired image-to-video clips, and optional background music.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow can upload supplied or generated images to provider file and video APIs.\n\nMitigation: Review dependent skills and provide only media that is acceptable to send to those services.\n\nRisk: The workflow can spend generation credits after approval gates.\n\nMitigation: Require plan, stills, and clips approval before paid video generation or assembly steps.\n\nRisk: The workflow may install additional Pruna skills as dependencies.\n\nMitigation: Review the dependent skills before installation and deployment.\n\n## Reference(s):\n\n- [ClawHub release page](https://clawhub.ai/pruna-ai/skills/visual-transition-reel)\n- [Example prompt](artifact/example-prompt.md)\n- [Transition plan template](artifact/templates/transition-plan.template.json)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, configuration, shell commands, guidance]\n\n**Output Format:** [Markdown guidance with JSON plan templates and inline shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides phased generation of stills, video clips, review gates, ffmpeg assembly, and a final scene manifest.]\n\n## Skill Version(s):\n\n1.0.10 (source: server release metadata and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.10:skill.manifest.json\n\n{\n  \"references\": [],\n  \"templates\": [\n    \"transition-plan.template.json\"\n  ],\n  \"generation_phases\": {\n    \"default\": \"stills\",\n    \"phases\": [\n      \"stills\",\n      \"video\",\n      \"assemble\"\n    ]\n  }\n}\n\nFile v1.0.10:templates/transition-plan.template.json\n\n{\n  \"title\": \"Neon alley transition reel\",\n  \"hero_prompt\": \"Cinematic cyberpunk figure in magenta-cyan neon alley, wet pavement reflections, single subject centered, 16:9 one frame, photoreal cinematic still\",\n  \"ritual_seed\": \"k7Qm2xP9\",\n  \"frame_chain_mode\": \"extract_last_frame\",\n  \"assembly\": {\n    \"chain_crossfade_seconds\": 0.15,\n    \"hard_cut_crossfade_seconds\": 0\n  },\n  \"defaults\": {\n    \"resolution\": \"720p\",\n    \"fps\": 24,\n    \"aspect_ratio\": \"16:9\",\n    \"duration_seconds\": 5\n  },\n  \"style_bible\": \"Neon magenta and cyan, wet pavement reflections, cinematic 16:9, consistent subject identity\",\n  \"background_music\": {\n    \"enabled\": false,\n    \"model\": \"stability-ai/stable-audio-2.5\",\n    \"volume\": 0.12,\n    \"prompt\": \"Ambient synthwave bed, pulsing bass, no vocals, 90 BPM\"\n  },\n  \"scenes\": [\n    {\n      \"id\": \"01_alley_wide\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Wide alley, figure small in frame, neon kanji signs, rain-slick ground\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same alley, figure closer mid-walk, hand on railing, neon rim light\",\n      \"video_prompt\": \"OPEN: hold wide composition. MID: slow dolly in, figure walks toward camera. CLOSE: settle on end pose at railing.\"\n    },\n    {\n      \"id\": \"02_stair_climb\",\n      \"chain_from_previous\": true,\n      \"duration_seconds\": 4,\n      \"edit_prompt\": \"OPENING: Figure at base of fire escape stairs, looking up, neon spill from above\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same figure mid-climb, three steps up, hand on rail, city bokeh behind\",\n      \"video_prompt\": \"OPEN: pause at stair base. MID: figure mounts stairs with purpose. CLOSE: hold mid-climb end pose.\"\n    },\n    {\n      \"id\": \"03_rooftop\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Rooftop edge, figure silhouetted against city sprawl, wind in coat\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same rooftop, figure turns three-quarter toward camera, skyline gold edge light\",\n      \"video_prompt\": \"OPEN: wind ripples coat. MID: slow turn toward lens. CLOSE: hold three-quarter hero pose.\"\n    }\n  ]\n}\n\nArchive v1.0.9: 6 files, 7705 bytes\n\nFiles: example-prompt.md (1311b), skill-card.md (2208b), skill.manifest.json (206b), SKILL.md (10365b), templates/transition-plan.template.json (2168b), _meta.json (141b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: visual-transition-reel\ndescription: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\nlicense: MIT\nmetadata:\n  version: \"1.0.9\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video` | Use when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `stable-audio-2.5` | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | `npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **every reply**, name `` `visual-transition-reel` `` in backticks. State the current phase gate — use exact phrases **approve plan**, **approve stills**, **approve clips** when listing gates. Do **not** same-turn plan + paid video. Skip-review / burn-credits → follow `generation-diversity` **Red flags**.\n\n## Skill boundary\n\nMontage with **transitions between composed video clips** — not a picture-book slideshow.\n\n**Redirect before intake:**\n\n- Picture-book / illustrated slideshow / Ken Burns story with narration → `` `illustrated-story-reel` ``\n- Cinematic multi-scene B-roll chapters (full `p-video` scenes) → `` `narrated-multi-scene` ``\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `illustrated-story-reel` | Use when someone wants a slideshow story with narration or music — picture-book illustrated frames with Ken Burns or gentle p-video motion. | `npx skills add PrunaAI/pruna-skills@illustrated-story-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `interactive-explainer` | Use when someone wants an educational explainer with a host and characters — history or science shorts with dialogue, not voiceover-only B-roll. | `npx skills add PrunaAI/pruna-skills@interactive-explainer -y` |\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, transition prompts, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end PNGs | **approve stills** |\n| **B — Video** | `clips/*.mp4` | **approve clips** |\n| **D — Bed** | Final after concat + optional bed | User accepts |\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Scene order (1…N)? What changes between beats (location, time, emotion)? |\n| **Per scene *i*** | **Start still** (`edit_prompt` or upload)? **End still** (`last_frame_edit_prompt`)? **Transition `video_prompt`** (OPEN/MID/CLOSE motion)? `duration_seconds`? |\n| **Continuity** | Per scene: **`chain_from_previous`** only when motion continues. Otherwise composed OPENING still + hard cut. |\n| **Stills source** | Generate via **`p-image`** hero + **`p-image-edit`**, or user-supplied photo pairs? |\n| **Format** | `aspect_ratio`; transition clips **`720p` / `1080p`**? |\n| **Global** | `style_bible`? `ritual_seed`? `frame_chain_mode` (`extract_last_frame` vs `parallel_vignettes`)? |\n| **Audio** | Native SFX only (default), optional `stable-audio-2.5` bed in post, or upgrade to triple + TTS? |\n| **Assembly** | Concat order; chain crossfade (~0.12–0.15s) vs hard cut (0)? Target total duration? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Anchor pairs + `video-prompting`\n\nStart/end stills and transition motion use **`video-prompting`** scene-anchor pairs — physically **reachable** end states; **same subject** in both plates (identity preserved). Craft OPEN/MID/CLOSE in transition prompts; still OPENING/CLOSING prefixes on `p-image-edit` plates per `image-prompting`.\n\n### Scene table (template)\n\n| `#` | Start (`image`) | End (`last_frame_image`) | Transition prompt | Duration | Chain? |\n|-----|-----------------|--------------------------|-------------------|----------|--------|\n| 1 | `edit_prompt` → still | `last_frame_edit_prompt` → still | OPEN/MID/CLOSE motion | 5s | no |\n| 2 | = scene 1 end *or* extract(clip 1) | end still | motion prompt | 4s | yes / no |\n\n## How the agent runs this\n\n1. Copy [templates/transition-plan.template.json](./templates/transition-plan.template.json) → fill from intake → **approve plan**.\n2. Hero → parallel start stills → parallel end stills → **approve stills**.\n3. Parallel (or sequential for extract-chain) `p-video` pair jobs → **approve clips**.\n4. ffmpeg concat ± per-join crossfade → optional bed.\n\n## Generation phases\n\n| Phase | Action |\n|-------|--------|\n| **stills** | Hero + start/end PNGs (default first stop) |\n| **video** | After stills approval — `p-video` pairs |\n| **assemble** | After clips approval — concat ± bed |\n\n## Workflow (after intake)\n\n### Phase 0 — Hero (`p-image`)\n\nOne approved anchor photo when generating a new image:\n\n1. **`p-image`** with `hero_prompt` + `style_bible` + ritual seed from `generation-diversity`\n2. Slop gate — approve before branching edits\n\nSkip when every scene uses **uploaded** start/end images.\n\n### Phase 1 — Start stills (`p-image-edit`, parallel)\n\nFor each scene without an uploaded start image:\n\n1. Upload hero URL to `/v1/files`\n2. **`p-image-edit`** with `edit_prompt` + hero in `images[]`\n3. Download → `{scene_id}.png`\n\nRun all start stills **in parallel** after hero exists (`pruna-api`).\n\n### Phase 2 — End stills (`p-image-edit`, parallel)\n\nFor each scene with `last_frame_edit_prompt`:\n\n1. Upload start still URL\n2. **`p-image-edit`** with `last_frame_edit_prompt` + start still in `images[]`\n3. Download → `{scene_id}_last.png`\n\nRun all end stills **in parallel** once start stills exist.\n\n### Phase 3 — Video (`p-video`)\n\n**Scene anchor pair** — one job per row (`duration` set, **no** `audio`):\n\n```json\n{\n  \"prompt\": \"OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"duration\": 5,\n  \"resolution\": \"720p\",\n  \"fps\": 24\n}\n```\n\n| `frame_chain_mode` | Start frame when `chain_from_previous: true` | Render order |\n|--------------------|----------------------------------------------|--------------|\n| **`extract_last_frame`** | ffmpeg last frame from prior clip | Sequential for chained scenes |\n| **`parallel_vignettes`** | always composed start still | Parallel (montage / hard cuts) |\n| **`planned_stills`** | prior scene end still URL | Parallel once all stills exist |\n\nExtract last frame when chaining:\n\n```bash\nffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png\n```\n\nPoll all `get_url` until done; retry failed scenes only.\n\n### Phase 4 — Review\n\nAdjust transition prompt, stills, or duration; re-run **that scene only**.\n\n### Phase 5 — Assembly\n\n1. **Normalize** clip audio (48 kHz stereo) if concat fails on mixed formats\n2. **Concat** — hard cuts:\n\n```bash\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4\n```\n\nPer-join **crossfade** (~0.12–0.15s) on chain joins — use `xfade` (video) + `acrossfade` (audio); hard-cut joins stay at 0.\n\n3. **Optional bed** — `stable-audio-2.5` under native SFX (`amix`, bed ~0.10–0.15)\n\n### Phase 6 — Manifest\n\nScene table + start/end URLs + prediction ids + `chain_from_previous` flags.\n\n## Transition prompt shape\n\nWrite **`video_prompt`** as motion between the two plates — not a repeat of the still descriptions:\n\n```text\nOPEN: [what holds at start frame]\nMID: [camera + subject motion developing]\nCLOSE: [how motion settles into end frame]\n```\n\n**Limits:** prefer 4–5s beats; avoid extreme camera whips; start/end plates should differ clearly but share identity and lighting.\n\n## When to chain vs hard cut\n\n| Use **`chain_from_previous: true`** | Use **`chain_from_previous: false`** |\n|-------------------------------------|--------------------------------------|\n| Same location, motion continues | New location or story beat |\n| Subject mid-action into next beat | Emotional pause or time jump |\n| You will **`extract_last_frame`** from prior clip | Montage vignettes (`parallel_vignettes`) |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `image-to-video` | Use when someone wants one short film beat from images — a narrated scene, story moment, or cinematic B-roll with optional voiceover. | `npx skills add PrunaAI/pruna-skills@image-to-video -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"visual-transition-reel\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1785824345059\n}\n\nFile v1.0.9:example-prompt.md\n\n# Scene transition video\n\nBuild smooth multi-scene reels: **`p-image`** hero → **`p-image-edit`** start/end stills → **`p-video`** transition between **`image`** and **`last_frame_image`**.\n\n## Quick start prompt\n\n> Use the **visual-transition-reel** workflow. Three-beat cyberpunk alley reel: wide alley → stair climb (chain from prior) → rooftop hard cut. Generate hero with **p-image**, branch start/end stills with **p-image-edit**, render each beat with **p-video** using OPEN/MID/CLOSE transition prompts and 4–5s duration. Chain scene 2 from the prior last frame; hard cut before rooftop. Concat with 0.15s crossfade on chain joins. 16:9, 720p.\n\n## Copy plan template\n\n```bash\nmkdir -p output/visual-transition-reel/my-transitions/{stills,clips}\ncp skills/workflows/visual-transition-reel/templates/transition-plan.template.json \\\n   output/visual-transition-reel/my-transitions/plan.json\n```\n\nEdit scene `edit_prompt`, `last_frame_edit_prompt`, and `video_prompt` rows, then follow the phase table in `this skill` (agent runs curl + ffmpeg — no Python runner).\n\n## Install\n\n```bash\nnpx skills add PrunaAI/pruna-skills@visual-transition-reel -y\n# or: npx skills add PrunaAI/pruna-skills@pruna -y\n```\n\n## Related\n\n- Visual-only spec: `video-prompting`\n- With narration: `narrated-multi-scene`\n\nFile v1.0.9:skill-card.md\n\n## Description: <br>\nGuides an agent through planning, generating, reviewing, and assembling a montage with transitions between composed video clips. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[pruna-ai](https://clawhub.ai/user/pruna-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal creators, developers, and media teams use this skill to create multi-shot transition reels by planning scene anchors, generating start and end stills, rendering image-to-video transition clips, and assembling the final reel with optional background music. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Source or generated images may be sent to referenced Pruna generation services. <br>\nMitigation: Use the skill only with images that are approved for those services, and review the plan and stills before continuing. <br>\nRisk: Video generation and final assembly can spend credits and write PNG or MP4 files into the workspace. <br>\nMitigation: Require the documented approve plan, approve stills, and approve clips gates before paid generation or assembly. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/visual-transition-reel) <br>\n- [Example prompt](artifact/example-prompt.md) <br>\n- [Transition plan template](artifact/templates/transition-plan.template.json) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with JSON plan templates and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces staged plans, review gates, generation prompts, local PNG and MP4 outputs, ffmpeg assembly commands, and a final reel manifest.] <br>\n\n## Skill Version(s): <br>\n1.0.9 (source: server release evidence and frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.9:skill.manifest.json\n\n{\n  \"references\": [],\n  \"templates\": [\n    \"transition-plan.template.json\"\n  ],\n  \"generation_phases\": {\n    \"default\": \"stills\",\n    \"phases\": [\n      \"stills\",\n      \"video\",\n      \"assemble\"\n    ]\n  }\n}\n\nFile v1.0.9:templates/transition-plan.template.json\n\n{\n  \"title\": \"Neon alley transition reel\",\n  \"hero_prompt\": \"Cinematic cyberpunk figure in magenta-cyan neon alley, wet pavement reflections, single subject centered, 16:9 one frame, photoreal cinematic still\",\n  \"ritual_seed\": \"k7Qm2xP9\",\n  \"frame_chain_mode\": \"extract_last_frame\",\n  \"assembly\": {\n    \"chain_crossfade_seconds\": 0.15,\n    \"hard_cut_crossfade_seconds\": 0\n  },\n  \"defaults\": {\n    \"resolution\": \"720p\",\n    \"fps\": 24,\n    \"aspect_ratio\": \"16:9\",\n    \"duration_seconds\": 5\n  },\n  \"style_bible\": \"Neon magenta and cyan, wet pavement reflections, cinematic 16:9, consistent subject identity\",\n  \"background_music\": {\n    \"enabled\": false,\n    \"model\": \"stability-ai/stable-audio-2.5\",\n    \"volume\": 0.12,\n    \"prompt\": \"Ambient synthwave bed, pulsing bass, no vocals, 90 BPM\"\n  },\n  \"scenes\": [\n    {\n      \"id\": \"01_alley_wide\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Wide alley, figure small in frame, neon kanji signs, rain-slick ground\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same alley, figure closer mid-walk, hand on railing, neon rim light\",\n      \"video_prompt\": \"OPEN: hold wide composition. MID: slow dolly in, figure walks toward camera. CLOSE: settle on end pose at railing.\"\n    },\n    {\n      \"id\": \"02_stair_climb\",\n      \"chain_from_previous\": true,\n      \"duration_seconds\": 4,\n      \"edit_prompt\": \"OPENING: Figure at base of fire escape stairs, looking up, neon spill from above\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same figure mid-climb, three steps up, hand on rail, city bokeh behind\",\n      \"video_prompt\": \"OPEN: pause at stair base. MID: figure mounts stairs with purpose. CLOSE: hold mid-climb end pose.\"\n    },\n    {\n      \"id\": \"03_rooftop\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Rooftop edge, figure silhouetted against city sprawl, wind in coat\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same rooftop, figure turns three-quarter toward camera, skyline gold edge light\",\n      \"video_prompt\": \"OPEN: wind ripples coat. MID: slow turn toward lens. CLOSE: hold three-quarter hero pose.\"\n    }\n  ]\n}\n\nArchive v1.0.8: 6 files, 7599 bytes\n\nFiles: example-prompt.md (1311b), skill-card.md (2064b), skill.manifest.json (206b), SKILL.md (10299b), templates/transition-plan.template.json (2168b), _meta.json (141b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: visual-transition-reel\ndescription: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\nlicense: MIT\nmetadata:\n  version: \"1.0.8\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image` | Use when someone wants a fast AI image — product shots, hero visuals, mood boards, or draft photos from a text prompt. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video` | Use when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `stable-audio-2.5` | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | `npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **every reply**, name `` `visual-transition-reel` `` in backticks. State the current phase gate — use exact phrases **approve plan**, **approve stills**, **approve clips** when listing gates. Do **not** same-turn plan + paid video. Skip-review / burn-credits → follow `generation-diversity` **Red flags**.\n\n## Skill boundary\n\nMontage with **transitions between composed video clips** — not a picture-book slideshow.\n\n**Redirect before intake:**\n\n- Picture-book / illustrated slideshow / Ken Burns story with narration → `` `illustrated-story-reel` ``\n- Cinematic multi-scene B-roll chapters (full `p-video` scenes) → `` `narrated-multi-scene` ``\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `illustrated-story-reel` | Use when someone wants a slideshow story with narration or music — picture-book illustrated frames with Ken Burns or gentle p-video motion. | `npx skills add PrunaAI/pruna-skills@illustrated-story-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `interactive-explainer` | Use when someone wants an educational explainer with a host and characters — history or science shorts with dialogue, not voiceover-only B-roll. | `npx skills add PrunaAI/pruna-skills@interactive-explainer -y` |\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, transition prompts, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end PNGs | **approve stills** |\n| **B — Video** | `clips/*.mp4` | **approve clips** |\n| **D — Bed** | Final after concat + optional bed | User accepts |\n\n## Intake: ask before generating\n\nOpen intake → **`generation-diversity`** clarification intake.\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Scene order (1…N)? What changes between beats (location, time, emotion)? |\n| **Per scene *i*** | **Start still** (`edit_prompt` or upload)? **End still** (`last_frame_edit_prompt`)? **Transition `video_prompt`** (OPEN/MID/CLOSE motion)? `duration_seconds`? |\n| **Continuity** | Per scene: **`chain_from_previous`** only when motion continues. Otherwise composed OPENING still + hard cut. |\n| **Stills source** | Generate via **`p-image`** hero + **`p-image-edit`**, or user-supplied photo pairs? |\n| **Format** | `aspect_ratio`; transition clips **`720p` / `1080p`**? |\n| **Global** | `style_bible`? `ritual_seed`? `frame_chain_mode` (`extract_last_frame` vs `parallel_vignettes`)? |\n| **Audio** | Native SFX only (default), optional `stable-audio-2.5` bed in post, or upgrade to triple + TTS? |\n| **Assembly** | Concat order; chain crossfade (~0.12–0.15s) vs hard cut (0)? Target total duration? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Anchor pairs + `video-prompting`\n\nStart/end stills and transition motion use **`video-prompting`** scene-anchor pairs — physically **reachable** end states; **same subject** in both plates (identity preserved). Craft OPEN/MID/CLOSE in transition prompts; still OPENING/CLOSING prefixes on `p-image-edit` plates per `image-prompting`.\n\n### Scene table (template)\n\n| `#` | Start (`image`) | End (`last_frame_image`) | Transition prompt | Duration | Chain? |\n|-----|-----------------|--------------------------|-------------------|----------|--------|\n| 1 | `edit_prompt` → still | `last_frame_edit_prompt` → still | OPEN/MID/CLOSE motion | 5s | no |\n| 2 | = scene 1 end *or* extract(clip 1) | end still | motion prompt | 4s | yes / no |\n\n## How the agent runs this\n\n1. Copy [templates/transition-plan.template.json](./templates/transition-plan.template.json) → fill from intake → **approve plan**.\n2. Hero → parallel start stills → parallel end stills → **approve stills**.\n3. Parallel (or sequential for extract-chain) `p-video` pair jobs → **approve clips**.\n4. ffmpeg concat ± per-join crossfade → optional bed.\n\n## Generation phases\n\n| Phase | Action |\n|-------|--------|\n| **stills** | Hero + start/end PNGs (default first stop) |\n| **video** | After stills approval — `p-video` pairs |\n| **assemble** | After clips approval — concat ± bed |\n\n## Workflow (after intake)\n\n### Phase 0 — Hero (`p-image`)\n\nOne approved anchor still when generating from text:\n\n1. **`p-image`** with `hero_prompt` + `style_bible` + ritual seed from `generation-diversity`\n2. Slop gate — approve before branching edits\n\nSkip when every scene uses **uploaded** start/end images.\n\n### Phase 1 — Start stills (`p-image-edit`, parallel)\n\nFor each scene without an uploaded start image:\n\n1. Upload hero URL to `/v1/files`\n2. **`p-image-edit`** with `edit_prompt` + hero in `images[]`\n3. Download → `{scene_id}.png`\n\nRun all start stills **in parallel** after hero exists (`pruna-api`).\n\n### Phase 2 — End stills (`p-image-edit`, parallel)\n\nFor each scene with `last_frame_edit_prompt`:\n\n1. Upload start still URL\n2. **`p-image-edit`** with `last_frame_edit_prompt` + start still in `images[]`\n3. Download → `{scene_id}_last.png`\n\nRun all end stills **in parallel** once start stills exist.\n\n### Phase 3 — Video (`p-video`)\n\n**Scene anchor pair** — one job per row (`duration` set, **no** `audio`):\n\n```json\n{\n  \"prompt\": \"OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"duration\": 5,\n  \"resolution\": \"720p\",\n  \"fps\": 24\n}\n```\n\n| `frame_chain_mode` | Start frame when `chain_from_previous: true` | Render order |\n|--------------------|----------------------------------------------|--------------|\n| **`extract_last_frame`** | ffmpeg last frame from prior clip | Sequential for chained scenes |\n| **`parallel_vignettes`** | always composed start still | Parallel (montage / hard cuts) |\n| **`planned_stills`** | prior scene end still URL | Parallel once all stills exist |\n\nExtract last frame when chaining:\n\n```bash\nffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png\n```\n\nPoll all `get_url` until done; retry failed scenes only.\n\n### Phase 4 — Review\n\nAdjust transition prompt, stills, or duration; re-run **that scene only**.\n\n### Phase 5 — Assembly\n\n1. **Normalize** clip audio (48 kHz stereo) if concat fails on mixed formats\n2. **Concat** — hard cuts:\n\n```bash\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4\n```\n\nPer-join **crossfade** (~0.12–0.15s) on chain joins — use `xfade` (video) + `acrossfade` (audio); hard-cut joins stay at 0.\n\n3. **Optional bed** — `stable-audio-2.5` under native SFX (`amix`, bed ~0.10–0.15)\n\n### Phase 6 — Manifest\n\nScene table + start/end URLs + prediction ids + `chain_from_previous` flags.\n\n## Transition prompt shape\n\nWrite **`video_prompt`** as motion between the two plates — not a repeat of the still descriptions:\n\n```text\nOPEN: [what holds at start frame]\nMID: [camera + subject motion developing]\nCLOSE: [how motion settles into end frame]\n```\n\n**Limits:** prefer 4–5s beats; avoid extreme camera whips; start/end plates should differ clearly but share identity and lighting.\n\n## When to chain vs hard cut\n\n| Use **`chain_from_previous: true`** | Use **`chain_from_previous: false`** |\n|-------------------------------------|--------------------------------------|\n| Same location, motion continues | New location or story beat |\n| Subject mid-action into next beat | Emotional pause or time jump |\n| You will **`extract_last_frame`** from prior clip | Montage vignettes (`parallel_vignettes`) |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `image-to-video` | Use when someone wants one short film beat from images — a narrated scene, story moment, or cinematic B-roll with optional voiceover. | `npx skills add PrunaAI/pruna-skills@image-to-video -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"visual-transition-reel\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1785259267434\n}\n\nFile v1.0.8:example-prompt.md\n\n# Scene transition video\n\nBuild smooth multi-scene reels: **`p-image`** hero → **`p-image-edit`** start/end stills → **`p-video`** transition between **`image`** and **`last_frame_image`**.\n\n## Quick start prompt\n\n> Use the **visual-transition-reel** workflow. Three-beat cyberpunk alley reel: wide alley → stair climb (chain from prior) → rooftop hard cut. Generate hero with **p-image**, branch start/end stills with **p-image-edit**, render each beat with **p-video** using OPEN/MID/CLOSE transition prompts and 4–5s duration. Chain scene 2 from the prior last frame; hard cut before rooftop. Concat with 0.15s crossfade on chain joins. 16:9, 720p.\n\n## Copy plan template\n\n```bash\nmkdir -p output/visual-transition-reel/my-transitions/{stills,clips}\ncp skills/workflows/visual-transition-reel/templates/transition-plan.template.json \\\n   output/visual-transition-reel/my-transitions/plan.json\n```\n\nEdit scene `edit_prompt`, `last_frame_edit_prompt`, and `video_prompt` rows, then follow the phase table in `this skill` (agent runs curl + ffmpeg — no Python runner).\n\n## Install\n\n```bash\nnpx skills add PrunaAI/pruna-skills@visual-transition-reel -y\n# or: npx skills add PrunaAI/pruna-skills@pruna -y\n```\n\n## Related\n\n- Visual-only spec: `video-prompting`\n- With narration: `narrated-multi-scene`\n\nFile v1.0.8:skill-card.md\n\n## Description: <br>\nUse when someone wants a montage with transitions between shots - action-sequence reel or multi-scene piece where narration is optional. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[pruna-ai](https://clawhub.ai/user/pruna-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nCreators and developers use this skill to plan and generate multi-scene transition reels, moving from an approved scene plan to still images, short transition clips, optional background music, and final assembly. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Uploaded reference images may be sent to media generation providers through companion skills. <br>\nMitigation: Confirm user consent and suitability before upload, and avoid sending sensitive images. <br>\nRisk: Video generation and related media steps can consume credits or incur cost. <br>\nMitigation: Keep the approve plan, approve stills, and approve clips gates before credit-consuming generation or assembly steps. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/visual-transition-reel) <br>\n- [Example prompt](example-prompt.md) <br>\n- [Transition plan template](templates/transition-plan.template.json) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Markdown, JSON configuration, Shell commands] <br>\n**Output Format:** [Markdown instructions with JSON plan templates and shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses approval gates before still generation, video generation, and clip assembly.] <br>\n\n## Skill Version(s): <br>\n1.0.8 (source: server release metadata and skill frontmatter metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.8:skill.manifest.json\n\n{\n  \"references\": [],\n  \"templates\": [\n    \"transition-plan.template.json\"\n  ],\n  \"generation_phases\": {\n    \"default\": \"stills\",\n    \"phases\": [\n      \"stills\",\n      \"video\",\n      \"assemble\"\n    ]\n  }\n}\n\nFile v1.0.8:templates/transition-plan.template.json\n\n{\n  \"title\": \"Neon alley transition reel\",\n  \"hero_prompt\": \"Cinematic cyberpunk figure in magenta-cyan neon alley, wet pavement reflections, single subject centered, 16:9 one frame, photoreal cinematic still\",\n  \"ritual_seed\": \"k7Qm2xP9\",\n  \"frame_chain_mode\": \"extract_last_frame\",\n  \"assembly\": {\n    \"chain_crossfade_seconds\": 0.15,\n    \"hard_cut_crossfade_seconds\": 0\n  },\n  \"defaults\": {\n    \"resolution\": \"720p\",\n    \"fps\": 24,\n    \"aspect_ratio\": \"16:9\",\n    \"duration_seconds\": 5\n  },\n  \"style_bible\": \"Neon magenta and cyan, wet pavement reflections, cinematic 16:9, consistent subject identity\",\n  \"background_music\": {\n    \"enabled\": false,\n    \"model\": \"stability-ai/stable-audio-2.5\",\n    \"volume\": 0.12,\n    \"prompt\": \"Ambient synthwave bed, pulsing bass, no vocals, 90 BPM\"\n  },\n  \"scenes\": [\n    {\n      \"id\": \"01_alley_wide\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Wide alley, figure small in frame, neon kanji signs, rain-slick ground\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same alley, figure closer mid-walk, hand on railing, neon rim light\",\n      \"video_prompt\": \"OPEN: hold wide composition. MID: slow dolly in, figure walks toward camera. CLOSE: settle on end pose at railing.\"\n    },\n    {\n      \"id\": \"02_stair_climb\",\n      \"chain_from_previous\": true,\n      \"duration_seconds\": 4,\n      \"edit_prompt\": \"OPENING: Figure at base of fire escape stairs, looking up, neon spill from above\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same figure mid-climb, three steps up, hand on rail, city bokeh behind\",\n      \"video_prompt\": \"OPEN: pause at stair base. MID: figure mounts stairs with purpose. CLOSE: hold mid-climb end pose.\"\n    },\n    {\n      \"id\": \"03_rooftop\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Rooftop edge, figure silhouetted against city sprawl, wind in coat\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same rooftop, figure turns three-quarter toward camera, skyline gold edge light\",\n      \"video_prompt\": \"OPEN: wind ripples coat. MID: slow turn toward lens. CLOSE: hold three-quarter hero pose.\"\n    }\n  ]\n}\n\nArchive v1.0.7: 6 files, 7641 bytes\n\nFiles: example-prompt.md (1321b), skill-card.md (2292b), skill.manifest.json (206b), SKILL.md (10177b), templates/transition-plan.template.json (2168b), _meta.json (141b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: visual-transition-reel\ndescription: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\nlicense: MIT\nmetadata:\n  version: \"1.0.7\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image` | Use when someone wants a fast AI image — product shots, hero visuals, mood boards, or draft photos from a text prompt. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video` | Use when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `stable-audio-2.5` | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | `npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **every reply**, name `` `visual-transition-reel` `` in backticks. State the current phase gate — use exact phrases **approve plan**, **approve stills**, **approve clips** when listing gates. Do **not** same-turn plan + paid video. Skip-review / burn-credits → follow `generation-diversity` **Red flags**.\n\n## Skill boundary\n\nMontage with **transitions between composed video clips** — not a picture-book slideshow.\n\n**Redirect before intake:**\n\n- Picture-book / illustrated slideshow / Ken Burns story with narration → `` `illustrated-story-reel` ``\n- Cinematic multi-scene B-roll chapters (full `p-video` scenes) → `` `narrated-multi-scene` ``\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `illustrated-story-reel` | Use when someone wants a slideshow story with narration or music — picture-book illustrated frames with Ken Burns or gentle p-video motion. | `npx skills add PrunaAI/pruna-skills@illustrated-story-reel -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `interactive-explainer` | Use when someone wants an educational explainer with a host and characters — history or science shorts with dialogue, not voiceover-only B-roll. | `npx skills add PrunaAI/pruna-skills@interactive-explainer -y` |\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, transition prompts, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end PNGs | **approve stills** |\n| **B — Video** | `clips/*.mp4` | **approve clips** |\n| **D — Bed** | Final after concat + optional bed | User accepts |\n\n## Intake: ask before generating\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Scene order (1…N)? What changes between beats (location, time, emotion)? |\n| **Per scene *i*** | **Start still** (`edit_prompt` or upload)? **End still** (`last_frame_edit_prompt`)? **Transition `video_prompt`** (OPEN/MID/CLOSE motion)? `duration_seconds`? |\n| **Continuity** | Per scene: **`chain_from_previous`** only when motion continues. Otherwise composed OPENING still + hard cut. |\n| **Stills source** | Generate via **`p-image`** hero + **`p-image-edit`**, or user-supplied photo pairs? |\n| **Global** | `style_bible`? `aspect_ratio`? `ritual_seed`? `frame_chain_mode` (`extract_last_frame` vs `parallel_vignettes`)? |\n| **Audio** | Native SFX only (default), optional `stable-audio-2.5` bed in post, or upgrade to triple + TTS? |\n| **Assembly** | Concat order; chain crossfade (~0.12–0.15s) vs hard cut (0)? Target total duration? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Anchor pairs + `video-prompting`\n\nStart/end stills and transition motion use **`video-prompting`** scene-anchor pairs — physically **reachable** end states; **same subject** in both plates (identity preserved). Craft OPEN/MID/CLOSE in transition prompts; still OPENING/CLOSING prefixes on `p-image-edit` plates per `image-prompting`.\n\n### Scene table (template)\n\n| `#` | Start (`image`) | End (`last_frame_image`) | Transition prompt | Duration | Chain? |\n|-----|-----------------|--------------------------|-------------------|----------|--------|\n| 1 | `edit_prompt` → still | `last_frame_edit_prompt` → still | OPEN/MID/CLOSE motion | 5s | no |\n| 2 | = scene 1 end *or* extract(clip 1) | end still | motion prompt | 4s | yes / no |\n\n## How the agent runs this\n\n1. Copy [templates/transition-plan.template.json](./templates/transition-plan.template.json) → fill from intake → **approve plan**.\n2. Hero → parallel start stills → parallel end stills → **approve stills**.\n3. Parallel (or sequential for extract-chain) `p-video` pair jobs → **approve clips**.\n4. ffmpeg concat ± per-join crossfade → optional bed.\n\n## Generation phases\n\n| Phase | Action |\n|-------|--------|\n| **stills** | Hero + start/end PNGs (default first stop) |\n| **video** | After stills approval — `p-video` pairs |\n| **assemble** | After clips approval — concat ± bed |\n\n## Workflow (after intake)\n\n### Phase 0 — Hero (`p-image`)\n\nOne approved anchor still when generating from text:\n\n1. **`p-image`** with `hero_prompt` + `style_bible` + ritual seed from `generation-diversity`\n2. Slop gate — approve before branching edits\n\nSkip when every scene uses **uploaded** start/end images.\n\n### Phase 1 — Start stills (`p-image-edit`, parallel)\n\nFor each scene without an uploaded start image:\n\n1. Upload hero URL to `/v1/files`\n2. **`p-image-edit`** with `edit_prompt` + hero in `images[]`\n3. Download → `{scene_id}.png`\n\nRun all start stills **in parallel** after hero exists (`pruna-api`).\n\n### Phase 2 — End stills (`p-image-edit`, parallel)\n\nFor each scene with `last_frame_edit_prompt`:\n\n1. Upload start still URL\n2. **`p-image-edit`** with `last_frame_edit_prompt` + start still in `images[]`\n3. Download → `{scene_id}_last.png`\n\nRun all end stills **in parallel** once start stills exist.\n\n### Phase 3 — Video (`p-video`)\n\n**Scene anchor pair** — one job per row (`duration` set, **no** `audio`):\n\n```json\n{\n  \"prompt\": \"OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"duration\": 5,\n  \"resolution\": \"720p\",\n  \"fps\": 24\n}\n```\n\n| `frame_chain_mode` | Start frame when `chain_from_previous: true` | Render order |\n|--------------------|----------------------------------------------|--------------|\n| **`extract_last_frame`** | ffmpeg last frame from prior clip | Sequential for chained scenes |\n| **`parallel_vignettes`** | always composed start still | Parallel (montage / hard cuts) |\n| **`planned_stills`** | prior scene end still URL | Parallel once all stills exist |\n\nExtract last frame when chaining:\n\n```bash\nffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png\n```\n\nPoll all `get_url` until done; retry failed scenes only.\n\n### Phase 4 — Review\n\nAdjust transition prompt, stills, or duration; re-run **that scene only**.\n\n### Phase 5 — Assembly\n\n1. **Normalize** clip audio (48 kHz stereo) if concat fails on mixed formats\n2. **Concat** — hard cuts:\n\n```bash\nffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4\n```\n\nPer-join **crossfade** (~0.12–0.15s) on chain joins — use `xfade` (video) + `acrossfade` (audio); hard-cut joins stay at 0.\n\n3. **Optional bed** — `stable-audio-2.5` under native SFX (`amix`, bed ~0.10–0.15)\n\n### Phase 6 — Manifest\n\nScene table + start/end URLs + prediction ids + `chain_from_previous` flags.\n\n## Transition prompt shape\n\nWrite **`video_prompt`** as motion between the two plates — not a repeat of the still descriptions:\n\n```text\nOPEN: [what holds at start frame]\nMID: [camera + subject motion developing]\nCLOSE: [how motion settles into end frame]\n```\n\n**Limits:** prefer 4–5s beats; avoid extreme camera whips; start/end plates should differ clearly but share identity and lighting.\n\n## When to chain vs hard cut\n\n| Use **`chain_from_previous: true`** | Use **`chain_from_previous: false`** |\n|-------------------------------------|--------------------------------------|\n| Same location, motion continues | New location or story beat |\n| Subject mid-action into next beat | Emotional pause or time jump |\n| You will **`extract_last_frame`** from prior clip | Montage vignettes (`parallel_vignettes`) |\n\n## Related\n\nRelated skills:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `image-to-video` | Use when someone wants one short film beat from images — a narrated scene, story moment, or cinematic B-roll with optional voiceover. | `npx skills add PrunaAI/pruna-skills@image-to-video -y` |\n| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"visual-transition-reel\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1784810174671\n}\n\nFile v1.0.7:example-prompt.md\n\n# Scene transition video\n\nBuild smooth multi-scene reels: **`p-image`** hero → **`p-image-edit`** start/end stills → **`p-video`** transition between **`image`** and **`last_frame_image`**.\n\n## Quick start prompt\n\n> Use the **visual-transition-reel** workflow. Three-beat cyberpunk alley reel: wide alley → stair climb (chain from prior) → rooftop hard cut. Generate hero with **p-image**, branch start/end stills with **p-image-edit**, render each beat with **p-video** using OPEN/MID/CLOSE transition prompts and 4–5s duration. Chain scene 2 from the prior last frame; hard cut before rooftop. Concat with 0.15s crossfade on chain joins. 16:9, 720p.\n\n## Copy plan template\n\n```bash\nmkdir -p output/core/visual-transition-reel/my-transitions/{stills,clips}\ncp skills/workflows/visual-transition-reel/templates/transition-plan.template.json \\\n   output/core/visual-transition-reel/my-transitions/plan.json\n```\n\nEdit scene `edit_prompt`, `last_frame_edit_prompt`, and `video_prompt` rows, then follow the phase table in `this skill` (agent runs curl + ffmpeg — no Python runner).\n\n## Install\n\n```bash\nnpx skills add PrunaAI/pruna-skills@visual-transition-reel -y\n# or: npx skills add PrunaAI/pruna-skills@pruna -y\n```\n\n## Related\n\n- Visual-only spec: `video-prompting`\n- With narration: `narrated-multi-scene`\n\nFile v1.0.7:skill-card.md\n\n## Description: <br>\nGuides an agent through planning, generating, reviewing, and assembling a montage with transitions between composed video clips. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[pruna-ai](https://clawhub.ai/user/pruna-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal creators and developers use this skill to build visual transition reels such as action-sequence montages or multi-scene pieces where narration is optional. The skill structures intake, approval gates, still generation, video transition prompts, and final ffmpeg assembly. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Source images may be uploaded to provider APIs during still, video, or audio generation phases. <br>\nMitigation: Confirm input rights and sensitivity before generation, and use the skill's approval gates before proceeding with uploads or generated assets. <br>\nRisk: Video and audio generation phases may spend provider credits. <br>\nMitigation: Require explicit approve plan, approve stills, and approve clips gates before moving into paid generation or assembly steps. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/visual-transition-reel) <br>\n- [Example prompt](artifact/example-prompt.md) <br>\n- [Transition plan template](artifact/templates/transition-plan.template.json) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with JSON plan templates and shell command snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces phased scene plans, transition prompts, generation steps, review gates, and assembly commands; generated media is produced through dependent skills and provider APIs.] <br>\n\n## Skill Version(s): <br>\n1.0.7 (source: SKILL.md frontmatter and server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.7:skill.manifest.json\n\n{\n  \"references\": [],\n  \"templates\": [\n    \"transition-plan.template.json\"\n  ],\n  \"generation_phases\": {\n    \"default\": \"stills\",\n    \"phases\": [\n      \"stills\",\n      \"video\",\n      \"assemble\"\n    ]\n  }\n}\n\nFile v1.0.7:templates/transition-plan.template.json\n\n{\n  \"title\": \"Neon alley transition reel\",\n  \"hero_prompt\": \"Cinematic cyberpunk figure in magenta-cyan neon alley, wet pavement reflections, single subject centered, 16:9 one frame, photoreal cinematic still\",\n  \"ritual_seed\": \"k7Qm2xP9\",\n  \"frame_chain_mode\": \"extract_last_frame\",\n  \"assembly\": {\n    \"chain_crossfade_seconds\": 0.15,\n    \"hard_cut_crossfade_seconds\": 0\n  },\n  \"defaults\": {\n    \"resolution\": \"720p\",\n    \"fps\": 24,\n    \"aspect_ratio\": \"16:9\",\n    \"duration_seconds\": 5\n  },\n  \"style_bible\": \"Neon magenta and cyan, wet pavement reflections, cinematic 16:9, consistent subject identity\",\n  \"background_music\": {\n    \"enabled\": false,\n    \"model\": \"stability-ai/stable-audio-2.5\",\n    \"volume\": 0.12,\n    \"prompt\": \"Ambient synthwave bed, pulsing bass, no vocals, 90 BPM\"\n  },\n  \"scenes\": [\n    {\n      \"id\": \"01_alley_wide\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Wide alley, figure small in frame, neon kanji signs, rain-slick ground\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same alley, figure closer mid-walk, hand on railing, neon rim light\",\n      \"video_prompt\": \"OPEN: hold wide composition. MID: slow dolly in, figure walks toward camera. CLOSE: settle on end pose at railing.\"\n    },\n    {\n      \"id\": \"02_stair_climb\",\n      \"chain_from_previous\": true,\n      \"duration_seconds\": 4,\n      \"edit_prompt\": \"OPENING: Figure at base of fire escape stairs, looking up, neon spill from above\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same figure mid-climb, three steps up, hand on rail, city bokeh behind\",\n      \"video_prompt\": \"OPEN: pause at stair base. MID: figure mounts stairs with purpose. CLOSE: hold mid-climb end pose.\"\n    },\n    {\n      \"id\": \"03_rooftop\",\n      \"chain_from_previous\": false,\n      \"duration_seconds\": 5,\n      \"edit_prompt\": \"OPENING: Rooftop edge, figure silhouetted against city sprawl, wind in coat\",\n      \"last_frame_edit_prompt\": \"CLOSING: Same rooftop, figure turns three-quarter toward camera, skyline gold edge light\",\n      \"video_prompt\": \"OPEN: wind ripples coat. MID: slow turn toward lens. CLOSE: hold three-quarter hero pose.\"\n    }\n  ]\n}\n\nArchive v1.0.6: 29 files, 59356 bytes\n\nFiles: apm.yml (489b), example-prompt.md (1587b), README-INSTALL.md (998b), references/approval-red-flags.md (2650b), references/generation-diversity.md (25910b), references/generation-quality-checklists.md (9978b), references/p-video-quality-checklist.md (1879b), references/parallel-execution.md (7820b), references/pruna-api.md (5138b), references/random-seed-ritual.md (3875b), references/scene-anchor-pair.md (7614b), references/staged-generation-gate.md (7290b), references/workflow-feedback-gates.md (5034b), scripts/concat_clips.py (6225b), scripts/generation_gate.py (3141b), scripts/launch_background_music.py (8332b), scripts/p_video_payload.py (2685b), scripts/plan_runner.py (4410b), scripts/pruna_api.py (5129b), scripts/replicate_api.py (5739b), scripts/requirements.txt (15b), scripts/run_from_plan.py (14401b), scripts/stills_pipeline.py (8741b), skill-card.md (3272b), skill.deps.json (1109b), skill.manifest.json (1179b), SKILL.md (9133b), templates/transition-plan.template.json (2168b), _meta.json (141b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: visual-transition-reel\ndescription: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\nlicense: MIT\nmetadata:\n  version: \"1.0.6\"\ndepends:\n  - p-image\n  - p-image-edit\n  - p-video\n  - stable-audio-2.5\n---\n\n## Shared generation policy\n\n<!-- shared-generation-policy -->\n\nBefore any paid `POST /v1/predictions`:\n\n1. **[Random seed ritual](./references/random-seed-ritual.md)** — always first; derive axes via sum-mod.\n2. **[Generation diversity](./references/generation-diversity.md)** — explicit prompts; rotate ≥2 scenario axes per session.\n3. **[Quality checklists](./references/generation-quality-checklists.md)** — open output files and judge pass/fail before advancing.\n4. **[Staged generation gate](./references/staged-generation-gate.md)** — plan → stills → audio → video → assembly; never skip phases in one turn.\n5. **[Approval red flags](./references/approval-red-flags.md)** — pause when plan, stills, or clips were not reviewed.\n6. **[Workflow feedback gates](./references/workflow-feedback-gates.md)** — runner flags and per-workflow commands.\n7. **[Parallel execution](./references/parallel-execution.md)** — async fan-out within each approved phase only.\n\n# Scene transition video (Pruna `p-video` + `p-image` / `p-image-edit`)\n\nEach scene = one **`p-video`** job steered by **two stills** and a **transition prompt**. Assembly is **outside** Pruna (ffmpeg concat). Narration is **optional** — default mode is visual-only (scene anchor **pair**).\n\nCanonical spec: [scene-anchor-pair.md](./references/scene-anchor-pair.md)\n\nSee [p-video](../../../../tools/video/p-video/SKILL.md), [p-image](../../../../tools/image/p-image/SKILL.md), [p-image-edit](../../../../tools/image/p-image-edit/SKILL.md), [parallel-execution.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/parallel-execution.md), and [pruna-api.md](./references/pruna-api.md).\n\nFor narrated films (pair + TTS audio), use [narrated-multi-scene](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/narrated-multi-scene/skills/narrated-multi-scene/SKILL.md) instead.\n\n**Staged generation:** [staged-generation-gate.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/staged-generation-gate.md) · [workflow-feedback-gates.md](./references/workflow-feedback-gates.md). Default runner **`--phase stills`**.\n\n## Feedback gates (required)\n\n| Phase | What to show | Proceed when |\n|-------|--------------|--------------|\n| **0 — Plan** | Scene table, transition prompts, `style_bible` | **approve plan** |\n| **A — Stills** | Hero + start/end PNGs | **approve stills** |\n| **B — Video** | `clips/*.mp4` | **approve clips** |\n| **D — Bed** | Final after concat + optional bed | User accepts |\n\n## Intake: ask before generating\n\n**Do not** start scene 1 until the **whole** scene plan exists in writing (manifest or table):\n\n| Topic | Questions |\n|-------|-----------|\n| **Story** | Scene order (1…N)? What changes between beats (location, time, emotion)? |\n| **Per scene *i*** | **Start still** (`edit_prompt` or upload)? **End still** (`last_frame_edit_prompt`)? **Transition `video_prompt`** (OPEN/MID/CLOSE motion)? `duration_seconds`? |\n| **Continuity** | Per scene: **`chain_from_previous`** only when motion continues. Otherwise composed OPENING still + hard cut. |\n| **Stills source** | Generate via **`p-image`** hero + **`p-image-edit`**, or user-supplied photo pairs? |\n| **Global** | `style_bible`? `aspect_ratio`? `ritual_seed`? `frame_chain_mode` (`extract_last_frame` vs `parallel_vignettes`)? |\n| **Audio** | Native SFX only (default), optional [stable-audio-2.5](../../../../tools/audio/stable-audio-2.5/SKILL.md) bed in post, or upgrade to triple + TTS? |\n| **Assembly** | Concat order; chain crossfade (~0.12–0.15s) vs hard cut (0)? Target total duration? |\n\nAsk follow-ups until every scene row has enough to build `input` without guessing.\n\n### Scene table (template)\n\n| `#` | Start (`image`) | End (`last_frame_image`) | Transition prompt | Duration | Chain? |\n|-----|-----------------|--------------------------|-------------------|----------|--------|\n| 1 | `edit_prompt` → still | `last_frame_edit_prompt` → still | OPEN/MID/CLOSE motion | 5s | no |\n| 2 | = scene 1 end *or* extract(clip 1) | end still | motion prompt | 4s | yes / no |\n\n## Workflow (after intake)\n\n### Phase 0 — Hero (`p-image`)\n\nOne approved anchor still when generating from text:\n\n1. **`p-image`** with `hero_prompt` + `style_bible` + [random seed ritual](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/random-seed-ritual.md) (SSoT)\n2. Slop gate — approve before branching edits\n\nSkip when every scene uses **uploaded** start/end images.\n\n### Phase 1 — Start stills (`p-image-edit`, parallel)\n\nFor each scene without an uploaded start image:\n\n1. Upload hero URL to `/v1/files`\n2. **`p-image-edit`** with `edit_prompt` + hero in `images[]`\n3. Download → `{scene_id}.png`\n\nRun all start stills **in parallel** after hero exists.\n\n### Phase 2 — End stills (`p-image-edit`, parallel)\n\nFor each scene with `last_frame_edit_prompt`:\n\n1. Upload start still URL\n2. **`p-image-edit`** with `last_frame_edit_prompt` + start still in `images[]`\n3. Download → `{scene_id}_last.png`\n\nRun all end stills **in parallel** once start stills exist.\n\n### Phase 3 — Video (`p-video`)\n\n**Scene anchor pair** — one job per row:\n\n```json\n{\n  \"prompt\": \"OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"duration\": 5,\n  \"resolution\": \"720p\",\n  \"fps\": 24\n}\n```\n\n| `frame_chain_mode` | Start frame when `chain_from_previous: true` | Render order |\n|--------------------|----------------------------------------------|--------------|\n| **`extract_last_frame`** | ffmpeg last frame from prior clip | Sequential for chained scenes |\n| **`parallel_vignettes`** | always composed start still | Parallel (montage / hard cuts) |\n| **`planned_stills`** | prior scene end still URL | Parallel once all stills exist |\n\nUse [`p_video_payload.py`](./scripts/p_video_payload.py) — **`duration` set, no `audio`**.\n\nPoll all `get_url` until done; retry failed scenes only.\n\n### Phase 4 — Review\n\nAdjust transition prompt, stills, or duration; re-run **that scene only** (`--only SCENE_ID`).\n\n### Phase 5 — Assembly\n\n1. **Normalize** clip audio (48 kHz stereo) if concat fails on mixed formats\n2. **Concat** via [`concat_clips.py`](./scripts/concat_clips.py) with per-join crossfades\n3. **Optional bed** — [stable-audio-2.5](../../../../tools/audio/stable-audio-2.5/SKILL.md) under native SFX\n\n### Phase 6 — Manifest\n\nScene table + start/end URLs + prediction ids + `chain_from_previous` flags.\n\n## Transition prompt shape\n\nWrite **`video_prompt`**\n\nArchive v1.0.2: 26 files, 45059 bytes\n\nFiles: apm.yml (502b), example-prompt.md (1586b), README-INSTALL.md (990b), references/generation-quality-checklists.md (10724b), references/p-video-quality-checklist.md (1825b), references/parallel-execution.md (7803b), references/pruna-api.md (5118b), references/scene-anchor-pair.md (7629b), references/staged-generation-gate.md (7631b), references/workflow-feedback-gates.md (5587b), scripts/concat_clips.py (6225b), scripts/generation_gate.py (3139b), scripts/launch_background_music.py (8332b), scripts/p_video_payload.py (2685b), scripts/plan_runner.py (4410b), scripts/pruna_api.py (5129b), scripts/replicate_api.py (5739b), scripts/requirements.txt (15b), scripts/run_from_plan.py (14399b), scripts/stills_pipeline.py (8741b), skill-card.md (2916b), skill.deps.json (1109b), skill.manifest.json (1231b), SKILL.md (8052b), templates/transition-plan.template.json (2168b), _meta.json (141b)","readmeExcerpt":"Skill: visual-transition-reel Owner: pruna-ai Summary: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. Tags: ai:1.0.14, generative:1.0.14, latest:1.0.14, pruna:1.0.14 Version history: v1.0.14 | 2026-09-29T15:37:08.130Z | auto visual-transition-reel v1.0.14 - Updated SKILL.md to add explicit mention of the p-video-2-pro mode param","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"prompt\": \"OPEN: hold. MID: dolly in, subject turns. CLOSE: settle on end pose.\",\n  \"image\": \"START_URL\",\n  \"last_frame_image\": \"END_URL\",\n  \"duration\": 5,\n  \"resolution\": \"768p\",\n  \"mode\": \"speed\",\n  \"prompt_upsampler\": \"turbo\"\n}"},{"language":"bash","snippet":"ffmpeg -y -sseof -0.05 -i clips/01.mp4 -frames:v 1 stills/02_from_prev.png"},{"language":"bash","snippet":"ffmpeg -y -f concat -safe 0 -i clips.txt -c copy reel.mp4"},{"language":"text","snippet":"OPEN: [what holds at start frame]\nMID: [camera + subject motion developing]\nCLOSE: [how motion settles into end frame]"},{"language":"bash","snippet":"mkdir -p output/visual-transition-reel/my-transitions/{stills,clips}\ncp skills/workflows/visual-transition-reel/templates/transition-plan.template.json \\\n   output/visual-transition-reel/my-transitions/plan.json"},{"language":"bash","snippet":"npx skills add PrunaAI/pruna-skills@visual-transition-reel -y\n# or: npx skills add PrunaAI/pruna-skills@pruna -y"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: visual-transition-reel\ndescription: Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n---\n\n## Prerequisites\n\nInstall and load these skills before generating (skip if already in context via `@pruna`):\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-ideogram` | Use when photo generation needs more control — photoreal results, text in the image, or structured JSON with hex colors and bounding boxes. Simpler photo generation, edits, and video use other skills in the suite. | `npx skills add PrunaAI/pruna-skills@p-image-ideogram -y` |\n| `p-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-2-pro` | Use when someone wants a cinematic clip from text or start/end frames — product ads, documentary shots, or dialogue with generated audio. Not for 1080p, imported audio tracks, or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2-pro -y` |\n| `p-video-2` | Use when someone wants a polished short clip from text, images, or imported audio — 1080p B-roll, start/end frame animation, or a motion shot with a mixed track. Not for cinematic generated-audio clips or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `stable-audio-2.5` | Use when someone wants light instrumental background music — an ambient bed under dialogue or underscore for reels and explainers. | `npx skills add PrunaAI/pruna-skills@stable-audio-2.5 -y` |\n\nOr install the full suite once: `npx skills add PrunaAI/pruna-skills@pruna -y`\n\nFollow each skill's **Before generating** / craft sections — do not restate guide content here.\n\n## Workflow habit\n\nIn **every reply**, name `` `visual-transition-reel` `` in backticks. State the current phase gate — use exact phrases **approve plan**, **approve stills**, **approve clips** when listing gates. Do **not** same-turn plan + paid video. Skip-review / burn-credits → follow `generation-diversity` **Red flags**.\n\n## Skill boundary\n\nMontage with **transitions between composed video clips** — not a picture-book slideshow.\n\n**Redirect before intake:**\n\n- Picture-book / illustrated slideshow / Ken Burns story with narration → ``"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"visual-transition-reel\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696228130\n}"},{"path":"example-prompt.md","content":"# Scene transition video\n\nBuild smooth multi-scene reels: **`p-image`** hero → **`p-image-edit`** start/end stills → **`p-video`** transition between **`image`** and **`last_frame_image`**.\n\n## Quick start prompt\n\n> Use the **visual-transition-reel** workflow. Three-beat cyberpunk alley reel: wide alley → stair climb (chain from prior) → rooftop hard cut. Generate hero with **p-image**, branch start/end stills with **p-image-edit**, render each beat with **p-video** using OPEN/MID/CLOSE transition prompts and 4–5s duration. Chain scene 2 from the prior last frame; hard cut before rooftop. Concat with 0.15s crossfade on chain joins. 16:9, 720p.\n\n## Copy plan template\n\n```bash\nmkdir -p output/visual-transition-reel/my-transitions/{stills,clips}\ncp skills/workflows/visual-transition-reel/templates/transition-plan.template.json \\\n   output/visual-transition-reel/my-transitions/plan.json\n```\n\nEdit scene `edit_prompt`, `last_frame_edit_prompt`, and `video_prompt` rows, then follow the phase table in `this skill` (agent runs curl + ffmpeg — no Python runner).\n\n## Install\n\n```bash\nnpx skills add PrunaAI/pruna-skills@visual-transition-reel -y\n# or: npx skills add PrunaAI/pruna-skills@pruna -y\n```\n\n## Related\n\n- Visual-only spec: `video-prompting`\n- With narration: `narrated-multi-scene`"},{"path":"skill-card.md","content":"## Description:\n\nGuides the creation of multi-scene video montages with transitions between composed clips and optional narration.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and developers use this skill to plan and assemble multi-scene video reels with approved stills, transition clips, and optional background music.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Related skills are installed using commands without pinned versions.\n\nMitigation: Verify the source and review installed skills or pin exact versions before running install commands.\n\nRisk: Generated or uploaded media may be sent to the generation service.\n\nMitigation: Confirm permission to submit media and review sensitive content before generation.\n\nRisk: Video generation may incur costs before the user is satisfied with the result.\n\nMitigation: Require plan and still approvals before paid video generation, then review clips before assembly.\n\n## Reference(s):\n\n- [Visual Transition Reel on ClawHub](https://clawhub.ai/pruna-ai/skills/visual-transition-reel)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, JSON, Shell commands, Guidance]\n\n**Output Format:** [Markdown scene plans, JSON manifests, and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides creation of still images, video clips, and an assembled MP4 after approval gates.]\n\n## Skill Version(s):\n\n1.0.14 (source: frontmatter and server release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"skill.manifest.json","content":"{\n  \"references\": [],\n  \"templates\": [\n    \"transition-plan.template.json\"\n  ],\n  \"generation_phases\": {\n    \"default\": \"stills\",\n    \"phases\": [\n      \"stills\",\n      \"video\",\n      \"assemble\"\n    ]\n  }\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1633,"uniquenessScore":44,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T12:28:49.139Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T12:28:49.139Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:47:04.012Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}