Skills

N8n Subworkflows

Build reusable, composable n8n sub-workflows.

Install

npx skills add czlonkowski/n8n-mcp --skill n8n-subworkflows -g -a claude-code -y
Repository
czlonkowski/n8n-mcp23.2k
Category
Design
Updated
8d ago
License
MIT
Context cost
Mediumabout 3,000 tokens
Runs scripts
No, instructions only

What it does

Build reusable, composable n8n sub-workflows. Use when extracting shared logic, building anything multi-step or reused across workflows, or any workflow over ~10 nodes, and whenever the user mentions sub-workflows, Execute Workflow, reuse, shared/common logic, modular workflows, "Define Below" inputs, waitForSubWorkflow, mode each vs all, or exposing a workflow as an agent tool. Covers typed sub-workflow inputs, all-vs-each execution, verb-first naming for discovery, stateless vs stateful design, and splitting by input shape.

n8n Sub-workflows

A sub-workflow is a reusable function. An Execute Workflow Trigger declares typed inputs, the body does the work, and the last node returns the output. A caller invokes it through an Execute Workflow node like any other step.

That framing buys you the things functions buy you everywhere: encapsulation, reuse, testability, replaceability. It's the primary reuse mechanism in n8n, and it's badly underused. Without it, the same logic gets copy-pasted across workflows, then a bug gets fixed in two places, the third copy gets missed, and your "identical" copies quietly drift apart.

This skill is about when to reach for a sub-workflow, how to define its input/output contract so callers (and agents) can actually use it, how to call it correctly (all vs each, blocking vs fire-and-forget), and how to name it so it gets found instead of rebuilt.


The two non-negotiables

Everything else is judgement. These two are not.

1. Search before you build

Before you write logic for a generic problem, check whether a sub-workflow already does it. The community MCP can't filter workflows by tag, so the name is the discovery surface:

n8n_list_workflows()                          # scan the library
n8n_get_workflow({ id: "<candidate>" })       # read its inputs/outputs + body

If something fits, use it and tell the user ("I found Subworkflow: Parse RFC2822 date, using that"). If nothing fits, build it with a discoverable name so the next search finds it. The discovery convention (verb-first prefixes) lives in NAMING_AND_DISCOVERY.md.

2. The Execute Workflow Trigger uses "Define Below" with typed fields, not passthrough

Read the whole SKILL.md on GitHub

More in Design