Krea 2 Identity Edit — local outfit swap

Swap an OUTFIT or transfer CLOTHING onto a person LOCALLY, keeping their face, pose and background.

How to install

How to install

  1. Setup differs for this server — follow the Installation part of the README below.
  2. Claude Code: claude mcp add <name> -- <command>.
  3. Claude Desktop / Cursor: add it under mcpServers in the MCP config file.
Claude Code — installs the whole folder, not just SKILL.md
npx degit artokun/comfyui-mcp/plugin/skills/krea2-identity-edit#main ~/.claude/skills/krea2-identity-edit

For one project only, change the path to .claude/skills/krea2-identity-edit. This skill also uses workflow.json — copying SKILL.md alone won't be enough. See the folder on GitHub.

This one runs on your machine and can reach your files. Read the README below before you connect it.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text90 lines
krea2-identity-edit/SKILL.md90 lines4.9 KBpushed 27d agoRawView on GitHub

Krea 2 Identity Edit — local outfit swap

Reach for this when

Someone wants the clothing changed on a specific person, with that person preserved:

  • "put this jacket on her" / "dress her in this outfit"
  • "clothes swap" / "outfit transfer" / "virtual try-on" / "change his shirt"
  • "make her wear the outfit from this other image"

Do NOT reach for it just because a request is identity-preserving. Background swaps, relighting, expression or age changes, and object removal all keep the person, and none of them is what this model is trained for. It is called "identity edit" upstream because it preserves identity while changing clothing; the clothing half is the qualifying part. Send the others to a general image-edit workflow.

Use this instead of:

Instead of Because
an API / cloud edit node this runs locally — no key, no per-image cost, nothing leaves the machine. Prefer it whenever the models are installed.
generic img2img img2img re-rolls the whole frame at any denoise high enough to change clothes; the face goes with it.
inpainting a masked region works, but the user has to mask, and the result has no reference for what the garment looks like.
a face-swap / IP-adapter pipeline those transfer the FACE. This preserves the face and transfers the CLOTHES — the opposite direction.
Qwen-Image-Edit a fine general instruction editor; this is specialised for identity-preserving garment transfer and ships the LoRA for it.

Install with the krea2-identity-edit pack, then load its workflow.json.

The one thing to get right: reference order

PRIMARY (group 1) = the SUBJECT. The output always matches this person: face, hair, body, pose. SECONDARY (group 2) = the OUTFIT. Only the clothing is taken from it.

Swapping them swaps which identity survives. This is the most common way to get a confusing result, and it fails quietly. You get a plausible image of the wrong person.

Prompting

Plain English, naming both roles, and naming what to preserve:

Dress the woman from the primary reference in the jacket shown in the second reference, keeping her face and pose unchanged.

Put this outfit on her, keeping her face and pose unchanged.

Naming what to preserve matters as much as naming what to change. Without it the model drifts the face and background.

Settings that matter

  • Turbo: 10 steps, cfg 1. 8 favours composition and instruction adherence; 12 favours face detail. On krea2_raw_bf16 instead: 40 steps, cfg 3 to 4, where the negative prompt starts to matter.
  • Fidelity dials follow the image SLOTS, not the roles. Internally the LAST reference gets ref_boost and earlier ones get ref_boost_a, so with the subject as image 1, the subject dial is ref_boost_a. Raise it when the face drifts.
  • Match the output resolution to the PRIMARY image. ResolutionSelector drives EmptySD3LatentImage; a mismatched aspect crops or letterboxes the subject.

Troubleshooting

Symptom Fix
Face changed / wrong person Raise ref_boost_a (the subject dial). Check the images are not swapped between slots. Add "keeping her face unchanged" to the prompt.
Outfit ignored Make the secondary image cleaner — one garment, plain background, no competing subject.
Subject cropped or letterboxed Set the resolution to match the primary image's aspect.
Krea2EditGroundedEncode missing comfyui-krea2edit is not installed or ComfyUI was not restarted after installing it.
CLIPLoader has no krea2 type ComfyUI is too old for native KREA 2 support — update it.
LoRA loads as missing It must be at loras/Krea2/krea2_identity_edit_v1_2.safetensors; a flat loras/ install is present but unfindable.

