{"id":"e05a0620-021b-4e31-b32f-1eb3e3be4c29","entityType":"agent","slug":"clawhub-pruna-ai-p-image-edit","name":"p-image-edit","canonicalUrl":"https://www.xpersona.co/agent/clawhub-pruna-ai-p-image-edit","canonicalPath":"/agent/clawhub-pruna-ai-p-image-edit","generatedAt":"2026-10-10T13:31:59.064Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T10:54:01.062Z","emptyReason":null},"description":"Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. Skill: p-image-edit Owner: pruna-ai Summary: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. 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:33:40.929Z | auto - Version bump to 1.0.14 in metadata. - Removed the file: skill-card.md. - No user-facing functional or docum","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:p-image-edit","sourceUrl":"https://clawhub.ai/pruna-ai/p-image-edit","homepage":"https://clawhub.ai/pruna-ai/skills/p-image-edit","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/pruna-ai/p-image-edit","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/pruna-ai/skills/p-image-edit","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. Skill: p-image-ed"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:54:01.062Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:54:01.062Z","emptyReason":null},"stars":null,"forks":null,"downloads":1482,"packageName":null,"latestVersion":"1.0.14","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:54:01.062Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T10:54:01.062Z","lastCrawledAt":"2026-10-10T10:54:01.062Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T10:54:01.062Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.14","createdAt":"2026-09-29T15:33:40.929Z","changelog":"- Version bump to 1.0.14 in metadata. - Removed the file: skill-card.md. - No user-facing functional or documentation changes in SKILL.md content.","fileCount":4,"zipByteSize":5074},{"version":"1.0.13","createdAt":"2026-09-17T13:55:44.552Z","changelog":"p-image-edit 1.0.13 - Updated version metadata to 1.0.13. - Added `p-video-2-pro` to the \"Typical next steps\" section as a recommended follow-on skill. - Removed the file skill-card.md from the package. - Clarified next steps and related skill descriptions for improved guidance.","fileCount":4,"zipByteSize":5102},{"version":"1.0.12","createdAt":"2026-09-10T13:54:25.376Z","changelog":"- Version bump to 1.0.12. - Updated next steps to recommend `p-video-2` for best-quality clips and clarified the distinction from `p-video`. - Removed the redundant or outdated file `skill-card.md`.","fileCount":4,"zipByteSize":5208},{"version":"1.0.11","createdAt":"2026-09-03T14:09:20.665Z","changelog":"p-image-edit v1.0.11 - Updated `SKILL.md` with improved next-steps section, now referencing `p-video-edit` as a follow-on skill. - Removed the outdated `skill-card.md` file for cleaner repo organization.","fileCount":4,"zipByteSize":4947},{"version":"1.0.10","createdAt":"2026-08-28T07:55:32.826Z","changelog":"p-image-edit 1.0.10 changelog - Updated version to 1.0.10 in SKILL.md. - Removed the file skill-card.md. - No functional or API changes; update is documentation-only.","fileCount":4,"zipByteSize":5020},{"version":"1.0.9","createdAt":"2026-08-04T06:17:11.261Z","changelog":"p-image-edit 1.0.9 - Updated \"When NOT to use\" section: clarified description for `p-image`, now emphasizes usage for fast, cheap generation, not controlled photoreal or in-image text. - Removed the file: skill-card.md. - Version metadata updated to 1.0.9.","fileCount":4,"zipByteSize":4872},{"version":"1.0.8","createdAt":"2026-07-28T17:19:19.346Z","changelog":"- Added clarification intake guidance for open-ended or ambiguous edit briefs. - Updated agent habit to prompt for clarification via `generation-diversity` when needed. - No functional or API changes. - Removed skill-card.md file (documentation cleanup).","fileCount":4,"zipByteSize":4972},{"version":"1.0.7","createdAt":"2026-07-23T12:34:02.678Z","changelog":"**Major update: Expanded skill guidance, modular workflow, and removed legacy docs.** - Overhauled skill documentation with clear prerequisites, agent habits, and structured prompt guidance. - Split shared workflows into modular skill dependencies; “Before generating” and prompt craft steps now reference external skills. - Added “When NOT to use” table to clarify use cases and recommend better-suited related skills. - Removed legacy/inlined reference documentation, checklists, and installation/readme files in favor of linked skill modules. - Updated skill metadata in manifest and docs.","fileCount":4,"zipByteSize":4978}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s173djpkkm1x4yfzg522h5vfp989mrn5:p-image-edit","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-image-edit/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-image-edit/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-image-edit/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-image-edit/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-image-edit/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-image-edit/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T13:31:59.060Z"}},"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-image-edit/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-image-edit/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-image-edit/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-pruna-ai-p-image-edit/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T10:54:01.062Z","emptyReason":null},"readme":"Skill: p-image-edit\n\nOwner: pruna-ai\n\nSummary: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\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:33:40.929Z | auto\n\n- Version bump to 1.0.14 in metadata.\n- Removed the file: skill-card.md.\n- No user-facing functional or documentation changes in SKILL.md content.\n\nv1.0.13 | 2026-09-17T13:55:44.552Z | auto\n\np-image-edit 1.0.13\n\n- Updated version metadata to 1.0.13.\n- Added `p-video-2-pro` to the \"Typical next steps\" section as a recommended follow-on skill.\n- Removed the file skill-card.md from the package.\n- Clarified next steps and related skill descriptions for improved guidance.\n\nv1.0.12 | 2026-09-10T13:54:25.376Z | auto\n\n- Version bump to 1.0.12.\n- Updated next steps to recommend `p-video-2` for best-quality clips and clarified the distinction from `p-video`.\n- Removed the redundant or outdated file `skill-card.md`.\n\nv1.0.11 | 2026-09-03T14:09:20.665Z | auto\n\np-image-edit v1.0.11\n\n- Updated `SKILL.md` with improved next-steps section, now referencing `p-video-edit` as a follow-on skill.\n- Removed the outdated `skill-card.md` file for cleaner repo organization.\n\nv1.0.10 | 2026-08-28T07:55:32.826Z | auto\n\np-image-edit 1.0.10 changelog\n\n- Updated version to 1.0.10 in SKILL.md.\n- Removed the file skill-card.md.\n- No functional or API changes; update is documentation-only.\n\nv1.0.9 | 2026-08-04T06:17:11.261Z | auto\n\np-image-edit 1.0.9\n\n- Updated \"When NOT to use\" section: clarified description for `p-image`, now emphasizes usage for fast, cheap generation, not controlled photoreal or in-image text.\n- Removed the file: skill-card.md.\n- Version metadata updated to 1.0.9.\n\nv1.0.8 | 2026-07-28T17:19:19.346Z | auto\n\n- Added clarification intake guidance for open-ended or ambiguous edit briefs.\n- Updated agent habit to prompt for clarification via `generation-diversity` when needed.\n- No functional or API changes.\n- Removed skill-card.md file (documentation cleanup).\n\nv1.0.7 | 2026-07-23T12:34:02.678Z | auto\n\n**Major update: Expanded skill guidance, modular workflow, and removed legacy docs.**\n\n- Overhauled skill documentation with clear prerequisites, agent habits, and structured prompt guidance.\n- Split shared workflows into modular skill dependencies; “Before generating” and prompt craft steps now reference external skills.\n- Added “When NOT to use” table to clarify use cases and recommend better-suited related skills.\n- Removed legacy/inlined reference documentation, checklists, and installation/readme files in favor of linked skill modules.\n- Updated skill metadata in manifest and docs.\n\nv1.0.6 | 2026-07-16T20:58:51.953Z | auto\n\n- Added a new \"Shared generation policy\" section detailing required rituals (seed, diversity, and quality checklist) before image edits.\n- Updated workflow and reference links to point to new or consolidated locations in the repository (notably within the policies folder).\n- Enhanced language for clarity and streamlined the description of typical workflows and pipelines.\n- Removed `parallel-execution.md` and `skill-card.md` as references, consolidating guidance into other referenced docs.\n- Incremented version metadata to 1.0.6.\n\nv1.0.2 | 2026-07-16T13:26:39.824Z | auto\n\np-image-edit 1.0.2 is a documentation-focused update.\n\n- Updated version metadata to 1.0.2.\n- Added or updated reference documentation files for API credentials, generation diversity, quality checklists, parallel execution, random seed usage, and scene anchoring.\n- Removed the skill-card.md file.\n- No changes to the API or user-facing features.\n\nv1.0.1 | 2026-07-14T15:47:12.741Z | auto\n\n- Updated to version 1.0.1.\n- Switched internal and external references to official GitHub skill links for related pipelines and workflows.\n- Corrected the quality checklist reference for p-image-edit outputs.\n- Removed legacy and redundant files (pspm.json, skill-card.md).\n\nv0.0.1 | 2026-07-14T15:03:29.820Z | auto\n\nInitial release of p-image-edit for advanced image editing and composition.\n\n- Enables editing existing images, inpainting, wardrobe/background changes, and multi-image composition.\n- Supports both asynchronous and synchronous editing workflows via Pruna API.\n- Allows prompt-based edits with flexible parameters (e.g., aspect ratio, turbo mode, seed).\n- Designed for integration with avatar, video, and multi-scene narrative pipelines.\n- Includes workflow guidance for chaining edits, upscaling, and preparing outputs for downstream use.\n\nv1.0.0 | 2026-06-30T14:58:22.688Z | auto\n\n- Initial release of p-image-edit for advanced image editing and multi-image composition.\n- Supports wardrobe and background changes, inpaint-style adjustments, and edits based on reference photos.\n- API instructions for uploading references and creating async/sync edits with customizable parameters.\n- Guidance for avatar pipelines, multi-scene videos, and visual transition reels included.\n- Details on required and optional input fields, with best practices for quality and workflow integration.\n\nArchive index:\n\nArchive v1.0.14: 4 files, 5074 bytes\n\nFiles: skill-card.md (1769b), skill.manifest.json (23b), SKILL.md (9263b), _meta.json (132b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: p-image-edit\ndescription: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n  pruna_model: p-image-edit\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| `image-prompting` | Use when crafting still-image prompts for any generative model — composition, identity sheets, edits, try-on, and photoreal personas. | `npx skills add PrunaAI/pruna-skills@image-prompting -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-image-edit` `` in backticks, confirm `PRUNA_API_KEY`, then ask for the source photo (and edit brief). Open intake → **`generation-diversity`** clarification intake when needed. Draft edits with **Prompt craft (dynamic + faithful)**. Redirect to `p-image-try-on` when the job is garment fit from packshots.\n\n## Prompt craft (dynamic + faithful)\n\nEdit prompts are **surgical** and **request-locked**. Change only what the user asked; keep everything else identical. Diversity applies to *how* you phrase the change — not to inventing a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Formula: `Change [specific thing]. Keep [identity / pose / lighting / background] identical.` (`image-prompting` edit craft) | `Make it better` / mood-only rewrites that ignore the brief |\n| Name every **must-keep** from the user (face, outfit, pose, background, product) | Drop keep-clauses and hope the model preserves them |\n| Fresh ritual seed from `generation-diversity` before drafting; vary free wording (materials, hex, camera nuance) when the brief allows | Copy this skill’s sample (`soft gradient`) when the user asked for something else |\n| Point at refs when composing: `face from image 1, outfit from image 2` | Vague `combine these images` |\n| Show the edit prompt before `POST` when wording is not locked | Silent edit that changes subject, species, age, or unrequested regions |\n\n**Fidelity check (before pay):** the prompt must still satisfy the user’s change **and** every stated keep. If a keep is missing, add it. Do not “spice” the background/cast when they asked for a background-only swap.\n\n## When NOT to use\n\nUse a different skill instead:\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-try-on` | Use when someone wants virtual try-on — dress a person in clothes from reference photos for fashion or ecommerce. | `npx skills add PrunaAI/pruna-skills@p-image-try-on -y` |\n| `p-image-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n\n## HTTP (curl)\n\n### Upload references\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference.png\"\n```\n\nUse each response `urls.get` in `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-image-edit' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`. Optional `seed` only when the user requests reproducibility.\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-image-edit' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\n## Edit flow\n\nFollow `generation-diversity` **still-image prompt flow** (edit section):\n\n1. **Lock change + keeps** — user’s surgical ask; formula in **Prompt craft (dynamic + faithful)**.\n2. **Upload refs** — `POST /v1/files`; `urls.get` → `input.images` (1–5). Never invent file URLs.\n3. **Ritual seed** → draft edit prompt (`image-prompting` edit craft) → **fidelity check** (every keep clause present).\n4. **Confirm** — `prompt`, refs, **`aspect_ratio`**, **`turbo`** (off for hard edits).\n5. **POST** — async curl below; checklist before upscale/video.\n\n**Aspect ratio:** prefer `match_input_image` for edits; output should keep the plate aspect — if drift occurs, retry with the same ref URL and explicit keep clauses.\n\n**Pruna note:** avatar pipelines — edit from locked **upscaled** hero URL; upscale again before `p-video*` — never pass raw edit URLs to video models.\n\n**Not edit:** new subject from scratch → `p-image`. Garment fit from packshots → `p-image-try-on`.\n\n**Multi-reference (up to 5):** index refs by role — e.g. three-reference composite: face from image 1, outfit from image 2, cafe from image 3; `turbo: false` for hard composites. Full pattern in `image-prompting` **p-image-edit-prompting**.\n\n## Required input\n\n- `prompt` (string)\n- `images` (array of 1–5 URLs, typically `https://api.pruna.ai/v1/files/{id}`)\n\n## Common optional fields\n\n- `aspect_ratio`: `match_input_image`, `1:1`, `16:9`, `9:16`, etc.\n- `turbo` (boolean, default true; turn off for harder edits)\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-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n| `p-video-2-pro` | Use when someone wants a cinematic clip from text or start/end frames — product ads, documentary shots, or dialogue with generated audio. Not for 1080p, imported audio tracks, or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2-pro -y` |\n| `p-video-2` | Use when someone wants a polished short clip from text, images, or imported audio — 1080p B-roll, start/end frame animation, or a motion shot with a mixed track. Not for cinematic generated-audio clips or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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-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| `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| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n\nFile v1.0.14:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-image-edit\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696020929\n}\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nGuides agents in editing existing photos with Pruna, including background changes, outfit edits, and reference-guided compositions.\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 direct precise edits to existing photos, preserving requested details while changing backgrounds, outfits, or elements sourced from reference images.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Photos and edit prompts are sent to Pruna's cloud API.\n\nMitigation: Use only images and prompts you have permission to share; avoid sensitive personal, biometric, confidential, or proprietary material unless you accept Pruna's data handling terms.\n\nRisk: Companion-skill installation examples use unpinned npx commands.\n\nMitigation: Install companion skills from a trusted source and pin reviewed versions instead of running unpinned examples blindly.\n\n## Reference(s):\n\n- [p-image-edit on ClawHub](https://clawhub.ai/pruna-ai/skills/p-image-edit)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Text, Shell commands]\n\n**Output Format:** [Markdown with edit prompts and optional curl examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides image uploads and retrieval of edited results through Pruna's API.]\n\n## Skill Version(s):\n\n1.0.14 (source: frontmatter, release 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.14:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.13: 4 files, 5102 bytes\n\nFiles: skill-card.md (1892b), skill.manifest.json (23b), SKILL.md (9263b), _meta.json (132b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: p-image-edit\ndescription: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\nlicense: MIT\nmetadata:\n  version: \"1.0.13\"\n  package: pruna-skills\n  pruna_model: p-image-edit\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| `image-prompting` | Use when crafting still-image prompts for any generative model — composition, identity sheets, edits, try-on, and photoreal personas. | `npx skills add PrunaAI/pruna-skills@image-prompting -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-image-edit` `` in backticks, confirm `PRUNA_API_KEY`, then ask for the source photo (and edit brief). Open intake → **`generation-diversity`** clarification intake when needed. Draft edits with **Prompt craft (dynamic + faithful)**. Redirect to `p-image-try-on` when the job is garment fit from packshots.\n\n## Prompt craft (dynamic + faithful)\n\nEdit prompts are **surgical** and **request-locked**. Change only what the user asked; keep everything else identical. Diversity applies to *how* you phrase the change — not to inventing a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Formula: `Change [specific thing]. Keep [identity / pose / lighting / background] identical.` (`image-prompting` edit craft) | `Make it better` / mood-only rewrites that ignore the brief |\n| Name every **must-keep** from the user (face, outfit, pose, background, product) | Drop keep-clauses and hope the model preserves them |\n| Fresh ritual seed from `generation-diversity` before drafting; vary free wording (materials, hex, camera nuance) when the brief allows | Copy this skill’s sample (`soft gradient`) when the user asked for something else |\n| Point at refs when composing: `face from image 1, outfit from image 2` | Vague `combine these images` |\n| Show the edit prompt before `POST` when wording is not locked | Silent edit that changes subject, species, age, or unrequested regions |\n\n**Fidelity check (before pay):** the prompt must still satisfy the user’s change **and** every stated keep. If a keep is missing, add it. Do not “spice” the background/cast when they asked for a background-only swap.\n\n## When NOT to use\n\nUse a different skill instead:\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-try-on` | Use when someone wants virtual try-on — dress a person in clothes from reference photos for fashion or ecommerce. | `npx skills add PrunaAI/pruna-skills@p-image-try-on -y` |\n| `p-image-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n\n## HTTP (curl)\n\n### Upload references\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference.png\"\n```\n\nUse each response `urls.get` in `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-image-edit' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`. Optional `seed` only when the user requests reproducibility.\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-image-edit' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\n## Edit flow\n\nFollow `generation-diversity` **still-image prompt flow** (edit section):\n\n1. **Lock change + keeps** — user’s surgical ask; formula in **Prompt craft (dynamic + faithful)**.\n2. **Upload refs** — `POST /v1/files`; `urls.get` → `input.images` (1–5). Never invent file URLs.\n3. **Ritual seed** → draft edit prompt (`image-prompting` edit craft) → **fidelity check** (every keep clause present).\n4. **Confirm** — `prompt`, refs, **`aspect_ratio`**, **`turbo`** (off for hard edits).\n5. **POST** — async curl below; checklist before upscale/video.\n\n**Aspect ratio:** prefer `match_input_image` for edits; output should keep the plate aspect — if drift occurs, retry with the same ref URL and explicit keep clauses.\n\n**Pruna note:** avatar pipelines — edit from locked **upscaled** hero URL; upscale again before `p-video*` — never pass raw edit URLs to video models.\n\n**Not edit:** new subject from scratch → `p-image`. Garment fit from packshots → `p-image-try-on`.\n\n**Multi-reference (up to 5):** index refs by role — e.g. three-reference composite: face from image 1, outfit from image 2, cafe from image 3; `turbo: false` for hard composites. Full pattern in `image-prompting` **p-image-edit-prompting**.\n\n## Required input\n\n- `prompt` (string)\n- `images` (array of 1–5 URLs, typically `https://api.pruna.ai/v1/files/{id}`)\n\n## Common optional fields\n\n- `aspect_ratio`: `match_input_image`, `1:1`, `16:9`, `9:16`, etc.\n- `turbo` (boolean, default true; turn off for harder edits)\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-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n| `p-video-2-pro` | Use when someone wants a cinematic clip from text or start/end frames — product ads, documentary shots, or dialogue with generated audio. Not for 1080p, imported audio tracks, or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2-pro -y` |\n| `p-video-2` | Use when someone wants a polished short clip from text, images, or imported audio — 1080p B-roll, start/end frame animation, or a motion shot with a mixed track. Not for cinematic generated-audio clips or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs cinematic generation, highest quality, tight lip-sync, or imported audio at 1080p. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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-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| `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| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n\nFile v1.0.13:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-image-edit\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1789653344552\n}\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nHelps an agent edit existing photos by changing outfits or backgrounds, composing from reference images, and drafting prompt-driven edits.\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 agent users use this skill to prepare faithful image-edit prompts, upload source or reference images to Pruna, and run the p-image-edit API flow while preserving user-specified details.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Photos and prompts are sent to Pruna's API.\n\nMitigation: Use the skill only when sharing those inputs with Pruna is acceptable for the user's data handling requirements.\n\nRisk: The skill asks agents to install multiple mutable external skills with unpinned npx commands.\n\nMitigation: Review and pin dependent skill versions before allowing an agent to run the installation commands.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-image-edit)\n- [Pruna file upload API](https://api.pruna.ai/v1/files)\n- [Pruna predictions API](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 curl command examples and API parameter notes]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires source images or reference image URLs and a PRUNA_API_KEY before API calls.]\n\n## Skill Version(s):\n\n1.0.13 (source: server release metadata and 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.13:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.12: 4 files, 5208 bytes\n\nFiles: skill-card.md (2387b), skill.manifest.json (23b), SKILL.md (8929b), _meta.json (132b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: p-image-edit\ndescription: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\nlicense: MIT\nmetadata:\n  version: \"1.0.12\"\n  package: pruna-skills\n  pruna_model: p-image-edit\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| `image-prompting` | Use when crafting still-image prompts for any generative model — composition, identity sheets, edits, try-on, and photoreal personas. | `npx skills add PrunaAI/pruna-skills@image-prompting -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-image-edit` `` in backticks, confirm `PRUNA_API_KEY`, then ask for the source photo (and edit brief). Open intake → **`generation-diversity`** clarification intake when needed. Draft edits with **Prompt craft (dynamic + faithful)**. Redirect to `p-image-try-on` when the job is garment fit from packshots.\n\n## Prompt craft (dynamic + faithful)\n\nEdit prompts are **surgical** and **request-locked**. Change only what the user asked; keep everything else identical. Diversity applies to *how* you phrase the change — not to inventing a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Formula: `Change [specific thing]. Keep [identity / pose / lighting / background] identical.` (`image-prompting` edit craft) | `Make it better` / mood-only rewrites that ignore the brief |\n| Name every **must-keep** from the user (face, outfit, pose, background, product) | Drop keep-clauses and hope the model preserves them |\n| Fresh ritual seed from `generation-diversity` before drafting; vary free wording (materials, hex, camera nuance) when the brief allows | Copy this skill’s sample (`soft gradient`) when the user asked for something else |\n| Point at refs when composing: `face from image 1, outfit from image 2` | Vague `combine these images` |\n| Show the edit prompt before `POST` when wording is not locked | Silent edit that changes subject, species, age, or unrequested regions |\n\n**Fidelity check (before pay):** the prompt must still satisfy the user’s change **and** every stated keep. If a keep is missing, add it. Do not “spice” the background/cast when they asked for a background-only swap.\n\n## When NOT to use\n\nUse a different skill instead:\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-try-on` | Use when someone wants virtual try-on — dress a person in clothes from reference photos for fashion or ecommerce. | `npx skills add PrunaAI/pruna-skills@p-image-try-on -y` |\n| `p-image-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n\n## HTTP (curl)\n\n### Upload references\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference.png\"\n```\n\nUse each response `urls.get` in `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-image-edit' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`. Optional `seed` only when the user requests reproducibility.\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-image-edit' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\n## Edit flow\n\nFollow `generation-diversity` **still-image prompt flow** (edit section):\n\n1. **Lock change + keeps** — user’s surgical ask; formula in **Prompt craft (dynamic + faithful)**.\n2. **Upload refs** — `POST /v1/files`; `urls.get` → `input.images` (1–5). Never invent file URLs.\n3. **Ritual seed** → draft edit prompt (`image-prompting` edit craft) → **fidelity check** (every keep clause present).\n4. **Confirm** — `prompt`, refs, **`aspect_ratio`**, **`turbo`** (off for hard edits).\n5. **POST** — async curl below; checklist before upscale/video.\n\n**Aspect ratio:** prefer `match_input_image` for edits; output should keep the plate aspect — if drift occurs, retry with the same ref URL and explicit keep clauses.\n\n**Pruna note:** avatar pipelines — edit from locked **upscaled** hero URL; upscale again before `p-video*` — never pass raw edit URLs to video models.\n\n**Not edit:** new subject from scratch → `p-image`. Garment fit from packshots → `p-image-try-on`.\n\n**Multi-reference (up to 5):** index refs by role — e.g. three-reference composite: face from image 1, outfit from image 2, cafe from image 3; `turbo: false` for hard composites. Full pattern in `image-prompting` **p-image-edit-prompting**.\n\n## Required input\n\n- `prompt` (string)\n- `images` (array of 1–5 URLs, typically `https://api.pruna.ai/v1/files/{id}`)\n\n## Common optional fields\n\n- `aspect_ratio`: `match_input_image`, `1:1`, `16:9`, `9:16`, etc.\n- `turbo` (boolean, default true; turn off for harder edits)\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-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n| `p-video-2` | Use when someone wants the best-quality short clip from text, images, or audio — polished B-roll, start/end frame animation, or a motion shot with stronger lip-sync. Not for full multi-scene films or talking-head-only hosts. | `npx skills add PrunaAI/pruna-skills@p-video-2 -y` |\n| `p-video` | Use when someone wants a simple short clip from text or images — quick B-roll, drafts, or start/end frame animation. Not when the brief needs the highest quality or tight lip-sync. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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-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| `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| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-image-edit\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1789048465376\n}\n\nFile v1.0.12:skill-card.md\n\n## Description:\n\nUse when someone wants to edit an existing photo - change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\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, creators, designers, and agent developers use this skill to guide edits to existing photos with Pruna's p-image-edit API, including background changes, outfit or reference-image composition, and prompt-locked edits that preserve requested details.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill asks agents to install mutable external skill dependencies before use.\n\nMitigation: Review the install commands before execution and prefer pinned or reviewed Pruna skill versions.\n\nRisk: The skill uploads user photos and prompts to Pruna's external API.\n\nMitigation: Do not upload sensitive or private photos unless the user is comfortable sending them to Pruna under its data-handling terms.\n\nRisk: Prompt-driven photo edits can change identity, pose, scene, or other unrequested regions if the prompt is underspecified.\n\nMitigation: Use the artifact's lock-change and keep-clause flow, show the edit prompt when wording is not locked, and confirm prompt, references, aspect ratio, and turbo setting before paid API calls.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-image-edit)\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):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with curl command examples and API request configuration.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces prompt guidance and Pruna API call patterns; generated images are produced by the external p-image-edit API.]\n\n## Skill Version(s):\n\n1.0.12 (source: server release metadata and artifact frontmatter metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.12:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.11: 4 files, 4947 bytes\n\nFiles: skill-card.md (1949b), skill.manifest.json (23b), SKILL.md (8627b), _meta.json (132b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: p-image-edit\ndescription: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\nlicense: MIT\nmetadata:\n  version: \"1.0.11\"\n  package: pruna-skills\n  pruna_model: p-image-edit\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| `image-prompting` | Use when crafting still-image prompts for any generative model — composition, identity sheets, edits, try-on, and photoreal personas. | `npx skills add PrunaAI/pruna-skills@image-prompting -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-image-edit` `` in backticks, confirm `PRUNA_API_KEY`, then ask for the source photo (and edit brief). Open intake → **`generation-diversity`** clarification intake when needed. Draft edits with **Prompt craft (dynamic + faithful)**. Redirect to `p-image-try-on` when the job is garment fit from packshots.\n\n## Prompt craft (dynamic + faithful)\n\nEdit prompts are **surgical** and **request-locked**. Change only what the user asked; keep everything else identical. Diversity applies to *how* you phrase the change — not to inventing a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Formula: `Change [specific thing]. Keep [identity / pose / lighting / background] identical.` (`image-prompting` edit craft) | `Make it better` / mood-only rewrites that ignore the brief |\n| Name every **must-keep** from the user (face, outfit, pose, background, product) | Drop keep-clauses and hope the model preserves them |\n| Fresh ritual seed from `generation-diversity` before drafting; vary free wording (materials, hex, camera nuance) when the brief allows | Copy this skill’s sample (`soft gradient`) when the user asked for something else |\n| Point at refs when composing: `face from image 1, outfit from image 2` | Vague `combine these images` |\n| Show the edit prompt before `POST` when wording is not locked | Silent edit that changes subject, species, age, or unrequested regions |\n\n**Fidelity check (before pay):** the prompt must still satisfy the user’s change **and** every stated keep. If a keep is missing, add it. Do not “spice” the background/cast when they asked for a background-only swap.\n\n## When NOT to use\n\nUse a different skill instead:\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-try-on` | Use when someone wants virtual try-on — dress a person in clothes from reference photos for fashion or ecommerce. | `npx skills add PrunaAI/pruna-skills@p-image-try-on -y` |\n| `p-image-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n\n## HTTP (curl)\n\n### Upload references\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference.png\"\n```\n\nUse each response `urls.get` in `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-image-edit' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`. Optional `seed` only when the user requests reproducibility.\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-image-edit' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\n## Edit flow\n\nFollow `generation-diversity` **still-image prompt flow** (edit section):\n\n1. **Lock change + keeps** — user’s surgical ask; formula in **Prompt craft (dynamic + faithful)**.\n2. **Upload refs** — `POST /v1/files`; `urls.get` → `input.images` (1–5). Never invent file URLs.\n3. **Ritual seed** → draft edit prompt (`image-prompting` edit craft) → **fidelity check** (every keep clause present).\n4. **Confirm** — `prompt`, refs, **`aspect_ratio`**, **`turbo`** (off for hard edits).\n5. **POST** — async curl below; checklist before upscale/video.\n\n**Aspect ratio:** prefer `match_input_image` for edits; output should keep the plate aspect — if drift occurs, retry with the same ref URL and explicit keep clauses.\n\n**Pruna note:** avatar pipelines — edit from locked **upscaled** hero URL; upscale again before `p-video*` — never pass raw edit URLs to video models.\n\n**Not edit:** new subject from scratch → `p-image`. Garment fit from packshots → `p-image-try-on`.\n\n**Multi-reference (up to 5):** index refs by role — e.g. three-reference composite: face from image 1, outfit from image 2, cafe from image 3; `turbo: false` for hard composites. Full pattern in `image-prompting` **p-image-edit-prompting**.\n\n## Required input\n\n- `prompt` (string)\n- `images` (array of 1–5 URLs, typically `https://api.pruna.ai/v1/files/{id}`)\n\n## Common optional fields\n\n- `aspect_ratio`: `match_input_image`, `1:1`, `16:9`, `9:16`, etc.\n- `turbo` (boolean, default true; turn off for harder edits)\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-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n| `p-video` | Use when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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-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| `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| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n\nFile v1.0.11:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-image-edit\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1788444560665\n}\n\nFile v1.0.11:skill-card.md\n\n## Description:\n\nUse when someone wants to edit an existing photo -- change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\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 agents use this skill to guide prompt-driven edits of existing photos through Pruna's image-editing API while preserving specified identity, pose, lighting, background, or product details.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can send user-provided photos to Pruna's API.\n\nMitigation: Use only images the user has permission to share, and avoid sensitive personal, biometric, confidential, or proprietary images unless sharing with Pruna is approved.\n\nRisk: The skill asks the agent to install Pruna companion skills from external package references.\n\nMitigation: Review the companion skills and install only the components needed for the task from trusted package references.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/pruna-ai/skills/p-image-edit)\n- [Pruna Files API](https://api.pruna.ai/v1/files)\n- [Pruna Predictions API](https://api.pruna.ai/v1/predictions)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Shell commands, Configuration]\n\n**Output Format:** [Markdown guidance with curl command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY and user-provided image references before calling Pruna's API.]\n\n## Skill Version(s):\n\n1.0.11 (source: server release metadata and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.11:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.10: 4 files, 5020 bytes\n\nFiles: skill-card.md (2439b), skill.manifest.json (23b), SKILL.md (8261b), _meta.json (132b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: p-image-edit\ndescription: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\nlicense: MIT\nmetadata:\n  version: \"1.0.10\"\n  package: pruna-skills\n  pruna_model: p-image-edit\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| `image-prompting` | Use when crafting still-image prompts for any generative model — composition, identity sheets, edits, try-on, and photoreal personas. | `npx skills add PrunaAI/pruna-skills@image-prompting -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-image-edit` `` in backticks, confirm `PRUNA_API_KEY`, then ask for the source photo (and edit brief). Open intake → **`generation-diversity`** clarification intake when needed. Draft edits with **Prompt craft (dynamic + faithful)**. Redirect to `p-image-try-on` when the job is garment fit from packshots.\n\n## Prompt craft (dynamic + faithful)\n\nEdit prompts are **surgical** and **request-locked**. Change only what the user asked; keep everything else identical. Diversity applies to *how* you phrase the change — not to inventing a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Formula: `Change [specific thing]. Keep [identity / pose / lighting / background] identical.` (`image-prompting` edit craft) | `Make it better` / mood-only rewrites that ignore the brief |\n| Name every **must-keep** from the user (face, outfit, pose, background, product) | Drop keep-clauses and hope the model preserves them |\n| Fresh ritual seed from `generation-diversity` before drafting; vary free wording (materials, hex, camera nuance) when the brief allows | Copy this skill’s sample (`soft gradient`) when the user asked for something else |\n| Point at refs when composing: `face from image 1, outfit from image 2` | Vague `combine these images` |\n| Show the edit prompt before `POST` when wording is not locked | Silent edit that changes subject, species, age, or unrequested regions |\n\n**Fidelity check (before pay):** the prompt must still satisfy the user’s change **and** every stated keep. If a keep is missing, add it. Do not “spice” the background/cast when they asked for a background-only swap.\n\n## When NOT to use\n\nUse a different skill instead:\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-try-on` | Use when someone wants virtual try-on — dress a person in clothes from reference photos for fashion or ecommerce. | `npx skills add PrunaAI/pruna-skills@p-image-try-on -y` |\n| `p-image-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n\n## HTTP (curl)\n\n### Upload references\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference.png\"\n```\n\nUse each response `urls.get` in `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-image-edit' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`. Optional `seed` only when the user requests reproducibility.\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-image-edit' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\n## Edit flow\n\nFollow `generation-diversity` **still-image prompt flow** (edit section):\n\n1. **Lock change + keeps** — user’s surgical ask; formula in **Prompt craft (dynamic + faithful)**.\n2. **Upload refs** — `POST /v1/files`; `urls.get` → `input.images` (1–5). Never invent file URLs.\n3. **Ritual seed** → draft edit prompt (`image-prompting` edit craft) → **fidelity check** (every keep clause present).\n4. **Confirm** — `prompt`, refs, **`aspect_ratio`**, **`turbo`** (off for hard edits).\n5. **POST** — async curl below; checklist before upscale/video.\n\n**Aspect ratio:** prefer `match_input_image` for edits; output should keep the plate aspect — if drift occurs, retry with the same ref URL and explicit keep clauses.\n\n**Pruna note:** avatar pipelines — edit from locked **upscaled** hero URL; upscale again before `p-video*` — never pass raw edit URLs to video models.\n\n**Not edit:** new subject from scratch → `p-image`. Garment fit from packshots → `p-image-try-on`.\n\n**Multi-reference (up to 5):** index refs by role — e.g. three-reference composite: face from image 1, outfit from image 2, cafe from image 3; `turbo: false` for hard composites. Full pattern in `image-prompting` **p-image-edit-prompting**.\n\n## Required input\n\n- `prompt` (string)\n- `images` (array of 1–5 URLs, typically `https://api.pruna.ai/v1/files/{id}`)\n\n## Common optional fields\n\n- `aspect_ratio`: `match_input_image`, `1:1`, `16:9`, `9:16`, etc.\n- `turbo` (boolean, default true; turn off for harder edits)\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-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n| `p-video` | Use when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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| `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| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-image-edit\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1787903732826\n}\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nUse when someone wants to edit an existing photo, change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\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, developers, and creative operators use this skill to guide image-editing workflows for existing photos, including background changes, outfit edits, and multi-reference compositions through Pruna's p-image-edit API.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected images and edit prompts are sent to Pruna's external API.\n\nMitigation: Use only images and prompts intended for Pruna processing, and avoid submitting sensitive photos unless sharing them with that service is intended.\n\nRisk: The workflow requires a Pruna API key.\n\nMitigation: Keep PRUNA_API_KEY in an environment variable or secret store and avoid exposing it in prompts, logs, files, or shared transcripts.\n\nRisk: The skill may suggest installing prerequisite skills before running the workflow.\n\nMitigation: Review suggested prerequisite skill installs before accepting them.\n\nRisk: Prompt-driven edits can unintentionally alter image details the user wanted preserved.\n\nMitigation: Use explicit keep-clauses for identity, pose, lighting, background, or product details, and review the proposed prompt before submitting the API request.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-image-edit)\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 curl commands and JSON payload examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY and one to five uploaded image URLs; may send prompts and selected images to Pruna's external API.]\n\n## Skill Version(s):\n\n1.0.10 (source: server release metadata and SKILL.md metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.10:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.9: 4 files, 4872 bytes\n\nFiles: skill-card.md (2149b), skill.manifest.json (23b), SKILL.md (8260b), _meta.json (131b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: p-image-edit\ndescription: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\nlicense: MIT\nmetadata:\n  version: \"1.0.9\"\n  package: pruna-skills\n  pruna_model: p-image-edit\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| `image-prompting` | Use when crafting still-image prompts for any generative model — composition, identity sheets, edits, try-on, and photoreal personas. | `npx skills add PrunaAI/pruna-skills@image-prompting -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-image-edit` `` in backticks, confirm `PRUNA_API_KEY`, then ask for the source photo (and edit brief). Open intake → **`generation-diversity`** clarification intake when needed. Draft edits with **Prompt craft (dynamic + faithful)**. Redirect to `p-image-try-on` when the job is garment fit from packshots.\n\n## Prompt craft (dynamic + faithful)\n\nEdit prompts are **surgical** and **request-locked**. Change only what the user asked; keep everything else identical. Diversity applies to *how* you phrase the change — not to inventing a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Formula: `Change [specific thing]. Keep [identity / pose / lighting / background] identical.` (`image-prompting` edit craft) | `Make it better` / mood-only rewrites that ignore the brief |\n| Name every **must-keep** from the user (face, outfit, pose, background, product) | Drop keep-clauses and hope the model preserves them |\n| Fresh ritual seed from `generation-diversity` before drafting; vary free wording (materials, hex, camera nuance) when the brief allows | Copy this skill’s sample (`soft gradient`) when the user asked for something else |\n| Point at refs when composing: `face from image 1, outfit from image 2` | Vague `combine these images` |\n| Show the edit prompt before `POST` when wording is not locked | Silent edit that changes subject, species, age, or unrequested regions |\n\n**Fidelity check (before pay):** the prompt must still satisfy the user’s change **and** every stated keep. If a keep is missing, add it. Do not “spice” the background/cast when they asked for a background-only swap.\n\n## When NOT to use\n\nUse a different skill instead:\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-try-on` | Use when someone wants virtual try-on — dress a person in clothes from reference photos for fashion or ecommerce. | `npx skills add PrunaAI/pruna-skills@p-image-try-on -y` |\n| `p-image-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n\n## HTTP (curl)\n\n### Upload references\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference.png\"\n```\n\nUse each response `urls.get` in `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-image-edit' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`. Optional `seed` only when the user requests reproducibility.\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-image-edit' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\n## Edit flow\n\nFollow `generation-diversity` **still-image prompt flow** (edit section):\n\n1. **Lock change + keeps** — user’s surgical ask; formula in **Prompt craft (dynamic + faithful)**.\n2. **Upload refs** — `POST /v1/files`; `urls.get` → `input.images` (1–5). Never invent file URLs.\n3. **Ritual seed** → draft edit prompt (`image-prompting` edit craft) → **fidelity check** (every keep clause present).\n4. **Confirm** — `prompt`, refs, **`aspect_ratio`**, **`turbo`** (off for hard edits).\n5. **POST** — async curl below; checklist before upscale/video.\n\n**Aspect ratio:** prefer `match_input_image` for edits; output should keep the plate aspect — if drift occurs, retry with the same ref URL and explicit keep clauses.\n\n**Pruna note:** avatar pipelines — edit from locked **upscaled** hero URL; upscale again before `p-video*` — never pass raw edit URLs to video models.\n\n**Not edit:** new subject from scratch → `p-image`. Garment fit from packshots → `p-image-try-on`.\n\n**Multi-reference (up to 5):** index refs by role — e.g. three-reference composite: face from image 1, outfit from image 2, cafe from image 3; `turbo: false` for hard composites. Full pattern in `image-prompting` **p-image-edit-prompting**.\n\n## Required input\n\n- `prompt` (string)\n- `images` (array of 1–5 URLs, typically `https://api.pruna.ai/v1/files/{id}`)\n\n## Common optional fields\n\n- `aspect_ratio`: `match_input_image`, `1:1`, `16:9`, `9:16`, etc.\n- `turbo` (boolean, default true; turn off for harder edits)\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-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n| `p-video` | Use when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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| `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| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-image-edit\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1785824231261\n}\n\nFile v1.0.9:skill-card.md\n\n## Description: <br>\nUse when someone wants to edit an existing photo -- change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. <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 and developers use this skill to guide an agent through controlled edits of existing photos, including reference-image handling, prompt drafting, fidelity checks, and Pruna API calls. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow uploads user-provided source images, prompts, and edit parameters to Pruna's API. <br>\nMitigation: Use it only with images and prompts appropriate for Pruna processing, and review Pruna's data handling terms before using sensitive personal images. <br>\nRisk: The skill requires PRUNA_API_KEY for API calls. <br>\nMitigation: Keep the key in the environment, avoid exposing it in shared logs or transcripts, and rotate it if disclosure is suspected. <br>\n\n\n## Reference(s): <br>\n- [ClawHub p-image-edit listing](https://clawhub.ai/pruna-ai/skills/p-image-edit) <br>\n- [Pruna file upload endpoint](https://api.pruna.ai/v1/files) <br>\n- [Pruna predictions endpoint](https://api.pruna.ai/v1/predictions) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, markdown, shell commands, configuration] <br>\n**Output Format:** [Markdown guidance with curl command blocks and JSON request examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY and user-provided source images; prompts, image URLs, and edit parameters are sent to Pruna's API.] <br>\n\n## Skill Version(s): <br>\n1.0.9 (source: server release evidence 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.9:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.8: 4 files, 4972 bytes\n\nFiles: skill-card.md (2522b), skill.manifest.json (23b), SKILL.md (8196b), _meta.json (131b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: p-image-edit\ndescription: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\nlicense: MIT\nmetadata:\n  version: \"1.0.8\"\n  package: pruna-skills\n  pruna_model: p-image-edit\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| `image-prompting` | Use when crafting still-image prompts for any generative model — composition, identity sheets, edits, try-on, and photoreal personas. | `npx skills add PrunaAI/pruna-skills@image-prompting -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-image-edit` `` in backticks, confirm `PRUNA_API_KEY`, then ask for the source photo (and edit brief). Open intake → **`generation-diversity`** clarification intake when needed. Draft edits with **Prompt craft (dynamic + faithful)**. Redirect to `p-image-try-on` when the job is garment fit from packshots.\n\n## Prompt craft (dynamic + faithful)\n\nEdit prompts are **surgical** and **request-locked**. Change only what the user asked; keep everything else identical. Diversity applies to *how* you phrase the change — not to inventing a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Formula: `Change [specific thing]. Keep [identity / pose / lighting / background] identical.` (`image-prompting` edit craft) | `Make it better` / mood-only rewrites that ignore the brief |\n| Name every **must-keep** from the user (face, outfit, pose, background, product) | Drop keep-clauses and hope the model preserves them |\n| Fresh ritual seed from `generation-diversity` before drafting; vary free wording (materials, hex, camera nuance) when the brief allows | Copy this skill’s sample (`soft gradient`) when the user asked for something else |\n| Point at refs when composing: `face from image 1, outfit from image 2` | Vague `combine these images` |\n| Show the edit prompt before `POST` when wording is not locked | Silent edit that changes subject, species, age, or unrequested regions |\n\n**Fidelity check (before pay):** the prompt must still satisfy the user’s change **and** every stated keep. If a keep is missing, add it. Do not “spice” the background/cast when they asked for a background-only swap.\n\n## When NOT to use\n\nUse a different skill instead:\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-try-on` | Use when someone wants virtual try-on — dress a person in clothes from reference photos for fashion or ecommerce. | `npx skills add PrunaAI/pruna-skills@p-image-try-on -y` |\n| `p-image-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n\n## HTTP (curl)\n\n### Upload references\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference.png\"\n```\n\nUse each response `urls.get` in `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-image-edit' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`. Optional `seed` only when the user requests reproducibility.\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-image-edit' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\n## Edit flow\n\nFollow `generation-diversity` **still-image prompt flow** (edit section):\n\n1. **Lock change + keeps** — user’s surgical ask; formula in **Prompt craft (dynamic + faithful)**.\n2. **Upload refs** — `POST /v1/files`; `urls.get` → `input.images` (1–5). Never invent file URLs.\n3. **Ritual seed** → draft edit prompt (`image-prompting` edit craft) → **fidelity check** (every keep clause present).\n4. **Confirm** — `prompt`, refs, **`aspect_ratio`**, **`turbo`** (off for hard edits).\n5. **POST** — async curl below; checklist before upscale/video.\n\n**Aspect ratio:** prefer `match_input_image` for edits; output should keep the plate aspect — if drift occurs, retry with the same ref URL and explicit keep clauses.\n\n**Pruna note:** avatar pipelines — edit from locked **upscaled** hero URL; upscale again before `p-video*` — never pass raw edit URLs to video models.\n\n**Not edit:** new subject from scratch → `p-image`. Garment fit from packshots → `p-image-try-on`.\n\n**Multi-reference (up to 5):** index refs by role — e.g. three-reference composite: face from image 1, outfit from image 2, cafe from image 3; `turbo: false` for hard composites. Full pattern in `image-prompting` **p-image-edit-prompting**.\n\n## Required input\n\n- `prompt` (string)\n- `images` (array of 1–5 URLs, typically `https://api.pruna.ai/v1/files/{id}`)\n\n## Common optional fields\n\n- `aspect_ratio`: `match_input_image`, `1:1`, `16:9`, `9:16`, etc.\n- `turbo` (boolean, default true; turn off for harder edits)\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-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n| `p-video` | Use when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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| `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| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-image-edit\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1785259159346\n}\n\nFile v1.0.8:skill-card.md\n\n## Description: <br>\nUse when someone wants to edit an existing photo - change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. <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 and developers use this skill to guide prompt-driven edits of existing images with Pruna's p-image-edit model, including background changes, outfit changes, multi-reference composition, and faithful surgical edits. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow uploads user-provided images and prompts to Pruna's cloud API. <br>\nMitigation: Use only images intended for upload and install the skill only if cloud processing by Pruna is acceptable. <br>\nRisk: The skill requires PRUNA_API_KEY for API calls. <br>\nMitigation: Keep the API key in environment configuration and do not paste or store it in prompts, command history, or generated artifacts. <br>\nRisk: The workflow references optional safety-related fields such as disable_safety_checker. <br>\nMitigation: Avoid changing safety-related options unless the user understands the policy and account implications. <br>\nRisk: The workflow includes npx commands to install related skills. <br>\nMitigation: Review related skill installs before running the commands. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-image-edit) <br>\n- [Pruna files 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 curl command examples and JSON request bodies] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires PRUNA_API_KEY; uploads 1-5 user-provided image references; supports optional aspect_ratio, turbo, seed, and disable_safety_checker fields.] <br>\n\n## Skill Version(s): <br>\n1.0.8 (source: server release metadata and skill frontmatter metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.8:skill.manifest.json\n\n{\n  \"references\": []\n}\n\nArchive v1.0.7: 4 files, 4978 bytes\n\nFiles: skill-card.md (2525b), skill.manifest.json (23b), SKILL.md (8119b), _meta.json (131b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: p-image-edit\ndescription: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\nlicense: MIT\nmetadata:\n  version: \"1.0.7\"\n  package: pruna-skills\n  pruna_model: p-image-edit\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| `image-prompting` | Use when crafting still-image prompts for any generative model — composition, identity sheets, edits, try-on, and photoreal personas. | `npx skills add PrunaAI/pruna-skills@image-prompting -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-image-edit` `` in backticks, confirm `PRUNA_API_KEY`, then ask for the source photo (and edit brief). Draft edits with **Prompt craft (dynamic + faithful)**. Redirect to `p-image-try-on` when the job is garment fit from packshots.\n\n## Prompt craft (dynamic + faithful)\n\nEdit prompts are **surgical** and **request-locked**. Change only what the user asked; keep everything else identical. Diversity applies to *how* you phrase the change — not to inventing a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Formula: `Change [specific thing]. Keep [identity / pose / lighting / background] identical.` (`image-prompting` edit craft) | `Make it better` / mood-only rewrites that ignore the brief |\n| Name every **must-keep** from the user (face, outfit, pose, background, product) | Drop keep-clauses and hope the model preserves them |\n| Fresh ritual seed from `generation-diversity` before drafting; vary free wording (materials, hex, camera nuance) when the brief allows | Copy this skill’s sample (`soft gradient`) when the user asked for something else |\n| Point at refs when composing: `face from image 1, outfit from image 2` | Vague `combine these images` |\n| Show the edit prompt before `POST` when wording is not locked | Silent edit that changes subject, species, age, or unrequested regions |\n\n**Fidelity check (before pay):** the prompt must still satisfy the user’s change **and** every stated keep. If a keep is missing, add it. Do not “spice” the background/cast when they asked for a background-only swap.\n\n## When NOT to use\n\nUse a different skill instead:\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-try-on` | Use when someone wants virtual try-on — dress a person in clothes from reference photos for fashion or ecommerce. | `npx skills add PrunaAI/pruna-skills@p-image-try-on -y` |\n| `p-image-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n\n## HTTP (curl)\n\n### Upload references\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference.png\"\n```\n\nUse each response `urls.get` in `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-image-edit' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\nPoll and download: follow `pruna-api`.\n\nComplete the random seed ritual from `generation-diversity` before writing prompts — **do not** pass the ritual string as API `seed`. Optional `seed` only when the user requests reproducibility.\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-image-edit' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\n## Edit flow\n\nFollow `generation-diversity` **still-image prompt flow** (edit section):\n\n1. **Lock change + keeps** — user’s surgical ask; formula in **Prompt craft (dynamic + faithful)**.\n2. **Upload refs** — `POST /v1/files`; `urls.get` → `input.images` (1–5). Never invent file URLs.\n3. **Ritual seed** → draft edit prompt (`image-prompting` edit craft) → **fidelity check** (every keep clause present).\n4. **Confirm** — `prompt`, refs, **`aspect_ratio`**, **`turbo`** (off for hard edits).\n5. **POST** — async curl below; checklist before upscale/video.\n\n**Aspect ratio:** prefer `match_input_image` for edits; output should keep the plate aspect — if drift occurs, retry with the same ref URL and explicit keep clauses.\n\n**Pruna note:** avatar pipelines — edit from locked **upscaled** hero URL; upscale again before `p-video*` — never pass raw edit URLs to video models.\n\n**Not edit:** new subject from scratch → `p-image`. Garment fit from packshots → `p-image-try-on`.\n\n**Multi-reference (up to 5):** index refs by role — e.g. three-reference composite: face from image 1, outfit from image 2, cafe from image 3; `turbo: false` for hard composites. Full pattern in `image-prompting` **p-image-edit-prompting**.\n\n## Required input\n\n- `prompt` (string)\n- `images` (array of 1–5 URLs, typically `https://api.pruna.ai/v1/files/{id}`)\n\n## Common optional fields\n\n- `aspect_ratio`: `match_input_image`, `1:1`, `16:9`, `9:16`, etc.\n- `turbo` (boolean, default true; turn off for harder edits)\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-upscale` | Use when someone wants to upscale or sharpen an existing image for print, large crops, or higher-quality delivery. | `npx skills add PrunaAI/pruna-skills@p-image-upscale -y` |\n| `p-video` | Use when someone wants one short video clip from text or images — B-roll, start/end frame animation, or a quick motion shot. Not for full multi-scene films or lip-synced hosts. | `npx skills add PrunaAI/pruna-skills@p-video -y` |\n| `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| `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| `narrated-multi-scene` | Use when someone wants a multi-part story with voiceover — episodic B-roll, chaptered promo, or several linked video scenes without on-camera dialogue. | `npx skills add PrunaAI/pruna-skills@narrated-multi-scene -y` |\n| `visual-transition-reel` | Use when someone wants a montage with transitions between shots — action-sequence reel or multi-scene piece where narration is optional. | `npx skills add PrunaAI/pruna-skills@visual-transition-reel -y` |\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-image-edit\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1784810042678\n}\n\nFile v1.0.7:skill-card.md\n\n## Description: <br>\nUse when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. <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 content teams use this skill to guide photo edits with Pruna's p-image-edit model, including reference upload, prompt drafting, aspect-ratio selection, and async prediction calls. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Selected reference images and prompts are sent to Pruna's API for editing. <br>\nMitigation: Use the skill only when external API processing is acceptable, and avoid submitting images or prompts that should not leave the runtime environment. <br>\nRisk: The skill depends on a PRUNA_API_KEY from the environment. <br>\nMitigation: Store the key in runtime secrets or environment variables and do not paste the raw key into chat or generated files. <br>\nRisk: The skill suggests installing related Pruna skills with npx, including an optional full-suite install. <br>\nMitigation: Review the related skill packages and requested install command before allowing installation. <br>\nRisk: The skill exposes disable_safety_checker as an optional request field. <br>\nMitigation: Require explicit user intent and content-policy review before using safety-checker bypass options. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/pruna-ai/skills/p-image-edit) <br>\n- [Pruna file upload API](https://api.pruna.ai/v1/files) <br>\n- [Pruna predictions API](https://api.pruna.ai/v1/predictions) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration] <br>\n**Output Format:** [Markdown with inline bash and JSON examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Guides prompt construction, reference-image upload, and Pruna prediction requests; required inputs are a prompt and one to five image URLs.] <br>\n\n## Skill Version(s): <br>\n1.0.7 (source: evidence.release.version and SKILL.md metadata.version) <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: 13 files, 31609 bytes\n\nFiles: README-INSTALL.md (918b), references/api-credentials.md (3128b), references/generation-diversity.md (25978b), references/generation-quality-checklists.md (10290b), references/p-image-edit-quality-checklist.md (1249b), references/pruna-api.md (5010b), references/random-seed-ritual.md (4011b), references/scene-anchor-pair.md (8014b), references/scene-anchor-triple.md (10599b), skill-card.md (3008b), skill.manifest.json (223b), SKILL.md (5235b), _meta.json (131b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: p-image-edit\ndescription: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\nlicense: MIT\nmetadata:\n  version: \"1.0.6\"\n  pruna_model: p-image-edit\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-image-edit (Pruna)\n\nPremium edit and multi-image composition. Full parameters: [p-image-edit model docs](https://docs.api.pruna.ai/guides/models/p-image-edit).\n\nShared HTTP patterns: [pruna-api.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/pruna-api.md) (upload, [poll](#poll), [download](#download))\n\n## HTTP (curl)\n\n### Upload references\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference.png\"\n```\n\nUse each response `urls.get` in `input.images`.\n\n### Create (async — recommended)\n\n```bash\ncurl -X POST 'https://api.pruna.ai/v1/predictions' \\\n  -H 'Content-Type: application/json' \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -H 'Model: p-image-edit' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\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## Before generating\n\n1. **[Generation diversity](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/generation-diversity.md)** — ritual seed + axis rotation when the job accepts `seed` or you need a logged `run_id`.\n2. Confirm **`prompt`**, which **reference files** to upload (1–5), **`aspect_ratio`**, and **`turbo`** on/off with the user. Run [p-image-edit-quality-checklist.md](./references/p-image-edit-quality-checklist.md) on outputs.\n\n**Avatar pipelines:** edit from the locked **upscaled** hero URL. Chain: **`p-image-edit` → `p-image-upscale` → slop gate → `p-video-avatar`**. Never pass raw edit URLs to video models. See [avatar-multi-scene](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-multi-scene/skills/avatar-multi-scene/SKILL.md).\n\n**Multi-scene narrated films:** generate **start still** (`edit_prompt`) and **end still** (`last_frame_edit_prompt`) per scene for the [scene anchor triple](./references/scene-anchor-triple.md). Run all scene edits **in parallel** after the hero anchor exists ([parallel-execution.md](https://github.com/PrunaAI/pruna-skills/tree/main/references/policies/parallel-execution.md)). See [narrated-multi-scene](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/narrated-multi-scene/skills/narrated-multi-scene/SKILL.md).\n\n**Visual transition reels:** same start/end still pattern for the [scene anchor pair](./references/scene-anchor-pair.md) — see [visual-transition-reel](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/visual-transition-reel/skills/visual-transition-reel/SKILL.md).\n\n## Prerequisites\n\nUpload each reference to `POST https://api.pruna.ai/v1/files` (multipart `content=@file`). Use each file’s `urls.get` value in `input.images`.\n\n## Required input\n\n- `prompt` (string)\n- `images` (array of 1–5 URLs, typically `https://api.pruna.ai/v1/files/{id}`)\n\n## Common optional fields\n\n- `aspect_ratio`: `match_input_image`, `1:1`, `16:9`, `9:16`, etc.\n- `turbo` (boolean, default true; turn off for harder edits)\n- `seed`, `disable_safety_checker`\n\n## Example: synchronous single-image edit\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-image-edit' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'\n```\n\n## Typical next steps\n\n- Upscale for delivery: [p-image-upscale](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-image-upscale/skills/p-image-upscale/SKILL.md)\n- Motion: [p-video](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video/skills/p-video/SKILL.md) with [scene anchor pair](./references/scene-anchor-pair.md), [scene anchor triple](./references/scene-anchor-triple.md), or [p-video-avatar](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/p-video-avatar/skills/p-video-avatar/SKILL.md)\n- Pipeline: [pruna-generative-pipeline](https://github.com/PrunaAI/pruna-skills/tree/main/docs/WORKFLOW-RECIPES.md)\n\n## Related workflow\n\nMulti-scene avatar + animate reels: [avatar-multi-scene](https://github.com/PrunaAI/pruna-skills/tree/main/plugins/avatar-multi-scene/skills/avatar-multi-scene/SKILL.md) — phased curl or local slider script (not in this tool skill).\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-image-edit\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1784235531953\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-image-edit-quality-checklist.md\n\n# p-image-edit quality checklist\n\nAfter each `p-image-edit` output is saved, **open the file and review it visually** against this checklist (agent vision review — see [generation-quality-checklists.md](https://github.com/PrunaAI/pruna-skills/tree/main/policies/generation-quality-checklists.md#who-applies-these-checklists)).\n\n## Applies to\n\nSee the canonical mapping in [`generation-quality-checklists.md`](https://github.com/PrunaAI/pruna-skills/tree/main/policies/generation-quality-checklists.md).\n\n## Edit intent and preservation\n\n- Requested change is present and obvious.\n- Locked regions remain stable (identity, product geometry, key wardrobe/details).\n- \"Change only X\" constraints are respected; unrelated regions do not drift.\n\n## Multi-image composition (when used)\n\n- Source images blend coherently (lighting, scale, perspective).\n- Subject edges are clean (no obvious cutout seams or ghosting).\n- Final composition reads as one scene, not pasted layers.\n\n## Technical and handoff checks\n\n- Output dimensions and `aspect_ratio` match target use.\n- Artifacts introduced by edit are absent (smears, repeated textures, malformed hands/faces).\n- Result is ready for downstream `p-video` / `p-video-avatar`, or flagged for another pass.\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](./scene-anchor-triple.md).\n\n## File uploads\n\nLocal files leave the machine and are processed at `https://api.pruna.ai/` — see [agent-safety.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/agent-safety/SKILL.md).\n\n1. `POST /v1/files` with `-F \"content=@/path/to/file.jpg\"` and `apikey` header.\n2. Use `urls.get` from the response (or construct `https://api.pruna.ai/v1/files/{id}`) as the **`image`**, **`last_frame_image`**, **`images[]`**, **`person_image`**, **`garment_images[]`**, **`audio`**, etc. value in `input`.\n\nUploaded files expire (see upload response `expires_at`).\n\n## File upload (curl)\n\n```bash\ncurl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/local/file.jpg\"\n```\n\nUse `urls.get` from the JSON response in prediction `input` fields.\n\n## Poll async job {#poll}\n\nAfter an async `POST /v1/predictions` (no `Try-Sync`), poll until `status` is `succeeded` or `failed`:\n\n```bash\ncurl -s -H \"apikey: ${PRUNA_API_KEY}\" \\\n  \"https://api.pruna.ai/v1/predictions/status/PREDICTION_ID\"\n```\n\nUse the `get_url` from the create response. Repeat every few seconds until done.\n\n## Download output {#download}\n\n`-o` writes (or overwrites) a local file — confirm the path with the user ([agent-safety.md](https://github.com/PrunaAI/pruna-skills/tree/main/workflows/agent-safety/SKILL.md)).\n\n```bash\ncurl -L -H \"apikey: ${PRUNA_API_KEY}\" \\\n  \"GENERATION_URL_FROM_STATUS\" \\\n  -o output.bin\n```\n\nIf `generation_url` is relative, prefix with `https://api.pruna.ai`.\n\n## Typical success response\n\n- **Sync:** `{ \"status\": \"succeeded\", \"generation_url\": \"...\" }`\n- **Async (create):** `{ \"id\": \"...\", \"get_url\": \"https://api.pruna.ai/v1/predictions/status/...\" }`\n- **Async (poll):** eventually `{ \"status\": \"succeeded\", \"generation_url\": \"...\" }`\n\nDownload binary output with `GET` to `generation_url` and the same `apikey` header.\n\n## Environment variable\n\nSkills in this repo assume **`PRUNA_API_KEY`** is set in the shell when running `curl` examples.\n\n**Missing key:** agents must stop and point the user to [api-credentials.md](./api-credentials.md) — sign up at [dashboard.pruna.ai](https://dashboard.pruna.ai/), create an API key, then `export PRUNA_API_KEY=...`.\n\n**Agent discipline:** [generation-diversity.md](https://github.com/PrunaAI/pruna-skills/tree/main/policies/generation-diversity.md) before every `POST /v1/predictions`.\n\nFile v1.0.6:references/random-seed-ritual.md\n\n# Random seed ritual (SSoT — mandatory before every generation)\n\nThe random seed ritual is a lean [String Seed of Thought](https://pub.sakana.ai/ssot/) (DAG) protocol. **Every** Pruna generation — every prompt, every `POST /v1/predictions`, every scene row — starts here.\n\nThis prevents copy-pasting example strings (`k7Qm2xP9`, `482901`, …) and reduces accidental duplicate outputs across sessions.\n\n## The ritual (do this first)\n\nBefore writing prompts, curl, or runner JSON:\n\n1. **Generate a random string** in-agent (8–16 chars, mixed case + digits).\n2. **Log it** as `ritual_seed` in the manifest / internal plan. Do **not** require a user-visible *\"Ritual seed: …\"* line unless the user asks for transparency.\n3. **Derive prompt choices** from the string — sum char codes, mod N — pick axes from [generation-diversity.md](./generation-diversity.md) (`aspect_ratio`, `camera_tag`, `render_category_tag`, …).\n4. **Write the prompt** using [explicit prompt structure](./generation-diversity.md#explicit-prompt-structure-required) and derived axes.\n5. **Record** axes chosen and prediction id in the manifest alongside `ritual_seed`.\n\n**Do not pass the ritual string to API `seed`.** API runs without `seed` unless the user explicitly requests reproducibility (`api_seed`).\n\n**Never** proceed to `POST /v1/predictions` without completing steps 1–2 (unless the user supplied an explicit `api_seed` — see below).\n\n## Reuse rules\n\n| Situation | Action |\n|-----------|--------|\n| **New hero / independent still / mood-board panel** | Fresh ritual string |\n| **Same-brief slop retry** | Reuse same `ritual_seed`; note `retry_ritual_seed` in manifest |\n| **Same character arc** | Lock **hero plate URL** + cast descriptor; reuse `ritual_seed` only on same-brief regen |\n| **User says \"lock seed\" / provides integer** | Pass **their** number as `api_seed` → `input.seed`; skip new ritual for that chain |\n\nCharacter continuity = approved plate URL + cast descriptor — **not** the ritual string on the API.\n\n## Anti-patterns\n\n| Wrong | Right |\n|-------|--------|\n| Copy example strings from SKILL.md | Fresh ritual string each independent generation |\n| Pass ritual string as API `seed` | Ritual is planning-only; `api_seed` only when\n\nArchive v1.0.2: 14 files, 34766 bytes\n\nFiles: README-INSTALL.md (367b), references/api-credentials.md (3138b), references/generation-diversity.md (26021b), references/generation-quality-checklists.md (10763b), references/p-image-edit-quality-checklist.md (1190b), references/parallel-execution.md (7946b), references/pruna-api.md (4911b), references/random-seed-ritual.md (4088b), references/scene-anchor-pair.md (8019b), references/scene-anchor-triple.md (10653b), skill-card.md (3221b), skill.manifest.json (352b), SKILL.md (4612b), _meta.json (131b)","readmeExcerpt":"Skill: p-image-edit Owner: pruna-ai Summary: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. 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:33:40.929Z | auto - Version bump to 1.0.14 in metadata. - Removed the file: skill-card.md. - No user-facing functional or docum","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/reference.png\""},{"language":"bash","snippet":"curl -X POST \"https://api.pruna.ai/v1/files\" \\\n  -H \"apikey: ${PRUNA_API_KEY}\" \\\n  -F \"content=@/path/to/reference.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-image-edit' \\\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-image-edit' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\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-image-edit' \\\n  -H 'Try-Sync: true' \\\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-image-edit' \\\n  -H 'Try-Sync: true' \\\n  -d '{\n    \"input\": {\n      \"prompt\": \"Change background to soft gradient, keep subject identical\",\n      \"images\": [\"https://api.pruna.ai/v1/files/FILE_ID\"],\n      \"aspect_ratio\": \"9:16\"\n    }\n  }'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: p-image-edit\ndescription: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits.\nlicense: MIT\nmetadata:\n  version: \"1.0.14\"\n  package: pruna-skills\n  pruna_model: p-image-edit\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| `image-prompting` | Use when crafting still-image prompts for any generative model — composition, identity sheets, edits, try-on, and photoreal personas. | `npx skills add PrunaAI/pruna-skills@image-prompting -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-image-edit` `` in backticks, confirm `PRUNA_API_KEY`, then ask for the source photo (and edit brief). Open intake → **`generation-diversity`** clarification intake when needed. Draft edits with **Prompt craft (dynamic + faithful)**. Redirect to `p-image-try-on` when the job is garment fit from packshots.\n\n## Prompt craft (dynamic + faithful)\n\nEdit prompts are **surgical** and **request-locked**. Change only what the user asked; keep everything else identical. Diversity applies to *how* you phrase the change — not to inventing a new scene.\n\n| Do | Don't |\n| --- | --- |\n| Formula: `Change [specific thing]. Keep [identity / pose / lighting / background] identical.` (`image-prompting` edit craft) | `Make it better` / mood-only rewrites that ignore the brief |\n| Name every **must-keep** from the user (face, outfit, pose, background, product) | Drop keep-clauses and hope the model preserves them |\n| Fresh ritual seed from `generation-diversity` before drafting; vary free wording (materials, hex, camera nuance) when the brief allows | Copy this skill’s sample (`soft gradient`) when the user asked for something else |\n| Point at refs when composing: `face from image 1, outfit from image 2` | Vague `combine these images` |\n| Show the edit prompt before `POST` when wording is not locked | Silent edit that changes subject, species, age, or unrequested regions |\n\n**Fidelity check (before pay):** the prompt must still satisfy the user’s change **and** every stat"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7cagwf7q3t0cxrgteb7xk0bh81j0eb\",\n  \"slug\": \"p-image-edit\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790696020929\n}"},{"path":"skill-card.md","content":"## Description:\n\nGuides agents in editing existing photos with Pruna, including background changes, outfit edits, and reference-guided compositions.\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 direct precise edits to existing photos, preserving requested details while changing backgrounds, outfits, or elements sourced from reference images.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Photos and edit prompts are sent to Pruna's cloud API.\n\nMitigation: Use only images and prompts you have permission to share; avoid sensitive personal, biometric, confidential, or proprietary material unless you accept Pruna's data handling terms.\n\nRisk: Companion-skill installation examples use unpinned npx commands.\n\nMitigation: Install companion skills from a trusted source and pin reviewed versions instead of running unpinned examples blindly.\n\n## Reference(s):\n\n- [p-image-edit on ClawHub](https://clawhub.ai/pruna-ai/skills/p-image-edit)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Text, Shell commands]\n\n**Output Format:** [Markdown with edit prompts and optional curl examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides image uploads and retrieval of edited results through Pruna's API.]\n\n## Skill Version(s):\n\n1.0.14 (source: frontmatter, release 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."},{"path":"skill.manifest.json","content":"{\n  \"references\": []\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. Skill: p-image-edit Owner: pruna-ai Summary: Use when someone wants to edit an existing photo — change outfits or backgrounds, compose from reference images, or apply prompt-driven edits. 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:33:40.929Z | auto - Version bump to 1.0.14 in metadata. - Removed the file: skill-card.md. - No user-facing functional or docum","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1348,"uniquenessScore":48,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T10:54:01.062Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T10:54:01.062Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T13:31:59.064Z","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"}]}}}