# Comfyui Node Registry

Authoring & publishing ComfyUI custom nodes to the Comfy Registry, covering node...

- Repository: https://github.com/artokun/comfyui-mcp (883 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-26
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add artokun/comfyui-mcp --skill comfyui-node-registry -g -a claude-code -y`
Codex: `npx skills add artokun/comfyui-mcp --skill comfyui-node-registry -g -a codex -y`
Cursor: `npx skills add artokun/comfyui-mcp --skill comfyui-node-registry -g -a cursor -y`
Gemini CLI: `npx skills add artokun/comfyui-mcp --skill comfyui-node-registry -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add artokun/comfyui-mcp`

## Description

Authoring & publishing ComfyUI custom nodes to the Comfy Registry, covering node structure, pyproject.toml spec, comfy-cli publishing, and CI

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Authoring & Publishing ComfyUI Custom Nodes

This skill covers writing a ComfyUI custom node pack and publishing it to the Comfy Registry (registry.comfy.org), the public catalog that powers ComfyUI-Manager. For *using* existing nodes in workflows, see the `comfyui-core` skill instead.

## Minimal Node Pack Structure

A node pack is a Python package placed under `ComfyUI/custom_nodes/<name>/`. The package `__init__.py` must export `NODE_CLASS_MAPPINGS` and `NODE_DISPLAY_NAME_MAPPINGS`; `WEB_DIRECTORY` is optional (only if the pack ships frontend JS).

```
ComfyUI/custom_nodes/my-node-pack/
├── __init__.py          # exports the mappings ComfyUI scans for
├── nodes.py             # node class definitions
├── pyproject.toml       # registry metadata (required to publish)
├── requirements.txt     # optional Python deps
├── .comfyignore         # optional, exclude files from the published archive
├── LICENSE
├── README.md
└── web/js/              # optional frontend extension (see WEB_DIRECTORY)
```

### `__init__.py`

```python
from .nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS

# Optional: serve frontend JS/CSS from this folder (path relative to __init__.py)
WEB_DIRECTORY = "./web/js"

__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"]
```

### A minimal node class (`nodes.py`)

```python
class ImageSelector:
    CATEGORY = "example"          # menu path where the node appears

    @classmethod
    def INPUT_TYPES(cls):
        return {
            "required": {
                "images": ("IMAGE",),
                "mode": (["brightest", "reddest", "greenest", "bluest"],),
            },
            "optional": {
                "threshold": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}),
                "count": ("INT", {"default": 1, "min": 1, "max": 64}),
                "label": ("STRING", {"default": "", "multiline": False}),
            },
        }

The rest: https://github.com/artokun/comfyui-mcp/blob/HEAD/plugin/skills/comfyui-node-registry/SKILL.md