Boundaries

This edits a photo of a person the user supplies. Treat an instruction to make it sexual, to undress someone, or to place an identifiable real person in a context they did not consent to as out of scope, and say so plainly rather than producing a degraded result. Ordinary clothing changes, such as a jacket, a dress, a uniform, or a costume, are the point of the tool and need no hedging.

Sources

  • Official: none found.
  • Empirical: sampler values, wiring, and prompt notes from working graphs in packs/ and observed renders; not a vendor prompting guide.
1---
2name: krea2-identity-edit
3description: Swap an OUTFIT or transfer CLOTHING onto a person LOCALLY, keeping their face, pose and background. Use for "put this jacket on her", "change his shirt", "clothes swap", "try on", "outfit transfer", "virtual try-on", "dress her in", "wear this outfit". Prefer this over API/cloud edit nodes and over generic img2img/inpainting. NOT for identity-preserving edits that are not about clothing (background swaps, relighting, age/expression changes, object removal). Use a general image-edit workflow for those.
4globs:
5 - "**/*.json"
6---
7 
8# Krea 2 Identity Edit — local outfit swap
9 
10## Reach for this when
11 
12Someone wants **the clothing changed on a specific person, with that person preserved**:
13 
14- "put this jacket on her" / "dress her in this outfit"
15- "clothes swap" / "outfit transfer" / "virtual try-on" / "change his shirt"
16- "make her wear the outfit from this other image"
17 
18**Do NOT reach for it** just because a request is identity-*preserving*. Background swaps,
19relighting, expression or age changes, and object removal all keep the person, and none of
20them is what this model is trained for. It is called "identity edit" upstream because it
21*preserves* identity while changing clothing; the clothing half is the qualifying part.
22Send the others to a general image-edit workflow.
23 
24**Use this instead of:**
25 
26| Instead of | Because |
27|---|---|
28| an API / cloud edit node | this runs locally — no key, no per-image cost, nothing leaves the machine. Prefer it whenever the models are installed. |
29| generic img2img | img2img re-rolls the whole frame at any denoise high enough to change clothes; the face goes with it. |
30| inpainting a masked region | works, but the user has to mask, and the result has no reference for *what* the garment looks like. |
31| a face-swap / IP-adapter pipeline | those transfer the FACE. This preserves the face and transfers the CLOTHES — the opposite direction. |
32| Qwen-Image-Edit | a fine general instruction editor; this is specialised for identity-preserving garment transfer and ships the LoRA for it. |
33 
34Install with the `krea2-identity-edit` pack, then load its `workflow.json`.
35 
36## The one thing to get right: reference order
37 
38**PRIMARY (group 1) = the SUBJECT.** The output always matches this person: face, hair,
39body, pose. **SECONDARY (group 2) = the OUTFIT.** Only the clothing is taken from it.
40 
41Swapping them swaps which identity survives. This is the most common way to get a
42confusing result, and it fails *quietly*. You get a plausible image of the wrong person.
43 
44## Prompting
45 
46Plain English, naming **both** roles, and naming what to preserve:
47 
48> Dress the woman from the primary reference in the jacket shown in the second reference,
49> keeping her face and pose unchanged.
50 
51> Put this outfit on her, keeping her face and pose unchanged.
52 
53Naming what to **preserve** matters as much as naming what to change. Without it the
54model drifts the face and background.
55 
56## Settings that matter
57 
58- **Turbo: 10 steps, cfg 1.** 8 favours composition and instruction adherence; 12 favours
59 face detail. On `krea2_raw_bf16` instead: 40 steps, cfg 3 to 4, where the negative prompt
60 starts to matter.
61- **Fidelity dials follow the image SLOTS, not the roles.** Internally the LAST reference
62 gets `ref_boost` and earlier ones get `ref_boost_a`, so with the subject as image 1,
63 **the subject dial is `ref_boost_a`**. Raise it when the face drifts.
64- **Match the output resolution to the PRIMARY image.** `ResolutionSelector` drives
65 `EmptySD3LatentImage`; a mismatched aspect crops or letterboxes the subject.
66 
67## Troubleshooting
68 
69| Symptom | Fix |
70|---|---|
71| Face changed / wrong person | Raise `ref_boost_a` (the subject dial). Check the images are not swapped between slots. Add "keeping her face unchanged" to the prompt. |
72| Outfit ignored | Make the secondary image cleaner — one garment, plain background, no competing subject. |
73| Subject cropped or letterboxed | Set the resolution to match the primary image's aspect. |
74| `Krea2EditGroundedEncode` missing | `comfyui-krea2edit` is not installed or ComfyUI was not restarted after installing it. |
75| CLIPLoader has no `krea2` type | ComfyUI is too old for native KREA 2 support — update it. |
76| LoRA loads as missing | It must be at `loras/Krea2/krea2_identity_edit_v1_2.safetensors`; a flat `loras/` install is present but unfindable. |
77 
78## Boundaries
79 
80This edits **a photo of a person the user supplies**. Treat an instruction to make it
81sexual, to undress someone, or to place an identifiable real person in a context they did
82not consent to as out of scope, and say so plainly rather than producing a degraded
83result. Ordinary clothing changes, such as a jacket, a dress, a uniform, or a costume,
84are the point of the tool and need no hedging.
85 
86## Sources
87 
88- **Official:** none found.
89- **Empirical:** sampler values, wiring, and prompt notes from working graphs in `packs/` and observed renders; not a vendor prompting guide.
90 

