Node Extension Builder Plan
Scaffold a ComfyUI custom node from inside ComfyUI
- builder_manifest_json
- builder_command
- summary_json
Build a node pack without leaving the graph
MKRShift_Nodes is itself built with a scaffold tool - the comfyui-node-extension-builder skill by the same author (Cris K B) - and this trio of nodes puts that scaffolding inside ComfyUI. MKRNodeExtensionBuilderPlan is the centerpiece: you tell it what your extension is called, who publishes it, and which nodes it ships, and it produces a ready-to-use builder manifest plus the CLI command to turn it into a project.
This is a meta node - a node that builds nodes - and it's aimed at people shipping their own ComfyUI custom node packs. If that's not you, file this one under "good to know exists." If it is, this is the fastest on-ramp the ecosystem has.
How it works
The required inputs:
extension_name(default "MKRShift Nodes") andpublisher(default "mkrshift") - the package identity.version(default 0.1.0) andentry_file(default__init__.py) - the package version and the file that registers nodes.node_list_json- a JSON array of your node class names (defaults to["x1SharpenPro", "x1HeatHaze"]). The one you'll edit the most.advanced_options_json- inline JSON for expert metadata (description, repo, license, tags, web dir, min ComfyUI version, extras). The tooltip is clear that for a cleaner graph you're meant to feed it from the Advanced node instead.
There's one optional input, advanced_bundle_json, which is where MKRNodeExtensionBuilderAdvanced plugs in - its structured output gets merged over the inline field. That's the intended workflow: keep the expert metadata on the Advanced node, keep the Plan node lean.
The node normalizes everything (validates version, slugifies the package name, checks the entry file ends in .py, tolerates a bad node list with warnings) and assembles a manifest with schema comfyui_node_extension_builder_v1.
The outputs
builder_manifest_json- the manifest. Per the README, you write this toextension.builder.jsonand run your builder CLI.builder_command- the CLI command to run (or your custom command if you set one on the Advanced node). The README's suggested build command installs the builder skill:python3 .../install-skill-from-github.py --repo criskb/comfyui-node-extension-builder --path . --name comfyui-node-extension-buildersummary_json- extension name, package, node count, and warnings, plus thenext_stephint.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart, or install "MKRShift Nodes" via ComfyUI Manager. No pip deps, no models, no ffmpeg. The repo ships an example workflow at example_workflows/mkrshift_extension_builder_plan.json that wires the whole trio together - load that to see the intended graph.
The honest framing: this is a developer tool, and it's in its early days (the whole pack is). The manifest it produces is the contract - if you keep builder_manifest_json as your source of truth and let the CLI do the file generation, you get a reproducible pack scaffold every time. And the pyproject_toml half of the pipeline is its own node, MKRNodeExtensionPyprojectPlan, which is where this manifest goes next when you want registry-ready packaging.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| extension_name | STRING | MKRShift Nodes | — |
| publisher | STRING | mkrshift | — |
| version | STRING | 0.1.0 | — |
| entry_file | STRING | __init__.py | — |
| node_list_json | STRING | ["x1SharpenPro", "x1HeatHaze"] | — |
| advanced_options_json | STRING | {} | Inline expert metadata JSON. For cleaner graphs, connect MKRNodeExtensionBuilderAdvanced into advanced_bundle_json instead. |
| advanced_bundle_jsonopt | STRING | Optional structured expert bundle from MKRNodeExtensionBuilderAdvanced. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| builder_manifest_json | STRING | — |
| builder_command | STRING | — |
| summary_json | STRING | — |