ai-toolkit-trainer
Train custom LoRAs with ostris AI-Toolkit. Covers WAN 2.2/2.1 (people, styles, video motion) and Z-Image (Turbo & Base, low-VRAM image LoRAs). Use when the…
Build Flux txt2img workflows with Flux.1 Dev (SRPO), Flux 2 Klein 9B, Turbo LoRAs, FluxGuidance, and DualCLIPLoader patterns
$ npx -y skills add artokun/comfyui-mcp --skill flux-txt2img --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/flux-txt2imgContext preview
The summary Claude sees to decide when to auto-load this skill.
Build Flux txt2img workflows with Flux.1 Dev (SRPO), Flux 2 Klein 9B, Turbo LoRAs, FluxGuidance, and DualCLIPLoader patterns
name: flux-txt2img description: Build Flux txt2img workflows with Flux.1 Dev (SRPO), Flux 2 Klein 9B, Turbo LoRAs, FluxGuidance, and DualCLIPLoader patterns globs: - "**/*.json"
Flux is a guidance-distilled diffusion model family from Black Forest Labs. It uses a separate `FluxGuidance` node instead of KSampler CFG (which must always be 1.0). Three variants are available locally:
1. **Flux.1 Dev SRPO.** Fine-tuned Flux.1 Dev with SRPO alignment. Uses DualCLIPLoader (T5XXL + CLIP-L). BF16 only. 2. **Flux 2 Klein 9B.** Distilled Flux 2 variant. Uses single CLIPLoader (Qwen3-8B) + `flux2-vae.safetensors`. Fast 4-step generation. 3. **Flux 2 Turbo LoRA.** Applied to Flux.1 Dev for 4-step generation.
| Component | Node | Model | Notes | |-----------|------|-------|-------| | **UNET** | `UNETLoader` | `flux.1-dev-SRPO-BFL-bf16.safetensors` | 22.7GB, **BF16 only** — FP8 produces broken results | | **CLIP** | `DualCLIPLoader` (type=`flux`) | `clip_name1`: `t5xxl_fp8_e4m3fn.safetensors`, `clip_name2`: `clip_l.safetensors` | T5XXL (4.7GB) + CLIP-L (235MB) | | **VAE** | `VAELoader` | `ae.safetensors` | Standard Flux VAE (320MB). Z-Image uses the same VAE *architecture* but different weights — its VAE is a separate file (`z-image-ae.safetensors`), not this one |
| Component | Node | Model | Notes | |-----------|------|-------|-------| | **UNET** | `UNETLoader` | `bigLove_klein1.safetensors` | 17.3GB, Klein 9B variant | | **CLIP** | `CLIPLoader` (type=`flux2`) | `qwen_3_8b_fp8mixed.safetensors` | Qwen3-8B in text_encoders/ (8.3GB). Use `flux2`, NOT `flux` — both exist in the enum and `flux` fails at the sampler | | **VAE** | `VAELoader` | `flux2-vae.safetensors` | Flux 2 specific VAE (321MB) |
Klein 9B vs Flux.1 Dev: Klein uses the Qwen3-8B text encoder (not T5XXL + CLIP-L). It has a different VAE (`flux2-vae.safetensors`). 9B distilled runs in 4 steps; 9B base needs ~50 steps at CFG 5.0. Fits in ~20GB VRAM with FP8.
| Component | Node | Model | Notes | |-----------|------|-------|-------| | **LoRA** | `LoraLoaderModelOnly` | `flux2-turbo-lora.safetensors` | 2.6GB, strength 1.0 | | **Alt LoRA** | `LoraLoaderModelOnly` | `Flux2TurboComfyv2.safetensors` | Community variant, same size |
Provides separate prompt fields for each text encoder:
{
"class_type": "CLIPTextEncodeFlux",
"inputs": {
"clip": ["<dual_clip>", 0],
"clip_l": "short prompt for CLIP-L",
"t5xxl": "detailed description for T5XXL",
"guidance": 3.5
}
}`clip_l` captures key semantic features. `t5xxl` expands and refines descriptions. For simple use, put the same prompt in both fields. Guidance is built into this node, so no separate FluxGuidance is needed.
If using standard `CLIPTextEncode` instead of `CLIPTextEncodeFlux`, apply guidance separately:
{
"class_type": "FluxGuidance",
"inputs": {
"conditioning": ["<clip_text_encode>", 0],
"guidance": 3.5
}
}| Scenario | Guidance | Notes | |----------|----------|-------| | Short prompts | 3.5–4.0 | Tighter prompt adherence | | Long/complex prompts | 1.0–1.5 | More creative freedom | | Realism | 2.5 | Less glossy skin, richer detail | | Standard | 3.5 | Default for most use cases |
Flux does not support traditional negative prompts (guidance-distilled, CFG=1.0). Use `ConditioningZeroOut`:
{
"class_type": "ConditioningZeroOut",
"inputs": { "conditioning": ["<positive_cond>", 0] }
}Or use an empty `CLIPTextEncode` for the negative input.
| Parameter | Standard | Notes | |-----------|----------|-------| | steps | 20 | Range: 20–28 | | cfg | 1.0 | **Always 1.0** — guidance is via FluxGuidance | | sampler_name | ipndm | Author-recommended for SRPO | | scheduler | beta | Author-recommended for SRPO | | guidance | 3.5 | Via CLIPTextEncodeFlux or FluxGuidance | | denoise | 1.0 | |
The SRPO author recommends the ipndm/beta combo. Standard Flux settings (euler/simple) also work, but ipndm/beta gives better results with this fine-tune.
| Parameter | Value | Notes | |-----------|-------|-------| | steps | 4 | Distilled model, 4 steps is optimal | | cfg | 1.0 | Always 1.0 | | sampler_name | euler | | | scheduler | simple | | | denoise | 1.0 | |
| Parameter | Value | Notes | |-----------|-------|-------| | steps | 50 | Full quality | | cfg | 5.0 | Higher CFG for base model | | sampler_name | euler | | | scheduler | simple | |
| Parameter | Value | Notes | |-----------|-------|-------| | steps | 4 | Turbo-distilled | | cfg | 1.0 | | | sampler_name | euler | | | scheduler | simple | | | lora_strength | 1.0 | |
| Aspect | Resolution | Megapixels | |--------|-----------|------------| | Square | 1024x1024 | 1.0MP | | Portrait 3:4 | 896x1152 | 1.0MP | | Landscape 4:3 | 1152x896 | 1.0MP | | Landscape 16:9 | 1344x768 | 1.0MP | | Portrait 9:16 | 768x1344 | 1.0MP |
Flux operates at ~1 megapixel natively. Dimensions should be multiples of 8.
Natural language descriptions. No quality tags needed (unlike SDXL/Illustrious). Detailed, descriptive prompts work best.
Good: "A young woman with auburn hair sits at a sunlit cafe in Paris, wearing a cream linen blazer, soft bokeh background, shot on Sony A7III 85mm f/1.4" Bad: "masterpiece, best quality, 1girl, cafe, paris"
{
"1": { "class_type": "UNETLoader", "inputs": { "unet_name": "flux.1-dev-SRPO-BFL-bf16.safetensors", "weight_dtype": "default" }},
"2": { "class_type": "DualCLIPLoader", "inputs": { "clip_name1": "t5xxl_fp8_e4m3fn.safetensors",This project is no longer maintained. ComfyUI now ships official agent and MCP tooling — Comfy Agent and Comfy MCP — built and supported by the Comfy-Org team with deeper integration than a community project can match.
Repo: artokun/comfyui-mcp
Train custom LoRAs with ostris AI-Toolkit. Covers WAN 2.2/2.1 (people, styles, video motion) and Z-Image (Turbo & Base, low-VRAM image LoRAs). Use when the…
Anime/illustration text-to-image (ANIMA 1.0, ~2B Cosmos DiT). Use for anime, manga, illustrated characters; accepts Danbooru tags + natural language;…
Train a custom anime LoRA on the ANIMA base model with Citron's local Gradio trainer (kohya sd-scripts), <6GB VRAM, character/style LoRAs; covers setup,…
Discover Civitai models with the BUILT-IN download_model action:"search_civitai" and install/generate them locally. Find a checkpoint/LoRA/embedding on…
Diagnose and fix video/image color OBJECTIVELY with the get_image (action:"analyze_color") tool (scopes/stats such as black/white points, contrast, saturation,…
Core ComfyUI knowledge covering workflow format, node types, pipeline patterns, and MCP tool usage