N8n Error Handling
sickn33/agentic-awesome-skills
Design visible, structured, recoverable n8n failures using error outputs, retries, Error Trigger workflows, and HTTP error responses.
Interprets n8n validation output from validate_node and validate_workflow, separating real errors from false-positive warnings and guiding each fix.
$ npx skills add czlonkowski/n8n-skills --skill n8n-validation-expert -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install czlonkowski/n8n-skills n8n-validation-expert --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/czlonkowski/n8n-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/n8n-validation-expert .claude/skills/n8n-validation-expert && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "n8n-validation-expert" agent skill from https://github.com/czlonkowski/n8n-skills/tree/main/skills/n8n-validation-expert into .claude/skills/n8n-validation-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-validation-expert", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/czlonkowski/n8n-skills/tree/main/skills/n8n-validation-expertType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add czlonkowski/n8n-skills --skill n8n-validation-expert -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install czlonkowski/n8n-skills n8n-validation-expert --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/czlonkowski/n8n-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/n8n-validation-expert .agents/skills/n8n-validation-expert && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "n8n-validation-expert" agent skill from https://github.com/czlonkowski/n8n-skills/tree/main/skills/n8n-validation-expert into .agents/skills/n8n-validation-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-validation-expert", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add czlonkowski/n8n-skills --skill n8n-validation-expert -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install czlonkowski/n8n-skills n8n-validation-expert --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/czlonkowski/n8n-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/n8n-validation-expert .cursor/skills/n8n-validation-expert && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "n8n-validation-expert" agent skill from https://github.com/czlonkowski/n8n-skills/tree/main/skills/n8n-validation-expert into .cursor/skills/n8n-validation-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-validation-expert", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/czlonkowski/n8n-skills.git --path skills/n8n-validation-expert--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add czlonkowski/n8n-skills --skill n8n-validation-expert -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install czlonkowski/n8n-skills n8n-validation-expert --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/czlonkowski/n8n-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/n8n-validation-expert .gemini/skills/n8n-validation-expert && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "n8n-validation-expert" agent skill from https://github.com/czlonkowski/n8n-skills/tree/main/skills/n8n-validation-expert into .gemini/skills/n8n-validation-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-validation-expert", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install czlonkowski/n8n-skills n8n-validation-expertInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add czlonkowski/n8n-skills --skill n8n-validation-expert -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/czlonkowski/n8n-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/n8n-validation-expert .github/skills/n8n-validation-expert && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "n8n-validation-expert" agent skill from https://github.com/czlonkowski/n8n-skills/tree/main/skills/n8n-validation-expert into .github/skills/n8n-validation-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-validation-expert", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add czlonkowski/n8n-skills --skill n8n-validation-expert -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install czlonkowski/n8n-skills n8n-validation-expert --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/czlonkowski/n8n-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/n8n-validation-expert .opencode/skills/n8n-validation-expert && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "n8n-validation-expert" agent skill from https://github.com/czlonkowski/n8n-skills/tree/main/skills/n8n-validation-expert into .opencode/skills/n8n-validation-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-validation-expert", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
n8n-validation-expertInterprets n8n validation output from validate_node and validate_workflow, separating real errors from false-positive warnings and guiding each fix.
The skill treats validation as an iterative loop: configure a node, validate, read the feedback, fix and validate again, usually for a few rounds. It sorts feedback into errors that block activation (missing required fields, invalid values, type mismatches, bad node references, expression syntax errors), warnings that do not block (recommended-practice, deprecated, security and performance notes) and optional suggestions.
It also explains validation profiles, since some warnings only appear under the ai-friendly or strict profiles while deprecation and security warnings show under all of them. Companion files hold an error catalog, a list of known false positives and a review checklist, and the skill covers operator structure issues and auto-fix behavior.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 19cd793. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json and javascript).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
N8N_MCP_ACCESS_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
n8n Validation Expert loads about 5.7k tokens when it runs. Until then it costs about 130 tokens; SKILL.md has 2,398 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from czlonkowski/n8n-skills at commit 19cd793, republished under its MIT licence (© czlonkowski). 2,398 words, ~5,707 tokens.
.claude/skills/n8n-validation-expert/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Expert guide for interpreting and fixing n8n validation errors.
Validate early, validate often
Validation is typically iterative:
Key insight: Validation is an iterative process, not one-shot!
Blocks workflow execution - Must be resolved before activation
Types:
missing_required - Required field not providedinvalid_value - Value doesn't match allowed optionstype_mismatch - Wrong data type (string instead of number)invalid_reference - Referenced node doesn't existinvalid_expression - Expression syntax errorExample:
{
"type": "missing_required",
"property": "channel",
"message": "Channel name is required",
"fix": "Provide a channel name (lowercase, no spaces, 1-80 characters)"
}Doesn't block execution - Workflow can be activated but may have issues
Types:
best_practice - Recommended but not required — surfaces under ai-friendly / strict onlydeprecated - Using old API/feature — surfaces under every profilesecurity - Hardcoded secrets, unauthenticated webhooks — surfaces under every profileperformance - Potential performance issue — advisory, ai-friendly / strictExample (best-practice — appears under ai-friendly / strict):
{
"type": "warning",
"nodeName": "Slack",
"message": "Slack API can have rate limits and transient failures"
}Nice to have - Improvements that could enhance workflow
Types:
optimization - Could be more efficientalternative - Better way to achieve same result7,841 occurrences of this pattern:
1. Configure node
↓
2. validate_node (23 seconds thinking about errors)
↓
3. Read error messages carefully
↓
4. Fix errors
↓
5. validate_node again (58 seconds fixing)
↓
6. Repeat until valid (usually 2-3 iterations)// Iteration 1
let config = {
resource: "channel",
operation: "create"
};
const result1 = validate_node({
nodeType: "nodes-base.slack",
config,
profile: "runtime"
});
// → Error: Missing "name"
// ⏱️ 23 seconds thinking...
// Iteration 2
config.name = "general";
const result2 = validate_node({
nodeType: "nodes-base.slack",
config,
profile: "runtime"
});
// → Error: Missing "text"
// ⏱️ 58 seconds fixing...
// Iteration 3
config.text = "Hello!";
const result3 = validate_node({
nodeType: "nodes-base.slack",
config,
profile: "runtime"
});
// → Valid! ✅This is normal! Don't be discouraged by multiple iterations.
The four profiles are cumulative (n8n-mcp ≥ 2.63.0): each surfaces everything the lower one does, plus more. The dividing line is best-practice advisories — minimal and runtime withhold them; ai-friendly and strict add them. Errors are the same across every profile except that minimal skips a few config-level checks (e.g. enum validation of an explicit operation). Security and deprecation warnings surface under every profile.
Use when: Quick structural checks while wiring a workflow together.
Surfaces: hard errors that would stop execution (missing required fields, empty code, broken connections). Skips enum checks and all advisories.
Fastest and most permissive.
Use when: Ongoing validation as you build; the everyday profile.
Surfaces: errors (required fields, value types, allowed values, dependencies, broken references) plus security and deprecation warnings. No best-practice advisories.
Balanced — catches everything that breaks, stays quiet about style.
Use when: You want the best-practice advice before deploying.
Surfaces: everything runtime does, plus best-practice advisories — per-node "without error handling" suggestions, "webhook should always send a response", rate-limit notes, outdated-typeVersion suggestions, cachedResultName and long-chain hints.
Note: ai-friendly is stricter than runtime, not looser. (Older docs described it as reducing false positives — that was true only while profile gating was broken; it is fixed now.)
Use when: Hardening a production-critical workflow.
Surfaces: everything ai-friendly does, plus leftover-property checks ("property 'X' won't be used — not visible with current settings").
Maximum lint. With the false positives fixed at the source, its warnings are advice to weigh, not noise to fight.
Five core error types, in rough order of frequency:
missing_required — a required field isn't provided. Use get_node to see required fields, then add it.invalid_value — value doesn't match allowed options (enums are case-sensitive). Check the error's allowed list or get_node.type_mismatch — wrong data type (string "100" vs number 100). Convert to the expected type.invalid_expression — expression syntax error (missing {{}}, typos). See the n8n Expression Syntax skill.invalid_reference — referenced node doesn't exist (renamed, deleted, or misspelled). Fix the name or cleanStaleConnections.A sixth class, patchNodeField errors (find-not-found, ambiguous match, invalid/unsafe regex), surfaces when a patchNodeField op fails during n8n_update_partial_workflow — it's strict by design and errors rather than silently continuing.
Every type above has worked examples (broken config → fix) plus the patchNodeField error cases and their fixes in ERROR_CATALOG.md.
Automatically normalizes common operator structures on ANY workflow update — n8n_create_workflow, n8n_update_partial_workflow, or any save. Trust it; don't hand-fix these.
What it normalizes on save:
singleValue property.singleValue: true.conditions.options for IF v2.2+ and Switch v3.2+.Validation no longer errors on these shapes (n8n-mcp ≥ 2.63.0). n8n derives unary-ness from the operator name and defaults the conditions.options sub-fields, so validate_node / validate_workflow accept a condition whether or not singleValue and the options metadata are present — the sanitizer just tidies the canonical form on save. (Older servers wrongly errored on the un-normalized shape; if you see that, upgrade.) What still is a real error: a v1-shaped conditions object on a v2 node, an empty filter with no conditions, and legacy v1 operator names (e.g. smaller) inside a v2 structure.
What the sanitizer CANNOT fix (handle manually): broken connections to non-existent nodes (use cleanStaleConnections), branch-count mismatches (add/remove connections or rules), and paradoxical corrupt states (may need manual DB intervention).
Before/after examples and the full cannot-fix detail are in ERROR_CATALOG.md (Auto-Sanitization sections).
The validator overhaul (n8n-mcp ≥ 2.63.0) removed the classic false positives — template literals inside expressions, optional chaining, omitted-operation defaults, the Webhook → Respond-to-Webhook pattern, IF/Filter legacy shapes, and more no longer fire.
Known exceptions (n8n-mcp 2.85.0, reported upstream; re-check after upgrading):
main[1], as suggested, means the webhook only answers when the upstream node fails. Treat it as a false positive only when the message matches this text exactly and you've inspected connections and confirmed the named node sits on the success path by design. In that case keep the wiring, say in your reply that you're ignoring n8n-mcp#1111 and why, and don't run n8n_autofix_workflow with the default fix types (exclude error-output-config, or it may rewire the success path). Every other valid: false error still gets fixed. (n8n-mcp#1111)json/items inside a string, e.g. $jmespath($('X').all(), "[?json.country=='PL'].json.name"). The json. prefix is required there, so ignore the warning. (#1115)validate_node on a language: "pythonNative" Code node → "Code cannot be empty" (jsCode). The error is false; validate the workflow instead. (#1112)Blind spots (valid workflow, wrong result at runtime): $jmespath syntax/quoting mistakes inside expressions (#1114); any JS error inside {{ }}, which resolves to null while the execution stays green (see n8n-expression-syntax); native-Python mistakes such as legacy _input/_json, dot access, blocked imports and classes (#1113, see n8n-code-python). Validation plus a successful run still isn't proof: inspect the output values.
What remains are best-practice advisories (surfaced only under ai-friendly / strict) that flag a real trade-off but may be acceptable in your case. Not every advisory needs a fix — many are context-dependent. Common ones and when each is acceptable vs. worth fixing:
Security and deprecation warnings, by contrast, surface under every profile and should be treated as real.
Full per-case guidance, the list of what the validator no longer flags, profile strategies, the "should I fix this?" decision framework, and how to document accepted advisories are in FALSE_POSITIVES.md.
{
"valid": false,
"errors": [
{
"type": "missing_required",
"property": "channel",
"message": "Channel name is required",
"fix": "Provide a channel name (lowercase, no spaces)"
}
],
"warnings": [
{
"type": "best_practice",
"property": "errorHandling",
"message": "Slack API can have rate limits",
"suggestion": "Add onError: 'continueRegularOutput'"
}
],
"suggestions": [
{
"type": "optimization",
"message": "Consider using batch operations for multiple messages"
}
],
"summary": {
"hasErrors": true,
"errorCount": 1,
"warningCount": 1,
"suggestionCount": 1
}
}valid first — true means the config is valid; false means there are errors to fix before deployment.errors first — each carries a property, message, and fix. These must be resolved.warnings — each has a message and suggestion; decide per-case whether to address it (see False Positives above).suggestions — optional improvements, not required.Validates entire workflow, not just individual nodes
Checks:
Example:
validate_workflow({
workflow: {
nodes: [...],
connections: {...}
},
options: {
validateNodes: true,
validateConnections: true,
validateExpressions: true,
profile: "runtime"
}
}){
"error": "Connection from 'Transform' to 'NonExistent' - target node not found"
}Fix: Remove stale connection or create missing node
{
"warning": "Workflow contains a cycle: Node A → Node B → Node A"
}A cycle is a warning, not a hard error (n8n-mcp ≥ 2.63.0) — runtime-controlled loops (error-retry, data-driven pagination, a router feeding back) execute to completion and are legitimate. Fix only if the loop is unintentional: ensure the cycle has a real exit (a conditional node, an error output, or a bounded counter) so it can't spin forever.
{
"warning": "Multiple trigger nodes found - only one will execute"
}Fix: Remove extra triggers or split into separate workflows
{
"warning": "Node 'Transform' is not connected to workflow flow"
}Fix: Connect node or remove if unused
When: Configuration is severely broken
Steps:
get_nodeWhen: Workflow validates but executes incorrectly
Steps:
When: "Node not found" errors
Steps:
n8n_update_partial_workflow({
id: "workflow-id",
operations: [{
type: "cleanStaleConnections"
}]
})When: Validation errors that can be automatically resolved
Steps:
// Preview fixes (default - doesn't apply)
n8n_autofix_workflow({
id: "workflow-id",
applyFixes: false,
confidenceThreshold: "medium" // high, medium, low
})
// Review fixes, then apply
n8n_autofix_workflow({
id: "workflow-id",
applyFixes: true
})The n8n_autofix_workflow tool can fix these issue types:
= prefix in expressions (e.g., {{ $json.field }} → ={{ $json.field }})Confidence levels: high (90%+, safe to auto-apply), medium (70-89%, review recommended), low (<70%, manual review required)
// Preview all fixes
n8n_autofix_workflow({id: "workflow-id"})
// Only apply high-confidence fixes
n8n_autofix_workflow({
id: "workflow-id",
applyFixes: true,
confidenceThreshold: "high"
})
// Target specific fix types
n8n_autofix_workflow({
id: "workflow-id",
fixTypes: ["expression-format", "typeversion-upgrade"],
applyFixes: true
})Post-update guidance: For version upgrades, check the postUpdateGuidance field in the response for step-by-step migration instructions.
runtime profile for pre-deploymentvalid field before assuming successget_node when unclear about requirementsstrict profile during development (too noisy)validate_workflow checks structure, parameters and expressions — it never runs anything. A workflow that validates cleanly can still fail on real data, so run it once before calling it done.
With a webhook, form or chat trigger: n8n_test_workflow({workflowId}) — the default method: "auto" detects the trigger and fires it over HTTP (the workflow must be active).
Without such a trigger (Manual Trigger, Schedule, sub-workflow) there is no HTTP entry point. Use the pin-data path, which runs through n8n's own MCP server (N8N_MCP_ACCESS_TOKEN, n8n 2.34+):
n8n_test_workflow({workflowId, method: "prepare"}) — lists the nodes that need pinned data.{json: {...}}:{"When clicking 'Test workflow'": [{"json": {"orderId": "1234", "email": "a@b.com"}}]}{json} items is the usual mistake here.n8n_test_workflow({workflowId, method: "pinned", pinData}) — runs it with that data and waits for the result.For a quick manual run without pinned data, method: "direct" starts a manual execution and returns as soon as it has started; poll n8n_executions({action: "get", id: executionId, mode: "error"}) for the outcome. Nothing is pinned on a direct run, so every node executes and any external call it makes is real — and even pinned only pins trigger, credentialed and HTTP Request nodes. executionMode: "production" changes the execution context, not whether there are side effects; leave it at the default unless the user asked for a production run.
method: "auto" never runs a workflow through n8n's MCP server. On a workflow with no external trigger it reports that fact and names prepare/pinned/direct; the routed methods only run when you ask for them by name.
Consent before the first routed run. n8n refuses these calls for a workflow whose "Available in MCP" setting is off, which comes back as WORKFLOW_NOT_EXPOSED. Re-running with exposeToMcp: true turns that setting on and retries once. It is a visible, persistent setting on the workflow (and enabling it is a workflow update, so a concurrent UI edit can be overwritten) — ask the user before passing it. The consent flow only ever enables the setting; nothing disables it implicitly. Turning it off again is a deliberate act: n8n_update_partial_workflow({id: workflowId, operations: [{type: "updateSettings", settings: {availableInMCP: false}}]}), or the toggle in the n8n UI.
Reading the result: a run that started and then failed comes back as EXECUTION_FAILED with the executionId — inspect it with n8n_executions({action: "get", id, mode: "error"}) and fix from the node that threw, then validate and run again.
Validating as you build (the loop above) is for catching schema and shape errors in your own in-progress work. Reviewing an existing workflow — yours or one you've been handed — is a different job: the workflow already passes validate_workflow clean, and you're hunting for the issues validation doesn't see (silent connection bugs, injection-prone queries, dropped-item Switches, Set/Code antipatterns, missing error paths). For that, pull the workflow with n8n_get_workflow and walk REVIEW_CHECKLIST.md — a severity-tiered audit (MUST FIX / SHOULD FIX / NICE TO HAVE) where every item points to the canonical skill for the fix. Run n8n_audit_instance alongside it to surface hardcoded secrets and unauthenticated webhooks across the whole instance.
For comprehensive error catalogs, false positives, and workflow review:
Key Points:
ai-friendly/strict for best-practice advisoriesValidation Process:
Related Skills & Tools:
n8n_audit_instance - Proactive security validation (hardcoded secrets, unauthenticated webhooks, missing error handling, data retention)© czlonkowski, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files in skills/n8n-validation-expert of czlonkowski/n8n-skills.
Open the folder on GitHubat commit 19cd793
n8n Validation Expert next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| n8n Validation Expert this skillczlonkowski/n8n-skills | 6.4k | — | ~5.7k | Automated safety check: Pass | MIT | |
| N8n Error Handlingsickn33/agentic-awesome-skills | 47k | 1 repos | ~4.9k | Automated safety check: Pass | MIT | |
| Debugging Executionsn8n-io/n8n | 207k | — | ~2.6k | Automated safety check: Pass | Custom licence | |
| N8n CLIn8n-io/n8n | 207k | — | ~3k | Automated safety check: Pass | Custom licence | |
| N8n Docs Assistantn8n-io/n8n | 207k | — | ~550 | Automated safety check: Pass | Custom licence | |
| Workflow Buildern8n-io/n8n | 207k | — | ~15k | Automated safety check: Warn | Custom licence |
sickn33/agentic-awesome-skills
Design visible, structured, recoverable n8n failures using error outputs, retries, Error Trigger workflows, and HTTP error responses.
n8n-io/n8n
Debug failed or wrong-output workflow executions using executions tools.
n8n-io/n8n
Use the n8n CLI to manage workflows, credentials, executions, and more on an n8n instance.
n8n-io/n8n
Answers n8n product, setup, credential, node, hosting, API, and usage questions from current n8n docs.
n8n-io/n8n
Load before calling build-workflow. An agent skill from n8n-io/n8n.
n8n-io/n8n
ONLY for coordinated multi-artifact work: multiple workflows with dependencies, shared data-table schema/migration across tasks, or the user explicitly asked to review a plan first.
czlonkowski/n8n-skills
Explains how n8n keeps file bytes in $binary apart from structured $json data, and how to read, write and preserve binary across nodes, agent tools and chat.
czlonkowski/n8n-skills
Guides writing JavaScript in n8n Code nodes: picking an execution mode, reading input data, returning items, using built-in helpers and avoiding common errors.
czlonkowski/n8n-skills
Explains how to write native Python in n8n Code nodes, including the two input variables, blocked imports and fixes for common errors.
czlonkowski/n8n-skills
Explains the n8n Custom Code Tool's actual runtime contract so an AI-agent-callable tool doesn't get written like a regular workflow Code node.
czlonkowski/n8n-skills
Wires n8n workflows so failures are visible and recoverable: per-node error outputs, retries, error workflows and correct 4xx and 5xx webhook responses.
czlonkowski/n8n-skills
Keeps an n8n MCP session pointed at the right n8n instance, with rules for discovering, switching and verifying the target before credential writes and for recovering from misroutes.
Works with
Categories
Interprets n8n validation output from validate_node and validate_workflow, separating real errors from false-positive warnings and guiding each fix. The skill treats validation as an iterative loop: configure a node, validate, read the feedback, fix and validate again, usually for a few rounds. It sorts feedback into errors that block activation (missing required fields, invalid values, type mismatches, bad node references, expression syntax errors), warnings that do not block (recommended-practice, deprecated, security and performance notes) and optional suggestions.
n8n Validation Expert fits situations like: A validate_node or validate_workflow call returns errors or warnings; deciding whether a validation warning is a false positive; understanding validation profiles and which warnings each one shows; fixing operator structure issues flagged in a node configuration.
Run `npx skills add czlonkowski/n8n-skills --skill n8n-validation-expert -a claude-code`. Or copy the skill folder (skills/n8n-validation-expert in czlonkowski/n8n-skills) into .claude/skills/n8n-validation-expert in your project. Claude Code loads it when a task matches its description.
Run `npx skills add czlonkowski/n8n-skills --skill n8n-validation-expert -a codex`. Or copy the skill folder (skills/n8n-validation-expert in czlonkowski/n8n-skills) into .agents/skills/n8n-validation-expert in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add czlonkowski/n8n-skills --skill n8n-validation-expert -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/n8n-validation-expert, .gemini/skills/n8n-validation-expert, .github/skills/n8n-validation-expert and .opencode/skills/n8n-validation-expert in your project.
Going by SKILL.md and its folder, n8n Validation Expert needs credentials named N8N_MCP_ACCESS_TOKEN. Our summary lists: Access to n8n validation tools such as validate_node and validate_workflow.
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
n8n Validation Expert is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with n8n Validation Expert: N8n Error Handling (sickn33/agentic-awesome-skills, 47k stars), Debugging Executions (n8n-io/n8n, 207k stars), N8n CLI (n8n-io/n8n, 207k stars) and N8n Docs Assistant (n8n-io/n8n, 207k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
czlonkowski (a GitHub user) maintains it in czlonkowski/n8n-skills, which has 6,396 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on September 16, 2026.
Source: czlonkowski/n8n-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.