Shrug Template
255 ready-made prompts, served from a dropdown
- system
- user
- body
- description
- metadata
A VLM node is only as good as the prompts you feed it, and writing good system prompts is the least fun part of the whole setup. Shrug Template is the pack's answer: a dropdown that loads a prompt template from a built-in Markdown library, parsed into pieces you can wire straight into ShrugVLM. The pack ships about 255 of them, and you can drop your own in a folder and get them in the dropdown too.
The library splits into two flavors. templates/vlm/ has structured templates with explicit system: and user: prompts - caption, structured scene description, that kind of thing. templates/styles/ has 250+ single-purpose style and system-prompt snippets (the author migrated them from a Z-Image experiment repo, so they read like diffusion style guides: octane renders, 80s dark fantasy, analogue horror...). And templates/styles/rewriter/ holds prompt rewriters that expand a short user input into a full image-generation prompt. If you've ever stared at a blank prompt box, this is a decent place to start.
How it works
Templates are plain .md files that may start with a YAML-ish frontmatter block - --- delimited, supporting key: value, inline lists (tags: [a, b]), and block scalars (system: | with indented text). The parser is hand-rolled and deliberately minimal; no pyyaml dependency, which keeps install light. If a file has no frontmatter, the whole thing is treated as body.
The node emits five outputs, and the wiring convention matters:
system- the frontmattersystem:block scalar (empty if absent).user- the frontmatteruser:block scalar (empty if absent).body- everything after the closing---(or the whole file if no frontmatter).description- the frontmatterdescription:field.metadata- the rest of the frontmatter as a JSON string.
For a vlm/ template, wire system → ShrugVLM.system_prompt and user → user_prompt. For a styles/ file, the body is the system prompt, so wire body → system_prompt and leave the rest alone. Get the two conventions backwards and you'll feed a style description into the user prompt and wonder why nothing changes.
How to install
Standard pack install - ComfyUI Manager, search Shrug-Prompter, install, restart:
cd ComfyUI/custom_nodes
git clone https://github.com/fblissjr/shrug-prompter
The templates ship inside the repo, so there's nothing extra to download. Dependencies are already in modern ComfyUI (httpx, orjson, pillow, torch, numpy). Note this node is a pure utility - it reads files, parses frontmatter, and doesn't talk to the server at all, so it works without a ShrugConnection.
Common issues
- The dropdown doesn't show your new template. The file list is built when ComfyUI loads the node. Drop a
.mdfile intotemplates/(or a subdirectory - nested paths become dropdown values) and restart before you hunt for it. - Frontmatter silently ignored. The parser is minimal by design. Multi-line flow maps, anchors, and tags won't parse. If a template isn't splitting into
system/useras you expect, check that the block scalars are indented properly - that's the part most people get wrong. - Blank outputs everywhere. If the file has no frontmatter,
systemanduserare legitimately empty andbodyis everything. That's not a bug; you picked astyles/-convention file and wired it like avlm/one.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| template | COMBO | 255 options: README.md, styles/3d_render_octane.md, styles/3d_render_stylized.md, styles/80s_dark_fantasy.md, styles/90s_cgi_nostalgia.md, styles/abstract_liquid_metal.md, +249 |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| system | STRING | — |
| user | STRING | — |
| body | STRING | — |
| description | STRING | — |
| metadata | STRING | — |