skills/image-to-image-edit/SKILL.md
Transform existing images using AI with text prompts. Supports style transfer, inpainting, outpainting, and guided editing.
npx skillsauth add tippyentertainment/skills image-to-image-editInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Transform existing images using AI diffusion models with text guidance. This skill enables powerful image editing capabilities including style transfer, content modification, inpainting, and outpainting.
Image-to-image (img2img) generation takes an existing image as input and transforms it based on a text prompt while preserving some characteristics of the original. The strength parameter controls how much the image changes - low values (0.3-0.5) preserve more of the original, while high values (0.7-1.0) allow more dramatic transformations.
| Parameter | Type | Description |
|-----------|------|-------------|
| image_url | string | URL or local path to the source image. Supports PNG, JPG, WEBP formats. Must be publicly accessible URL or local file path. |
| prompt | string | Text description of the desired transformation. Be specific about style, content, and mood. Example: "transform into oil painting style, dramatic lighting, renaissance art" |
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| negative_prompt | string | "blurry, low quality, distorted, watermark" | What to avoid in the generation. Use to exclude unwanted elements. |
| strength | float | 0.75 | Transformation intensity (0.0-1.0). Lower = preserve original, higher = more change. Recommended: 0.3-0.5 for subtle edits, 0.6-0.8 for style transfers, 0.9+ for near-complete rewrites. |
| seed | integer | random | Reproducibility seed. Same seed + same parameters = same output. Use -1 for random. |
| steps | integer | 25 | Inference steps (15-50). More steps = higher quality but slower. 20-30 is usually sufficient. |
| cfg_scale | float | 7.5 | Classifier-free guidance scale (1-20). Higher = more prompt adherence, lower = more creative freedom. |
| width | integer | source width | Output width in pixels. Leave empty to match source. |
| height | integer | source height | Output height in pixels. Leave empty to match source. |
| sampler | string | "dpmpp_3m_sde" | Sampling algorithm. Options: euler_a, dpmpp_3m_sde, dpmpp_2m, ddim, uni_pc, lms. DPM++ samplers recommended for quality. |
| scheduler | string | "karras" | Noise scheduler. Options: karras, normal, sgm_uniform, simple. Karras generally produces best results. |
| model | string | system default | Model checkpoint name. Examples: sdXL_v10, realisticVision_v20, dreamshaper_8. |
| mask_url | string | null | URL to mask image for inpainting. White areas = inpaint, black areas = preserve. PNG with alpha channel supported. |
| inpaint | boolean | false | Enable inpainting mode. Requires mask_url. Only modifies masked regions. |
| outpaint | boolean | false | Enable outpainting mode. Extends image beyond original boundaries. |
| outpaint_direction | string | "right" | Direction to extend: left, right, up, down, or combinations like "left,right,up". |
| batch_size | integer | 1 | Number of variations to generate. Each gets a different seed. |
| backend | string | "auto" | Which API to use: comfyui, automatic1111, stability, local. Auto-detects available backend. |
{
"image_url": "https://storage.example.com/generated/image_12345.png",
"seed": 123456789,
"metadata": {
"prompt": "oil painting style, dramatic lighting",
"negative_prompt": "blurry, low quality",
"strength": 0.75,
"steps": 25,
"cfg_scale": 7.5,
"sampler": "dpmpp_3m_sde",
"model": "sdXL_v10"
},
"processing_time": 4.2
}
// Transform photo into oil painting
await imageToImageEdit({
image_url: "https://example.com/photo.jpg",
prompt: "oil painting style, impressionist, visible brush strokes, vibrant colors",
strength: 0.7
});
// Enhance photo quality while preserving content
await imageToImageEdit({
image_url: "https://example.com/portrait.jpg",
prompt: "professional photography, studio lighting, high detail, sharp focus",
strength: 0.35,
steps: 30,
cfg_scale: 8
});
// Replace object in image
await imageToImageEdit({
image_url: "https://example.com/room.jpg",
mask_url: "https://example.com/room_mask.png",
prompt: "modern furniture, minimalist sofa, coffee table",
inpaint: true,
strength: 0.8
});
// Extend image to wider aspect ratio
await imageToImageEdit({
image_url: "https://example.com/landscape.jpg",
prompt: "continue the landscape, mountains, sky, clouds",
outpaint: true,
outpaint_direction: "left,right",
width: 1920,
height: 1080
});
// Generate multiple style variations
await imageToImageEdit({
image_url: "https://example.com/portrait.jpg",
prompt: "cyberpunk style, neon lights, futuristic",
strength: 0.65,
batch_size: 4
});
// Returns 4 images with seeds: seed, seed+1, seed+2, seed+3
// Same seed = same result
await imageToImageEdit({
image_url: "https://example.com/photo.jpg",
prompt: "watercolor painting style",
strength: 0.6,
seed: 42 // Always produces same output
});
ComfyUI uses a node-based workflow system. The img2img workflow:
Key parameters in ComfyUI:
denoise = strength (0.0-1.0)sampler_name = sampler algorithmscheduler = noise scheduleAutomatic1111's img2img API accepts:
{
"init_images": ["base64_encoded_image"],
"prompt": "transformation description",
"negative_prompt": "what to avoid",
"denoising_strength": 0.75,
"steps": 25,
"cfg_scale": 7.5,
"seed": -1,
"sampler_name": "DPM++ 3M SDE",
"width": 1024,
"height": 1024
}
Stability AI's image-to-image endpoint:
{
"init_image": "base64_or_url",
"text_prompts": [
{"text": "transformation description", "weight": 1},
{"text": "negative prompt", "weight": -1}
],
"image_strength": 0.75,
"steps": 25,
"cfg_scale": 7.5,
"seed": 0
}
| Strength | Use Case | Example | |----------|----------|---------| | 0.2-0.4 | Subtle fixes, upscaling, detail enhancement | "sharpen details, fix lighting" | | 0.4-0.6 | Moderate changes, style enhancement | "add dramatic lighting, enhance colors" | | 0.6-0.8 | Style transfer, significant changes | "transform into oil painting, cyberpunk style" | | 0.8-0.95 | Major transformation, near-complete rewrite | "completely different scene, same composition" | | 0.95-1.0 | Almost text-to-image, minimal original | "use as rough layout guide" |
❌ "make it artistic" ✅ "oil painting style, impressionist, visible brush strokes, warm color palette, dramatic lighting"
❌ "change the background" ✅ "replace background with sunset beach scene, golden hour lighting, ocean waves"
negative_prompt: "blurry, low quality, distorted faces, extra limbs, watermark, text, signature"
prompt: "style as cyberpunk art, neon lights, futuristic city background, preserve the person's face and pose"
{
image_url: "photo.jpg",
prompt: "oil painting style, renaissance art, dramatic chiaroscuro lighting, museum quality",
strength: 0.7
}
{
image_url: "portrait.jpg",
prompt: "professional studio background, gradient lighting, corporate headshot style",
strength: 0.5,
negative_prompt: "distracting elements, cluttered background"
}
{
image_url: "photo.jpg",
mask_url: "mask.png", // White over object to remove
prompt: "clean background, seamless fill, natural continuation",
inpaint: true,
strength: 0.85
}
{
image_url: "photo.jpg",
prompt: "cinematic color grading, teal and orange, film look, Kodak Portra 400",
strength: 0.3
}
{
image_url: "low_res.jpg",
prompt: "high resolution, sharp details, 4K quality, professional photography",
strength: 0.4,
width: 2048,
height: 2048
}
{
image_url: "sketch.png",
prompt: "photorealistic rendering, detailed textures, professional photography",
strength: 0.85
}
{
image_url: "daytime_photo.jpg",
prompt: "night scene, moonlight, street lamps, stars in sky, dark blue atmosphere",
strength: 0.65
}
{
image_url: "summer_photo.jpg",
prompt: "winter scene, snow covered ground, bare trees, overcast sky, cold atmosphere",
strength: 0.7
}
| Error | Cause | Solution |
|-------|-------|----------|
| image_too_large | Image exceeds max dimensions | Resize to under 2048x2048 |
| invalid_url | Image URL not accessible | Use public URL or local path |
| timeout | Generation took too long | Reduce steps or use faster sampler |
| out_of_memory | GPU memory exceeded | Reduce resolution or batch size |
| invalid_mask | Mask format incorrect | Use PNG with white/black regions |
// Implement exponential backoff
async function robustImg2Img(params, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await imageToImageEdit(params);
} catch (error) {
if (i === maxRetries - 1) throw error;
await new Promise(r => setTimeout(r, 1000 * Math.pow(2, i)));
}
}
}
euler_a sampler for speed (15-20 steps sufficient)steps to 15-20 for quick previewsdpmpp_3m_sde sampler with karras schedulersteps to 30-50 for final outputcfg_scale (8-12) for prompt adherenceThis skill integrates with TaskingBot's image generation pipeline:
// Use with generate_image for comparison
const original = await generate_image({prompt: "landscape"});
const transformed = await imageToImageEdit({
image_url: original.image_url,
prompt: "oil painting style",
strength: 0.7
});
Prepare Source Image
Craft Your Prompt
Set Strength Appropriately
Generate and Iterate
Post-Process
enhance_image for upscaling if needededit_image for additional refinementsCreate Mask Image
Configure Inpainting
{
image_url: "source.png",
mask_url: "mask.png",
prompt: "what should appear in masked areas",
inpaint: true,
strength: 0.8
}
Best Practices
Set Target Dimensions
Configure Outpainting
{
image_url: "1024x1024_image.jpg",
prompt: "continue the scene naturally",
outpaint: true,
outpaint_direction: "left,right",
width: 1920,
height: 1080
}
Direction Options
"left" - extend left side"right" - extend right side"up" - extend top"down" - extend bottom"left,right,up" - multiple directionsPOST /api/image-to-image
Content-Type: application/json
Authorization: Bearer <api_key>
{
"image_url": "https://example.com/image.jpg",
"prompt": "transformation description",
"negative_prompt": "what to avoid",
"strength": 0.75,
"seed": -1,
"steps": 25,
"cfg_scale": 7.5,
"width": 1024,
"height": 1024,
"sampler": "dpmpp_3m_sde",
"scheduler": "karras",
"model": "sdXL_v10",
"mask_url": null,
"inpaint": false,
"outpaint": false,
"batch_size": 1
}
{
"success": true,
"image_url": "https://storage.example.com/output.png",
"seed": 123456789,
"metadata": {
"prompt": "transformation description",
"strength": 0.75,
"steps": 25,
"processing_time_ms": 4200
}
}
strength (try 0.8-0.9)cfg_scale (try 10-12)strength (try 0.3-0.5)cfg_scale (try 5-7)steps (try 30-40)dpmpp_3m_sde)steps to 15-20euler_a samplerbatch_sizegenerate_image - Generate images from text promptsedit_image - Simple image editing (crop, filter, etc.)enhance_image - Upscale and improve image qualitygenerate_3d_from_image - Convert image to 3D modelVersion: 1.0.0 Author: TaskingBot Created: 2026-03-20 Tags: image, generation, editing, img2img, inpainting, outpainting, style-transfer, diffusion
development
A top-tier product/UI designer skill that uses Tailwind v4 plus Google Gemini Nano Banana image models to craft visually stunning, “award‑winning” marketing sites and apps with strong art direction, motion, and systems thinking.
development
Meticulously detect and fix missing React/TSX imports, undefined components, and bundler runtime errors in the WASM SPA build/preview pipeline. Ensures JSX components, icons, and hooks are properly imported or defined before running the browser preview, so the runtime safety-net rarely triggers.
development
Debug and auto-fix Vite projects running inside WebContainers: resolve mount/root issues, alias/path errors, missing scripts, and other common dev-time problems so the app boots cleanly.
tools
Diagnose and fix Vite + React 19 configuration issues for TypeScript SPA and WASM preview builds. Specializes in React 19’s JSX runtime, @vitejs/plugin-react, path aliases, SPA routing, and dev-server behavior so the app and in-browser preview bundle cleanly without manual trial-and-error.