Nodes/MKRShift_Nodes/Node Extension Pyproject Plan
ComfyUI Node

Node Extension Pyproject Plan

Registry-ready pyproject.toml, drafted by a node

By criskb·Created 7 months ago·Updated 5 months ago· 0
Node Extension Pyproject Plan
    • pyproject_toml
    • summary_json
    builder_manifest_json{}
    version_override
    readme_pathREADME.md
    requires_python>=3.10
    pyproject_options_json{}

    The last step before you publish

    Publishing a ComfyUI custom node to the registry means having a pyproject.toml that the registry actually understands - [project] metadata plus a [tool.comfy] section with PublisherId, DisplayName, and includes. That file is fiddly, the spec drifts, and most people hand-copy one from a pack they like. MKRNodeExtensionPyprojectPlan is the node that writes it for you, based on the manifest your builder produced.

    It's the third node in MKRShift_Nodes' extension-builder lane: Plan → manifest, Advanced → metadata, and this → the packaging file. You can see the author's own pyproject.toml in the repo, which is exactly the shape this node produces - the pack eats its own dogfood.

    How it works

    The primary input is builder_manifest_json - the manifest straight from MKRNodeExtensionBuilderPlan. The node parses it, pulls name, publisher, version, description, repository, license, and the min ComfyUI version, and renders a pyproject.toml string with:

    • [project] - name, description, version, readme, requires-python, license, and an optional v3 optional-dependency (comfy_api>=0.0.2) if you opted into V3 companions.
    • [project.urls] - Repository, Documentation, and Bug Tracker URLs, derived from the repository field (or overridden).
    • [tool.comfy] - PublisherId, DisplayName, Icon, includes, and requires-comfyui.

    The remaining inputs are refinements: version_override (bump the version without editing the manifest), readme_path (default README.md), requires_python (default >=3.10), and pyproject_options_json - an override bag for things like documentation_url, bug_tracker_url, display_name, icon_path, license_file, includes, requires_comfyui, and the V3 flags. The tooltip lists them all, so you don't have to guess.

    The outputs

    • pyproject_toml - the full file as a string. Copy it out (or write it via a save node) to your project root.
    • summary_json - project name, display name, publisher, which URLs got set, whether the V3 dependency is included, includes count, warnings, and a next_step reminding you to review the registry-facing fields before publishing.

    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.

    Honest framing: this node doesn't publish anything for you - it drafts a file you still need to review, commit, and push. The value is that the draft is registry-shaped and consistent with your manifest, so you stop hand-maintaining the same ten lines across every pack you ship. If you publish one pack a year, it's a nice-to-have; if you're cranking out node packs, it kills a whole class of packaging typos.

    CategoryMKRShift Nodes/Addons/Workflow

    Inputs (5)

    NameTypeDefaultDescription
    builder_manifest_jsonSTRING{}Manifest JSON from MKRNodeExtensionBuilderPlan.
    version_overrideSTRING
    readme_pathSTRINGREADME.md
    requires_pythonSTRING>=3.10
    pyproject_options_jsonSTRING{}Optional overrides for documentation_url, bug_tracker_url, display_name, icon_path, license_file, includes, requires_comfyui, include_v3_optional_dependency, and v3_requirement.

    Outputs (2)

    NameTypeDescription
    pyproject_tomlSTRING
    summary_jsonSTRING