$npx -y skills add czlonkowski/n8n-skills --skill using-n8n-mcp-skillsUse when building, editing, validating, testing, or debugging an n8n workflow through the n8n-mcp MCP server — designing a flow, configuring a node, writing an expression or Code node, wiring credentials, or fixing one that misbehaves. The entry-point skill for the n8n-mcp-skills
| 1 | # Using the n8n-mcp Skills |
| 2 | |
| 3 | This is a **router**, not a reference. It tells you which skill owns the rules for what |
| 4 | you're about to do. The skill bodies hold the actual guidance — invoke them with the |
| 5 | Skill tool. When in doubt, load more skills rather than fewer. |
| 6 | |
| 7 | The community **n8n-mcp** server and n8n itself move faster than any model's training |
| 8 | cutoff. Tool names, parameters, node `typeVersion`s, and default behaviors drift between |
| 9 | releases. When you spot drift — a tool a skill names doesn't exist, a parameter shape |
| 10 | doesn't match what `get_node` returns, behavior differs from what a skill describes — |
| 11 | trust the **live tool**, tell the user, and suggest updating the pack and the instance. |
| 12 | |
| 13 | ## Non-negotiables |
| 14 | |
| 15 | Three rules with no exceptions. Each one prevents a class of workflow that looks correct |
| 16 | but breaks in production. |
| 17 | |
| 18 | 1. **Invoke the relevant skill before any n8n action** — not just before MCP calls. |
| 19 | Before writing an expression, configuring a node, designing a workflow, wiring a |
| 20 | connection, or writing Code, invoke the matching skill. The PreToolUse hooks remind |
| 21 | you on the highest-impact tool calls *only when the plugin bundle is installed*; on |
| 22 | Claude.ai (plain skill uploads, no hooks) the responsibility is entirely yours. |
| 23 | 2. **Validate AND verify before activating.** Run `validate_workflow` (or |
| 24 | `n8n_validate_workflow` by id) before you activate, and call `n8n_get_workflow` after |
| 25 | every create or update to inspect the `connections` object. Validation alone misses |
| 26 | silently dropped wires, Merge index off-by-one, and error outputs that were never |
| 27 | wired. Validation passing means the JSON is well-formed — not that the workflow is |
| 28 | correct. |
| 29 | 3. **Secrets never go in text fields.** Tokens, API keys, and passwords always go through |
| 30 | the n8n credential system. If no native node exists, use the HTTP Request node with |
| 31 | the official credential type. A Set node holding a token referenced via `{{ $json.token }}` |
| 32 | is a leak with extra steps. See `n8n-mcp-tools-expert`. |
| 33 | |
| 34 | ## Lean on skills, not training data |
| 35 | |
| 36 | n8n changes constantly. "Remembered" parameter names are often silently wrong — they |
| 37 | validate as plain strings and then do nothing at runtime. Trust the skills and the live |
| 38 | tools (`get_node`, `search_nodes`, `tools_documentation`) over recollection. If a skill |
| 39 | contradicts your memory, trust the skill. If `get_node` contradicts a skill, trust the |
| 40 | tool and flag the drift. |
| 41 | |
| 42 | ## Strong defaults |
| 43 | |
| 44 | Each skill owns its own exceptions; these are the defaults. |
| 45 | |
| 46 | - **The Code node is a last resort.** Expression first, then an arrow function inside Edit |
| 47 | Fields, then a Code node only when neither can do the job. See `n8n-code-javascript`. |
| 48 | - **A Set node feeding 0–1 consumers is almost always wrong.** Inline the expression at |
| 49 | the consumer instead. See `n8n-expression-syntax`. |
| 50 | - **Per-item iteration is automatic.** Don't add a Loop Over Items node to "make it loop" |
| 51 | when default per-item execution already handles the case. |
| 52 | - **Configure from the live schema, never from memory.** `get_node` before you set |
| 53 | parameters. See `n8n-node-configuration`. |
| 54 | |
| 55 | ## Red flags: "about to ___" → invoke ___ |
| 56 | |
| 57 | If you catch yourself thinking any of these, stop and invoke the named skill first. |
| 58 | |
| 59 | | Thought | Invoke | |
| 60 | |---|---| |
| 61 | | "This workflow is simple, I'll just build it" | `n8n-workflow-patterns` — most "simple" flows ship at 10+ nodes | |
| 62 | | "I'll add a Set node to map these fields" | `n8n-expression-syntax` — Set feeding ≤1 consumer is the #1 antipattern | |
| 63 | | "I'll just use a Code node, it's easier" | `n8n-code-javascript` — the bar is high; most reaches are expressions or Edit Fields | |
| 64 | | "The user mentioned data, I'll write Python" | `n8n-code-javascript` — default JS; Python (`n8n-code-python`) only on explicit ask | |
| 65 | | "I'm writing code an AI agent will call" | `n8n-code-tool` — a different runtime contract from the Code node | |
| 66 | | "Date math — I'll drop in a DateTime node" | `n8n-expression-syntax` — Luxon inline is almost always right | |
| 67 | | "I'll wire a Merge with 3 sources" | `n8n-node-configuration` — Merge defaults to 2 inputs; the 3rd silently drops | |
| 68 | | "Validation passed, I'm ready to activate" | `n8n-validation-expert` + `n8n-workflow-patterns` — run the antipattern scan | |
| 69 | | "Va |