Node Extension Pyproject Plan
Registry-ready pyproject.toml, drafted by a node
- pyproject_toml
- summary_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 optionalv3optional-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, andrequires-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 anext_stepreminding 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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| builder_manifest_json | STRING | {} | Manifest JSON from MKRNodeExtensionBuilderPlan. |
| version_override | STRING | — | |
| readme_path | STRING | README.md | — |
| requires_python | STRING | >=3.10 | — |
| pyproject_options_json | STRING | {} | 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)
| Name | Type | Description |
|---|---|---|
| pyproject_toml | STRING | — |
| summary_json | STRING | — |