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…
Configure and author rgthree-comfy nodes — Fast Groups Bypasser/Muter (group toggles), Power Lora Loader, Context/Context Big, Seed, Any Switch. Use when a workflow contains rgthree nodes, when asked to add stage/section toggles or an A/B switch, when stacking LoRAs, or when an
$ npx -y skills add artokun/comfyui-mcp --skill rgthree --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/rgthreeContext preview
The summary Claude sees to decide when to auto-load this skill.
Configure and author rgthree-comfy nodes — Fast Groups Bypasser/Muter (group toggles), Power Lora Loader, Context/Context Big, Seed, Any Switch. Use when a workflow contains rgthree nodes, when asked to add stage/section toggles or an A/B switch, when stacking LoRAs, or when an
name: rgthree description: Configure and author rgthree-comfy nodes — Fast Groups Bypasser/Muter (group toggles), Power Lora Loader, Context/Context Big, Seed, Any Switch. Use when a workflow contains rgthree nodes, when asked to add stage/section toggles or an A/B switch, when stacking LoRAs, or when an rgthree node needs configuring. Covers the frontend-only nodes that are absent from /object_info and the properties-not-widgets configuration model.
`rgthree-comfy` is one of the most widely installed packs, so its nodes turn up in a large share of community workflows. Three of its properties make it a recurring agent-failure mode — all three fail *quietly enough* to look like success.
**1. Some rgthree nodes are FRONTEND-ONLY.** They are registered by the pack's JS (`registerCustomNodes()`), have no Python class, and are therefore **absent from `/object_info` by design**. Checking `/object_info` and concluding "this node doesn't exist" is wrong. `/object_info` lists 24 rgthree *backend* types; the toggles are not among them.
**2. They are configured through PROPERTIES, not widgets.** `matchTitle`, `toggleRestriction` and `sort` live in `node.properties` (right-click → Properties), not in `widgets`. Use **`panel_set_property`**. `panel_set_widget` does not silently half-work — it **refuses**, with `has no widget "matchTitle" (available: …)` listing the widgets that do exist. That refusal is the fastest confirmation you are on the properties path; read it rather than retrying the write.
**3. Fast Groups nodes take NO wiring and enumerate GROUPS by title.** Leave the `OPT_CONNECTION` output unconnected. The node renders one toggle per matching group, so **the groups must exist and be named before the node is useful**.
The panel authorizes every add against fresh `/object_info` and **fails closed** on a type it cannot find. Genuinely frontend-only types are exempt only via an explicit allowlist (`FRONTEND_ONLY_NODE_TYPES`), so the exemption covers **seven** rgthree types and no others:
| Frontend-only, `panel_add_node` WORKS | Frontend-only, `panel_add_node` REFUSES | |---|---| | `Fast Groups Bypasser (rgthree)` | `Bookmark (rgthree)` | | `Fast Groups Muter (rgthree)` | `Mute / Bypass Relay (rgthree)` | | `Fast Bypasser (rgthree)` | `Mute / Bypass Repeater (rgthree)` | | `Fast Muter (rgthree)` | `Fast Actions Button (rgthree)` | | `Node Collector (rgthree)` | `Random Unmuter (rgthree)` | | `Label (rgthree)` | | | `Reroute (rgthree)` | |
A refusal in the right-hand column is the guard working as designed, **not** a broken pack and not something to work around — the node has no backend def and is not on the allowlist. Say so and pick a different approach (the Bypasser/Muter cover almost every real toggle need). Everything with a Python class — Power Lora Loader, Context*, Seed, Any Switch, Power Prompt, Image Comparer — is a normal backend node and adds normally.
`Fast Groups Bypasser (rgthree)` sets the nodes of a group to **bypass** (mode `4` — the node is skipped and its input passes through). `Fast Groups Muter (rgthree)` sets them to **mute** (mode `2` — the node does not execute and everything downstream dies). **Prefer the Bypasser** for toggling an optional stage inside a chain; reach for the Muter only when you genuinely want to stop a branch.
All of the following are node properties — set them with `panel_set_property`:
| Property | Values | Default | Notes | |---|---|---|---| | `matchTitle` | regex, case-insensitive | `""` | **Set this.** Empty means every group in the workflow becomes a toggle. It is a real regex matched *unanchored* against the group title, so anchor it (`^STAGE`) or it matches mid-title. | | `matchColors` | comma-separated colors | `""` | Alternative filter; pairs with a color convention. | | `toggleRestriction` | `default` / `max one` / `always one` | `default` | Both non-default values enforce mutual exclusion (they are matched on the substring `" one"`). Do NOT set either if the user may ever want all stages on in one queue. | | `sort` | `position` / `alphanumeric` / `custom alphabet` | `position` | The default means **moving a group on the canvas silently reorders the toggles**. `alphanumeric` is stable — prefer it. | | `customSortAlphabet` | string | `""` | Only read when `sort` is `custom alphabet`. | | `showNav` | bool | `true` | Per-row jump-to-group arrow. | | `showAllGraphs` | bool | `true` | Include groups that live inside subgraphs. |
`panel_set_property` stores `matchTitle` (and `matchColors` / `sort` / …) and the reply `from`/`to` is truthful. Fast Groups nodes **do not implement `onPropertyChanged`**. The toggle list is rebuilt by rgthree's `refreshWidgets()` on a service tick (~8 ms after add, then every ~500 ms), and leftover-row removal increments the index while splicing — a 22-group list can stall at 13 with non-matching `Enable …` rows still present. A never-drawn node can also come back as `widgets:{}` — that means the list has **not been built yet**, not that there are no matching groups. `panel_query_graph` also keys widgets by name, and every toggle is named `RGTHREE_TOGGLE_AND_NAV`, so a built list collapses to one key.
**Do this:**
1. Set `matchTitle` **immediately** after `panel_add_node` (before the first unfiltered refresh paints every group). 2. Re-read with `panel_query_graph {ids:[<id>], fields:'detail'}`. 3. If `widgets` is empty **or** the canvas still shows `Enable` rows that do not match the regex, **set `matchTitle` again**. Do **not** delete and re-add the node — that is slower and still needs a second set.
1. `panel_create_group` per stage, with a **prefixed title** (`STAGE 1 — …`) so one anchored regex selects exactly the inten
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