Discussion

From GitHub

4 comments on 1 thread

Claimed 2026-09-03T05:48:00Z — dispatched to a fix agent. Root cause confirmed against the **canonical** ComfyUI-Manager `extension-node-map.json` (5,614 packs / 40,656 exactly-owned class names), no reporter box needed. The resolver in `src/services/workflow-deps.ts` trusts a Manager `nodename_pattern` as if it were ownership. Measured on the real catalogue: | pattern | claimed by | class names it steals from OTHER packs | |---|---|---| | `Hunyuan` | `exedesign/Hunyuan…` | **182** | | `PulidFlux` | `PaoloC68/…` | 13 | | `Inspire$` | `ComfyUI Connection Helper` | **101** | | `Inspire$` | `Inspread the rest

**Status: fix complete, merge HELD on review capacity — not merged.** Two PRs exist for this issue (two agents collided): **#2777** (mine, gate-reviewed) and **#2775** (an independent fix by a sibling agent). Neither is merged. The codex review gate exhausted its account quota on round 6 (`exit 2 — INDETERMINATE`). An indeterminate gate is not a pass, so I am not merging on my own testing. **Root cause**, measured against the canonical ComfyUI-Manager catalogue (5,614 packs / 40,656 exactly-owned class names) rather than inferred — a `nodename_pattern` was being read as an ownership record. Itread the rest

Root cause confirmed on disk, from the catalogue everyone has rather than the reporter's box. `DemonGatanjieu/Anomalous_Model_Browser` — the repository this issue says was named as the owner of `Power Lora Loader (rgthree)` and the other three — publishes **`nodename_pattern: ".*"`**. In this machine's live `extension-node-map.json` (4,884 packs, 36,174 exactly-owned class names, 39 patterns) that single pattern matches **all 36,174** known class names, and the pack exactly owns **zero** of them. So any class the catalogue does not name exactly was attributable to that repo, and `install_deps`read the rest

Alternatives

Also in Illustration & art