Rules

Generated from rule metadata by pnpm docs:rules — 31 rules.

data

RuleClassRecommendedFixableDescription
data/batch-response-not-splitqualitywarnnoReaching into a response array by index processes one element and drops the rest; split it out instead.
data/code-node-multi-fieldqualitywarnnoA Code node that only assembles several unrelated fields is doing a Set node's job, less visibly.
data/loop-with-single-http-callqualityinfonoA loop whose body is one HTTP call is usually a batch endpoint waiting to be used.
data/set-raw-mode-for-nestedqualityinfonoBuilding a nested structure field by field is easier to read as one raw JSON payload.

hygiene

RuleClassRecommendedFixableDescription
hygiene/no-environment-literalsqualitywarnnoEnvironment names and hosts baked into a workflow have to be edited by hand to promote it; use $env.
hygiene/no-inline-secretsqualityerrornoSecrets belong in credentials or $env, never inline in a workflow.
hygiene/no-placeholder-api-urlqualitywarnnoPlaceholder endpoints and stand-in nodes must not reach a finished workflow.

layout

RuleClassRecommendedFixableDescription
layout/formattedstylisticofflayout (safe)Node positions should match what workflow-lint fmt would produce.

n8n

RuleClassRecommendedFixableDescription
n8n/typeversion-driftqualityerrornoA node must not use a typeVersion newer than the target n8n; it imports cleanly and fails at run time.
n8n/typeversion-policyqualitywarnparams (unsafe)Nodes should run a typeVersion the target n8n knows, close to current, and not deprecated.
n8n/validqualityerrornoSemantic checks n8n itself would make: unknown types, parameter issues, wiring and agent configuration.

naming

RuleClassRecommendedFixableDescription
naming/agent-tool-snake-casequalitywarnparams (safe)Tool names are passed to the model as identifiers, so they must be snake_case.
naming/decision-node-question-markstylisticwarnconnections (safe)IF and Filter nodes should be named as the question they answer, ending in "?".
naming/external-node-name-formatstylisticwarnnoNodes that call an external service should be named " - ".
naming/no-default-node-namestylisticwarnnoEvery node must have a descriptive name, not the type default (Set, Code, HTTP Request, …).
naming/no-type-prefix-in-namestylisticwarnconnections (safe)Node names should describe intent, not restate the node type; Switch branches need output keys.

reliability

RuleClassRecommendedFixableDescription
reliability/continue-on-fail-only-terminalqualitywarnnoSwallowing a failure is only safe at the end of a path; mid-flow it feeds bad data downstream.
reliability/error-output-wiredqualitywarnnoA node routing failures to its error output must have that output connected, or failures vanish.
reliability/error-path-has-alertqualitywarnnoAn error path must reach someone: a notification, a log, or Stop and Error, before it rejoins the main flow.
reliability/error-workflow-configuredqualityoffnoA production workflow needs an error workflow, or a failed run notifies nobody.
reliability/http-retry-configqualitywarnparams (safe)Calls that cross the network should retry, with a real gap between attempts.
reliability/retry-respects-retry-afterqualityinfonoA retrying call should honour the API's Retry-After header rather than guessing a fixed delay.
reliability/webhook-input-contractqualityinfonoA webhook takes input from outside; validate its shape up front and reject what does not fit.
reliability/webhook-responds-earlyqualitywarnnoA webhook should answer before doing slow work, or the caller waits for the whole run.

structure

RuleClassRecommendedFixableDescription
structure/branch-entry-pass-throughqualitywarnnoEach branch of an IF, Switch or loop should open with a named pass-through, so the branch is labelled and its data shape is explicit.
structure/cyclic-requires-execution-order-v1qualityerrorparams (safe)A workflow containing a loop must run under executionOrder v1.
structure/if-in-loop-reconvergesqualityerrornoA branch inside a loop must reconverge through a Merge before returning to the loop node, or iterations are lost.
structure/loop-iteration-guardqualitywarnnoEvery loop needs a bound: an item-driven SplitInBatches, or a decision node testing an attempt counter.
structure/merge-for-reconvergencequalityerrornoTwo branches feeding one input of a non-Merge node run it twice; reconverge through a Merge instead.
structure/no-dangling-nodequalitywarnnoA path that stops short while the workflow carries on elsewhere is abandoned work.
structure/set-pass-through-include-other-fieldsqualityerrorparams (safe)A Set node that assigns nothing is a pass-through, and must set includeOtherFields or it emits empty items.