plugins/fal-ai-master/skills/fal-image-to-image/SKILL.md
Complete fal.ai image-to-image system. PROACTIVELY activate for: (1) FLUX image-to-image transformation, (2) ControlNet (canny, depth, pose), (3) Inpainting with masks, (4) Upscaling (ESRGAN, Clarity), (5) Background removal (BiRefNet, RemBG), (6) Face restoration (GFPGAN, CodeFormer), (7) IP-Adapter style transfer, (8) Strength parameter tuning. Provides: Transformation endpoints, mask formats, ControlNet types, upscaling options. Ensures proper image editing and enhancement workflows.
npx skillsauth add JosiahSiegel/claude-plugin-marketplace fal-image-to-imageInstall 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.
| Task | Endpoint | Key Parameter |
|------|----------|---------------|
| Transform | fal-ai/flux/dev/image-to-image | strength: 0-1 |
| Inpaint | fal-ai/flux/dev/inpainting | mask_url |
| ControlNet | fal-ai/flux-controlnet-union | control_type |
| Upscale | fal-ai/clarity-upscaler | scale_factor: 2-4 |
| Remove BG | fal-ai/birefnet | - |
| Face fix | fal-ai/codeformer | fidelity: 0-1 |
| Strength Value | Effect | |----------------|--------| | 0.2-0.3 | Subtle style hint | | 0.5-0.7 | Moderate transform | | 0.8-1.0 | Full regeneration |
| ControlNet Type | Use Case |
|-----------------|----------|
| canny | Edge guidance |
| depth | 3D structure |
| pose | Human pose |
| tile | Detail enhancement |
Use for image editing and transformation:
Related skills:
fal-text-to-imagefal-image-to-videofal-model-guideComplete reference for all image transformation, editing, and enhancement models on fal.ai.
Endpoint: fal-ai/flux/dev/image-to-image
Best For: Style transfer, image transformation
Transform existing images while preserving structure.
import { fal } from "@fal-ai/client";
const result = await fal.subscribe("fal-ai/flux/dev/image-to-image", {
input: {
prompt: "Transform into a watercolor painting style",
image_url: "https://example.com/photo.jpg",
strength: 0.75, // 0-1, how much to transform
num_inference_steps: 28,
guidance_scale: 3.5,
seed: 42
}
});
console.log(result.images[0].url);
import fal_client
result = fal_client.subscribe(
"fal-ai/flux/dev/image-to-image",
arguments={
"prompt": "Transform into a watercolor painting style",
"image_url": "https://example.com/photo.jpg",
"strength": 0.75,
"num_inference_steps": 28,
"guidance_scale": 3.5
}
)
print(result["images"][0]["url"])
Strength Parameter:
0.0: No change (original image)0.3-0.5: Subtle changes, style hints0.5-0.7: Moderate transformation0.7-0.9: Strong transformation, some original preserved1.0: Complete regeneration (ignores original)Endpoint: fal-ai/flux-pro/v1/image-to-image
Best For: Production quality transformations
const result = await fal.subscribe("fal-ai/flux-pro/v1/image-to-image", {
input: {
prompt: "Professional headshot, studio lighting",
image_url: "https://example.com/casual-photo.jpg",
strength: 0.6,
guidance_scale: 3.5
}
});
Endpoint: fal-ai/flux-controlnet
Best For: Precise structural control
const result = await fal.subscribe("fal-ai/flux-controlnet", {
input: {
prompt: "A modern house with large windows",
control_image_url: "https://example.com/architecture-sketch.png",
controlnet_conditioning_scale: 0.8,
num_inference_steps: 28,
guidance_scale: 3.5
}
});
Endpoint: fal-ai/flux-controlnet-union
Best For: Multiple control types in one model
Supports: canny, depth, pose, tile, blur, gray, low_quality
const result = await fal.subscribe("fal-ai/flux-controlnet-union", {
input: {
prompt: "A beautiful woman in a red dress",
control_image_url: "https://example.com/pose-reference.png",
control_type: "pose",
controlnet_conditioning_scale: 0.7,
num_inference_steps: 28
}
});
Control Types:
canny: Edge detection guidancedepth: Depth map guidancepose: Human pose guidancetile: Detail enhancementblur: Blur-based controlgray: Grayscale structurelow_quality: Quality enhancementEndpoint: fal-ai/fast-sdxl/controlnet
Best For: SDXL with structural control
const result = await fal.subscribe("fal-ai/fast-sdxl/controlnet", {
input: {
prompt: "A futuristic cityscape",
negative_prompt: "blurry, low quality",
control_image_url: "https://example.com/depth-map.png",
controlnet_type: "depth",
controlnet_conditioning_scale: 0.8
}
});
Endpoint: fal-ai/flux-controlnet-canny
Best For: Edge-based generation
const result = await fal.subscribe("fal-ai/flux-controlnet-canny", {
input: {
prompt: "A detailed architectural drawing",
control_image_url: "https://example.com/building-photo.jpg",
controlnet_conditioning_scale: 0.9
}
});
Endpoint: fal-ai/flux-controlnet-depth
Best For: 3D-aware generation
const result = await fal.subscribe("fal-ai/flux-controlnet-depth", {
input: {
prompt: "A mystical forest scene",
control_image_url: "https://example.com/depth-map.png",
controlnet_conditioning_scale: 0.7
}
});
Endpoint: fal-ai/flux/dev/inpainting
Best For: Editing specific regions
const result = await fal.subscribe("fal-ai/flux/dev/inpainting", {
input: {
prompt: "A golden retriever",
image_url: "https://example.com/photo-with-pet.jpg",
mask_url: "https://example.com/mask.png", // White = edit area
num_inference_steps: 28,
guidance_scale: 3.5
}
});
result = fal_client.subscribe(
"fal-ai/flux/dev/inpainting",
arguments={
"prompt": "A golden retriever",
"image_url": "https://example.com/photo.jpg",
"mask_url": "https://example.com/mask.png"
}
)
Mask Format:
Endpoint: fal-ai/flux-pro/v1/fill
Best For: High-quality inpainting and outpainting
const result = await fal.subscribe("fal-ai/flux-pro/v1/fill", {
input: {
prompt: "Seamless continuation of the landscape",
image_url: "https://example.com/partial-image.jpg",
mask_url: "https://example.com/outpaint-mask.png"
}
});
Endpoint: fal-ai/fast-sdxl/inpainting
Best For: SDXL-based region editing
const result = await fal.subscribe("fal-ai/fast-sdxl/inpainting", {
input: {
prompt: "A beautiful flower arrangement",
negative_prompt: "ugly, distorted",
image_url: "https://example.com/vase.jpg",
mask_url: "https://example.com/vase-mask.png"
}
});
Endpoint: fal-ai/esrgan
Best For: Classic 4x upscaling
const result = await fal.subscribe("fal-ai/esrgan", {
input: {
image_url: "https://example.com/low-res-image.jpg",
scale: 4 // 2 or 4
}
});
// Result is 4x the original resolution
console.log(result.image.url);
result = fal_client.subscribe(
"fal-ai/esrgan",
arguments={
"image_url": "https://example.com/low-res.jpg",
"scale": 4
}
)
print(result["image"]["url"])
Endpoint: fal-ai/clarity-upscaler
Best For: AI-enhanced upscaling with detail generation
const result = await fal.subscribe("fal-ai/clarity-upscaler", {
input: {
image_url: "https://example.com/image.jpg",
scale_factor: 2, // 1-4
prompt: "high quality, detailed, sharp",
creativity: 0.3, // 0-1, how much to add
resemblance: 0.8 // 0-1, similarity to original
}
});
Parameters:
scale_factor: 1-4, upscale multipliercreativity: 0-1, how much AI can "imagine" detailsresemblance: 0-1, how closely to match originalprompt: Optional guidance for detail generationEndpoint: fal-ai/real-esrgan
Best For: General-purpose upscaling
const result = await fal.subscribe("fal-ai/real-esrgan", {
input: {
image_url: "https://example.com/image.jpg",
scale: 4,
face_enhance: true // Enhance faces
}
});
Endpoint: fal-ai/creative-upscaler
Best For: Artistic upscaling with regeneration
const result = await fal.subscribe("fal-ai/creative-upscaler", {
input: {
image_url: "https://example.com/image.jpg",
scale: 2,
prompt: "highly detailed, photorealistic"
}
});
Endpoint: fal-ai/birefnet
Best For: High-quality background removal
const result = await fal.subscribe("fal-ai/birefnet", {
input: {
image_url: "https://example.com/product-photo.jpg"
}
});
// Returns image with transparent background
console.log(result.image.url);
result = fal_client.subscribe(
"fal-ai/birefnet",
arguments={
"image_url": "https://example.com/photo.jpg"
}
)
# PNG with transparent background
print(result["image"]["url"])
Endpoint: fal-ai/rembg
Best For: Fast background removal
const result = await fal.subscribe("fal-ai/rembg", {
input: {
image_url: "https://example.com/image.jpg"
}
});
Endpoint: fal-ai/bria/background-removal
Best For: Commercial-grade background removal
const result = await fal.subscribe("fal-ai/bria/background-removal", {
input: {
image_url: "https://example.com/image.jpg"
}
});
Endpoint: fal-ai/gfpgan
Best For: Face restoration
const result = await fal.subscribe("fal-ai/gfpgan", {
input: {
image_url: "https://example.com/old-photo.jpg",
version: "1.4", // or "1.3"
scale: 2
}
});
Endpoint: fal-ai/codeformer
Best For: Advanced face restoration
const result = await fal.subscribe("fal-ai/codeformer", {
input: {
image_url: "https://example.com/damaged-photo.jpg",
fidelity: 0.7 // 0-1, balance quality vs fidelity
}
});
Endpoint: fal-ai/flux-ip-adapter
Best For: Style reference from image
const result = await fal.subscribe("fal-ai/flux-ip-adapter", {
input: {
prompt: "A modern living room",
image_url: "https://example.com/style-reference.jpg",
ip_adapter_scale: 0.7, // 0-1, style strength
num_inference_steps: 28
}
});
Endpoint: fal-ai/flux-ip-adapter-face-id
Best For: Face consistency across generations
const result = await fal.subscribe("fal-ai/flux-ip-adapter-face-id", {
input: {
prompt: "A portrait in renaissance style",
face_image_url: "https://example.com/face-reference.jpg",
ip_adapter_scale: 0.8
}
});
interface ImageToImageInput {
prompt: string;
image_url: string;
// Transformation strength
strength?: number; // 0-1, how much to change
// Generation parameters
num_inference_steps?: number;
guidance_scale?: number;
seed?: number;
// Output
output_format?: "jpeg" | "png";
}
interface ControlNetInput {
prompt: string;
control_image_url: string;
control_type?: "canny" | "depth" | "pose" | "tile" | "blur" | "gray";
controlnet_conditioning_scale?: number; // 0-1
num_inference_steps?: number;
guidance_scale?: number;
seed?: number;
}
interface InpaintingInput {
prompt: string;
image_url: string;
mask_url: string; // White = edit, Black = preserve
num_inference_steps?: number;
guidance_scale?: number;
seed?: number;
}
interface UpscalingInput {
image_url: string;
scale?: number; // 2 or 4
// For AI upscalers
prompt?: string;
creativity?: number;
resemblance?: number;
}
// 1. Remove background
const bgRemoved = await fal.subscribe("fal-ai/birefnet", {
input: { image_url: originalProductUrl }
});
// 2. Upscale
const upscaled = await fal.subscribe("fal-ai/clarity-upscaler", {
input: {
image_url: bgRemoved.image.url,
scale_factor: 2,
prompt: "product photography, studio lighting"
}
});
// 3. Apply style transformation
const styled = await fal.subscribe("fal-ai/flux/dev/image-to-image", {
input: {
prompt: "Professional e-commerce product photo, white background, soft shadows",
image_url: upscaled.image.url,
strength: 0.3
}
});
// 1. Upscale
const upscaled = await fal.subscribe("fal-ai/real-esrgan", {
input: {
image_url: oldPhotoUrl,
scale: 4,
face_enhance: false
}
});
// 2. Restore faces
const restored = await fal.subscribe("fal-ai/codeformer", {
input: {
image_url: upscaled.image.url,
fidelity: 0.7
}
});
// Use ControlNet to maintain structure while changing style
const result = await fal.subscribe("fal-ai/flux-controlnet-canny", {
input: {
prompt: "oil painting style, impressionist, vibrant colors",
control_image_url: originalPhotoUrl,
controlnet_conditioning_scale: 0.9
}
});
| Task | Recommended Strength | |------|---------------------| | Color correction | 0.2-0.3 | | Style hint | 0.3-0.5 | | Style transfer | 0.5-0.7 | | Reimagining | 0.7-0.9 | | Full regeneration | 0.9-1.0 |
| Use Case | Recommended Scale | |----------|-------------------| | Strict structure | 0.9-1.0 | | Balanced | 0.7-0.8 | | Loose guidance | 0.4-0.6 |
// Upload file first for large images
const file = await fetch("local-image.jpg").then(r => r.blob());
const uploadedUrl = await fal.storage.upload(
new File([file], "image.jpg", { type: "image/jpeg" })
);
// Then use in transformation
const result = await fal.subscribe("fal-ai/flux/dev/image-to-image", {
input: {
prompt: "...",
image_url: uploadedUrl,
strength: 0.5
}
});
development
This skill should be used when the user asks to train, debug, scale, or improve ML models. PROACTIVELY activate for: (1) PyTorch, TensorFlow/Keras, JAX, Flax, Hugging Face Trainer/Accelerate training loops, (2) distributed training, DDP/FSDP/DeepSpeed, TPU/GPU setup, (3) mixed precision AMP/bf16, gradient accumulation, checkpointing, seeding, (4) overfitting, imbalance, loss functions, regularization, LR schedules, warmup, (5) memory optimization, gradient checkpointing, offloading, quantization-aware training. Provides: reproducible training best practices across deep learning and classical ML.
development
This skill should be used when the user asks to productionize, track, version, govern, monitor, or automate ML systems. PROACTIVELY activate for: (1) MLflow, Weights & Biases, Neptune, Comet, ClearML experiment tracking, (2) model registry, model versioning, artifact lineage, reproducibility, (3) Kubeflow, SageMaker Pipelines, Vertex AI Pipelines, Azure ML pipelines, Databricks workflows, (4) CI/CD, continuous training/evaluation, A/B tests, canary/shadow deployments, (5) drift detection, model monitoring, data validation, responsible AI governance. Provides: end-to-end MLOps architecture and operational safeguards.
development
This skill should be used when the user asks to optimize, export, serve, compress, or accelerate ML inference. PROACTIVELY activate for: (1) latency, throughput, p95/p99, batching, concurrency, KV cache, memory, or cost issues, (2) quantization INT8/INT4, GPTQ, AWQ, bitsandbytes, pruning, sparsity, distillation, (3) ONNX export, ONNX Runtime, TensorRT, TorchScript, torch.compile, XLA, OpenVINO, Core ML, TFLite, (4) Triton, TorchServe, TF Serving, BentoML, Seldon, KServe configuration, (5) edge deployment, CPU/GPU/TPU/Inferentia serving. Provides: hardware-aware inference optimization and safe benchmarking.
testing
This skill should be used when the user asks to tune hyperparameters, run sweeps, optimize search spaces, or use AutoML. PROACTIVELY activate for: (1) Optuna, Ray Tune, FLAML, AutoGluon, Hyperopt, Nevergrad, KerasTuner, W&B sweeps, (2) grid search, random search, Bayesian optimization, TPE, Gaussian processes, evolutionary search, (3) ASHA, Hyperband, successive halving, multi-fidelity optimization, population-based training, (4) learning-rate finder, batch-size search, early stopping, pruning, (5) reproducible sweep design and experiment analysis. Provides: budget-aware hyperparameter search strategy.