{"id":"8e9bc841-3938-413a-b97c-7ed450d67e21","entityType":"agent","slug":"clawhub-pruna-ai-p-video-replace","name":"p-video-replace","canonicalUrl":"https://www.xpersona.co/agent/clawhub-pruna-ai-p-video-replace","canonicalPath":"/agent/clawhub-pruna-ai-p-video-replace","generatedAt":"2026-10-10T13:31:04.649Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T10:42:53.898Z","emptyReason":null},"description":"Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. Skill: p-video-replace Owner: pruna-ai Summary: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. 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:35:25.321Z | auto - Bumped version to 1.0.14. - Documentation updated in SKILL.md to reflect the new version. - Removed the skill-card.md file","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:p-video-replace","sourceUrl":"https://clawhub.ai/pruna-ai/p-video-replace","homepage":"https://clawhub.ai/pruna-ai/skills/p-video-replace","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/pruna-ai/p-video-replace","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/pruna-ai/skills/p-video-replace","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. Skill: p-video-replace Owner: pruna"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:42:53.898Z","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-10T10:42:53.898Z","emptyReason":null},"stars":null,"forks":null,"downloads":1488,"packageName":null,"latestVersion":"1.0.14","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:42:53.898Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T10:42:53.898Z","lastCrawledAt":"2026-10-10T10:42:53.898Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T10:42:53.898Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.14","createdAt":"2026-09-29T15:35:25.321Z","changelog":"- Bumped version to 1.0.14. - Documentation updated in SKILL.md to reflect the new version. - Removed the skill-card.md file.","fileCount":4,"zipByteSize":4915},{"version":"1.0.13","createdAt":"2026-09-17T13:58:06.131Z","changelog":"- Version bump to 1.0.13. - Documentation cleanup: removed outdated file `skill-card.md`. - Updated SKILL.md metadata to reflect new version. - No functional or interface changes to the skill itself.","fileCount":4,"zipByteSize":4999},{"version":"1.0.12","createdAt":"2026-09-10T13:56:32.832Z","changelog":"p-video-replace 1.0.12 - Updated version metadata in SKILL.md to 1.0.12. - Removed the file skill-card.md. - No user-facing feature or instruction changes in the main SKILL.md content.","fileCount":4,"zipByteSize":4980},{"version":"1.0.11","createdAt":"2026-09-03T14:10:57.692Z","changelog":"p-video-replace v1.0.11 - Expanded the skill comparison table to include and clarify boundaries with the new `p-video-edit` skill. - Updated the \"When NOT to use\" section, adding guidance to use `p-video-edit` for prompt-driven video edits beyond identity swaps. - Removed the obsolete `skill-card.md` file. - General documentation improvements for clarity and up-to-date references.","fileCount":4,"zipByteSize":4953},{"version":"1.0.10","createdAt":"2026-08-28T07:57:04.543Z","changelog":"- Version bumped to 1.0.10 in SKILL.md metadata - Documentation update: SKILL.md revised - Obsolete skill-card.md file removed","fileCount":4,"zipByteSize":4831},{"version":"1.0.9","createdAt":"2026-08-04T06:18:04.754Z","changelog":"p-video-replace v1.0.9 - Updated SKILL.md metadata to version 1.0.9. - Edited the SKILL.md to update a description in the \"Typical next steps\" table (‘fastest, cheapest photo generation’ for `p-image`). - Removed the file skill-card.md.","fileCount":4,"zipByteSize":4785},{"version":"1.0.8","createdAt":"2026-07-28T17:20:09.705Z","changelog":"- Added intake step to explicitly open `generation-diversity` clarification before the first POST. - Updated “Agent habit” section to clarify intake workflow. - Incremented skill version to 1.0.8. - Removed the file: skill-card.md.","fileCount":4,"zipByteSize":4849},{"version":"1.0.7","createdAt":"2026-07-23T12:35:05.370Z","changelog":"**Skill `p-video-replace` v1.0.7 — major documentation and structure update** - Streamlined skill README, focusing on essential usage, agent habits, and boundaries. - Added explicit dependency and prerequisite skill install instructions. - Reorganized and simplified before/after \"Prompt craft\" expectations and HTTP usage examples. - Consolidated \"When NOT to use\" with cross-references to related skills. - Removed legacy/duplicate documentation and references files for clarity. - Updated skill metadata, now including `package` in manifest.","fileCount":4,"zipByteSize":4808}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:p-video-replace","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"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-p-video-replace/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-replace/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-replace/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-replace/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-replace/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-replace/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-10T13:31:04.646Z"}},"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-p-video-replace/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-replace/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-replace/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-replace/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":"high","updatedAt":"2026-10-10T10:42:53.898Z","emptyReason":null},"readme":"Skill: p-video-replace\n\nOwner: pruna-ai\n\nSummary: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\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:35:25.321Z | auto\n\n- Bumped version to 1.0.14.\n- Documentation updated in SKILL.md to reflect the new version.\n- Removed the skill-card.md file.\n\nv1.0.13 | 2026-09-17T13:58:06.131Z | auto\n\n- Version bump to 1.0.13.\n- Documentation cleanup: removed outdated file `skill-card.md`.\n- Updated SKILL.md metadata to reflect new version.\n- No functional or interface changes to the skill itself.\n\nv1.0.12 | 2026-09-10T13:56:32.832Z | auto\n\np-video-replace 1.0.12\n\n- Updated version metadata in SKILL.md to 1.0.12.\n- Removed the file skill-card.md.\n- No user-facing feature or instruction changes in the main SKILL.md content.\n\nv1.0.11 | 2026-09-03T14:10:57.692Z | auto\n\np-video-replace v1.0.11\n\n- Expanded the skill comparison table to include and clarify boundaries with the new `p-video-edit` skill.\n- Updated the \"When NOT to use\" section, adding guidance to use `p-video-edit` for prompt-driven video edits beyond identity swaps.\n- Removed the obsolete `skill-card.md` file.\n- General documentation improvements for clarity and up-to-date references.\n\nv1.0.10 | 2026-08-28T07:57:04.543Z | auto\n\n- Version bumped to 1.0.10 in SKILL.md metadata  \n- Documentation update: SKILL.md revised  \n- Obsolete skill-card.md file removed\n\nv1.0.9 | 2026-08-04T06:18:04.754Z | auto\n\np-video-replace v1.0.9\n\n- Updated SKILL.md metadata to version 1.0.9.\n- Edited the SKILL.md to update a description in the \"Typical next steps\" table (‘fastest, cheapest photo generation’ for `p-image`).\n- Removed the file skill-card.md.\n\nv1.0.8 | 2026-07-28T17:20:09.705Z | auto\n\n- Added intake step to explicitly open `generation-diversity` clarification before the first POST.\n- Updated “Agent habit” section to clarify intake workflow.\n- Incremented skill version to 1.0.8.\n- Removed the file: skill-card.md.\n\nv1.0.7 | 2026-07-23T12:35:05.370Z | auto\n\n**Skill `p-video-replace` v1.0.7 — major documentation and structure update**\n\n- Streamlined skill README, focusing on essential usage, agent habits, and boundaries.\n- Added explicit dependency and prerequisite skill install instructions.\n- Reorganized and simplified before/after \"Prompt craft\" expectations and HTTP usage examples.\n- Consolidated \"When NOT to use\" with cross-references to related skills.\n- Removed legacy/duplicate documentation and references files for clarity.\n- Updated skill metadata, now including `package` in manifest.\n\nv1.0.6 | 2026-07-16T21:00:07.349Z | auto\n\n**Release summary:**  \nThis version refines documentation, updates references, and introduces new shared generation policy guidance.\n\n- Updated documentation to reference new shared policies (random seed ritual, generation diversity, quality checklists).\n- Refreshed and clarified instructions in SKILL.md, including improved pre-generation checklist and API reference links.\n- Changed or removed references to reflect new file locations or consolidated policy docs (e.g., pruna-api, parallel-execution).\n- Removed deprecated or redundant files (e.g., skill-card.md, references/parallel-execution.md).\n- Incremented skill version metadata to 1.0.6.\n\nv1.0.2 | 2026-07-16T13:34:04.936Z | auto\n\n- Version updated to 1.0.2.\n- General documentation updates across guides and references.\n- SKILL.md metadata updated to reflect new version.\n- Consolidation and reorganization of reference materials.\n- Removed outdated skill-card.md file.\n\nv1.0.1 | 2026-07-14T15:48:43.526Z | auto\n\np-video-replace 1.0.1 — Documentation improvements and file cleanup.\n\n- Updated SKILL.md to reflect version 1.0.1 and clarified documentation links.\n- Improved references to related models, now linking directly to GitHub source.\n- Enhanced prompt-writing guidance and anti-patterns with clearer external references.\n- Removed deprecated or redundant files: pspm.json and skill-card.md.\n- No changes to core functionality or API.\n\nv0.0.1 | 2026-07-14T15:05:19.222Z | auto\n\nInitial release of p-video-replace skill.\n\n- Enables swapping people, outfits, or products in existing video while preserving original motion, timing, camera movement, and audio.\n- Supports up to 4 reference images per request for multi-person or multi-object replacement.\n- Requires clear, specific instruction prompts to map references to source video slots for quality results.\n- Provides thorough guidance on swap types, anti-patterns, and prompt-writing for effective replacements.\n- Offers efficient generation (approx. 3.58s per 1s video) and clear pricing for 720p and 1080p outputs.\n\nv0.0.2 | 2026-07-14T11:14:37.883Z | auto\n\np-video-replace 0.0.2 changelog\n\n- Updated documentation with improved clarity, including fixes to links and reference patterns.\n- Enhanced cross-referencing to other models and reference materials, especially for prompt best practices.\n- Removed outdated files (pspm.json, skill-card.md) to streamline the codebase.\n- Added detailed operational guidance on batch runs, multi-reference use, and input preparation.\n- Improved instructional examples and quality checklists in the documentation.\n\nv1.0.0 | 2026-07-14T10:15:27.269Z | auto\n\np-video-replace 1.0.0\n\n- Initial release of p-video-replace for flexible in-footage person, clothing, and product swapping in videos.\n- Supports multi-element replacement using up to 4 reference images and a detailed instruction_prompt.\n- Preserves original video motion, acting, timing, camera movement, and audio.\n- Key use cases: recasting, wardrobe changes, product swaps, or mixed replacements in a single call.\n- Includes quality control, usage patterns, and detailed prompt guidance for best results.\n\nArchive index:\n\nArchive v1.0.14: 4 files, 4915 bytes\n\nFiles: skill-card.md (1908b), skill.manifest.json (23b), SKILL.md (8882b), _meta.json (135b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: p-video-replace\ndescription: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n  pruna_model: p-video-replace\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -y` |\n| `pruna-api` | Use before any Pruna or Replicate HTTP call — credentials, upload/poll/download, parallel batches, and agent safety. | `npx skills add PrunaAI/pruna-skills@pruna-api -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## Agent habit\n\nIn the **first reply**, name `` `p-video-replace` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. Draft swaps with **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\n**`instruction_prompt`** maps **source slots → reference images → preserve-list**. Change only what the user asked; keep camera, audio, and unmentioned elements identical.\n\n| Do | Don't |\n| --- | --- |\n| Formula: name source element → map each ref (`first reference`, `image 2`) → preserve-list (`walking pace`, `camera tracking`, `audio`) | Vague `replace the person` with no slot mapping |\n| Ritual seed before drafting; fresh wording for preserve clauses when the brief allows | Copy this skill's sample (`olive coat`, `navy jacket`) when the user described different targets |\n| Lock swap intent (character / clothing-only / object / mixed) from the user | Drop preserve-list and hope motion/audio hold |\n| Show **`instruction_prompt`** before `POST` when wording is not locked | Silent swap that changes background, cast, or unrequested regions |\n\n**Fidelity check (before pay):** every stated swap and every stated keep must appear in **`instruction_prompt`**. Do not “spice” extras when they asked for one identity swap.\n\n## Skill boundary\n\n| | **p-video-replace** | **p-video-edit** | **p-video-animate** |\n|---|---------------------|------------------|---------------------|\n| **User question** | *Replace this person in this video?* | *Change the color / environment / object / text / lighting in this clip?* | *Animate this picture with some motion?* |\n| **Goal** | Swap identity **into** existing footage | Instruction edit of the **source clip** | Drive a **still** with motion from another clip |\n| **Source video** | The **final scene** | The **scene to edit** (≤15s) | A **motion template** only |\n| **Reference images** | Required **`images`** — **1 to 4** | Optional **`images`** — **0 to 4** | **`image`** — **one** subject per call |\n| **Prompt field** | **`instruction_prompt`** | **`prompt`** | Optional **`instruction_prompt`** |\n\n**Use `p-video-edit`** for prompt-driven attribute, environment, object, text, or lighting edits. **Use `p-video-animate`** when the user has a still and wants it to **perform** from a separate template video.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-edit` | Use when someone wants to edit an existing video with a text instruction — recolor, restyle, remove or add objects, change environment or lighting, update on-screen text, or apply optional reference-guided product and accessory edits. Not for a new clip from scratch or ffmpeg assembly. | `npx skills add PrunaAI/pruna-skills@p-video-edit -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n\n## HTTP (curl)\n\n### Upload source assets\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-person-a-def456\",\n        \"https://api.pruna.ai/v1/files/reference-person-b-ghi789\"\n      ],\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Replace the woman on the left (olive coat) with the first reference. Replace the man on the right (navy jacket) with the second reference. Preserve walking pace, camera tracking, and audio.\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`. Output duration follows the source video.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts.\n\n### Create (sync — quick test only)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-image-def456\"\n      ]\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`**, **`images`** (1–4), **`resolution`**, **`target_fps`**, **`instruction_prompt`**, and swap intent (character / clothing-only / object / mixed).\n3. **Pruna notes:** identity comes from **`images`**; slot mapping from **`instruction_prompt`** (name source element → map each ref → preserve-list → “only X changes”). Vague targets and tiny on-screen objects drop quality. Runware map: `inputs.video` → `video`, `referenceImages` → `images`, `positivePrompt` → `instruction_prompt`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `images` (array of 1–4 string URLs): identity reference(s)\n\n## Common optional fields\n\n- `resolution`: `720p` (default) or `1080p`\n- `target_fps`: `original` (default), `24`, or `48`\n- `instruction_prompt` (string)\n- `save_audio` (boolean, default `true`)\n- `seed`, `disable_safety_checker`\n\n## Typical next steps\n\nCommon follow-ons after this skill:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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| `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\": \"p-video-replace\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696125321\n}\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nGuides agents in replacing a person, outfit, or product in existing footage while preserving camera movement and audio.\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 guide reference-image-based replacements in a source video through Pruna's hosted API, while retaining the original scene's camera movement and audio.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Source video and reference images are uploaded to Pruna's hosted API.\n\nMitigation: Use only media approved for third-party upload; avoid confidential or regulated footage unless authorized.\n\nRisk: Replacing identifiable people in video can be done without their consent.\n\nMitigation: Obtain consent for identifiable people and use only media you are authorized to edit.\n\nRisk: Related skill installation commands may fetch unpinned content.\n\nMitigation: Prefer pinned or otherwise trusted installer commands for related skills.\n\n## Reference(s):\n\n- [p-video-replace on ClawHub](https://clawhub.ai/pruna-ai/skills/p-video-replace)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with curl examples and video-editing prompts]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guidance for submitting a source video and 1–4 reference images; the hosted service returns the edited video.]\n\n## Skill Version(s):\n\n1.0.14 (source: ClawHub release 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.14:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.13: 4 files, 4999 bytes\n\nFiles: skill-card.md (2076b), skill.manifest.json (23b), SKILL.md (8882b), _meta.json (135b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: p-video-replace\ndescription: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\nlicense: MIT\nmetadata:\n  version: \"1.0.13\"\n  package: pruna-skills\n  pruna_model: p-video-replace\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -y` |\n| `pruna-api` | Use before any Pruna or Replicate HTTP call — credentials, upload/poll/download, parallel batches, and agent safety. | `npx skills add PrunaAI/pruna-skills@pruna-api -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## Agent habit\n\nIn the **first reply**, name `` `p-video-replace` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. Draft swaps with **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\n**`instruction_prompt`** maps **source slots → reference images → preserve-list**. Change only what the user asked; keep camera, audio, and unmentioned elements identical.\n\n| Do | Don't |\n| --- | --- |\n| Formula: name source element → map each ref (`first reference`, `image 2`) → preserve-list (`walking pace`, `camera tracking`, `audio`) | Vague `replace the person` with no slot mapping |\n| Ritual seed before drafting; fresh wording for preserve clauses when the brief allows | Copy this skill's sample (`olive coat`, `navy jacket`) when the user described different targets |\n| Lock swap intent (character / clothing-only / object / mixed) from the user | Drop preserve-list and hope motion/audio hold |\n| Show **`instruction_prompt`** before `POST` when wording is not locked | Silent swap that changes background, cast, or unrequested regions |\n\n**Fidelity check (before pay):** every stated swap and every stated keep must appear in **`instruction_prompt`**. Do not “spice” extras when they asked for one identity swap.\n\n## Skill boundary\n\n| | **p-video-replace** | **p-video-edit** | **p-video-animate** |\n|---|---------------------|------------------|---------------------|\n| **User question** | *Replace this person in this video?* | *Change the color / environment / object / text / lighting in this clip?* | *Animate this picture with some motion?* |\n| **Goal** | Swap identity **into** existing footage | Instruction edit of the **source clip** | Drive a **still** with motion from another clip |\n| **Source video** | The **final scene** | The **scene to edit** (≤15s) | A **motion template** only |\n| **Reference images** | Required **`images`** — **1 to 4** | Optional **`images`** — **0 to 4** | **`image`** — **one** subject per call |\n| **Prompt field** | **`instruction_prompt`** | **`prompt`** | Optional **`instruction_prompt`** |\n\n**Use `p-video-edit`** for prompt-driven attribute, environment, object, text, or lighting edits. **Use `p-video-animate`** when the user has a still and wants it to **perform** from a separate template video.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-edit` | Use when someone wants to edit an existing video with a text instruction — recolor, restyle, remove or add objects, change environment or lighting, update on-screen text, or apply optional reference-guided product and accessory edits. Not for a new clip from scratch or ffmpeg assembly. | `npx skills add PrunaAI/pruna-skills@p-video-edit -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n\n## HTTP (curl)\n\n### Upload source assets\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-person-a-def456\",\n        \"https://api.pruna.ai/v1/files/reference-person-b-ghi789\"\n      ],\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Replace the woman on the left (olive coat) with the first reference. Replace the man on the right (navy jacket) with the second reference. Preserve walking pace, camera tracking, and audio.\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`. Output duration follows the source video.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts.\n\n### Create (sync — quick test only)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-image-def456\"\n      ]\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`**, **`images`** (1–4), **`resolution`**, **`target_fps`**, **`instruction_prompt`**, and swap intent (character / clothing-only / object / mixed).\n3. **Pruna notes:** identity comes from **`images`**; slot mapping from **`instruction_prompt`** (name source element → map each ref → preserve-list → “only X changes”). Vague targets and tiny on-screen objects drop quality. Runware map: `inputs.video` → `video`, `referenceImages` → `images`, `positivePrompt` → `instruction_prompt`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `images` (array of 1–4 string URLs): identity reference(s)\n\n## Common optional fields\n\n- `resolution`: `720p` (default) or `1080p`\n- `target_fps`: `original` (default), `24`, or `48`\n- `instruction_prompt` (string)\n- `save_audio` (boolean, default `true`)\n- `seed`, `disable_safety_checker`\n\n## Typical next steps\n\nCommon follow-ons after this skill:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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| `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\": \"p-video-replace\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1789653486131\n}\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nUse when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\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 developers and creators use this skill to guide an agent through replacing a person, outfit, or product in an existing video with reference images while preserving camera motion, audio, and unrequested scene elements.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can enable identity swaps or impersonation in existing footage.\n\nMitigation: Use it only with media and likenesses the user owns or is authorized to edit, and reject unauthorized identity-swap requests.\n\nRisk: Videos, reference images, and prompts are uploaded to Pruna as part of the workflow.\n\nMitigation: Confirm the user is comfortable sending those assets to Pruna before making API calls.\n\nRisk: Disabling safety checks can reduce abuse protections.\n\nMitigation: Keep safety checks enabled unless there is a documented, reviewed reason to disable them.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-video-replace)\n- [Pruna AI publisher profile](https://clawhub.ai/user/pruna-ai)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, API calls, Configuration]\n\n**Output Format:** [Markdown with inline curl examples and JSON request bodies]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides upload, prediction creation, polling, and download through the Pruna API; generated video duration follows the source video.]\n\n## Skill Version(s):\n\n1.0.13 (source: server release metadata and SKILL.md 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}\n\nArchive v1.0.12: 4 files, 4980 bytes\n\nFiles: skill-card.md (2037b), skill.manifest.json (23b), SKILL.md (8882b), _meta.json (135b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: p-video-replace\ndescription: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\nlicense: MIT\nmetadata:\n  version: \"1.0.12\"\n  package: pruna-skills\n  pruna_model: p-video-replace\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -y` |\n| `pruna-api` | Use before any Pruna or Replicate HTTP call — credentials, upload/poll/download, parallel batches, and agent safety. | `npx skills add PrunaAI/pruna-skills@pruna-api -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## Agent habit\n\nIn the **first reply**, name `` `p-video-replace` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. Draft swaps with **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\n**`instruction_prompt`** maps **source slots → reference images → preserve-list**. Change only what the user asked; keep camera, audio, and unmentioned elements identical.\n\n| Do | Don't |\n| --- | --- |\n| Formula: name source element → map each ref (`first reference`, `image 2`) → preserve-list (`walking pace`, `camera tracking`, `audio`) | Vague `replace the person` with no slot mapping |\n| Ritual seed before drafting; fresh wording for preserve clauses when the brief allows | Copy this skill's sample (`olive coat`, `navy jacket`) when the user described different targets |\n| Lock swap intent (character / clothing-only / object / mixed) from the user | Drop preserve-list and hope motion/audio hold |\n| Show **`instruction_prompt`** before `POST` when wording is not locked | Silent swap that changes background, cast, or unrequested regions |\n\n**Fidelity check (before pay):** every stated swap and every stated keep must appear in **`instruction_prompt`**. Do not “spice” extras when they asked for one identity swap.\n\n## Skill boundary\n\n| | **p-video-replace** | **p-video-edit** | **p-video-animate** |\n|---|---------------------|------------------|---------------------|\n| **User question** | *Replace this person in this video?* | *Change the color / environment / object / text / lighting in this clip?* | *Animate this picture with some motion?* |\n| **Goal** | Swap identity **into** existing footage | Instruction edit of the **source clip** | Drive a **still** with motion from another clip |\n| **Source video** | The **final scene** | The **scene to edit** (≤15s) | A **motion template** only |\n| **Reference images** | Required **`images`** — **1 to 4** | Optional **`images`** — **0 to 4** | **`image`** — **one** subject per call |\n| **Prompt field** | **`instruction_prompt`** | **`prompt`** | Optional **`instruction_prompt`** |\n\n**Use `p-video-edit`** for prompt-driven attribute, environment, object, text, or lighting edits. **Use `p-video-animate`** when the user has a still and wants it to **perform** from a separate template video.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-edit` | Use when someone wants to edit an existing video with a text instruction — recolor, restyle, remove or add objects, change environment or lighting, update on-screen text, or apply optional reference-guided product and accessory edits. Not for a new clip from scratch or ffmpeg assembly. | `npx skills add PrunaAI/pruna-skills@p-video-edit -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n\n## HTTP (curl)\n\n### Upload source assets\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-person-a-def456\",\n        \"https://api.pruna.ai/v1/files/reference-person-b-ghi789\"\n      ],\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Replace the woman on the left (olive coat) with the first reference. Replace the man on the right (navy jacket) with the second reference. Preserve walking pace, camera tracking, and audio.\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`. Output duration follows the source video.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts.\n\n### Create (sync — quick test only)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-image-def456\"\n      ]\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`**, **`images`** (1–4), **`resolution`**, **`target_fps`**, **`instruction_prompt`**, and swap intent (character / clothing-only / object / mixed).\n3. **Pruna notes:** identity comes from **`images`**; slot mapping from **`instruction_prompt`** (name source element → map each ref → preserve-list → “only X changes”). Vague targets and tiny on-screen objects drop quality. Runware map: `inputs.video` → `video`, `referenceImages` → `images`, `positivePrompt` → `instruction_prompt`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `images` (array of 1–4 string URLs): identity reference(s)\n\n## Common optional fields\n\n- `resolution`: `720p` (default) or `1080p`\n- `target_fps`: `original` (default), `24`, or `48`\n- `instruction_prompt` (string)\n- `save_audio` (boolean, default `true`)\n- `seed`, `disable_safety_checker`\n\n## Typical next steps\n\nCommon follow-ons after this skill:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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| `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\": \"p-video-replace\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1789048592832\n}\n\nFile v1.0.12:skill-card.md\n\n## Description:\n\nUse when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\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 users and developers use this skill to prepare Pruna API requests that replace people, outfits, or products in existing video while preserving camera movement, audio, and unedited scene elements.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill asks users or agents to install multiple unpinned remote skills with automatic confirmation.\n\nMitigation: Review the remote skills before installing, prefer pinned versions or verified commits, and avoid the full-suite install unless needed.\n\nRisk: Video and reference image uploads may contain people, likenesses, products, or private footage.\n\nMitigation: Upload only media the user is allowed to send to Pruna, and avoid private or rights-sensitive footage without permission.\n\n## Reference(s):\n\n- [ClawHub p-video-replace Skill Page](https://clawhub.ai/pruna-ai/skills/p-video-replace)\n- [Pruna API Files Endpoint](https://api.pruna.ai/v1/files)\n- [Pruna API Predictions Endpoint](https://api.pruna.ai/v1/predictions)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, markdown, shell commands, configuration]\n\n**Output Format:** [Markdown with inline bash and JSON examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include Pruna API request payloads and prompt text; generated video output is produced by the remote Pruna model.]\n\n## Skill Version(s):\n\n1.0.12 (source: evidence release version and artifact metadata version)\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}\n\nArchive v1.0.11: 4 files, 4953 bytes\n\nFiles: skill-card.md (1963b), skill.manifest.json (23b), SKILL.md (8882b), _meta.json (135b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: p-video-replace\ndescription: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\nlicense: MIT\nmetadata:\n  version: \"1.0.11\"\n  package: pruna-skills\n  pruna_model: p-video-replace\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -y` |\n| `pruna-api` | Use before any Pruna or Replicate HTTP call — credentials, upload/poll/download, parallel batches, and agent safety. | `npx skills add PrunaAI/pruna-skills@pruna-api -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## Agent habit\n\nIn the **first reply**, name `` `p-video-replace` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. Draft swaps with **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\n**`instruction_prompt`** maps **source slots → reference images → preserve-list**. Change only what the user asked; keep camera, audio, and unmentioned elements identical.\n\n| Do | Don't |\n| --- | --- |\n| Formula: name source element → map each ref (`first reference`, `image 2`) → preserve-list (`walking pace`, `camera tracking`, `audio`) | Vague `replace the person` with no slot mapping |\n| Ritual seed before drafting; fresh wording for preserve clauses when the brief allows | Copy this skill's sample (`olive coat`, `navy jacket`) when the user described different targets |\n| Lock swap intent (character / clothing-only / object / mixed) from the user | Drop preserve-list and hope motion/audio hold |\n| Show **`instruction_prompt`** before `POST` when wording is not locked | Silent swap that changes background, cast, or unrequested regions |\n\n**Fidelity check (before pay):** every stated swap and every stated keep must appear in **`instruction_prompt`**. Do not “spice” extras when they asked for one identity swap.\n\n## Skill boundary\n\n| | **p-video-replace** | **p-video-edit** | **p-video-animate** |\n|---|---------------------|------------------|---------------------|\n| **User question** | *Replace this person in this video?* | *Change the color / environment / object / text / lighting in this clip?* | *Animate this picture with some motion?* |\n| **Goal** | Swap identity **into** existing footage | Instruction edit of the **source clip** | Drive a **still** with motion from another clip |\n| **Source video** | The **final scene** | The **scene to edit** (≤15s) | A **motion template** only |\n| **Reference images** | Required **`images`** — **1 to 4** | Optional **`images`** — **0 to 4** | **`image`** — **one** subject per call |\n| **Prompt field** | **`instruction_prompt`** | **`prompt`** | Optional **`instruction_prompt`** |\n\n**Use `p-video-edit`** for prompt-driven attribute, environment, object, text, or lighting edits. **Use `p-video-animate`** when the user has a still and wants it to **perform** from a separate template video.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-edit` | Use when someone wants to edit an existing video with a text instruction — recolor, restyle, remove or add objects, change environment or lighting, update on-screen text, or apply optional reference-guided product and accessory edits. Not for a new clip from scratch or ffmpeg assembly. | `npx skills add PrunaAI/pruna-skills@p-video-edit -y` |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n\n## HTTP (curl)\n\n### Upload source assets\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-person-a-def456\",\n        \"https://api.pruna.ai/v1/files/reference-person-b-ghi789\"\n      ],\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Replace the woman on the left (olive coat) with the first reference. Replace the man on the right (navy jacket) with the second reference. Preserve walking pace, camera tracking, and audio.\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`. Output duration follows the source video.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts.\n\n### Create (sync — quick test only)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-image-def456\"\n      ]\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`**, **`images`** (1–4), **`resolution`**, **`target_fps`**, **`instruction_prompt`**, and swap intent (character / clothing-only / object / mixed).\n3. **Pruna notes:** identity comes from **`images`**; slot mapping from **`instruction_prompt`** (name source element → map each ref → preserve-list → “only X changes”). Vague targets and tiny on-screen objects drop quality. Runware map: `inputs.video` → `video`, `referenceImages` → `images`, `positivePrompt` → `instruction_prompt`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `images` (array of 1–4 string URLs): identity reference(s)\n\n## Common optional fields\n\n- `resolution`: `720p` (default) or `1080p`\n- `target_fps`: `original` (default), `24`, or `48`\n- `instruction_prompt` (string)\n- `save_audio` (boolean, default `true`)\n- `seed`, `disable_safety_checker`\n\n## Typical next steps\n\nCommon follow-ons after this skill:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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| `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\": \"p-video-replace\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1788444657692\n}\n\nFile v1.0.11:skill-card.md\n\n## Description:\n\nUse when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\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 video-generation operators use this skill to prepare Pruna API calls that swap a person, outfit, or product in an existing video while preserving camera movement, audio, and unmentioned scene elements.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill may install related Pruna skills from unpinned references.\n\nMitigation: Review or pin prerequisite skill sources before installation.\n\nRisk: Source videos and reference images may contain sensitive identity media and are uploaded to Pruna's API.\n\nMitigation: Avoid sensitive or non-consensual media and confirm that upload handling is acceptable before use.\n\nRisk: The optional disable_safety_checker parameter can reduce safety controls.\n\nMitigation: Leave safety checking enabled unless a reviewer has explicitly accepted the implications.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-video-replace)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with curl commands and API request configuration]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY and user-provided source video plus one to four reference images.]\n\n## Skill Version(s):\n\n1.0.11 (source: server release evidence and skill frontmatter 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}\n\nArchive v1.0.10: 4 files, 4831 bytes\n\nFiles: skill-card.md (2219b), skill.manifest.json (23b), SKILL.md (8098b), _meta.json (135b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: p-video-replace\ndescription: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\nlicense: MIT\nmetadata:\n  version: \"1.0.10\"\n  package: pruna-skills\n  pruna_model: p-video-replace\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -y` |\n| `pruna-api` | Use before any Pruna or Replicate HTTP call — credentials, upload/poll/download, parallel batches, and agent safety. | `npx skills add PrunaAI/pruna-skills@pruna-api -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## Agent habit\n\nIn the **first reply**, name `` `p-video-replace` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. Draft swaps with **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\n**`instruction_prompt`** maps **source slots → reference images → preserve-list**. Change only what the user asked; keep camera, audio, and unmentioned elements identical.\n\n| Do | Don't |\n| --- | --- |\n| Formula: name source element → map each ref (`first reference`, `image 2`) → preserve-list (`walking pace`, `camera tracking`, `audio`) | Vague `replace the person` with no slot mapping |\n| Ritual seed before drafting; fresh wording for preserve clauses when the brief allows | Copy this skill's sample (`olive coat`, `navy jacket`) when the user described different targets |\n| Lock swap intent (character / clothing-only / object / mixed) from the user | Drop preserve-list and hope motion/audio hold |\n| Show **`instruction_prompt`** before `POST` when wording is not locked | Silent swap that changes background, cast, or unrequested regions |\n\n**Fidelity check (before pay):** every stated swap and every stated keep must appear in **`instruction_prompt`**. Do not “spice” extras when they asked for one identity swap.\n\n## Skill boundary\n\n| | **p-video-replace** | **p-video-animate** |\n|---|---------------------|---------------------|\n| **User question** | *Replace this person in this video?* | *Animate this picture with some motion?* |\n| **Goal** | Swap identity **into** existing footage | Drive a **still** with motion from another clip |\n| **Source video** | The **final scene** | A **motion template** only |\n| **Reference images** | **`images`** — **1 to 4** in **one** call | **`image`** — **one** subject per call |\n\n**Use `p-video-animate`** when the user has a still and wants it to **perform** from a separate template video.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n\n## HTTP (curl)\n\n### Upload source assets\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-person-a-def456\",\n        \"https://api.pruna.ai/v1/files/reference-person-b-ghi789\"\n      ],\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Replace the woman on the left (olive coat) with the first reference. Replace the man on the right (navy jacket) with the second reference. Preserve walking pace, camera tracking, and audio.\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`. Output duration follows the source video.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts.\n\n### Create (sync — quick test only)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-image-def456\"\n      ]\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`**, **`images`** (1–4), **`resolution`**, **`target_fps`**, **`instruction_prompt`**, and swap intent (character / clothing-only / object / mixed).\n3. **Pruna notes:** identity comes from **`images`**; slot mapping from **`instruction_prompt`** (name source element → map each ref → preserve-list → “only X changes”). Vague targets and tiny on-screen objects drop quality. Runware map: `inputs.video` → `video`, `referenceImages` → `images`, `positivePrompt` → `instruction_prompt`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `images` (array of 1–4 string URLs): identity reference(s)\n\n## Common optional fields\n\n- `resolution`: `720p` (default) or `1080p`\n- `target_fps`: `original` (default), `24`, or `48`\n- `instruction_prompt` (string)\n- `save_audio` (boolean, default `true`)\n- `seed`, `disable_safety_checker`\n\n## Typical next steps\n\nCommon follow-ons after this skill:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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| `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\": \"p-video-replace\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1787903824543\n}\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nUse when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\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 guide an agent through replacing a person, outfit, or product in an existing video while preserving camera motion, timing, audio, and unrequested scene elements.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill uploads user-provided videos and reference images to Pruna's API using a PRUNA_API_KEY.\n\nMitigation: Use only media approved for Pruna processing, protect the API key, and avoid submitting confidential or restricted assets unless the account terms permit it.\n\nRisk: The skill supports identity, person, outfit, and product replacement in video.\n\nMitigation: Use it only with media and likenesses where the user has the rights and consent to modify and publish the result.\n\nRisk: The optional disable_safety_checker parameter can weaken safety controls.\n\nMitigation: Keep safety checks enabled unless a documented, authorized workflow requires otherwise, and review outputs before distribution.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-video-replace)\n- [Pruna file upload API endpoint](https://api.pruna.ai/v1/files)\n- [Pruna predictions API endpoint](https://api.pruna.ai/v1/predictions)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, API Calls, Configuration]\n\n**Output Format:** [Markdown guidance with curl examples and JSON request bodies]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires a PRUNA_API_KEY and user-provided video plus one to four reference image URLs.]\n\n## Skill Version(s):\n\n1.0.10 (source: server release metadata and SKILL.md 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.10:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.9: 4 files, 4785 bytes\n\nFiles: skill-card.md (2151b), skill.manifest.json (23b), SKILL.md (8097b), _meta.json (134b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: p-video-replace\ndescription: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\nlicense: MIT\nmetadata:\n  version: \"1.0.9\"\n  package: pruna-skills\n  pruna_model: p-video-replace\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -y` |\n| `pruna-api` | Use before any Pruna or Replicate HTTP call — credentials, upload/poll/download, parallel batches, and agent safety. | `npx skills add PrunaAI/pruna-skills@pruna-api -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## Agent habit\n\nIn the **first reply**, name `` `p-video-replace` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. Draft swaps with **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\n**`instruction_prompt`** maps **source slots → reference images → preserve-list**. Change only what the user asked; keep camera, audio, and unmentioned elements identical.\n\n| Do | Don't |\n| --- | --- |\n| Formula: name source element → map each ref (`first reference`, `image 2`) → preserve-list (`walking pace`, `camera tracking`, `audio`) | Vague `replace the person` with no slot mapping |\n| Ritual seed before drafting; fresh wording for preserve clauses when the brief allows | Copy this skill's sample (`olive coat`, `navy jacket`) when the user described different targets |\n| Lock swap intent (character / clothing-only / object / mixed) from the user | Drop preserve-list and hope motion/audio hold |\n| Show **`instruction_prompt`** before `POST` when wording is not locked | Silent swap that changes background, cast, or unrequested regions |\n\n**Fidelity check (before pay):** every stated swap and every stated keep must appear in **`instruction_prompt`**. Do not “spice” extras when they asked for one identity swap.\n\n## Skill boundary\n\n| | **p-video-replace** | **p-video-animate** |\n|---|---------------------|---------------------|\n| **User question** | *Replace this person in this video?* | *Animate this picture with some motion?* |\n| **Goal** | Swap identity **into** existing footage | Drive a **still** with motion from another clip |\n| **Source video** | The **final scene** | A **motion template** only |\n| **Reference images** | **`images`** — **1 to 4** in **one** call | **`image`** — **one** subject per call |\n\n**Use `p-video-animate`** when the user has a still and wants it to **perform** from a separate template video.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n\n## HTTP (curl)\n\n### Upload source assets\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-person-a-def456\",\n        \"https://api.pruna.ai/v1/files/reference-person-b-ghi789\"\n      ],\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Replace the woman on the left (olive coat) with the first reference. Replace the man on the right (navy jacket) with the second reference. Preserve walking pace, camera tracking, and audio.\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`. Output duration follows the source video.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts.\n\n### Create (sync — quick test only)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-image-def456\"\n      ]\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`**, **`images`** (1–4), **`resolution`**, **`target_fps`**, **`instruction_prompt`**, and swap intent (character / clothing-only / object / mixed).\n3. **Pruna notes:** identity comes from **`images`**; slot mapping from **`instruction_prompt`** (name source element → map each ref → preserve-list → “only X changes”). Vague targets and tiny on-screen objects drop quality. Runware map: `inputs.video` → `video`, `referenceImages` → `images`, `positivePrompt` → `instruction_prompt`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `images` (array of 1–4 string URLs): identity reference(s)\n\n## Common optional fields\n\n- `resolution`: `720p` (default) or `1080p`\n- `target_fps`: `original` (default), `24`, or `48`\n- `instruction_prompt` (string)\n- `save_audio` (boolean, default `true`)\n- `seed`, `disable_safety_checker`\n\n## Typical next steps\n\nCommon follow-ons after this skill:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -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| `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\": \"p-video-replace\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1785824284754\n}\n\nFile v1.0.9:skill-card.md\n\n## Description: <br>\nUse when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. <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 developers and creative automation agents use this skill to guide video replacement jobs through Pruna's API, including prompt drafting, required asset intake, and curl-based upload and prediction calls. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow uploads source videos and reference images to Pruna's external API. <br>\nMitigation: Avoid sensitive or non-consensual footage and identity images, and confirm asset choices before starting generation. <br>\nRisk: The skill requires PRUNA_API_KEY for API requests. <br>\nMitigation: Keep the API key private and avoid exposing it in prompts, logs, shared terminals, or generated artifacts. <br>\nRisk: Video replacement can incur paid generation costs and may produce unwanted changes if the prompt is vague. <br>\nMitigation: Review the instruction prompt, asset mapping, and generation settings before making a paid API call. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page for p-video-replace](https://clawhub.ai/pruna-ai/skills/p-video-replace) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration, API calls] <br>\n**Output Format:** [Markdown with curl command examples and JSON request bodies] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY plus user-provided source video and 1 to 4 reference image URLs.] <br>\n\n## Skill Version(s): <br>\n1.0.9 (source: server release evidence and SKILL.md 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.9:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.8: 4 files, 4849 bytes\n\nFiles: skill-card.md (2456b), skill.manifest.json (23b), SKILL.md (8033b), _meta.json (134b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: p-video-replace\ndescription: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\nlicense: MIT\nmetadata:\n  version: \"1.0.8\"\n  package: pruna-skills\n  pruna_model: p-video-replace\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -y` |\n| `pruna-api` | Use before any Pruna or Replicate HTTP call — credentials, upload/poll/download, parallel batches, and agent safety. | `npx skills add PrunaAI/pruna-skills@pruna-api -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## Agent habit\n\nIn the **first reply**, name `` `p-video-replace` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. Draft swaps with **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\n**`instruction_prompt`** maps **source slots → reference images → preserve-list**. Change only what the user asked; keep camera, audio, and unmentioned elements identical.\n\n| Do | Don't |\n| --- | --- |\n| Formula: name source element → map each ref (`first reference`, `image 2`) → preserve-list (`walking pace`, `camera tracking`, `audio`) | Vague `replace the person` with no slot mapping |\n| Ritual seed before drafting; fresh wording for preserve clauses when the brief allows | Copy this skill's sample (`olive coat`, `navy jacket`) when the user described different targets |\n| Lock swap intent (character / clothing-only / object / mixed) from the user | Drop preserve-list and hope motion/audio hold |\n| Show **`instruction_prompt`** before `POST` when wording is not locked | Silent swap that changes background, cast, or unrequested regions |\n\n**Fidelity check (before pay):** every stated swap and every stated keep must appear in **`instruction_prompt`**. Do not “spice” extras when they asked for one identity swap.\n\n## Skill boundary\n\n| | **p-video-replace** | **p-video-animate** |\n|---|---------------------|---------------------|\n| **User question** | *Replace this person in this video?* | *Animate this picture with some motion?* |\n| **Goal** | Swap identity **into** existing footage | Drive a **still** with motion from another clip |\n| **Source video** | The **final scene** | A **motion template** only |\n| **Reference images** | **`images`** — **1 to 4** in **one** call | **`image`** — **one** subject per call |\n\n**Use `p-video-animate`** when the user has a still and wants it to **perform** from a separate template video.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n\n## HTTP (curl)\n\n### Upload source assets\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-person-a-def456\",\n        \"https://api.pruna.ai/v1/files/reference-person-b-ghi789\"\n      ],\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Replace the woman on the left (olive coat) with the first reference. Replace the man on the right (navy jacket) with the second reference. Preserve walking pace, camera tracking, and audio.\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`. Output duration follows the source video.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts.\n\n### Create (sync — quick test only)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-image-def456\"\n      ]\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`**, **`images`** (1–4), **`resolution`**, **`target_fps`**, **`instruction_prompt`**, and swap intent (character / clothing-only / object / mixed).\n3. **Pruna notes:** identity comes from **`images`**; slot mapping from **`instruction_prompt`** (name source element → map each ref → preserve-list → “only X changes”). Vague targets and tiny on-screen objects drop quality. Runware map: `inputs.video` → `video`, `referenceImages` → `images`, `positivePrompt` → `instruction_prompt`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `images` (array of 1–4 string URLs): identity reference(s)\n\n## Common optional fields\n\n- `resolution`: `720p` (default) or `1080p`\n- `target_fps`: `original` (default), `24`, or `48`\n- `instruction_prompt` (string)\n- `save_audio` (boolean, default `true`)\n- `seed`, `disable_safety_checker`\n\n## Typical next steps\n\nCommon follow-ons after this skill:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\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| `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\": \"p-video-replace\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1785259209705\n}\n\nFile v1.0.8:skill-card.md\n\n## Description: <br>\nUse when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. <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>\nDevelopers and creative production agents use this skill to prepare Pruna API requests that replace a person, outfit, or product in an existing video while preserving the source scene, camera motion, and audio. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: User videos, reference images, and replacement instructions are uploaded to Pruna's external API. <br>\nMitigation: Use only media appropriate for external processing and avoid submitting sensitive content unless the user accepts that data flow. <br>\nRisk: Video replacement can process identifiable people, outfits, or products. <br>\nMitigation: Use media the user has rights and consent to process, and confirm the requested swap before making a paid API call. <br>\nRisk: The workflow requires a PRUNA_API_KEY. <br>\nMitigation: Keep the API key private, pass it through environment variables, and do not paste it into prompts, logs, or generated artifacts. <br>\nRisk: The skill exposes a disable_safety_checker option. <br>\nMitigation: Leave safety checks enabled unless there is a clear, policy-compliant reason to disable them. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/pruna-ai/skills/p-video-replace) <br>\n- [Pruna Files API](https://api.pruna.ai/v1/files) <br>\n- [Pruna Predictions API](https://api.pruna.ai/v1/predictions) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Markdown, Shell commands, API Calls, Configuration] <br>\n**Output Format:** [Markdown with inline curl commands and JSON request bodies] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY and user-provided source video plus 1 to 4 reference image URLs.] <br>\n\n## Skill Version(s): <br>\n1.0.8 (source: server release metadata and skill 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.8:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.7: 4 files, 4808 bytes\n\nFiles: skill-card.md (2477b), skill.manifest.json (23b), SKILL.md (7944b), _meta.json (134b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: p-video-replace\ndescription: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\nlicense: MIT\nmetadata:\n  version: \"1.0.7\"\n  package: pruna-skills\n  pruna_model: p-video-replace\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -y` |\n| `pruna-api` | Use before any Pruna or Replicate HTTP call — credentials, upload/poll/download, parallel batches, and agent safety. | `npx skills add PrunaAI/pruna-skills@pruna-api -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## Agent habit\n\nIn the **first reply**, name `` `p-video-replace` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Draft swaps with **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\n**`instruction_prompt`** maps **source slots → reference images → preserve-list**. Change only what the user asked; keep camera, audio, and unmentioned elements identical.\n\n| Do | Don't |\n| --- | --- |\n| Formula: name source element → map each ref (`first reference`, `image 2`) → preserve-list (`walking pace`, `camera tracking`, `audio`) | Vague `replace the person` with no slot mapping |\n| Ritual seed before drafting; fresh wording for preserve clauses when the brief allows | Copy this skill's sample (`olive coat`, `navy jacket`) when the user described different targets |\n| Lock swap intent (character / clothing-only / object / mixed) from the user | Drop preserve-list and hope motion/audio hold |\n| Show **`instruction_prompt`** before `POST` when wording is not locked | Silent swap that changes background, cast, or unrequested regions |\n\n**Fidelity check (before pay):** every stated swap and every stated keep must appear in **`instruction_prompt`**. Do not “spice” extras when they asked for one identity swap.\n\n## Skill boundary\n\n| | **p-video-replace** | **p-video-animate** |\n|---|---------------------|---------------------|\n| **User question** | *Replace this person in this video?* | *Animate this picture with some motion?* |\n| **Goal** | Swap identity **into** existing footage | Drive a **still** with motion from another clip |\n| **Source video** | The **final scene** | A **motion template** only |\n| **Reference images** | **`images`** — **1 to 4** in **one** call | **`image`** — **one** subject per call |\n\n**Use `p-video-animate`** when the user has a still and wants it to **perform** from a separate template video.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\n| `p-video-avatar` | Use when someone wants a person on camera speaking a script — lip-synced host, spokesperson, or narrated avatar from a portrait photo. | `npx skills add PrunaAI/pruna-skills@p-video-avatar -y` |\n\n## HTTP (curl)\n\n### Upload source assets\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-person-a-def456\",\n        \"https://api.pruna.ai/v1/files/reference-person-b-ghi789\"\n      ],\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Replace the woman on the left (olive coat) with the first reference. Replace the man on the right (navy jacket) with the second reference. Preserve walking pace, camera tracking, and audio.\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`. Output duration follows the source video.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts.\n\n### Create (sync — quick test only)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-image-def456\"\n      ]\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft a **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`**, **`images`** (1–4), **`resolution`**, **`target_fps`**, **`instruction_prompt`**, and swap intent (character / clothing-only / object / mixed).\n3. **Pruna notes:** identity comes from **`images`**; slot mapping from **`instruction_prompt`** (name source element → map each ref → preserve-list → “only X changes”). Vague targets and tiny on-screen objects drop quality. Runware map: `inputs.video` → `video`, `referenceImages` → `images`, `positivePrompt` → `instruction_prompt`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `images` (array of 1–4 string URLs): identity reference(s)\n\n## Common optional fields\n\n- `resolution`: `720p` (default) or `1080p`\n- `target_fps`: `original` (default), `24`, or `48`\n- `instruction_prompt` (string)\n- `save_audio` (boolean, default `true`)\n- `seed`, `disable_safety_checker`\n\n## Typical next steps\n\nCommon follow-ons after this skill:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-video-animate` | Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. | `npx skills add PrunaAI/pruna-skills@p-video-animate -y` |\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| `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\": \"p-video-replace\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1784810105370\n}\n\nFile v1.0.7:skill-card.md\n\n## Description: <br>\nUse when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. <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 prepare Pruna video replacement requests that swap people, clothing, or products in source footage while preserving camera motion, audio, and unrequested scene elements. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Source videos, reference images, prompts, and generated file URLs are sent to Pruna's external API. <br>\nMitigation: Use the skill only with media that may be shared with Pruna and review Pruna's retention and deletion terms before processing sensitive footage. <br>\nRisk: Video replacement can involve identity, likeness, clothing, product, or other consent-sensitive media changes. <br>\nMitigation: Confirm rights and consent for the source video and all reference images before making replacement requests. <br>\nRisk: The optional disable_safety_checker field may reduce automated safety controls. <br>\nMitigation: Leave safety checks enabled unless a reviewed policy exception applies. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-video-replace) <br>\n- [Pruna file upload API endpoint](https://api.pruna.ai/v1/files) <br>\n- [Pruna predictions API endpoint](https://api.pruna.ai/v1/predictions) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown with curl commands, JSON request bodies, and prompt guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Guides the agent to collect a source video URL, one to four reference image URLs, replacement intent, optional resolution and frame-rate settings, and an instruction prompt before calling Pruna.] <br>\n\n## Skill Version(s): <br>\n1.0.7 (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.7:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.6: 11 files, 28740 bytes\n\nFiles: README-INSTALL.md (942b), references/api-credentials.md (3128b), references/generation-diversity.md (25978b), references/generation-quality-checklists.md (10196b), references/p-video-replace-quality-checklist.md (4181b), references/pruna-api.md (5074b), references/random-seed-ritual.md (4011b), skill-card.md (3061b), skill.manifest.json (168b), SKILL.md (13781b), _meta.json (134b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: p-video-replace\ndescription: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\nlicense: MIT\nmetadata:\n  version: \"1.0.6\"\n  pruna_model: p-video-replace\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.\n\n# p-video-replace (Pruna)\n\n**P-Video-Replace** takes a source RGB video and one or more reference images, then swaps **characters**, **clothing**, **objects/props**, or a **combination** into the scene while preserving the original motion, acting, timing, camera movement, and scene structure.\n\nGiven a source video and reference images plus a clear **`instruction_prompt`**, the model places referenced identities into the video — not only face swap.\n\nFull P-API parameters: [p-video-replace model docs](https://docs.api.pruna.ai/guides/models/p-video-replace) · operational guides (Runware host): [product & wardrobe](https://runware.ai/docs/models/prunaai-p-video-replace/guides/product-and-wardrobe-variations) · [recasting scenes](https://runware.ai/docs/models/prunaai-p-video-replace/guides/recasting-iconic-film-scenes)\n\nShared HTTP patterns: [pruna-api.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/pruna-api.md)\n\n## p-video-replace vs p-video-animate\n\nPick the model from what the user is trying to do — these are different jobs.\n\n| | **p-video-replace** | **p-video-animate** |\n|---|---------------------|---------------------|\n| **User question** | *How can I replace this person in this video?* | *How can I animate this picture with some motion?* |\n| **Goal** | Swap identity **into** existing footage | Drive a **still** with motion from another clip |\n| **Source video** | The **final scene** (actors, audio, environment stay) | A **motion template** (acting, camera, timing only) |\n| **Reference images** | **`images`** — **1 to 4** URLs in **one** call (multiple people) | **`image`** — **one** subject per call |\n| **Output look** | Same video structure; new face/body from references | New video styled like the still, following template motion |\n\n**Use p-video-replace** when the user has real footage and wants to swap **people**, **clothing/outfits**, **products/props**, or a **mix** in one call (recast, UGC refresh, wardrobe change, shelf SKU swap, in-hand product). Map each reference slot in `instruction_prompt`.\n\n**Use [p-video-animate](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-animate/skills/p-video-animate/SKILL.md)** when the user has a portrait or character still and wants it to **perform** using motion copied from a separate template video (meme remix, motion-transfer slider, persona variants).\n\n## Key features\n\n- Top visual quality; preserves source motion, timing, camera path, and audio\n- **Multiple reference images in one request** — up to **4** images (multi-person, multi-SKU, or mixed slots)\n- Efficient inference: **~3.58s generation per 1s of video** (directional; varies by settings)\n- Pricing: **$0.03/s** (720p), **$0.06/s** (1080p) of output video\n\n## What you can replace\n\n| Swap type | Reference still shows | `instruction_prompt` must |\n|-----------|----------------------|---------------------------|\n| **Character** | New person / cast | Name who in the **source** is replaced; keep motion and scene |\n| **Clothing** | Outfit on similar pose | **Replace only garments**; keep face, body motion, background |\n| **Object / product** | Hero packshot or prop | **Replace only the object** (bottle, bag, shelf SKU); keep hands and camera |\n| **Mixed** | 1–4 refs for people + props + wardrobe | Map **each** image index to a specific slot in the source |\n\n**Anti-pattern:** Generic lines like *\"Replace the person in the video\"* without naming **what** in the source and **what** from each reference. Identity comes from **`images`**; correct **slot mapping** comes from **`instruction_prompt`**.\n\n**Localized swap pattern:** name the **specific source element** to replace, list everything to **preserve**, close with *\"Only the [X] should change; everything else stays as the source.\"* — required for clothing-only and object-only jobs.\n\n**Multi-reference replace reels:** Prefer **`multi_job`** (one image per API call) with per-reference prompts; default **`p-video-avatar`** sources (product in hand, desk prop, solo talking head). Anti-patterns: [visual-variety-bible.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/visual-variety-bible.md#prompt-patterns).\n\n## Before generating\n\n1. **[Generation diversity](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/generation-diversity.md)** — ritual seed + axis rotation; pass as `seed` when set.\n2. Confirm with the user:\n\n- **`video`** URL — source RGB `.mp4` (motion + audio source; upload to `/v1/files` first)\n- **`images`** — **1–4** identity reference URLs (upload each image first)\n- **`resolution`**: `720p` or `1080p`\n- **`target_fps`**: `original`, `24`, or `48`\n- **`instruction_prompt`** — **required for production quality**: map each source slot (left person, white bottle, red dress) to reference cues; say what **not** to change (camera, audio, background)\n- **Swap intent** — character vs clothing-only vs object vs mixed (decide before writing the prompt)\n- Optional **`save_audio`**, **`seed`**, **`disable_safety_checker`**\n\nRun [p-video-replace-quality-checklist.md](./references/p-video-replace-quality-checklist.md) on inputs and outputs.\n\n**Batch runs:** when several independent source videos each need replacement, create **all** predictions in one parallel async batch, then batch-poll. See [parallel-execution.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/parallel-execution.md). Fan out variants at **`720p`** for review; re-run approved rows at **`1080p`**.\n\n## Making replacement work\n\n**Two inputs matter:** (1) **`images`** — replacement look; (2) **`instruction_prompt`** — which source element each image replaces.\n\n| Factor | Guidance |\n|--------|----------|\n| Reference stills | **Bare product/garment packshots** — no person, hands, or props in frame |\n| Reference count | One still per slot; **up to 4** per call |\n| Multi-slot scenes | One `instruction_prompt` listing left/right, shelf order, or in-hand object; index refs (\"first reference\", \"reference image 2\") |\n| Variant rows | One image per API call; **per-call** `instruction_prompt` naming source subject + reference cues |\n| Framing match | Chest-held product → vertical packshot; torso garment → flat-lay front face; match scale to source |\n| Held objects | Name the **person** as swap target; list the prop as **preserved** — or the ref may land on the object |\n| Character audio | **`save_audio: true`** — voice stays from the **source** clip, not the reference portrait |\n| Shot alignment | Match framing/scale between source and reference (especially products) |\n\n**Character** (UGC recast — use **position mapping** when several similar figures):\n\n```text\nReplace the man in the centre of the group, the one adjusting his sunglasses, with the man from the reference.\nPreserve motion, audio, camera, lighting, and the other four men exactly as in the source.\n```\n\n**Character with held prop** (disambiguate — ref can land on phone/volleyball instead of face):\n\n```text\nReplace the bearded man kneeling on the raft, reaching toward the volleyball and yelling, with the man from the reference.\nPreserve the raft, ocean, drifting volleyball, motion, audio, camera, and lighting exactly as in the source.\n```\n\n**Clothing only** (same model, new outfit):\n\n```text\nReplace the olive-green t-shirt the woman is wearing with the white oxford button-down from the reference.\nPreserve her face, hair, the earbuds case in her right hand, gestures, speech, studio, lighting, camera, and audio.\nOnly the top she is wearing should change; everything else stays as the source.\n```\n\n**Object** (in-hand SKU):\n\n```text\nReplace the matte-black earbuds case in the woman's right hand with the terracotta succulent from the reference.\nPreserve her face, hair, olive t-shirt, gestures, speech, studio, lighting, camera, and audio.\nOnly the object in her hand should change; everything else stays as the source.\n```\n\n**Mixed** (wardrobe + product in one call):\n\n```text\nReplace the olive-green t-shirt with the white oxford from reference image 1, AND replace the earbuds case with the coffee tumbler from reference image 2.\nPreserve her face, hair, gestures, speech, studio, lighting, camera, and audio.\nBoth the top and the hand object should change; everything else stays as the source.\n```\n\n**Mixed** (cafe — face + bag + jacket):\n\n```text\nReplace the woman with the first reference (face and burgundy bag). Replace the man's navy bomber with the olive suede jacket from the second reference.\nPreserve table, cups, laughter timing, and camera orbit.\n```\n\nPrepare references with **`p-image`** / **`p-image-edit`** when the user only has loose photos.\n\n## Limits\n\n- **Vague targets** — *\"replace the product\"* forces the model to guess; name the object and its location in the source.\n- **Tiny on-screen targets** — product held far from camera or corner stickers → swap quality drops; target must occupy enough of the frame.\n- **Pixel-perfect preservation** — background logos, jersey numbers, barcodes that must stay frame-identical → use inpainting with a mask, not replace.\n- Replace lifts the reference **into the scene** — small label text or patterns may drift between runs.\n\nRunware field map: `inputs.video` → `video`, `referenceImages` → `images`, `positivePrompt` → `instruction_prompt`.\n\n## Required input\n\n- `video` (string URL): source RGB video (`.mp4`); motion and audio source\n- `images` (array of 1–4 string URLs): identity reference image(s) to place into the video\n\n## Common optional fields\n\n- `resolution`: `720p` (default) or `1080p`\n- `target_fps`: `original` (default), `24`, or `48`\n- `instruction_prompt` (string): how to place people from the reference images into the scene\n- `save_audio` (boolean, default `true`)\n- `seed` (integer)\n- `disable_safety_checker` (boolean, default `false`)\n\n## Example: upload source assets\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\"\n```\n\nUse each response `urls.get` (or `https://api.pruna.ai/v1/files/{id}`) in `input.video` and `input.images`.\n\n## Example: async (recommended) — two people, one call\n\nOmit `Try-Sync`. Output duration follows the source video.\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-person-a-def456\",\n        \"https://api.pruna.ai/v1/files/reference-person-b-ghi789\"\n      ],\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Replace the woman on the left (olive coat) with the first reference. Replace the man on the right (navy jacket) with the second reference. Preserve walking pace, camera tracking, and audio.\"\n    }\n  }'\n```\n\nPoll and download: [pruna-api.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/pruna-api.md#poll).\n\n## Example: sync (single quick test only)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-image-def456\"\n      ]\n    }\n  }'\n```\n\n## Typical next steps\n\n- Motion-transfer from a still (different model): [p-video-animate](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-animate/skills/p-video-animate/SKILL.md)\n- Generate or edit reference portraits: [p-image](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-image/skills/p-image/SKILL.md), [p-image-edit](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-image-edit/skills/p-image-edit/SKILL.md)\n- New talking-head clip from script (not in-place replacement): [p-video-avatar](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-avatar/skills/p-video-avatar/SKILL.md)\n- Multi-scene slider demos: [`generate_video_comparison.py`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/_shared/scripts/generate_video_comparison.py)\n- Pipeline hub: [pruna-generative-pipeline](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md)\n\n## Related workflow\n\nSlider comparison reels: [`generate_video_comparison.py`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/_shared/scripts/generate_video_comparison.py) + [pruna-generative-pipeline](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md) recipe N.\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-replace\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1784235607349\n}\n\nFile v1.0.6:references/api-credentials.md\n\n# API credentials (Pruna + Replicate)\n\n**Agent rule:** Before any `POST /v1/predictions`, Replicate prediction, or paid runner — check env vars. If a required key is **missing or empty**, **stop** and tell the user how to sign up. Do not guess, mock, or skip with placeholder keys.\n\n## Pruna P-API\n\n| | |\n|--|--|\n| **Env var** | `PRUNA_API_KEY` |\n| **Header** | `apikey: ${PRUNA_API_KEY}` (not `Authorization: Bearer`) |\n| **Sign up / get key** | [Pruna dashboard](https://dashboard.pruna.ai/) |\n| **Docs** | [Quickstart](https://docs.api.pruna.ai/guides/quickstart) · [pruna-api.md](./pruna-api.md) |\n\n**Used by:** all `p-image*`, `p-video*` tool skills and Pruna workflow runners.\n\n### If `PRUNA_API_KEY` is missing — agent message template\n\n> Pruna generation needs an API key. Sign up or sign in at **[dashboard.pruna.ai](https://dashboard.pruna.ai/)**, create an API key, then set:\n>\n> ```bash\n> export PRUNA_API_KEY=\"your_key_here\"\n> ```\n>\n> Add that to your shell profile or project `.env` (never commit the key). Reply when it’s set and we can continue.\n\n## Replicate\n\n| | |\n|--|--|\n| **Env var** | `REPLICATE_API_TOKEN` |\n| **Header** | `Authorization: Bearer ${REPLICATE_API_TOKEN}` |\n| **Sign up / get token** | [Replicate API tokens](https://replicate.com/account/api-tokens) ([sign in](https://replicate.com/signin) first if needed) |\n| **Docs** | [replicate-api.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/replicate-api/SKILL.md) |\n\n**Used by:** `music-2.5`, `gemini-3.1-flash-tts`, `stable-audio-2.5`, `whisperx`, and workflow beds/TTS/song phases.\n\n### If `REPLICATE_API_TOKEN` is missing — agent message template\n\n> This step uses Replicate (song, TTS, transcription, or background bed). Create a token at **[replicate.com/account/api-tokens](https://replicate.com/account/api-tokens)**, then set:\n>\n> ```bash\n> export REPLICATE_API_TOKEN=\"r8_...\"\n> ```\n>\n> Reply when it’s set and we can continue.\n\n## Which key does this job need?\n\n| Task | Keys required |\n|------|----------------|\n| `p-image`, `p-image-edit`, `p-image-upscale`, `p-image-try-on` | `PRUNA_API_KEY` |\n| `p-video`, `p-video-avatar`, `p-video-animate`, `p-video-replace` | `PRUNA_API_KEY` |\n| Music 2.5 song generation | `REPLICATE_API_TOKEN` |\n| Gemini TTS narration | `REPLICATE_API_TOKEN` |\n| Stable Audio background bed | `REPLICATE_API_TOKEN` |\n| WhisperX transcription | `REPLICATE_API_TOKEN` |\n| Music video / explainer (full pipeline) | **Both** — Pruna for stills/video; Replicate for song/TTS/bed as needed |\n\nWhen only one key is missing, suggest **only** that provider’s signup link — not both.\n\n## Security\n\n- Never print full keys in chat or commit them to git.\n- `.env` is gitignored; prefer env vars over hardcoding in plans or manifests.\n- Never embed keys in prompts, manifests, plan JSON, logs, or **subagent task text**.\n- Prefer the **parent agent** to own API calls; do not fan credentials across parallel subagents unless the host documents isolated secret injection.\n- Full rules: [agent-safety.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/agent-safety/SKILL.md).\n\nFile v1.0.6:references/generation-diversity.md\n\n# Generation diversity (all models)\n\nOne checklist so **every** Pruna output — **`p-image`**, **`p-video`**, try-on, avatar, replace, animate — is as **diverse** as the brief allows. Details live in linked docs; this page is the agent shortcut.\n\nUse the **full** checklist here for every generation.\n\n## Contents\n\n- [Three steps (every job)](#three-steps-every-job)\n- [Explicit prompt structure](#explicit-prompt-structure-required)\n- [Text & typography by model](#text--typography-by-model)\n- [SSoT axis derivation](#ssot-axis-derivation-sum-mod)\n- [Scenario axes](#scenario-axes-rotate-across-outputs)\n- [Render categories](#render-categories)\n- [Crowded scenes](#crowded-scenes-p-image)\n- [Body type spread](#body-type-spread)\n- [Location-matched crowds](#location-matched-crowds)\n- [Group classes](#group-classes--courses)\n- [Framing & camera](#framing--camera)\n- [Scene spice](#scene-spice-when-it-fits)\n- [Photoreal anti-slop](#photoreal-anti-slop-neon--stylized-briefs)\n- [Aspect ratio](#aspect-ratio-multi-example-sets)\n- [By model](#by-model-minimum-diversity)\n- [When not to maximize diversity](#when-not-to-maximize-diversity)\n- [Anti-patterns](#anti-patterns)\n\n## Three steps (every job)\n\n1. **[Random seed ritual](./random-seed-ritual.md) (SSoT)** — **always first**, before the prompt. Generate a fresh random string, **state it in the turn**, derive axes via [sum-mod](#ssot-axis-derivation-sum-mod). **Do not** pass the ritual string to API `seed`. **One new ritual string per independent generation**; reuse only on same-brief slop retry.\n2. **Write an [explicit prompt](#explicit-prompt-structure-required)** — name specific people, animals, objects, actions, setting, and camera/light. Add text/typography only when the brief needs it — see [text rules by model](#text--typography-by-model).\n3. **Diversify the scenario row** — change at least **two axes** from the previous output in the same session (cast, setting, camera, **`render_category_tag`**, **aspect_ratio**, creatures, props, … — unless user asked for continuity).\n4. **Log** — `ritual_seed`, axes chosen, prediction id (manifest or turn text).\n\n## Explicit prompt structure (required)\n\n**Vague prompts produce generic AI slop.** After the ritual and axis picks, every still prompt must be **specific and dynamic** — concrete nouns, frozen actions, named places. Prefer playground/creative briefs over marketing abstractions.\n\n**Name at least four of these per prompt (log tags in manifest):**\n\n| Clause | Log as | Agent must specify |\n|--------|--------|-------------------|\n| **People** | `cast_descriptor` | Named role + age band + expression (`fearless grandmother in floral apron`, not `woman`) |\n| **Animals / creatures** | `creature_tag` | Species + attitude (`otter DJ`, `luna moth knight`, `VIP anglerfish`) |\n| **Objects** | `prop_tag` | Concrete props (`vinyl record`, `chrome rocket sled`, `velvet rope`, `tiny boombox`) |\n| **Action** | `action_tag` | Frozen mid-motion verb (`scratching vinyl`, `lassoing runaway taco truck`, `cape mid-swing`) |\n| **Duration** | `duration_tag` | When timing matters (`1970s`, `8PM`, `45-minute spin class`, `Saturday-morning cartoon`) |\n| **Setting** | `setting_tag` | Named place + era + materials (`packed 1970s roller rink`, `abyss-depth jellyfish nightclub`, `Monument Valley dust storm`) |\n| **Text / typography** | `text_spec` | Only when brief needs readable type — exact strings + surface (see [by model](#text--typography-by-model)) |\n| **Camera + light** | `camera_tag`, `lighting_tag` | `fish-eye lens`, `tilt-shift macro`, `teal-magenta cinematic`, `golden hour sparkle` |\n| **Style** | `render_category_tag` | Medium (`cel-shaded anime`, `baroque oil painting`, `ink-wash storybook`, `photoreal documentary`) |\n\n**Template:**\n\n```text\n{people and/or creatures} {action} with/at {specific objects} in {named setting},\n{style or era cues}, {camera_tag}, {lighting_tag}\n```\n\n**Good examples (dynamic / specific):**\n\n```text\nDisco ball reflections on an otter DJ scratching vinyl at a packed 1970s roller rink,\nfish-eye lens, glitter confetti mid-air, funky energy\n```\n\n```text\nBioluminescent jellyfish nightclub at abyss depth, VIP anglerfish in sunglasses at velvet rope,\nteal-magenta cinematic lighting\n```\n\n```text\nCorgi cowboy lassoing a runaway taco truck through Monument Valley dust storm,\npulp western poster energy, dynamic diagonal composition\n```\n\n**Anti-pattern:** `cool cyberpunk portrait, neon vibes` — no subject, no action, no place. **Right:** name who, what they're doing, where, with which props.\n\n## Text & typography by model\n\n**Never use negation to suppress text** — `no text`, `without signs`, `no typography` often **invoke** the thing you are trying to avoid. Describe surfaces positively when you want blank walls (`plain unmarked walls`, `matte unprinted props`).\n\n| Model | Prompt upsampling | Typography in prompt |\n|-------|-------------------|----------------------|\n| **`p-image`** | **No** effective prompt upsampling | **Avoid** dense readable-type requests unless user explicitly wants `text_rendering`. Short prompts; skip `readable`, `legible`, `headline`, multi-sign lists — they drift to gibberish. Collage triggers still apply: [interactive-explainer-prompts.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/interactive-explainer-prompts.md) (`flat lay`, `grid`, `collage`, …). |\n\n**`p-image` text hygiene:** prefer scenes without copy. If a screen appears: `monitor soft colorful blur glow only` — not legible UI unless the user explicitly asked for readable text (then simplify the brief or drop copy).\n\n**Collage triggers (all T2I models):** still avoid `flat lay`, `packshot`, `grid`, `collage`, `montage`, `contact sheet`, `split`, `before and after` — use `single frame`, `one camera angle` instead. Full table: [interactive-explainer-prompts.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/interactive-explainer-prompts.md).\n\n## SSoT axis derivation (sum-mod)\n\nAfter stating `ritual_seed` (random string), derive prompt choices — sum Unicode/ASCII char codes, mod list length:\n\n```text\nRATIOS = [\"1:1\", \"16:9\", \"9:16\", \"4:3\", \"3:4\", \"3:2\", \"2:3\"]\naspect_ratio  ← RATIOS[ sum(codes(ritual_seed)) % 7 ]\ncamera_tag    ← camera_tags[ sum(codes(ritual_seed[0:4])) % len(camera_tags) ]\nrender_tag    ← render_tags[ sum(codes(ritual_seed[4:8])) % len(render_tags) ]\n```\n\n`camera_tags` and `render_tags` — see [framing & camera](#framing--camera) and [render categories](#render-categories). State derived picks in the turn (*\"Aspect ratio: 16:9, camera: over-shoulder\"*).\n\n**User `api_seed`:** when the user supplies an integer for reproducibility, pass it as `input.seed` — separate from the ritual string.\n\n## Scenario axes (rotate across outputs)\n\n| Axis | Vary with | Applies to |\n|------|-----------|------------|\n| **Cast** | age, ethnicity, gender, archetype, **hairstyle**, **body type** (rotate — see [below](#body-type-spread)), disability aids (wheelchair, cane), visible age band twice in prompt | all person/content gens |\n| **Medium** | `render_category_tag` — rotate across [render categories](#render-categories) | `p-image`, avatar stills |\n| **Setting** | unique `setting_tag` — specific room/street/venue/era, not repeat adjacent rows | stills + video plates |\n| **Camera** | `camera_tag` — rotate across [framing ladder](#framing--camera); never default MC facing lens | stills, `video_prompt` |\n| **Lighting** | `lighting_tag` — golden hour · neon · overcast · practical | stills, video mood |\n| **Motion** | unique `video_prompt` per clip | `p-video`, `p-video-avatar`, animate |\n| **Voice** | natural `voice_script`; one `voice` preset per character | avatar, TTS-led video |\n| **Seed** | new ritual string per **independent** job; reuse only on same-brief slop retry | all generation skills |\n| **Aspect ratio** | different `aspect_ratio` per independent still in a batch — see [below](#aspect-ratio-multi-example-sets) | `p-image`, `p-image-edit` |\n| **Crowd density** | layered background population + activity cues — see [below](#crowded-scenes-p-image) | `p-image` plates with busy worlds |\n\nFull style/camera/lighting ladders: [visual-variety-bible.md](https://github.com/PrunaAI/pruna-skills/tree/main/shared/visual-variety-bible.md). Persona + try-on bar: [realistic-persona-showcase.md](https://github.com/PrunaAI/pruna-skills/tree/main/shared/realistic-persona-showcase.md).\n\n## Render categories\n\nRotate **`render_category_tag`** (and log it) so diversity batches cover more than photoreal portraits or anime. Category families below mirror arena leaderboards — pick a **different tag per independent output**.\n\n**Random seed ritual still applies** to every generation in [step 1](#three-steps-every-job); categories describe *what* to vary, not *when* to pick `seed`.\n\n### Text-to-image — `p-image`\n\nSources: [Arena text-to-image](https://arena.ai/leaderboard/text-to-image) · [AA text-to-image](https://artificialanalysis.ai/image/leaderboard/text-to-image)\n\n**Unified `render_category_tag`** (Arena bucket = tag — pick one per still):\n\n`product_branding_commercial` · `3d_imaging_modeling` · `cartoon_anime_fantasy` · `photoreal_cinematic` · `art` · `portraits` · `nature_environment` · `animals_creature` · `text_rendering`\n\n| Tag | Typical prompt lane |\n|-----|---------------------|\n| `product_branding_commercial` | single product on seamless studio, person + product in named setting, showroom (not `flat lay` / `packshot` words) |\n| `3d_imaging_modeling` | CG film still, clay/stop-motion, rounded 3D forms |\n| `cartoon_anime_fantasy` | cel anime, fantasy character, crowded stylized world |\n| `photoreal_cinematic` | documentary crowd scenes, film-scale wide, urban march |\n| `art` | oil, watercolor, gouache, charcoal, flat vector |\n| `portraits` | single-subject editorial or documentary portrait (crowd optional behind) |\n| `nature_environment` | landscape-wide; subject small in frame |\n| `animals_creature` | named species + handler; crowded market/park when it fits |\n| `text_rendering` | **user-requested only** — otherwise no readable text |\n\nLog `render_category_tag` in manifest. Combine with [crowded scenes](#crowded-scenes-p-image), [body type](#body-type-spread), and [scene spice](#scene-spice-when-it-fits) when the brief allows.\n\n### Image edit — `p-image-edit`\n\nSources: [Arena image edit](https://arena.ai/leaderboard/image-edit) · [AA image editing](https://artificialanalysis.ai/image/leaderboard/editing)\n\nArena modalities: `single_image_edit` · `multi_image_edit`\n\nEdit diversity tags: `background_swap` · `relight` · `wardrobe_on_plate` · `pose_or_angle_delta` · `multi_ref_composite` · `region_inpaint`\n\nVary **instruction** and **what changes** while identity URL stays fixed on character arcs.\n\n### Text-to-video — `p-video`\n\nSources: [Arena text-to-video](https://arena.ai/leaderboard/text-to-video) · [AA text-to-video](https://artificialanalysis.ai/video/leaderboard/text-to-video)\n\nMotion/scene tags: `character_performance` · `landscape_broll` · `urban_street` · `product_demo` · `abstract_mood` · `crowd_scene` · `dialogue_beat`\n\nRotate `video_prompt` grammar, start plate world, and `camera_tag` per clip.\n\n### Image-to-video — `p-video` (+ plate upload)\n\nSources: [Arena image-to-video](https://arena.ai/leaderboard/image-to-video) · [AA image-to-video](https://artificialanalysis.ai/video/leaderboard/image-to-video)\n\nPlate-driven tags: `animate_hero_still` · `camera_move_on_plate` · `environmental_parallax` · `avatar_lip_sync` · `hands_or_prop_motion`\n\nMatch motion to what the **still** already shows — do not contradict the plate.\n\n### Video edit — `p-video-replace` (and edit-style video)\n\nSource: [Arena video edit](https://arena.ai/leaderboard/video-edit)\n\nEdit tags: `face_recast` · `wardrobe_swap` · `accessory_swap` · `background_replace` · `object_in_hand_swap` · `style_transfer_on_subject`\n\nSame-gender / identity rules for talking-head beats still apply — see [visual-variety-bible.md](https://github.com/PrunaAI/pruna-skills/tree/main/shared/visual-variety-bible.md).\n\n## Crowded scenes (`p-image`)\n\nWhen the brief asks for **busy**, **crowded**, or **lively** worlds — not a lone subject on a blank wall — stack density in the prompt:\n\n1. **Three depth layers** — sharp foreground subject · readable midground faces/hands/props · landmark bokeh (stage, temple, billboards, ferris wheel).\n2. **Named population count** — `hundreds of pedestrians`, `dozens of faces in midground`, `20+ tiny clay figures` (stylized sets need explicit counts; models under-deliver on vague \"busy\").\n3. **Activity verbs** — raised hands, umbrellas open, food steam, confetti, market haggling, commuters pressed shoulder-to-shoulder.\n4. **Shallow DOF + single subject** — `single subject one frame` keeps one identity readable while the crowd stays behind them.\n5. **Age & angle lock** — repeat age band twice (`woman in her late 50s, visibly fifty`) and use [framing & camera](#framing--camera) — models drift younger, center-frame, and front-facing without it.\n\n| Crowd family | Density cues |\n|--------------|--------------|\n| **Urban rush** | crosswalk stripes, wet reflections, umbrellas, billboard bokeh |\n| **Festival / parade** | confetti, raised hands, costume layers, smoke haze |\n| **Market / bazaar** | overflowing stalls, hanging goods, steam, price tags as color blobs |\n| **Transit crush** | strap hangers, door windows, blurred faces pressed together |\n| **Stylized miniature** | counted clay/figurine shoppers (`20+`), cramped aisle, stacked crates |\n| **Institutional / ER** | framed oil portraits on beige walls, triage number board, wall sanitizer, vending machine, scuffed linoleum, TV blur, mixed-age seated patients |\n| **Urban march / protest** | named city, local landmarks, multiracial crowd cues separate from hero — see [location-matched crowds](#location-matched-crowds) |\n| **Group fitness class** | class name + duration, mixed-gender riders, realistic warm studio light — see [group classes](#group-classes--courses) |\n\n**Anti-pattern:** one blurred smear behind a portrait — name **what** the crowd is doing and **where** layers sit. **Institutional** scenes (ER, airport, classroom) need `benches full`, `standing room only`, or `shoulder-to-shoulder` — otherwise models default to a quiet hallway. Name **set dressing** too: framed portraits on walls, triage number board, vending machine glow, scuffed linoleum — generic mint corridors read AI-empty.\n\n## Body type spread\n\nModels default to one “average fitness” body. In diversity batches, **name build on the hero and vary background bodies**:\n\n| Build tag | Prompt cue |\n|-----------|------------|\n| **Plus-size / curvy** | `plus-size`, `curvy build`, `full-figured` |\n| **Athletic / muscular** | `broad shoulders`, `muscular arms`, `athletic build` |\n| **Petite / slim** | `petite frame`, `slim build`, `narrow shoulders` |\n| **Tall / lanky** | `tall and lanky`, `6-foot frame`, `long limbs` |\n| **Stocky / heavyset** | `stocky build`, `heavyset`, `barrel chest` |\n| **Lean wiry** | `lean wiry frame`, `weathered thin face` |\n\n**Rule:** rotate build across independent panels in a session — not every hero “athletic build”. Background crowd should mix ages **and** silhouettes (`elderly thin woman`, `heavyset man`, `pregnant woman seated`, `toddler on lap`).\n\n## Location-matched crowds\n\nWhen the prompt names a **real city or country**, background faces must match that place’s **demographic mix** — not clone the hero’s ethnicity.\n\n| Wrong | Right |\n|-------|--------|\n| South Asian hero + only South Asian protesters in “New York” | Hero is one identity; crowd explicitly `multiracial NYC march — Black, Latino, white, East Asian protesters` |\n| “Dense city march” with no geography | Name city + 3–4 crowd ethnicity cues + local landmarks (yellow cabs, art deco towers, steam vent) |\n| Festival in Lagos with only Nordic faces | Match crowd to `setting_tag` region |\n\n**Prompt pattern:** lock hero cast in sentence 1; sentence 2 lists **four+ distinct background silhouettes** unrelated to hero ethnicity; sentence 3 names **local landmarks** so the plate cannot read as generic stock.\n\n**Applies to:** protests, airports, transit, street markets, sports crowds — any scene where “crowded” implies a real place.\n\n## Group classes & courses\n\nWhen the scene is a **class, workshop, or team activity**, name the **course type** and **who else is in the room** — models default to monochrome crowds (all men, all one age).\n\n| Specify | Example cues |\n|---------|----------------|\n| **Class type** | `45-minute evening spin class`, `beginner yoga flow`, `HIIT bootcamp circuit` |\n| **Room realism** | warm overhead track lights, mirror wall, rubber floor, water bottles, towels — **not** magenta-cyan neon strips unless brief is explicitly nightclub |\n| **Gender mix** | hero is one person; crowd `mixed-gender class — women with ponytails, men with beards, nonbinary cyclist` |\n| **Body + age mix** | plus-size rider, petite woman, athletic man, woman in her 50s — same as [body type spread](#body-type-spread) |\n\n**Lighting rule for fitness:** real boutique studios are **dim warm overhead** or **single spotlight on instructor** — avoid `split gel`, `neon LED strips`, `magenta-cyan` on photoreal gym plates; those read AI-fake.\n\n**Prompt pattern:** `Documentary fitness portrait` + class name + instructor on bike at front + `20+ mixed-gender cyclists` with 3–4 named background silhouettes + realistic room props.\n\n## Framing & camera\n\nModels default to **centered subject, eyes at camera**. In diversity batches, **rotate `camera_tag` and frame placement** every row — log both in manifest.\n\n**Gaze rule:** `glance off-lens`, `profile`, `back to camera`, `looking down at [prop]`, or `watching the crowd` — **not** `facing camera` or `looking at viewer` unless the user asked for a direct-address avatar plate.\n\n**Placement rule:** name where the subject sits in frame — `left third`, `right third`, `lower right corner`, `edge of frame`, `small in environmental wide` — **not** centered mugshot every time.\n\n| `camera_tag` | Prompt cue |\n|--------------|------------|\n| **Overhead / bird's eye** | `overhead aerial view`, `top-down`, `drone shot looking straight down` |\n| **High corner** | `high angle from corner`, `surveillance-style downward angle` |\n| **Worm's eye** | `ground-level worm's eye`, `camera on pavement` |\n| **Crane-down** | `slight high angle crane-down` |\n| **Over-shoulder** | `over-shoulder from behind`, `seen past someone's shoulder` |\n| **Profile / side** | `profile side angle`, `walking across frame` |\n| **From behind** | `back to camera`, `three-quarter from behind` |\n| **Dutch tilt** | `dutch tilt` — tension scenes only |\n| **Through crowd** | `subject visible through gap in crowd`, `foreground heads out of focus` |\n\n**Batch rule:** no two adjacent stills share the same `camera_tag` **and** placement corner (e.g. don't do `left third` twice in a row).\n\nAvatar / lip-sync exception: face must stay readable and mouth visible — use `slight angle from the side` or `three-quarter`, still **off-center** and **off-lens gaze** when not delivering VO to camera.\n\n## Scene spice (when it fits)\n\nDefault plates are person + crowd + place. Add **one or two specific attributes** when the setting naturally supports them — not random clutter on every row.\n\n| Spice type | When to add | Example |\n|------------|-------------|---------|\n| **Animals** | setting implies them | dog park → `golden retriever on leash`; harbor → `seagulls overhead`; rooftop → `pigeons on water tower`; parade → `police horse midground` |\n| **Held / worn props** | role or weather | `red umbrella tucked under arm`, `wire beekeeper smoker`, `chipped ceramic mug`, `sample strawberry basket` |\n| **Micro-detail** | one thumb-stopping oddity | `muddy paw prints on pavement`, `honey jar on crate`, `green parade beads on fence` |\n\nCamera and placement live in [framing & camera](#framing--camera) — not optional spice.\n\n**Rule:** pick **at most two** spice items per prompt. They must answer “what would a photographer notice here?” — not a checklist dump.\n\n**Skip spice when:** product hero, avatar MC talking head, try-on full-body (garment is the focus), or minimal studio brief.\n\n## Photoreal anti-slop (neon / stylized briefs)\n\nStylized settings still need **documentary skin discipline** or outputs go waxy:\n\n- Lead with `documentary portrait, natural skin pores, not CGI, not illustration` even for neon/cyberpunk worlds.\n- Prefer **worn real materials** — matte leather, faded denim, scratched CRT bezels, sticky carpet — over `holographic puffer`, `chrome armor`, `HUD`.\n- Name **gritty location cues** — basement arcade, wet alley, scuffed linoleum — not abstract `neon corridor`.\n- Background crowd faces need **imperfect texture**; blur is fine, plastic skin in midground is not.\n\n## Aspect ratio (multi-example sets)\n\nWhen generating **two or more** stills in one session (playground grid, demo batch, mood board), give each independent output a **different** `aspect_ratio` unless the user locked a format.\n\n**Allowed `p-image` values:** `1:1` · `16:9` · `9:16` · `4:3` · `3:4` · `3:2` · `2:3`\n\n**How to pick:** after the [random seed ritual](./random-seed-ritual.md), use [sum-mod](#ssot-axis-derivation-sum-mod) on `ritual_seed` — state it in the turn (*\"Aspect ratio: 16:9\"*). Do **not** default every example to `9:16` or `1:1`.\n\n| Ratio | Typical use |\n|-------|-------------|\n| `9:16` | vertical UGC, full-body fashion, avatar talking head |\n| `16:9` | environmental wide, cinematic landscape plate |\n| `3:4` | editorial portrait, try-on full-body |\n| `4:3` | classic portrait, product + person |\n| `1:1` | packshot grid, social tile |\n| `3:2` · `2:3` | magazine / poster crops |\n\nMatch prompt framing to ratio (e.g. `16:9 horizontal wide shot`, `9:16 vertical full body`). **`p-image-try-on`** inherits plate size when `preserve_input_size: true` — diversify person plates first.\n\n**Same character arc:** one ratio for the whole chain unless the user asks for reframes.\n\n## By model (minimum diversity)\n\n| Model | Besides ritual seed, always vary |\n|-------|-----------------------------------|\n| **`p-image`** | cast/creature + objects + action + setting + camera + **`render_category_tag`** + **aspect_ratio**; [explicit structure](#explicit-prompt-structure-required); [text hygiene](#text--typography-by-model) (no upsampling) |\n| **`p-image-edit`** | edit tag + setting/angle delta; same identity URL |\n| **`p-image-try-on`** | person plate world + garment complexity; preserve scene |\n| **`p-image-upscale`** | N/A on prompt — diversify **source** stills |\n| **`p-video`** | motion/scene tag + `video_prompt`; differ start plates per scene |\n| **`p-video-avatar`** | `video_prompt` + still world per scene; lock voice per character |\n| **`p-video-animate`** | persona still style/setting per slider ref |\n| **`p-video-replace`** | video-edit tag + full cast spread on showcase reels |\n\n## When **not** to maximize diversity\n\n- **Same character arc** — lock hero plate URL, one `voice`, cast descriptor; vary only setting/angle/motion per scene.\n- **User asked for continuity** — match their cast and approved plates.\n- **Draft → final** — same prompt; change only `draft: false`. Use `api_seed` only if user locked API reproducibility.\n\n## Anti-patterns\n\n| Wrong | Right |\n|-------|--------|\n| Copy doc example ritual strings | [Random seed ritual](./random-seed-ritual.md) — fresh string each time |\n| Pass ritual string as API `seed` | Ritual is SSoT planning only; `api_seed` when user requests |\n| White wall + MC CU on every demo | Rotate setting + camera + cast |\n| One `video_prompt` for whole reel | Unique motion per scene row |\n| New ritual string mid avatar chain on same brief | Reuse `ritual_seed` until recast or new independent output |\n| Same aspect ratio on every playground example | Rotate `1:1` · `16:9` · `9:16` · `4:3` · `3:4` · `3:2` · `2:3` per [aspect ratio rules](#aspect-ratio-multi-example-sets) |\n| Every hero same athletic body | Rotate [body type spread](#body-type-spread) |\n| Generic hospital hallway | Named ER set dressing + mixed body types in crowd |\n| `holographic` / `chrome` on photoreal cyber scenes | Worn leather, scratched cabinets, documentary skin cues |\n| Monoculture crowd in a named global city | [Location-matched crowds](#location-matched-crowds) — hero ≠ background ethnicity |\n| Magenta-cyan neon on photoreal gym | Warm overhead studio light, mirror wall, real spin bikes |\n| All-male or all-female group class | [Group classes](#group-classes--courses) — mixed-gender background cues |\n| Centered subject every frame | [Framing & camera](#framing--camera) — rotate `camera_tag` + placement |\n| Subject facing camera / at viewer | Off-lens gaze, profile, from behind, or watching crowd |\n| Random animals with no setting reason | Animals only when place implies them |\n| Every stylized panel is anime | Rotate [render categories](#render-categories) — use `cartoon_anime_fantasy` at most once per batch |\n| Vague `cool portrait, neon vibes` | [Explicit structure](#explicit-prompt-structure-required) — named subject, action, objects, setting |\n| `no text` / `without signage` in prompt | Negation invokes text — use [text rules by model](#text--typography-by-model) |\n| Dense typography on **`p-image`** | Drop copy or simplify the brief — `p-image` has no prompt upsampling |\n\n## Related\n\n- [generation-quality-checklists.md](./generation-quality-checklists.md) — core + model checklists\n- [staged-generation-gate.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/staged-generation-gate.md) — approval phases\n\nFile v1.0.6:references/generation-quality-checklists.md\n\n# Generation quality checklist hub\n\nUse this as the shared quality gate across models and workflows.\nRun the **Core checklist** for every generation job, then run the model-specific checklist.\n\n## Who applies these checklists?\n\n**The coding agent** — by **opening the real output files** (images, video, or audio) and reviewing them with vision. These checklists are **not** automated test scripts. There is no separate scoring service: the agent reads each item and judges pass or fail from what it sees and hears.\n\nTypical flow:\n\n1. **Generate or download** the asset to a local path (`stills/`, `clips/`, etc.).\n2. **Inspect the file** — view the image, watch the video clip, or listen to narration when the checklist covers audio.\n3. Run the **Core checklist** (below), then the **model-specific checklist** for that job.\n4. **If something fails** — note which items failed, adjust prompt / settings / seed, and regenerate **only that asset** (do not advance to expensive video steps on a bad still).\n5. **If it passes** — show the user the file paths (and previews when helpful). In workflows, still follow [staged-generation-gate.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/staged-generation-gate.md): agent checklist review happens **before** you ask the user to approve stills or clips.\n\nThe user's **approve plan / approve stills / approve clips** gates are separate. Agent checklists catch obvious problems early so the user is not asked to sign off on broken outputs.\n\nMaintenance rule: keep tool/workflow mapping only in this file to avoid link drift.\n\n## Match map (tool -> checklist -> workflows)\n\n| Tool/model | Checklist | Common workflows |\n|------------|-----------|---------------|\n| `p-image` | [`p-image-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-quality-checklist.md) · persona bar: [`realistic-persona-showcase.md`](https://github.com/PrunaAI/pruna-skills/tree/main/shared/realistic-persona-showcase.md) | [`image-to-video`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/image-to-video/skills/image-to-video/SKILL.md), [`narrated-multi-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/narrated-multi-scene/skills/narrated-multi-scene/SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md) |\n| `p-image-edit` | [`p-image-edit-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-edit-quality-checklist.md) | [`avatar-single-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-single-scene/skills/avatar-single-scene/SKILL.md), [`avatar-multi-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-multi-scene/skills/avatar-multi-scene/SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md) |\n| `p-image-upscale` | [`p-image-upscale-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-upscale-quality-checklist.md) | [`image-to-video`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/image-to-video/skills/image-to-video/SKILL.md), [`narrated-multi-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/narrated-multi-scene/skills/narrated-multi-scene/SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md), [`generate_upscale_comparison.py`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/_shared/scripts/generate_upscale_comparison.py) |\n| `p-image-try-on` | [`p-image-try-on-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-try-on-quality-checklist.md) | [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md), [`p-image-try-on`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-image-try-on/skills/p-image-try-on/SKILL.md), [`realistic-persona-showcase.md`](https://github.com/PrunaAI/pruna-skills/tree/main/shared/realistic-persona-showcase.md) |\n| `p-video` | [`p-video-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-quality-checklist.md) | [`image-to-video`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/image-to-video/skills/image-to-video/SKILL.md), [`narrated-multi-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/narrated-multi-scene/skills/narrated-multi-scene/SKILL.md), [`interactive-explainer`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/interactive-explainer/skills/interactive-explainer/SKILL.md), [`visual-transition-reel`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/visual-transition-reel/skills/visual-transition-reel/SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md) |\n| `p-video-avatar` | [`p-video-avatar-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-avatar-quality-checklist.md) · persona bar: [`realistic-persona-showcase.md`](https://github.com/PrunaAI/pruna-skills/tree/main/shared/realistic-persona-showcase.md) | [`avatar-single-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-single-scene/skills/avatar-single-scene/SKILL.md), [`avatar-multi-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-multi-scene/skills/avatar-multi-scene/SKILL.md), [`interactive-explainer`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/interactive-explainer/skills/interactive-explainer/SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md) |\n| `p-video-animate` | [`p-video-animate-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-animate-quality-checklist.md) | [`avatar-multi-scene`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-multi-scene/skills/avatar-multi-scene/SKILL.md), [`WORKFLOW-RECIPES`](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md) |\n| `p-video-replace` | [`p-video-replace-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-replace-quality-checklist.md) | [`p-video-replace`](../SKILL.md), [`generate_video_comparison.py`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/_shared/scripts/generate_video_comparison.py) |\n| `music-2.5` + music video assembly | [`music-video-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/music-video-quality-checklist.md) | [`music-video`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/music-video/skills/music-video/SKILL.md), [`music-2.5`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/music-2.5/skills/music-2.5/SKILL.md) |\n\n## Core checklist (all models)\n\n- **[Generation diversity](./generation-diversity.md)** — ritual seed + rotate scenario axes on **every** model (image, video, try-on, avatar, …).\n- **[Random seed ritual](./random-seed-ritual.md) (SSoT)** — generate and state a ritual string **before** every generation; derive prompt axes via sum-mod; never copy example strings from docs.\n- Goal and acceptance criteria are explicit (what \"good\" looks like is written down).\n- Input assets are valid and licensed (URL/file reachable, rights cleared).\n- Prompt and settings match the intended output format (`aspect_ratio`, duration, resolution, style lock). **Video default:** `720p`, `24` fps unless the brief asks for final `1080p` / `48`.\n- Output contains no accidental watermarks, UI overlays, or stray text unless requested.\n- Brand, legal, and safety constraints are satisfied before handoff.\n- Manifest/log captures model, input fields, prediction id, output URL, and **`ritual_seed`** for traceability.\n\n## Model-specific checklists\n\n- [`p-image-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-quality-checklist.md)\n- [`p-image-edit-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-edit-quality-checklist.md)\n- [`p-image-upscale-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-upscale-quality-checklist.md)\n- [`p-image-try-on-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/image/p-image-try-on-quality-checklist.md)\n- [`p-video-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-quality-checklist.md)\n- [`p-video-avatar-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-avatar-quality-checklist.md)\n- [`p-video-animate-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-animate-quality-checklist.md)\n- [`p-video-replace-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/video/p-video-replace-quality-checklist.md)\n- [`music-video-quality-checklist.md`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/music-video-quality-checklist.md)\n\n## Visual variety (launch reels)\n\nBefore **any** generation, run [generation-diversity.md](./generation-diversity.md). Launch reels: also [visual-variety-bible.md](https://github.com/PrunaAI/pruna-skills/tree/main/shared/visual-variety-bible.md) **Variety checklist**. Persona/playground bar: [realistic-persona-showcase.md](https://github.com/PrunaAI/pruna-skills/tree/main/shared/realistic-persona-showcase.md).\n\nFor phased human review before expensive video jobs, see [staged-generation-gate.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/staged-generation-gate.md) and the per-skill index [workflow-feedback-gates.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/workflow-feedback-gates.md).\n\n## Workflow note\n\nFor multi-scene projects, run these checks per scene and add a final continuity pass\n(style, character identity, voice, and pacing consistency across scenes).\n\n**Narrated cinematic B-roll:** validate [scene anchor triple](https://github.com/PrunaAI/pruna-skills/tree/main/video/scene-anchor-triple.md) inputs before `p-video` — start still, end still, uploaded narration URL per row.\n\nFile v1.0.6:references/p-video-replace-quality-checklist.md\n\n# p-video-replace quality checklist\n\nAfter each replace job, **open the source video, reference images, and output clip** and review them against this checklist (agent vision review — see [generation-quality-checklists.md](https://github.com/PrunaAI/pruna-skills/tree/main/policies/generation-quality-checklists.md#who-applies-these-checklists)).\n\n## Applies to\n\nSee the canonical mapping in [`generation-quality-checklists.md`](https://github.com/PrunaAI/pruna-skills/tree/main/policies/generation-quality-checklists.md).\n\n## Input gate (pre-render)\n\n- Source **`video`** is the intended scene (motion, audio, and framing to keep).\n- **`replace_target`** is explicit: character, clothing, object, or mixed.\n- **`subject_in_video`** (or equivalent plan note) lists what in the source will be swapped.\n- **`images`** array has **1–4** clear references (rights cleared); one still per slot.\n- **Product/object refs** are bare packshots — no person, hands, or scene props in frame.\n- **`instruction_prompt`** maps each reference to a **specific** source slot — not generic \"replace the person.\"\n- **Localized swaps:** prompt ends with *only [X] changes; everything else stays as the source* for clothing/object rows.\n- **Held-object scenes:** prompt names the **person** as swap target and lists the prop as preserved.\n- **`multi_job` rows:** each reference has its **own** `instruction_prompt` when using a launch runner or plan JSON.\n- **`single_call` rows:** one prompt maps index order to screen position (left/right, shelf L→R, etc.).\n- **`resolution`** and **`target_fps\n\nArchive v1.0.2: 12 files, 31944 bytes\n\nFiles: README-INSTALL.md (376b), references/api-credentials.md (3138b), references/generation-diversity.md (26021b), references/generation-quality-checklists.md (10669b), references/p-video-replace-quality-checklist.md (4127b), references/parallel-execution.md (8015b), references/pruna-api.md (4980b), references/random-seed-ritual.md (4088b), skill-card.md (3432b), skill.manifest.json (297b), SKILL.md (13233b), _meta.json (134b)","readmeExcerpt":"Skill: p-video-replace Owner: pruna-ai Summary: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. 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:35:25.321Z | auto - Bumped version to 1.0.14. - Documentation updated in SKILL.md to reflect the new version. - Removed the skill-card.md file","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"curl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\""},{"language":"bash","snippet":"curl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\""},{"language":"bash","snippet":"curl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\""},{"language":"bash","snippet":"curl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/source-video.mp4\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-a.png\"\n\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference-person-b.png\""},{"language":"bash","snippet":"curl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{"},{"language":"bash","snippet":"curl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-video-replace' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"images\": [\n        \"https://api.pruna.ai/v1/files/reference-person-a-def456\",\n        \"https://api.pruna.ai/v1/files/reference-person-b-ghi789\"\n      ],\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Replace the woman on the left (olive coat) with the first reference. Replace the man on the right (navy jacket) with the second reference. Preserve walking pace, camera tracking, and audio.\"\n    }\n  }'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: p-video-replace\ndescription: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n  pruna_model: p-video-replace\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| `generation-diversity` | Use when writing any generative prompt — ritual seed, explicit structure, scenario axes, and quality gates before paid API calls. | `npx skills add PrunaAI/pruna-skills@generation-diversity -y` |\n| `video-prompting` | Use when crafting video or motion prompts for any generative model — dramaturgy, camera, physics-safe motion, frame anchors, and clip chaining. | `npx skills add PrunaAI/pruna-skills@video-prompting -y` |\n| `pruna-api` | Use before any Pruna or Replicate HTTP call — credentials, upload/poll/download, parallel batches, and agent safety. | `npx skills add PrunaAI/pruna-skills@pruna-api -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## Agent habit\n\nIn the **first reply**, name `` `p-video-replace` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. Open intake → **`generation-diversity`** clarification intake before the first `POST`. Draft swaps with **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\n**`instruction_prompt`** maps **source slots → reference images → preserve-list**. Change only what the user asked; keep camera, audio, and unmentioned elements identical.\n\n| Do | Don't |\n| --- | --- |\n| Formula: name source element → map each ref (`first reference`, `image 2`) → preserve-list (`walking pace`, `camera tracking`, `audio`) | Vague `replace the person` with no slot mapping |\n| Ritual seed before drafting; fresh wording for preserve clauses when the brief allows | Copy this skill's sample (`olive coat`, `navy jacket`) when the user described different targets |\n| Lock swap intent (character / clothing-only / object / mixed) from the user | Drop preserve-list and hope motion/audio hold |\n| Show **`instruction_prompt`** before `POST` when wording is not locked | Silent swap that changes background, cast, or unrequested regions |\n\n**Fidelity check (before pay):** every stated swap and every stated keep must appear in **`instruction_prompt`**. Do not “spice” extras when they asked for one identity swap.\n\n## Skill boundary\n\n| | **p-video-replace** | **p-video-edit** | **p-video-animate** |\n|---|---------------------|------------------|---------------------|\n| **User question** | *Replace this person in this video?* | *Change the color / environment / object / text / lighting in this"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-replace\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696125321\n}"},{"path":"skill-card.md","content":"## Description:\n\nGuides agents in replacing a person, outfit, or product in existing footage while preserving camera movement and audio.\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 guide reference-image-based replacements in a source video through Pruna's hosted API, while retaining the original scene's camera movement and audio.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Source video and reference images are uploaded to Pruna's hosted API.\n\nMitigation: Use only media approved for third-party upload; avoid confidential or regulated footage unless authorized.\n\nRisk: Replacing identifiable people in video can be done without their consent.\n\nMitigation: Obtain consent for identifiable people and use only media you are authorized to edit.\n\nRisk: Related skill installation commands may fetch unpinned content.\n\nMitigation: Prefer pinned or otherwise trusted installer commands for related skills.\n\n## Reference(s):\n\n- [p-video-replace on ClawHub](https://clawhub.ai/pruna-ai/skills/p-video-replace)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with curl examples and video-editing prompts]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guidance for submitting a source video and 1–4 reference images; the hosted service returns the edited video.]\n\n## Skill Version(s):\n\n1.0.14 (source: ClawHub release 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."},{"path":"skill.manifest.json","content":"{\n  \"references\": []\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. Skill: p-video-replace Owner: pruna-ai Summary: Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. 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:35:25.321Z | auto - Bumped version to 1.0.14. - Documentation updated in SKILL.md to reflect the new version. - Removed the skill-card.md file","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1337,"uniquenessScore":48,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T10:42:53.898Z","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-10T10:42:53.898Z","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-10T13:31:04.649Z","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"}]}}}