Nodes/MKRShift_Nodes/Node Extension Builder Plan
ComfyUI Node

Node Extension Builder Plan

Scaffold a ComfyUI custom node from inside ComfyUI

By criskb·Created 7 months ago·Updated 5 months ago· 0
Node Extension Builder Plan
    • builder_manifest_json
    • builder_command
    • summary_json
    extension_nameMKRShift Nodes
    publishermkrshift
    version0.1.0
    entry_file__init__.py
    node_list_json["x1SharpenPro", "x1HeatHaze"]
    advanced_options_json{}
    advanced_bundle_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") and publisher (default "mkrshift") - the package identity.
    • version (default 0.1.0) and entry_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 to extension.builder.json and 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-builder
      
    • summary_json - extension name, package, node count, and warnings, plus the next_step hint.

    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.

    CategoryMKRShift Nodes/Addons/Workflow

    Inputs (7)

    NameTypeDefaultDescription
    extension_nameSTRINGMKRShift Nodes
    publisherSTRINGmkrshift
    versionSTRING0.1.0
    entry_fileSTRING__init__.py
    node_list_jsonSTRING["x1SharpenPro", "x1HeatHaze"]
    advanced_options_jsonSTRING{}Inline expert metadata JSON. For cleaner graphs, connect MKRNodeExtensionBuilderAdvanced into advanced_bundle_json instead.
    advanced_bundle_jsonoptSTRINGOptional structured expert bundle from MKRNodeExtensionBuilderAdvanced.

    Outputs (3)

    NameTypeDescription
    builder_manifest_jsonSTRING
    builder_commandSTRING
    summary_jsonSTRING