{"id":"471270b1-abd7-4847-9cc6-1d4c4bec7d65","entityType":"agent","slug":"clawhub-pruna-ai-p-video-animate","name":"p-video-animate","canonicalUrl":"https://www.xpersona.co/agent/clawhub-pruna-ai-p-video-animate","canonicalPath":"/agent/clawhub-pruna-ai-p-video-animate","generatedAt":"2026-10-10T14:47:05.093Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T12:15:09.578Z","emptyReason":null},"description":"Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. Skill: p-video-animate Owner: pruna-ai Summary: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. 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:12.647Z | auto p-video-animate 1.0.14 - Updated skill metadata version to 1.0.14 in SKILL.md. - Removed redundant file: skil","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:p-video-animate","sourceUrl":"https://clawhub.ai/pruna-ai/p-video-animate","homepage":"https://clawhub.ai/pruna-ai/skills/p-video-animate","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/pruna-ai/p-video-animate","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/pruna-ai/skills/p-video-animate","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. Skill: p-video-anima"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:15:09.578Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:15:09.578Z","emptyReason":null},"stars":null,"forks":null,"downloads":1439,"packageName":null,"latestVersion":"1.0.14","tractionLabel":"1.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:15:09.578Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T12:15:09.578Z","lastCrawledAt":"2026-10-10T12:15:09.578Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T12:15:09.578Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.14","createdAt":"2026-09-29T15:35:12.647Z","changelog":"p-video-animate 1.0.14 - Updated skill metadata version to 1.0.14 in SKILL.md. - Removed redundant file: skill-card.md. - No changes to functionality or usage instructions.","fileCount":4,"zipByteSize":4666},{"version":"1.0.13","createdAt":"2026-09-17T13:57:49.127Z","changelog":"p-video-animate 1.0.13 - Updated SKILL.md version to 1.0.13 and related metadata. - Removed redundant skill-card.md file to streamline documentation. - No changes to functionality or user-facing behavior.","fileCount":4,"zipByteSize":4853},{"version":"1.0.12","createdAt":"2026-09-10T13:56:15.436Z","changelog":"- Version bump to 1.0.12. - Documentation updated: minor text changes in SKILL.md. - skill-card.md file removed.","fileCount":4,"zipByteSize":4975},{"version":"1.0.11","createdAt":"2026-09-03T14:10:42.642Z","changelog":"- Updated to version 1.0.11 with documentation changes. - Expanded the \"When NOT to use\" section with a new `p-video-edit` entry and guidance. - Removed the deprecated `skill-card.md` file. - No core logic or API changes; changes are limited to skill documentation and boundaries.","fileCount":4,"zipByteSize":4913},{"version":"1.0.10","createdAt":"2026-08-28T07:56:50.189Z","changelog":"p-video-animate 1.0.10 - Documentation updated in SKILL.md; incremented version to 1.0.10. - Removed skill-card.md file.","fileCount":4,"zipByteSize":4718},{"version":"1.0.9","createdAt":"2026-08-04T06:17:54.918Z","changelog":"- Version bump from 1.0.8 to 1.0.9. - Updated SKILL.md with improved descriptions for follow-on skill scenarios, especially clarifying use cases for p-image. - Removed redundant or deprecated skill-card.md. - No changes to core functionality or API usage.","fileCount":4,"zipByteSize":4880},{"version":"1.0.8","createdAt":"2026-07-28T17:20:01.393Z","changelog":"p-video-animate 1.0.8 - Added guidance to open `generation-diversity` clarification intake before the first POST in the agent habit section. - Minor clarifications in agent workflow for required input gathering. - Removed redundant file: skill-card.md.","fileCount":4,"zipByteSize":4852},{"version":"1.0.7","createdAt":"2026-07-23T12:34:53.937Z","changelog":"p-video-animate 1.0.7 - Major documentation update: SKILL.md restructured for clarity and modularity. - Clear prerequisites and skill boundaries listed, referencing related skills for edits, swaps, or avatar generation. - Guidance refocused on correct motion transfer use, dynamic prompt crafting, and fidelity checks. - All extraneous internal references and quality checklist files removed for simplicity. - Usage instructions and HTTP (curl) examples modernized for better developer onboarding and skill alignment.","fileCount":4,"zipByteSize":4623}]},"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-animate","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-animate/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-animate/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-animate/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-animate/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-animate/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-animate/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T14:47:05.089Z"}},"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-animate/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-animate/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-animate/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-video-animate/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-10T12:15:09.578Z","emptyReason":null},"readme":"Skill: p-video-animate\n\nOwner: pruna-ai\n\nSummary: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\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:12.647Z | auto\n\np-video-animate 1.0.14\n\n- Updated skill metadata version to 1.0.14 in SKILL.md.\n- Removed redundant file: skill-card.md.\n- No changes to functionality or usage instructions.\n\nv1.0.13 | 2026-09-17T13:57:49.127Z | auto\n\np-video-animate 1.0.13\n\n- Updated SKILL.md version to 1.0.13 and related metadata.\n- Removed redundant skill-card.md file to streamline documentation.\n- No changes to functionality or user-facing behavior.\n\nv1.0.12 | 2026-09-10T13:56:15.436Z | auto\n\n- Version bump to 1.0.12.\n- Documentation updated: minor text changes in SKILL.md.\n- skill-card.md file removed.\n\nv1.0.11 | 2026-09-03T14:10:42.642Z | auto\n\n- Updated to version 1.0.11 with documentation changes.\n- Expanded the \"When NOT to use\" section with a new `p-video-edit` entry and guidance.\n- Removed the deprecated `skill-card.md` file.\n- No core logic or API changes; changes are limited to skill documentation and boundaries.\n\nv1.0.10 | 2026-08-28T07:56:50.189Z | auto\n\np-video-animate 1.0.10\n\n- Documentation updated in SKILL.md; incremented version to 1.0.10.\n- Removed skill-card.md file.\n\nv1.0.9 | 2026-08-04T06:17:54.918Z | auto\n\n- Version bump from 1.0.8 to 1.0.9.\n- Updated SKILL.md with improved descriptions for follow-on skill scenarios, especially clarifying use cases for p-image.\n- Removed redundant or deprecated skill-card.md.\n- No changes to core functionality or API usage.\n\nv1.0.8 | 2026-07-28T17:20:01.393Z | auto\n\np-video-animate 1.0.8\n\n- Added guidance to open `generation-diversity` clarification intake before the first POST in the agent habit section.\n- Minor clarifications in agent workflow for required input gathering.\n- Removed redundant file: skill-card.md.\n\nv1.0.7 | 2026-07-23T12:34:53.937Z | auto\n\np-video-animate 1.0.7\n\n- Major documentation update: SKILL.md restructured for clarity and modularity.\n- Clear prerequisites and skill boundaries listed, referencing related skills for edits, swaps, or avatar generation.\n- Guidance refocused on correct motion transfer use, dynamic prompt crafting, and fidelity checks.\n- All extraneous internal references and quality checklist files removed for simplicity.\n- Usage instructions and HTTP (curl) examples modernized for better developer onboarding and skill alignment.\n\nv1.0.6 | 2026-07-16T20:59:39.007Z | auto\n\n**Version 1.0.6 Changelog**\n\n- Introduced a new \"Shared generation policy\" section with enforced pre-generation steps for quality and diversity.\n- Updated references to shared policy files and URLs for generation diversity, quality checklists, random seed, and parallel execution.\n- Removed local copies of policy/reference files in favor of central shared docs.\n- Minor improvements to documentation clarity and field explanations.\n- Updated version and metadata info in manifest and documentation.\n\nv1.0.2 | 2026-07-16T13:33:37.160Z | auto\n\np-video-animate v1.0.2\n\n- Updated documentation and references for improved clarity and usage.\n- Added and revised guides on generation diversity, quality checklists, random seed usage, parallel execution, and API credentials.\n- Improved instructions for input preparation and best practices.\n- Removed the redundant skill-card.md file.\n\nv1.0.1 | 2026-07-14T15:48:17.095Z | auto\n\np-video-animate 1.0.1\n\n- Updated skill version to 1.0.1 in SKILL.md.\n- Changed internal links and references in documentation to point to GitHub URLs where appropriate.\n- Removed old or redundant files: pspm.json and skill-card.md.\n- Improved clarity and organization in the documentation and examples.\n- No changes to API, inputs, or feature functionality.\n\nv0.0.1 | 2026-07-14T15:04:49.405Z | auto\n\np-video-animate v0.0.1\n\n- Initial release of the p-video-animate skill.\n- Animates a still image using motion, timing, and camera movement from a video.\n- Designed for motion-transfer remixes, performance variations, and animated persona showcases—not in-place video identity swaps.\n- Supports 720p and 1080p output, with user-selectable FPS and motion instructions.\n- Provides guidance for best input pairing and quality results.\n- Includes clear usage examples, batch support, and model parameter documentation.\n\nv1.0.0 | 2026-06-30T16:54:49.019Z | auto\n\np-video-animate 1.0.0\n\n- Initial release of the p-video-animate skill for animating a still image using the motion, timing, and camera movement from a reference video.\n- Provides top visual quality and fast, cost-efficient inference (5.24s per 1s video; $0.03–$0.06 per 1s).\n- Supports motion-transfer applications like UGC ad variations, meme remixes, movie scene recasting, and game cinematics.\n- Includes detailed guidelines for effective motion transfer and input pairing for best results.\n- Offers configurable options: resolution (720p/1080p), FPS, instruction prompts, audio, and random seed.\n- Provides API usage examples and comparison with p-video-replace.\n\nArchive index:\n\nArchive v1.0.14: 4 files, 4666 bytes\n\nFiles: skill-card.md (1666b), skill.manifest.json (23b), SKILL.md (8641b), _meta.json (135b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: p-video-animate\ndescription: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n  pruna_model: p-video-animate\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-animate` `` 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`. When drafting optional **`instruction_prompt`**, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nAppearance comes from **`image`**; motion from **`video`**. Optional **`instruction_prompt`** is **surgical** — one concrete end beat or pose fix, not a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Ritual seed before drafting; leave **`instruction_prompt`** blank when refs already align | Copy this skill's generic sample (`Animate the reference subject using the motion from the source video`) when the user named a specific beat |\n| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame | Invent a different performance or swap the subject |\n| When needed, one concrete **`instruction_prompt`** beat (`hold landing pose on final frame`, `match arm raise at 0:03`) | Mood-only rewrites or vague `make it dance better` |\n| Show **`instruction_prompt`** (if any) before `POST` when not locked | Silent regen that changes identity or ignores the template motion |\n\n**Fidelity check (before pay):** still the user's still + template video. Repose with `p-image-edit` when close but not exact — do not compensate with a vague prompt.\n\n## Skill boundary\n\n| | **p-video-animate** (this skill) | **p-video-replace** |\n|---|----------------------------------|---------------------|\n| **User question** | *Animate this picture with some motion?* | *Replace this person in this video?* |\n| **Inputs** | One **`image`** + motion-template **`video`** | Source **`video`** + **`images`** (1–4) |\n| **Job** | Still performs using copied motion | People/props in footage swapped for refs |\n\n**Use `p-video-replace`** for in-place identity swap. **Use this skill** for motion-transfer showcases and persona variants.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-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-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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-image.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.image`.\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-animate' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\",\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Animate the reference subject using the motion from the source video.\"\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-animate' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\"\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft optional **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`** (motion/audio source), **`image`** (subject), **`resolution`**, **`target_fps`**, and **`instruction_prompt`**.\n3. **Pruna notes:** appearance from **image**, motion from **video**. Match framing/pose/limb visibility to the template’s first frame; repose with `p-image-edit` when close but not exact. Leave **`instruction_prompt`** blank unless you need one concrete end beat. Runware map: `referenceImages[0]` → `image`, `referenceVideos[0]` → `video`, `positivePrompt` → `instruction_prompt`, `settings.preserveAudio` → `save_audio`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `image` (string URL): reference subject to animate\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-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `avatar-multi-scene` | Use when someone wants the same person hosting several clips — multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. | `npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.14:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-animate\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696112647\n}\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nAnimates a still image using motion from a reference video for dance remixes, motion transfer, and performance variations.\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 animate a subject from a still image with the movements of a reference video through Pruna's video generation service.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing unpinned helper skills may introduce unreviewed changes.\n\nMitigation: Pin or pre-review helper skills before allowing the agent to install them.\n\nRisk: Source images and videos are uploaded to Pruna for processing.\n\nMitigation: Get approval before uploading sensitive media; avoid confidential, regulated, or biometric content unless external processing is authorized.\n\n## Reference(s):\n\n- [p-video-animate on ClawHub](https://clawhub.ai/pruna-ai/skills/p-video-animate)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, API calls]\n\n**Output Format:** [Markdown with shell commands and API instructions]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides generation of a video using an image and a reference video.]\n\n## Skill Version(s):\n\n1.0.14 (source: release metadata and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.14:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.13: 4 files, 4853 bytes\n\nFiles: skill-card.md (2092b), skill.manifest.json (23b), SKILL.md (8641b), _meta.json (135b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: p-video-animate\ndescription: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\nlicense: MIT\nmetadata:\n  version: \"1.0.13\"\n  package: pruna-skills\n  pruna_model: p-video-animate\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-animate` `` 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`. When drafting optional **`instruction_prompt`**, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nAppearance comes from **`image`**; motion from **`video`**. Optional **`instruction_prompt`** is **surgical** — one concrete end beat or pose fix, not a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Ritual seed before drafting; leave **`instruction_prompt`** blank when refs already align | Copy this skill's generic sample (`Animate the reference subject using the motion from the source video`) when the user named a specific beat |\n| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame | Invent a different performance or swap the subject |\n| When needed, one concrete **`instruction_prompt`** beat (`hold landing pose on final frame`, `match arm raise at 0:03`) | Mood-only rewrites or vague `make it dance better` |\n| Show **`instruction_prompt`** (if any) before `POST` when not locked | Silent regen that changes identity or ignores the template motion |\n\n**Fidelity check (before pay):** still the user's still + template video. Repose with `p-image-edit` when close but not exact — do not compensate with a vague prompt.\n\n## Skill boundary\n\n| | **p-video-animate** (this skill) | **p-video-replace** |\n|---|----------------------------------|---------------------|\n| **User question** | *Animate this picture with some motion?* | *Replace this person in this video?* |\n| **Inputs** | One **`image`** + motion-template **`video`** | Source **`video`** + **`images`** (1–4) |\n| **Job** | Still performs using copied motion | People/props in footage swapped for refs |\n\n**Use `p-video-replace`** for in-place identity swap. **Use this skill** for motion-transfer showcases and persona variants.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-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-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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-image.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.image`.\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-animate' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\",\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Animate the reference subject using the motion from the source video.\"\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-animate' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\"\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft optional **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`** (motion/audio source), **`image`** (subject), **`resolution`**, **`target_fps`**, and **`instruction_prompt`**.\n3. **Pruna notes:** appearance from **image**, motion from **video**. Match framing/pose/limb visibility to the template’s first frame; repose with `p-image-edit` when close but not exact. Leave **`instruction_prompt`** blank unless you need one concrete end beat. Runware map: `referenceImages[0]` → `image`, `referenceVideos[0]` → `video`, `positivePrompt` → `instruction_prompt`, `settings.preserveAudio` → `save_audio`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `image` (string URL): reference subject to animate\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-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `avatar-multi-scene` | Use when someone wants the same person hosting several clips — multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. | `npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.13:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-animate\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1789653469127\n}\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nUse when someone wants a photo to move like another video, including motion transfer, dance remixes, or performance variations from a template clip.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and creative operators use this skill to animate a still image with motion transferred from a reference video through Pruna's p-video-animate model, while preserving the subject from the image and the motion from the template video.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill asks users to install mutable external skills with unpinned npx commands before use.\n\nMitigation: Review each install command, prefer pinned or reviewed versions where available, and avoid installing the full suite unless it is needed.\n\nRisk: The workflow uploads user media to Pruna and uses a PRUNA_API_KEY for API calls.\n\nMitigation: Use only media appropriate for upload to Pruna, keep PRUNA_API_KEY scoped and private, and avoid exposing the key in logs or shared files.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-video-animate)\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 with inline bash and JSON examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY plus user-provided source video and reference image URLs; 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, 4975 bytes\n\nFiles: skill-card.md (2340b), skill.manifest.json (23b), SKILL.md (8641b), _meta.json (135b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: p-video-animate\ndescription: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\nlicense: MIT\nmetadata:\n  version: \"1.0.12\"\n  package: pruna-skills\n  pruna_model: p-video-animate\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-animate` `` 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`. When drafting optional **`instruction_prompt`**, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nAppearance comes from **`image`**; motion from **`video`**. Optional **`instruction_prompt`** is **surgical** — one concrete end beat or pose fix, not a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Ritual seed before drafting; leave **`instruction_prompt`** blank when refs already align | Copy this skill's generic sample (`Animate the reference subject using the motion from the source video`) when the user named a specific beat |\n| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame | Invent a different performance or swap the subject |\n| When needed, one concrete **`instruction_prompt`** beat (`hold landing pose on final frame`, `match arm raise at 0:03`) | Mood-only rewrites or vague `make it dance better` |\n| Show **`instruction_prompt`** (if any) before `POST` when not locked | Silent regen that changes identity or ignores the template motion |\n\n**Fidelity check (before pay):** still the user's still + template video. Repose with `p-image-edit` when close but not exact — do not compensate with a vague prompt.\n\n## Skill boundary\n\n| | **p-video-animate** (this skill) | **p-video-replace** |\n|---|----------------------------------|---------------------|\n| **User question** | *Animate this picture with some motion?* | *Replace this person in this video?* |\n| **Inputs** | One **`image`** + motion-template **`video`** | Source **`video`** + **`images`** (1–4) |\n| **Job** | Still performs using copied motion | People/props in footage swapped for refs |\n\n**Use `p-video-replace`** for in-place identity swap. **Use this skill** for motion-transfer showcases and persona variants.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-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-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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-image.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.image`.\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-animate' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\",\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Animate the reference subject using the motion from the source video.\"\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-animate' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\"\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft optional **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`** (motion/audio source), **`image`** (subject), **`resolution`**, **`target_fps`**, and **`instruction_prompt`**.\n3. **Pruna notes:** appearance from **image**, motion from **video**. Match framing/pose/limb visibility to the template’s first frame; repose with `p-image-edit` when close but not exact. Leave **`instruction_prompt`** blank unless you need one concrete end beat. Runware map: `referenceImages[0]` → `image`, `referenceVideos[0]` → `video`, `positivePrompt` → `instruction_prompt`, `settings.preserveAudio` → `save_audio`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `image` (string URL): reference subject to animate\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-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `avatar-multi-scene` | Use when someone wants the same person hosting several clips — multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. | `npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-animate\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1789048575436\n}\n\nFile v1.0.12:skill-card.md\n\n## Description:\n\nUse when someone wants a photo to move like another video through motion transfer, dance remixes, or performance variations from a template clip.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[pruna-ai](https://clawhub.ai/user/pruna-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal creators and developers use this skill to guide an agent through animating a still image with motion from a template video using Pruna's p-video-animate model. The skill helps collect required media inputs, prepare a narrow optional instruction prompt, upload assets, and request an asynchronous video generation.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: User-supplied images and videos are uploaded to an external Pruna API.\n\nMitigation: Use only non-sensitive media, confirm the user has rights to process it, and review Pruna's data handling terms before use.\n\nRisk: The skill depends on PRUNA_API_KEY for authenticated API calls.\n\nMitigation: Store the key in an environment variable or secret manager and avoid pasting it into prompts, logs, or shared files.\n\nRisk: The artifact includes unpinned npx skill-install commands.\n\nMitigation: Verify the resolved package and skill version before running install commands, especially in privileged or production environments.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-video-animate)\n- [Publisher profile](https://clawhub.ai/user/pruna-ai)\n- [Pruna file upload endpoint](https://api.pruna.ai/v1/files)\n- [Pruna predictions endpoint](https://api.pruna.ai/v1/predictions)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and JSON request examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include API upload, polling, and download steps for Pruna-hosted media generation.]\n\n## Skill Version(s):\n\n1.0.12 (source: server release metadata and artifact frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.12:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.11: 4 files, 4913 bytes\n\nFiles: skill-card.md (2232b), skill.manifest.json (23b), SKILL.md (8641b), _meta.json (135b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: p-video-animate\ndescription: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\nlicense: MIT\nmetadata:\n  version: \"1.0.11\"\n  package: pruna-skills\n  pruna_model: p-video-animate\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-animate` `` 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`. When drafting optional **`instruction_prompt`**, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nAppearance comes from **`image`**; motion from **`video`**. Optional **`instruction_prompt`** is **surgical** — one concrete end beat or pose fix, not a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Ritual seed before drafting; leave **`instruction_prompt`** blank when refs already align | Copy this skill's generic sample (`Animate the reference subject using the motion from the source video`) when the user named a specific beat |\n| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame | Invent a different performance or swap the subject |\n| When needed, one concrete **`instruction_prompt`** beat (`hold landing pose on final frame`, `match arm raise at 0:03`) | Mood-only rewrites or vague `make it dance better` |\n| Show **`instruction_prompt`** (if any) before `POST` when not locked | Silent regen that changes identity or ignores the template motion |\n\n**Fidelity check (before pay):** still the user's still + template video. Repose with `p-image-edit` when close but not exact — do not compensate with a vague prompt.\n\n## Skill boundary\n\n| | **p-video-animate** (this skill) | **p-video-replace** |\n|---|----------------------------------|---------------------|\n| **User question** | *Animate this picture with some motion?* | *Replace this person in this video?* |\n| **Inputs** | One **`image`** + motion-template **`video`** | Source **`video`** + **`images`** (1–4) |\n| **Job** | Still performs using copied motion | People/props in footage swapped for refs |\n\n**Use `p-video-replace`** for in-place identity swap. **Use this skill** for motion-transfer showcases and persona variants.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-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-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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-image.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.image`.\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-animate' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\",\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Animate the reference subject using the motion from the source video.\"\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-animate' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\"\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft optional **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`** (motion/audio source), **`image`** (subject), **`resolution`**, **`target_fps`**, and **`instruction_prompt`**.\n3. **Pruna notes:** appearance from **image**, motion from **video**. Match framing/pose/limb visibility to the template’s first frame; repose with `p-image-edit` when close but not exact. Leave **`instruction_prompt`** blank unless you need one concrete end beat. Runware map: `referenceImages[0]` → `image`, `referenceVideos[0]` → `video`, `positivePrompt` → `instruction_prompt`, `settings.preserveAudio` → `save_audio`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `image` (string URL): reference subject to animate\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-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `avatar-multi-scene` | Use when someone wants the same person hosting several clips — multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. | `npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.11:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-animate\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1788444642642\n}\n\nFile v1.0.11:skill-card.md\n\n## Description:\n\nUse when someone wants a photo to move like another video: motion transfer, dance remixes, or performance variations from a template clip.\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 animate a still image with motion from a source video through Pruna's hosted video-animation service. The agent gathers the source video, reference image, resolution, frame rate, and any narrow instruction prompt before generation.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow uploads selected images, videos, prompts, and the Pruna API key to Pruna's hosted service.\n\nMitigation: Use only media and prompts approved for third-party processing, and handle PRUNA_API_KEY as a secret.\n\nRisk: Using disable_safety_checker can change the safety and policy behavior of a generation request.\n\nMitigation: Avoid disable_safety_checker unless the user has an approved reason and understands the safety impact.\n\nRisk: A reference image that does not match the template video's opening pose or framing can reduce motion-transfer fidelity.\n\nMitigation: Run the documented fidelity check before paid generation and adjust the reference image with the appropriate image-editing skill when needed.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-video-animate)\n- [Pruna AI publisher profile](https://clawhub.ai/user/pruna-ai)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration]\n\n**Output Format:** [Markdown guidance with inline curl examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY plus image and video inputs; generated video duration follows the source video.]\n\n## Skill Version(s):\n\n1.0.11 (source: evidence 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.11:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.10: 4 files, 4718 bytes\n\nFiles: skill-card.md (1998b), skill.manifest.json (23b), SKILL.md (8275b), _meta.json (135b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: p-video-animate\ndescription: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\nlicense: MIT\nmetadata:\n  version: \"1.0.10\"\n  package: pruna-skills\n  pruna_model: p-video-animate\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-animate` `` 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`. When drafting optional **`instruction_prompt`**, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nAppearance comes from **`image`**; motion from **`video`**. Optional **`instruction_prompt`** is **surgical** — one concrete end beat or pose fix, not a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Ritual seed before drafting; leave **`instruction_prompt`** blank when refs already align | Copy this skill's generic sample (`Animate the reference subject using the motion from the source video`) when the user named a specific beat |\n| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame | Invent a different performance or swap the subject |\n| When needed, one concrete **`instruction_prompt`** beat (`hold landing pose on final frame`, `match arm raise at 0:03`) | Mood-only rewrites or vague `make it dance better` |\n| Show **`instruction_prompt`** (if any) before `POST` when not locked | Silent regen that changes identity or ignores the template motion |\n\n**Fidelity check (before pay):** still the user's still + template video. Repose with `p-image-edit` when close but not exact — do not compensate with a vague prompt.\n\n## Skill boundary\n\n| | **p-video-animate** (this skill) | **p-video-replace** |\n|---|----------------------------------|---------------------|\n| **User question** | *Animate this picture with some motion?* | *Replace this person in this video?* |\n| **Inputs** | One **`image`** + motion-template **`video`** | Source **`video`** + **`images`** (1–4) |\n| **Job** | Still performs using copied motion | People/props in footage swapped for refs |\n\n**Use `p-video-replace`** for in-place identity swap. **Use this skill** for motion-transfer showcases and persona variants.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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-image.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.image`.\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-animate' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\",\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Animate the reference subject using the motion from the source video.\"\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-animate' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\"\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft optional **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`** (motion/audio source), **`image`** (subject), **`resolution`**, **`target_fps`**, and **`instruction_prompt`**.\n3. **Pruna notes:** appearance from **image**, motion from **video**. Match framing/pose/limb visibility to the template’s first frame; repose with `p-image-edit` when close but not exact. Leave **`instruction_prompt`** blank unless you need one concrete end beat. Runware map: `referenceImages[0]` → `image`, `referenceVideos[0]` → `video`, `positivePrompt` → `instruction_prompt`, `settings.preserveAudio` → `save_audio`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `image` (string URL): reference subject to animate\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-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `avatar-multi-scene` | Use when someone wants the same person hosting several clips — multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. | `npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-animate\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1787903810189\n}\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nUse when someone wants a photo to move like another video: motion transfer, dance remixes, or performance variations from a template clip.\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 animate a still reference image with motion from a source video through Pruna's p-video-animate model. It helps agents collect required media inputs, prepare faithful motion-transfer prompts, and issue the documented Pruna API calls.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected video, image, and prompt details are sent to Pruna for remote processing.\n\nMitigation: Avoid uploading sensitive or regulated media, or images of people without permission.\n\nRisk: The Pruna API key authorizes remote API calls if exposed.\n\nMitigation: Keep PRUNA_API_KEY private and avoid placing it in shared logs, prompts, or committed files.\n\n## Reference(s):\n\n- [p-video-animate ClawHub release page](https://clawhub.ai/pruna-ai/skills/p-video-animate)\n- [Pruna files 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 inline bash and JSON request examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY and user-supplied image and video assets; remote output duration follows the source video.]\n\n## Skill Version(s):\n\n1.0.10 (source: server release evidence and artifact metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.10:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.9: 4 files, 4880 bytes\n\nFiles: skill-card.md (2530b), skill.manifest.json (23b), SKILL.md (8274b), _meta.json (134b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: p-video-animate\ndescription: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\nlicense: MIT\nmetadata:\n  version: \"1.0.9\"\n  package: pruna-skills\n  pruna_model: p-video-animate\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-animate` `` 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`. When drafting optional **`instruction_prompt`**, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nAppearance comes from **`image`**; motion from **`video`**. Optional **`instruction_prompt`** is **surgical** — one concrete end beat or pose fix, not a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Ritual seed before drafting; leave **`instruction_prompt`** blank when refs already align | Copy this skill's generic sample (`Animate the reference subject using the motion from the source video`) when the user named a specific beat |\n| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame | Invent a different performance or swap the subject |\n| When needed, one concrete **`instruction_prompt`** beat (`hold landing pose on final frame`, `match arm raise at 0:03`) | Mood-only rewrites or vague `make it dance better` |\n| Show **`instruction_prompt`** (if any) before `POST` when not locked | Silent regen that changes identity or ignores the template motion |\n\n**Fidelity check (before pay):** still the user's still + template video. Repose with `p-image-edit` when close but not exact — do not compensate with a vague prompt.\n\n## Skill boundary\n\n| | **p-video-animate** (this skill) | **p-video-replace** |\n|---|----------------------------------|---------------------|\n| **User question** | *Animate this picture with some motion?* | *Replace this person in this video?* |\n| **Inputs** | One **`image`** + motion-template **`video`** | Source **`video`** + **`images`** (1–4) |\n| **Job** | Still performs using copied motion | People/props in footage swapped for refs |\n\n**Use `p-video-replace`** for in-place identity swap. **Use this skill** for motion-transfer showcases and persona variants.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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-image.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.image`.\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-animate' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\",\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Animate the reference subject using the motion from the source video.\"\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-animate' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\"\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft optional **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`** (motion/audio source), **`image`** (subject), **`resolution`**, **`target_fps`**, and **`instruction_prompt`**.\n3. **Pruna notes:** appearance from **image**, motion from **video**. Match framing/pose/limb visibility to the template’s first frame; repose with `p-image-edit` when close but not exact. Leave **`instruction_prompt`** blank unless you need one concrete end beat. Runware map: `referenceImages[0]` → `image`, `referenceVideos[0]` → `video`, `positivePrompt` → `instruction_prompt`, `settings.preserveAudio` → `save_audio`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `image` (string URL): reference subject to animate\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-image` | Use when someone explicitly wants the fastest, cheapest photo generation — mood boards, bulk panels, or quick iterations — not when controlled photoreal or in-image text is needed. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `avatar-multi-scene` | Use when someone wants the same person hosting several clips — multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. | `npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-animate\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1785824274918\n}\n\nFile v1.0.9:skill-card.md\n\n## Description: <br>\nUse when someone wants a photo to move like another video - motion transfer, dance remixes, or performance variations from a template clip. <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 operators use this skill to guide an agent through Pruna video animation workflows that animate a reference image with motion from a source video. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow sends selected images, source videos, prompts, and API key-authenticated requests to Pruna. <br>\nMitigation: Use the skill only when Pruna is an appropriate processor for the media, avoid private or sensitive assets when that is not true, and confirm PRUNA_API_KEY before any API call. <br>\nRisk: Optional related-skill installs can expand the agent workflow beyond this single Pruna model guide. <br>\nMitigation: Review each optional related-skill install before accepting it and keep the workflow limited to the user's requested animation task. <br>\nRisk: Motion-transfer outputs may imply that the image subject performed motion from another video. <br>\nMitigation: Confirm the source video, reference image, resolution, target frame rate, and any instruction_prompt before submission, and keep prompts narrow to the requested motion transfer. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-video-animate) <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, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with inline curl commands and JSON request examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Guides authenticated Pruna API upload, prediction, polling, and download workflows for user-provided image and video inputs.] <br>\n\n## Skill Version(s): <br>\n1.0.9 (source: server release metadata and SKILL.md frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.9:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.8: 4 files, 4852 bytes\n\nFiles: skill-card.md (2529b), skill.manifest.json (23b), SKILL.md (8210b), _meta.json (134b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: p-video-animate\ndescription: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\nlicense: MIT\nmetadata:\n  version: \"1.0.8\"\n  package: pruna-skills\n  pruna_model: p-video-animate\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-animate` `` 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`. When drafting optional **`instruction_prompt`**, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nAppearance comes from **`image`**; motion from **`video`**. Optional **`instruction_prompt`** is **surgical** — one concrete end beat or pose fix, not a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Ritual seed before drafting; leave **`instruction_prompt`** blank when refs already align | Copy this skill's generic sample (`Animate the reference subject using the motion from the source video`) when the user named a specific beat |\n| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame | Invent a different performance or swap the subject |\n| When needed, one concrete **`instruction_prompt`** beat (`hold landing pose on final frame`, `match arm raise at 0:03`) | Mood-only rewrites or vague `make it dance better` |\n| Show **`instruction_prompt`** (if any) before `POST` when not locked | Silent regen that changes identity or ignores the template motion |\n\n**Fidelity check (before pay):** still the user's still + template video. Repose with `p-image-edit` when close but not exact — do not compensate with a vague prompt.\n\n## Skill boundary\n\n| | **p-video-animate** (this skill) | **p-video-replace** |\n|---|----------------------------------|---------------------|\n| **User question** | *Animate this picture with some motion?* | *Replace this person in this video?* |\n| **Inputs** | One **`image`** + motion-template **`video`** | Source **`video`** + **`images`** (1–4) |\n| **Job** | Still performs using copied motion | People/props in footage swapped for refs |\n\n**Use `p-video-replace`** for in-place identity swap. **Use this skill** for motion-transfer showcases and persona variants.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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-image.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.image`.\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-animate' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\",\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Animate the reference subject using the motion from the source video.\"\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-animate' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\"\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft optional **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`** (motion/audio source), **`image`** (subject), **`resolution`**, **`target_fps`**, and **`instruction_prompt`**.\n3. **Pruna notes:** appearance from **image**, motion from **video**. Match framing/pose/limb visibility to the template’s first frame; repose with `p-image-edit` when close but not exact. Leave **`instruction_prompt`** blank unless you need one concrete end beat. Runware map: `referenceImages[0]` → `image`, `referenceVideos[0]` → `video`, `positivePrompt` → `instruction_prompt`, `settings.preserveAudio` → `save_audio`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `image` (string URL): reference subject to animate\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-image` | Use when someone wants a fast AI image — product shots, hero visuals, mood boards, or draft photos from a text prompt. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `avatar-multi-scene` | Use when someone wants the same person hosting several clips — multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. | `npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-animate\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1785259201393\n}\n\nFile v1.0.8:skill-card.md\n\n## Description: <br>\nUse when someone wants a photo to move like another video - motion transfer, dance remixes, or performance variations from a template clip. <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 users, creators, and developers use this skill to animate a still image with motion from a reference video through Pruna's p-video-animate model. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill uploads selected images, videos, and possibly audio to Pruna for generation. <br>\nMitigation: Use only media the user is comfortable sending to Pruna and disclose the upload before making API calls. <br>\nRisk: Generated motion-transfer videos can involve likenesses, copyrighted source media, or audio the user may not have rights to use. <br>\nMitigation: Confirm the user has rights to the provided media and likenesses before generation. <br>\nRisk: The workflow uses a paid Pruna API key and supports async or quick-test prediction calls. <br>\nMitigation: Confirm PRUNA_API_KEY availability and required inputs before the first POST, and prefer the async path for normal use. <br>\nRisk: The optional disable_safety_checker field can alter safety behavior. <br>\nMitigation: Use disable_safety_checker only when deliberately requested and appropriate for the user's content policy context. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-video-animate) <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):** [Guidance, Shell commands, API Calls, Configuration] <br>\n**Output Format:** [Markdown guidance with curl examples and JSON request bodies] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces instructions for uploading media, creating a Pruna prediction, polling, and downloading generated video.] <br>\n\n## Skill Version(s): <br>\n1.0.8 (source: server release metadata and SKILL.md 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, 4623 bytes\n\nFiles: skill-card.md (2035b), skill.manifest.json (23b), SKILL.md (8121b), _meta.json (134b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: p-video-animate\ndescription: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\nlicense: MIT\nmetadata:\n  version: \"1.0.7\"\n  package: pruna-skills\n  pruna_model: p-video-animate\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-animate` `` in backticks, confirm `PRUNA_API_KEY` (or stop with signup links from `pruna-api`), then ask for required inputs. When drafting optional **`instruction_prompt`**, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nAppearance comes from **`image`**; motion from **`video`**. Optional **`instruction_prompt`** is **surgical** — one concrete end beat or pose fix, not a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Ritual seed before drafting; leave **`instruction_prompt`** blank when refs already align | Copy this skill's generic sample (`Animate the reference subject using the motion from the source video`) when the user named a specific beat |\n| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame | Invent a different performance or swap the subject |\n| When needed, one concrete **`instruction_prompt`** beat (`hold landing pose on final frame`, `match arm raise at 0:03`) | Mood-only rewrites or vague `make it dance better` |\n| Show **`instruction_prompt`** (if any) before `POST` when not locked | Silent regen that changes identity or ignores the template motion |\n\n**Fidelity check (before pay):** still the user's still + template video. Repose with `p-image-edit` when close but not exact — do not compensate with a vague prompt.\n\n## Skill boundary\n\n| | **p-video-animate** (this skill) | **p-video-replace** |\n|---|----------------------------------|---------------------|\n| **User question** | *Animate this picture with some motion?* | *Replace this person in this video?* |\n| **Inputs** | One **`image`** + motion-template **`video`** | Source **`video`** + **`images`** (1–4) |\n| **Job** | Still performs using copied motion | People/props in footage swapped for refs |\n\n**Use `p-video-replace`** for in-place identity swap. **Use this skill** for motion-transfer showcases and persona variants.\n\n## When NOT to use\n\nUse a different skill instead:\n\n| Skill | Description | Install |\n| --- | --- | --- |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -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-image.png\"\n```\n\nUse each response `urls.get` in `input.video` and `input.image`.\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-animate' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\",\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Animate the reference subject using the motion from the source video.\"\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-animate' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\"\n    }\n  }'\n```\n\n## Before generating\n\n1. Complete Prerequisites guide reading order (`generation-diversity` → `video-prompting`).\n2. Ritual seed → draft optional **dynamic + faithful** **`instruction_prompt`** (section above) → confirm **`video`** (motion/audio source), **`image`** (subject), **`resolution`**, **`target_fps`**, and **`instruction_prompt`**.\n3. **Pruna notes:** appearance from **image**, motion from **video**. Match framing/pose/limb visibility to the template’s first frame; repose with `p-image-edit` when close but not exact. Leave **`instruction_prompt`** blank unless you need one concrete end beat. Runware map: `referenceImages[0]` → `image`, `referenceVideos[0]` → `video`, `positivePrompt` → `instruction_prompt`, `settings.preserveAudio` → `save_audio`.\n\n## Required input\n\n- `video` (string URL): source RGB `.mp4`\n- `image` (string URL): reference subject to animate\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-image` | Use when someone wants a fast AI image — product shots, hero visuals, mood boards, or draft photos from a text prompt. | `npx skills add PrunaAI/pruna-skills@p-image -y` |\n| `p-image-edit` | Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. | `npx skills add PrunaAI/pruna-skills@p-image-edit -y` |\n| `p-video-replace` | Use when someone wants to swap a person, outfit, or product inside existing footage while keeping the camera move and audio. | `npx skills add PrunaAI/pruna-skills@p-video-replace -y` |\n| `avatar-multi-scene` | Use when someone wants the same person hosting several clips — multi-segment UGC, comparison reels, or mixed speaking and animated scenes with continuity. | `npx skills add PrunaAI/pruna-skills@avatar-multi-scene -y` |\n| `video-editing` | Use when assembling or polishing already-rendered clips with ffmpeg — concat, crossfades, burned captions and subtitles, text/logo overlays, before/after sliders, background music beds, platform export — or when composing a multi-layer HTML combination video with Hyperframes. Not for AI video generation, prompt craft, or model-based video edits. | `npx skills add PrunaAI/pruna-skills@video-editing -y` |\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-animate\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1784810093937\n}\n\nFile v1.0.7:skill-card.md\n\n## Description: <br>\nGuides an agent through using Pruna's p-video-animate API to animate a reference image with motion from a source video. <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 operators use this skill to prepare prompts, upload source media, and call Pruna's API for motion-transfer video generation from one image and one motion-template video. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Using the skill sends selected images and videos to Pruna's API with the user's PRUNA_API_KEY. <br>\nMitigation: Use only media the user is allowed to upload and confirm credentials before making API calls. <br>\nRisk: Generated prompts or optional fields can change outputs or trigger paid API calls. <br>\nMitigation: Review generated prompts and key parameters before submission, especially when the instruction prompt is not already locked. <br>\nRisk: The artifact exposes an optional disable_safety_checker field. <br>\nMitigation: Be cautious with safety-check settings and keep default protections enabled unless the user has a justified need. <br>\n\n\n## Reference(s): <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration] <br>\n**Output Format:** [Markdown guidance with inline curl examples and parameter notes] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires a PRUNA_API_KEY and user-provided image and video URLs or uploaded Pruna file URLs.] <br>\n\n## Skill Version(s): <br>\n1.0.7 (source: server release metadata and artifact 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, 26641 bytes\n\nFiles: README-INSTALL.md (942b), references/api-credentials.md (3128b), references/generation-diversity.md (25978b), references/generation-quality-checklists.md (10290b), references/p-video-animate-quality-checklist.md (2181b), references/pruna-api.md (5074b), references/random-seed-ritual.md (4011b), skill-card.md (2934b), skill.manifest.json (168b), SKILL.md (10245b), _meta.json (134b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: p-video-animate\ndescription: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\nlicense: MIT\nmetadata:\n  version: \"1.0.6\"\n  pruna_model: p-video-animate\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-animate (Pruna)\n\n**P-Video-Animate** animates a single image using the motion, timing, and camera movement from a given video.\n\n**User question this answers:** *How can I animate this picture with some motion?*\n\nGiven a reference input image and video, the model generates a new video using **(1)** the style of the reference image, and **(2)** preserving the original motion, acting, timing, camera movement, and scene structure of the reference video.\n\nAlso on Replicate: [prunaai/p-video-animate](https://replicate.com/prunaai/p-video-animate). Full P-API parameters: [p-video-animate model docs](https://docs.api.pruna.ai/guides/models/p-video-animate) · operational guide (Runware host): [animating images from video](https://runware.ai/docs/models/prunaai-p-video-animate/guides/animating-images-from-video)\n\nShared HTTP patterns: [pruna-api.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/pruna-api.md)\n\n## p-video-animate vs p-video-replace\n\n| | **p-video-animate** (this skill) | **p-video-replace** |\n|---|----------------------------------|---------------------|\n| **User question** | *How can I animate this picture with some motion?* | *How can I replace this person in this video?* |\n| **Inputs** | One **`image`** + motion-template **`video`** | Source **`video`** + **`images`** (1–4 identity refs in **one** call) |\n| **Job** | Still performs using copied motion | People in footage swapped for reference identities |\n\n**Use [p-video-replace](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-replace/skills/p-video-replace/SKILL.md)** for in-place identity swap on real clips. **Use this skill** for motion-transfer showcases, persona variants, and slider before/after demos.\n\n## Key features\n\n- Top visual quality\n- Most efficient inference\n  - Speed: **5.24s generation time per 1s video**\n  - Price: **$0.03 and $0.06 per 1s of 720p and 1080p video**\n\n## Key examples\n\n- **UGC ad variations** — Reuse winning video motions with different creator, customer, or persona images at large scale.\n- **Viral meme remixes** — Turn trending clips into new animated image-based meme formats quickly.\n- **Movie scene recasting** — Animate user-uploaded avatars, selfies, or character images using reusable motion templates.\n- **Game cinematic variations** — Animate user-uploaded avatars, selfies, or character images using reusable motion templates.\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 — motion/audio source (upload `.mp4` to `/v1/files` first)\n- **`image`** URL — subject to animate (upload jpg/jpeg/png/webp first)\n- **`resolution`**: `720p` or `1080p`\n- **`target_fps`**: `original`, `24`, or `48`\n- Optional **`instruction_prompt`** — how the reference subject should follow the source motion\n- Optional **`save_audio`**, **`seed`**, **`disable_safety_checker`**\n\nRun [p-video-animate-quality-checklist.md](./references/p-video-animate-quality-checklist.md) on inputs and outputs.\n\n**Batch runs:** when several image+video pairs are independent, 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).\n\n## Making motion transfer work\n\n**Appearance from image, motion from video.** The largest quality factor is how well the reference image matches the **first frame** of the source video. Ask before every pair:\n\n1. **Framing** — same body region (head-and-shoulders, medium, full body)?\n2. **Pose** — subject facing and limb position roughly aligned?\n3. **Visibility** — same body parts visible; no extra crop or occlusion the video lacks?\n\nWhen all three line up, motion transfers cleanly — including secondary cues (camera drift, hair movement, shadow shift). Mismatched pairs lose those.\n\n| Factor | Guidance |\n|--------|----------|\n| Shot size | Match close-up / medium / full between image and template |\n| Facing | Front-facing still + profile motion → head/shoulder artifacts |\n| Limbs | If template waves arms, still must show arms |\n| Proportions | Human full-body motion on chibi/mascot subjects often breaks legs and gait |\n| Speaking templates | When source video has dialogue, persona mouth must be clear and large enough |\n\n**When pairing fails:** head-and-shoulders still + full-body dance → the model **does not hallucinate limbs**; the head drifts subtly and **most choreography is lost**. Generate a full-body reference or pick a closer template.\n\n**Before generate:** repose with **`p-image-edit`** when framing or pose is close but not exact. Upscale reference stills for identity detail.\n\n**Long clips:** ~**5 s compute per 1 s** of video — split the source and animate segments separately for long templates.\n\n**Wrong tool:** not for object removal, background replacement, scene rewriting, or frame-exact pixel edits — use **`p-image-edit`**, **`p-video-replace`**, or inpainting workflows instead.\n\n**`instruction_prompt`** — optional; overrides **behavior**, not who is on screen. Leave blank when the source motion is already right.\n\nUseful (one specific beat on top of source motion):\n\n```text\nAt the very end of the clip, just after her last gesture, she gives a clear thumbs-up toward the camera. Keep the source motion otherwise.\n```\n\nLess useful (repeats what the image already shows):\n\n```text\nA confident woman in a charcoal blazer speaks to the camera in a modern office.\n```\n\n**Style variety:** photoreal, cartoon, 3D, and mascot stills can share one motion template when framing aligns — the reference image's rendering style carries through.\n\nRunware field map: `referenceImages[0]` → `image`, `referenceVideos[0]` → `video`, `positivePrompt` → `instruction_prompt`, `settings.preserveAudio` → `save_audio`.\n\nMixed-reel context (motion templates, sliders, avatar CTA): [animate-beats.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/avatar-multi-scene/animate-beats.md).\n\n## Required input\n\n- `video` (string URL): source RGB video (`.mp4`); motion and audio source\n- `image` (string URL): reference subject to animate\n\n## Common optional fields\n\n- `resolution`: `720p` (default) or `1080p`\n- `target_fps`: `original` (default), `24`, or `48`\n- `instruction_prompt` (string): extra guidance on how the subject should follow source motion\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-image.png\"\n```\n\nUse each response `urls.get` (or `https://api.pruna.ai/v1/files/{id}`) in `input.video` and `input.image`.\n\n## Example: async (recommended)\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-animate' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\",\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Animate the reference subject using the motion from the source video.\"\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-animate' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\"\n    }\n  }'\n```\n\n## Typical next steps\n\n- Generate or edit reference subjects: [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- Replace people in existing footage (not motion transfer): [p-video-replace](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-replace/skills/p-video-replace/SKILL.md)\n- Talking-head clips (script-driven, not motion transfer): [p-video-avatar](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-avatar/skills/p-video-avatar/SKILL.md)\n- Pipeline hub: [pruna-generative-pipeline](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md)\n- Multi-scene motion transfer + slider demos: [avatar-multi-scene](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-multi-scene/skills/avatar-multi-scene/SKILL.md) (`animate` rows)\n\n## Related workflow\n\nAnimate slider reels: [`generate_video_comparison.py`](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/_shared/scripts/generate_video_comparison.py) + [avatar-multi-scene](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-multi-scene/skills/avatar-multi-scene/SKILL.md) `animate` rows.\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-animate\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1784235579007\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`](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-replace/skills/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-animate-quality-checklist.md\n\n# p-video-animate quality checklist\n\nAfter each animate job, **open the source video, reference image, and output clip** and review them against this list (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 motion template (camera path, acting, timing, scene structure); motion is **clear and readable** (not blurry, fast-cut, or low-contrast).\n- Reference **`image`** clearly shows the subject to animate (face/body unobstructed, rights cleared).\n- **First-frame alignment:** framing, pose, and visible limbs match the **first frame** of the source video (or repose with **`p-image-edit`** first).\n- **Mismatch risk:** head-and-shoulders still + full-body template → expect lost choreography, not full-body motion.\n- **Proportion fit:** human full-body motion on meme/mascot/chibi subjects often breaks legs, arms, and contact points—flag before generate.\n- **`instruction_prompt`** (if used) describes **behavior overrides only** — not a repeat of the image description.\n- **`resolution`** and **`target_fps`** match delivery spec.\n- Source longer than budget: plan to **split** the template and animate segments (~5 s compute per 1 s video).\n\n## Motion transfer fidelity\n\n- Output preserves source motion, timing, and camera movement (not a generic re-enactment).\n- Acting beats and scene structure track the reference video.\n- Subject identity and style come from the reference image, not the source video's actor.\n\n## Technical quality\n\n- No severe flicker, warping, or unstable anatomy during motion.\n- Audio (when `save_audio` is true) stays aligned with visual motion.\n- Output duration matches the source video length.\n\n## Clean delivery\n\n- No accidental overlays, stray text, or watermark-like artifacts unless requested.\n- Clip is ready for downstream edit, concat, or platform upload.\n\nFile v1.0.6:references/pruna-api.md\n\n# Pruna P-API (shared reference)\n\nOfficial docs: [Developer Portal](https://docs.api.pruna.ai/), [Quickstart](https://docs.api.pruna.ai/guides/quickstart), [Models](https://docs.api.pruna.ai/guides/models).\n\n**Before first upload or paid call:** [agent-safety.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/agent-safety/SKILL.md) — privacy, credentials, local disk, locale.\n\n## Authentication\n\nSend your API key in the **`apikey`** header on every request (not `Authorization: Bearer`).\n\n```bash\n-H \"apikey: ${PRUNA_API_KEY}\"\n```\n\nUse the same header on delivery URLs when downloading bytes.\n\n## Base URL\n\n- Predictions: `https://api.pruna.ai/v1/predictions`\n- File upload: `https://api.pruna.ai/v1/files` (multipart form field `content=@file`)\n- Status: `https://api.pruna.ai/v1/predictions/status/{id}`\n- Delivery: use `generation_url` from a succeeded status (may be relative; prefix with `https://api.pruna.ai` if needed)\n\n## Request shape\n\nAll generative calls use:\n\n- `POST /v1/predictions`\n- Headers: `Content-Type: application/json`, `apikey`, **`Model: <model-id>`** (for example `p-image`, `p-image-edit`, `p-image-try-on`, `p-video`, `p-video-avatar`, `p-video-animate`, `p-video-replace`, `p-image-upscale`)\n- JSON body: `{ \"input\": { ... } }` where `input` fields match the model page (see each skill).\n\n## Sync vs async\n\n| Mode | Header | When to use |\n|------|--------|--------------|\n| Synchronous | `Try-Sync: true` | Fast jobs (many images, simple edits). Completes within ~60s or may time out. |\n| Asynchronous | omit `Try-Sync` | Video, long edits, production reliability. Poll `get_url` / status until `succeeded` or `failed`. |\n\nOfficial guidance: prefer **async for video**; sync is acceptable for quick **p-image** / **p-image-edit** / **p-image-upscale** / **p-image-try-on** when latency is low.\n\n## Parallel async (multi-scene / batch)\n\nWhen several predictions **do not depend on each other's outputs**, create them **in parallel** (async, no `Try-Sync`), then **poll all** `get_url` endpoints until every job finishes. Use **phased** execution when later steps need URLs from earlier steps (hero → scene edits → avatars).\n\nFull patterns, phase diagrams, subagent splits, and script shapes: [parallel-execution.md](https://github.com/PrunaAI/pruna-skills/tree/main/policies/parallel-execution.md).\n\n## Scene anchor triple (multi-scene `p-video`)\n\nNarrated story films pass three uploads per scene — **`image`**, **`last_frame_image`**, **`audio`** — in one prediction. Omit `duration` when `audio` is set.\n\nFull spec: [scene-anchor-triple.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/scene-anchor-triple/SKILL.md).\n\n## File uploads\n\nLocal files leave the machine and are processed at `https://api.pruna.ai/` — see [ag\n\nArchive v1.0.2: 12 files, 30035 bytes\n\nFiles: README-INSTALL.md (376b), references/api-credentials.md (3138b), references/generation-diversity.md (26021b), references/generation-quality-checklists.md (10763b), references/p-video-animate-quality-checklist.md (2122b), references/parallel-execution.md (8015b), references/pruna-api.md (4980b), references/random-seed-ritual.md (4088b), skill-card.md (3532b), skill.manifest.json (297b), SKILL.md (9651b), _meta.json (134b)","readmeExcerpt":"Skill: p-video-animate Owner: pruna-ai Summary: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. 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:12.647Z | auto p-video-animate 1.0.14 - Updated skill metadata version to 1.0.14 in SKILL.md. - Removed redundant file: skil","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-image.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-image.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-animate' \\\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-animate' \\\n  -d '{\n    \"input\": {\n      \"video\": \"https://api.pruna.ai/v1/files/source-video-abc123\",\n      \"image\": \"https://api.pruna.ai/v1/files/reference-image-def456\",\n      \"resolution\": \"720p\",\n      \"target_fps\": \"original\",\n      \"instruction_prompt\": \"Animate the reference subject using the motion from the source video.\"\n    }\n  }'"},{"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-animate' \\\n  -H 'Try-Sync: true' \\\n  -d '{"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: p-video-animate\ndescription: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n  pruna_model: p-video-animate\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-animate` `` 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`. When drafting optional **`instruction_prompt`**, follow **Prompt craft (dynamic + faithful)** — do not paste skill examples. Redirect when **When NOT to use** fits better.\n\n## Prompt craft (dynamic + faithful)\n\nAppearance comes from **`image`**; motion from **`video`**. Optional **`instruction_prompt`** is **surgical** — one concrete end beat or pose fix, not a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Ritual seed before drafting; leave **`instruction_prompt`** blank when refs already align | Copy this skill's generic sample (`Animate the reference subject using the motion from the source video`) when the user named a specific beat |\n| Lock the user's subject (from image) and motion source (from video); match framing/pose to the template's first frame | Invent a different performance or swap the subject |\n| When needed, one concrete **`instruction_prompt`** beat (`hold landing pose on final frame`, `match arm raise at 0:03`) | Mood-only rewrites or vague `make it dance better` |\n| Show **`instruction_prompt`** (if any) before `POST` when not locked | Silent regen that changes identity or ignores the template motion |\n\n**Fidelity check (before pay):** still the user's still + template video. Repose with `p-image-edit` when close but not exact — do not compensate with a vague prompt.\n\n## Skill boundary\n\n| | **p-video-animate** (this skill) | **p-video-replace** |\n|---|----------------------------------|---------------------|\n| **User question** "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-video-animate\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696112647\n}"},{"path":"skill-card.md","content":"## Description:\n\nAnimates a still image using motion from a reference video for dance remixes, motion transfer, and performance variations.\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 animate a subject from a still image with the movements of a reference video through Pruna's video generation service.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing unpinned helper skills may introduce unreviewed changes.\n\nMitigation: Pin or pre-review helper skills before allowing the agent to install them.\n\nRisk: Source images and videos are uploaded to Pruna for processing.\n\nMitigation: Get approval before uploading sensitive media; avoid confidential, regulated, or biometric content unless external processing is authorized.\n\n## Reference(s):\n\n- [p-video-animate on ClawHub](https://clawhub.ai/pruna-ai/skills/p-video-animate)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, API calls]\n\n**Output Format:** [Markdown with shell commands and API instructions]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides generation of a video using an image and a reference video.]\n\n## Skill Version(s):\n\n1.0.14 (source: release metadata and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"skill.manifest.json","content":"{\n  \"references\": []\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. Skill: p-video-animate Owner: pruna-ai Summary: Use when someone wants a photo to move like another video — motion transfer, dance remixes, or performance variations from a template clip. 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:12.647Z | auto p-video-animate 1.0.14 - Updated skill metadata version to 1.0.14 in SKILL.md. - Removed redundant file: skil","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1277,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T12:15:09.578Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T12:15:09.578Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:47:05.093Z","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"}]}}}