Nodes/Symbiotica/Symbiotica Prompt Block
ComfyUI Node

Symbiotica Prompt Block

Edit one block of the prompt book without leaving the canvas

By symbiotica-ai·Created 6 months ago·Updated about 13 hours ago· 2
Symbiotica Prompt Block
    • project_path
    • text
    project_path
    block
    slot1
    category
    text_in

    Most prompt systems keep your text in a text node, which lives in a workflow, which gets shared and duplicated until "the lighting prompt" exists in nine different files. Symbiotica Prompt Block is the pack's answer: one block of the prompt book - a shared rule, an image-model block, or an asset type - edited right on the canvas, saved to <project>/prompts/ where every queue reads the same copy.

    Several of these side by side are the book. They look like the string-literal graphs they replace, except the source of truth is a file, not a widget.

    How it works

    A block is a .md file under your project's prompts/ folder. This node is a window onto one of them. Type blocks live at prompts/<Category>.md, shared rules at prompts/_rules/, image-model blocks at prompts/_image/. A block file can hold up to three versions split by <!-- version: name --> markers, with the top of the file staying the default.

    Wire the Prompt Book's project_path output in and chain block to block through project - one wire feeds the whole row instead of every node fanning back to the book. Each block appends to the text passing through it, so the last block in a row carries the entire composed prompt.

    The inputs

    • project_path (required) - the project folder holding the book. Wire the Prompt Book's project output, or the previous block's passthrough.
    • block (required) - which block this node edits, e.g. Chair.md or _rules/02-inputs.md. The panel's picker fills this in.
    • slot - which slot of the category's recipe this edits. Set for you automatically when text_in comes from a Prompt Recipe: wire text_3 in and this becomes 3.
    • category (optional) - wire Asset Focus's category here and this node edits whatever _recipes/<category>.json names in slot. Switch asset type and the block on screen follows, with nothing to pick. When category is wired, block is ignored.
    • text_in (optional) - wire a Prompt Recipe's text_N in to preview and edit that prompt. With no category, it's the legacy chain input: the previous block's text, which this node appends its own block to.

    The outputs

    • project_path - passthrough, so blocks chain on one wire.
    • text - this node's block, ready for the LLM. Chained, it's everything so far: text_in plus this block, blank-line separated.

    Install

    One pack, one install - search Symbiotica in ComfyUI Manager, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
    pip install -r symbiotica/requirements.txt
    

    Restart after. This node needs no API key and downloads nothing - it reads and writes markdown.

    Gotchas

    The mental model to keep: the block file is the truth, and this node is just a comfortable editor for it. Editing here needs no restart - Category Prompts re-reads the book when a file changes. If you hand-edit the same file in an external editor at the same time, last writer wins, same as anywhere. And a block written with a version marker you never picked will keep serving its top version until you switch slots, which trips people the first time they see an edit "not take."

    Categorysymbiotica/pipeline

    Inputs (5)

    NameTypeDefaultDescription
    project_pathSTRINGClient project folder holding the prompt book. Wire the Prompt Book's `project` output, or a neighbouring block's `project` passthrough.
    blockSTRINGWhich block this node edits: a type block (Chair.md), a shared rule (_rules/02-inputs.md) or an image block (_image/01-image-model.md). The panel's picker fills this in. Ignored while `category` is wired — then the recipe names the block.
    slotCOMBO1Which slot of the category's recipe this node edits. Set for you when `text_in` comes from a Prompt Recipe — wiring `text_3` in makes this 3.
    categoryoptSTRINGWire Asset Focus's `category` here and this node edits whatever `_recipes/<category>.json` names in `slot` — switch asset type and the block on screen follows, with nothing to pick.
    text_inoptSTRINGWire the Prompt Recipe's `text_N` here to preview and edit that prompt. With no `category` wired it is the old chain input instead: the previous block's `text`, which this node appends its own block to.

    Outputs (2)

    NameTypeDescription
    project_pathSTRINGPassthrough of the project, so blocks chain on one wire instead of fanning every node back to the book.
    textSTRINGThis node's block, ready for the LLM. Chained (no `category` wired) it is everything so far: text_in plus this block, blank-line separated, so the LAST block in a row carries the whole prompt.