Not in the top 1,000 by GitHub stars
n8n-io/skills
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/n8n-agents-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-ai-nodes-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-binary-and-data-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-code-nodes-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-credentials-and-security-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-data-tables-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-debugging-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-error-handling-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-expressions-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-extending-mcp-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-loops-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-node-configuration-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-subworkflows-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/n8n-workflow-lifecycle-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
skills/using-n8n-skills-official/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
27b6b9f429ac → 27b6b9f429ac
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 27b6b9f429ac
No earlier version was observed for comparison.
Verified commit 27b6b9f429ac0be90cae764512dbc579d7107e95
git clone --filter=blob:none --no-checkout https://github.com/n8n-io/skills.git .hotskills/n8n-io-skills && git -C .hotskills/n8n-io-skills checkout --detach 27b6b9f429ac0be90cae764512dbc579d7107e95
# Copy each selected skill directory from .hotskills/n8n-io-skills into .claude/skills/<skill-name>/Heat
7.5- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- n8n-agents-official
skills/n8n-agents-official - n8n-ai-nodes-official
skills/n8n-ai-nodes-official - n8n-binary-and-data-official
skills/n8n-binary-and-data-official - n8n-code-nodes-official
skills/n8n-code-nodes-official - n8n-credentials-and-security-official
skills/n8n-credentials-and-security-official - n8n-data-tables-official
skills/n8n-data-tables-official - n8n-debugging-official
skills/n8n-debugging-official - n8n-error-handling-official
skills/n8n-error-handling-official - n8n-expressions-official
skills/n8n-expressions-official - n8n-extending-mcp-official
skills/n8n-extending-mcp-official - n8n-loops-official
skills/n8n-loops-official - n8n-node-configuration-official
skills/n8n-node-configuration-official - n8n-subworkflows-official
skills/n8n-subworkflows-official - n8n-workflow-lifecycle-official
skills/n8n-workflow-lifecycle-official - using-n8n-skills-official
skills/using-n8n-skills-official
How it works
n8n-agents-official
When your agent uses it
Use when the user wants an agent, assistant, or bot in n8n, or is building, editing, testing, publishing, or debugging a first-class n8n Agent. Covers choosing an Agent vs a workflow vs the AI Agent node, the Agent MCP tools (create_agent, mutate_agent, validate_agent, call_agent, publish_agent, update_agent_integration), Agent config JSON, tools and approvals, skills, sub-agents, model routing, knowledge files, vector stores, memory and sessions, Slack / Telegram / Discord / Linear / n8n Chat channels, scheduled tasks, the Message an Agent node, and reading Agent sessions and traces. Triggers on "build me an agent", "assistant", "chatbot", "Slack bot", "Telegram bot", "agent skills", "sub-agent", "knowledge base", "agent memory", "session", "Message an Agent", "publish the agent", or any Agent tool call.
What it loads into context
Frontmatter
204 tokensAlways available to the agent
SKILL.md
2,435 tokensWhen the skill is activated
Reference documents
11,277 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiables
- Agent, workflow, or AI Agent node?
- MCP build sequence
- Where depth lives
- Writing instructions
- Anti-patterns
Scripts executed separately
../../hooks/post-tool-use/validate-workflow.sh../../hooks/pre-tool-use/agent-build.sh../../hooks/pre-tool-use/create-workflow.sh../../hooks/pre-tool-use/execute-workflow.sh../../hooks/pre-tool-use/get-node.sh../../hooks/pre-tool-use/test-workflow.sh../../hooks/pre-tool-use/update-workflow.sh../../hooks/pre-tool-use/validate-workflow.sh../../hooks/session-start.sh
Files
../../.claude-plugin/marketplace.jsonasset410 bytes../../.claude-plugin/plugin.jsonasset991 bytes../../hooks/hooks.jsonasset2,433 bytes../../hooks/post-tool-use/validate-workflow.shruns8,093 bytes../../hooks/pre-tool-use/agent-build.shruns397 bytes../../hooks/pre-tool-use/create-workflow.shruns460 bytes../../hooks/pre-tool-use/execute-workflow.shruns578 bytes../../hooks/pre-tool-use/get-node.shruns9,628 bytes../../hooks/pre-tool-use/test-workflow.shruns837 bytes../../hooks/pre-tool-use/update-workflow.shruns544 bytes../../hooks/pre-tool-use/validate-workflow.shruns809 bytes../../hooks/session-start.shruns3,480 bytesSKILL.mdcore10,652 bytesSKILL.mdcore10,652 bytesSKILL.mdcore10,652 bytesSKILL.mdcore10,652 bytesSKILL.mdcore10,652 bytesSKILL.mdcore10,652 bytesSKILL.mdcore10,652 bytesSKILL.mdcore10,652 bytesSKILL.mdcore10,652 bytesSKILL.mdcore10,652 bytesreferences/APPROVALS.mddoc4,419 bytesreferences/CHANNELS.mddoc4,838 bytesreferences/CONFIG.mddoc3,447 bytesreferences/KNOWLEDGE.mddoc2,477 bytesreferences/MCP_BUILD.mddoc5,014 bytesreferences/MEMORY.mddoc3,474 bytesreferences/MESSAGE_AN_AGENT.mddoc5,100 bytesreferences/SESSIONS_AND_DEBUGGING.mddoc4,030 bytesreferences/SKILLS.mddoc2,664 bytesreferences/SUB_AGENTS.mddoc2,699 bytesreferences/TASKS.mddoc1,796 bytesreferences/TOOLS.mddoc6,120 bytes
Read SKILL.md
# n8n Agents
A first-class n8n Agent is a saved resource with its own instructions, model, tools, skills, sub-agents, memory, channels, scheduled tasks, versions, and spend limits. It is configured as JSON through the Agent MCP tools, never with Workflow SDK code. The AI Agent node inside a workflow is a different thing, covered by `n8n-ai-nodes-official`.
<!-- TEMPORARY: revisit when the Preview tag is removed from Agents in the UI, and when Agents are declared ready for Enterprise. -->
Agents are generally available. The UI shows a Preview tag because they change often and some features you might expect aren't there yet. They aren't ready for Enterprise yet: an Enterprise instance may have them enabled, but don't assume it. If `create_agent` isn't in your tool list, Agents aren't enabled on this instance. Say so and offer a workflow instead of guessing.
## Non-negotiables
1. **Always send a memory block when creating over MCP:** `"memory": { "enabled": true, "storage": "n8n" }`. The UI adds it on every save. `create_agent` saves exactly what you send, and without it the Agent forgets the previous turn even inside one session (verified live).
2. **Never publish without the user's explicit OK.** A built Agent is a draft. Configuring a channel on an already published Agent connects it immediately, so confirm that too.
3. **Publish what the Agent calls.** Workflow tools need a When Executed by Another Workflow trigger, the same project, and a published workflow (`validate_agent` reports it). Saved sub-agents must be published too, and nothing checks that: validation and publishing pass, then production delegation fails and the parent quietly answers on its own.
4. **Approval on anything that sends, changes, deletes, or spends**, and know what the approver will see. See `references/APPROVALS.md`.
5. **One `mutate_agent` per change, always with the latest `configHash`.** A stale hash returns `stale_config`: call `get_agent` and retry.View the complete source on GitHubn8n-ai-nodes-official
When your agent uses it
Use when building or editing AI inside an n8n workflow: the AI Agent node, Text Classifier, Information Extractor, Sentiment Analysis, Summarization Chain, Basic LLM Chain, embeddings, vector stores, single one-shot LLM calls, or AI media generation (image / audio / video) via the native LangChain provider nodes. Also when a first-class n8n Agent can't do the job: trigger data mapped exactly into tool parameters, or memory shared across workflows. Triggers on any `@n8n/n8n-nodes-langchain.*` node, "AI Agent node", "LLM with tools", "tool calling", "fromAi", "system prompt", "memory window", "structured output", "outputParser", "RAG", "vector store", "embeddings", "classify with AI", "extract fields with LLM", "sentiment analysis", "summarize with LLM", "single LLM call", chat triggers with files, Slack / Discord / Teams / Telegram bot workflows, AI image / video / audio generation, or any multi-turn or one-shot LLM step in a workflow.
What it loads into context
Frontmatter
251 tokensAlways available to the agent
SKILL.md
5,145 tokensWhen the skill is activated
Reference documents
20,048 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- AI Agent node or first-class n8n Agent?
- When to use the Agent node vs raw chat completion
- Non-negotiables
- Strong defaults
- The sub-node pattern
- Triggers
- Binary and the agent boundary
- What goes in the system prompt vs the tool description
- Tool selection: the four types
- Human review
- Output parsing: when and how
- Memory: brief mental model
- RAG (retrieval augmented generation)
- Reference files
- Anti-patterns
Files
SKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesSKILL.mdcore22,905 bytesreferences/CHAT_SURFACE_PATTERNS.mddoc20,358 bytesreferences/HUMAN_REVIEW.mddoc11,632 bytesreferences/MEMORY.mddoc9,706 bytesreferences/RAG.mddoc8,302 bytesreferences/STRUCTURED_OUTPUT.mddoc6,857 bytesreferences/SUBWORKFLOW_AS_TOOL.mddoc12,331 bytesreferences/SYSTEM_PROMPT.mddoc7,562 bytesreferences/TOOLS.mddoc12,260 bytesreferences/examples/agent-core.jsonasset13,448 bytesreferences/examples/notion-ideas-subagent.jsonasset8,005 bytesreferences/examples/slack-router.jsonasset12,636 bytes
Read SKILL.md
# n8n AI nodes
The AI Agent node (`@n8n/n8n-nodes-langchain.agent`) is a multi-turn LLM driver with sub-nodes for the model, memory, tools, and optional output parser. It lives inside a workflow, which owns its trigger, control flow, and lifecycle.
## AI Agent node or first-class n8n Agent?
"Build me an agent" means a first-class n8n Agent (`n8n-agents-official`) by default. Use the node when the workflow owns the control flow and AI is one bounded step, or when the first-class Agent hits a limit:
<!-- TEMPORARY: revisit each limit below when n8n adds tool access to run data, sessions shared between channels and workflows, or Agents on every instance (Enterprise). -->
| Need | Why the node wins today |
|---|---|
| Trigger or upstream data mapped exactly into a tool parameter | Agent tool expressions only see the model's own arguments. Node tools can use `$('Webhook').item.json...` |
| One conversation shared between a chat channel and other workflows | Agent channel sessions and workflow sessions never meet |
| `create_agent` isn't in the MCP tool list | Agents aren't enabled on this instance |View the complete source on GitHubn8n-binary-and-data-official
When your agent uses it
Use when handling files, images, attachments, or binary data in n8n, OR when an AI agent needs to take a user-uploaded file as tool input or return a generated file. For Data Tables (schemas, dedup, persistent state), see the separate n8n-data-tables-official skill. Triggers on "file", "image", "PDF", "attachment", "binary", "upload", "download", chat trigger with files, agent tool that needs a file, vision/multimodal, or any handling of non-JSON file data.
What it loads into context
Frontmatter
130 tokensAlways available to the agent
SKILL.md
1,715 tokensWhen the skill is activated
Reference documents
7,045 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiables
- Strong defaults
- Binary basics
- Agent tool gymnastics
- Merge for keeping binary in context
- CDN requirement for chat surfaces
- Data Tables
- Reference files
- Anti-patterns
Files
SKILL.mdcore7,289 bytesSKILL.mdcore7,289 bytesSKILL.mdcore7,289 bytesreferences/AGENT_TOOL_BINARY.mddoc17,703 bytesreferences/BINARY_BASICS.mddoc4,925 bytesreferences/CDN_REQUIREMENT.mddoc4,665 bytesreferences/MERGE_FOR_CONTEXT.mddoc3,765 bytes
Read SKILL.md
# n8n Binary and Data
n8n handles two kinds of data: JSON (in `$json`) and binary (in `$binary`), flowing side-by-side. Binary has sharp edges around agent tools, storage, and display contexts (chat surfaces, message rendering).
For tabular storage (Data Tables), see the **`n8n-data-tables-official`** skill.
## Non-negotiables
1. **Binary is in `$binary`, not `$json`.** Don't read file contents from `$json`.
2. **Binary cannot cross the agent tool boundary in either direction.** Tool parameters are JSON only (via `fromAi()`), and tool results are JSON only. Pre-stage binary in storage and pass keys/URLs through JSON. The agent's `passthroughBinaryImages: true` lets the LLM *see* uploaded images for vision, but it does NOT enable tools to receive them. See `references/AGENT_TOOL_BINARY.md`.
## Strong defaults
- **Merge nodes keep binary in context.** When a side computation strips binary, merge it back rather than re-fetching. See `references/MERGE_FOR_CONTEXT.md`.View the complete source on GitHubn8n-code-nodes-official
When your agent uses it
Use when the user reaches for a Code node, mentions writing JavaScript or Python in n8n, or any custom logic comes up in workflow design. Triggers on "Code node", "Code", "JavaScript", "Python", "custom logic", "transform data", "$input", "$json transformation", "loop in code", "write a function", or any time the obvious answer seems to be "just put it in code."
What it loads into context
Frontmatter
102 tokensAlways available to the agent
SKILL.md
2,926 tokensWhen the skill is activated
Reference documents
4,998 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Strong defaults
- Decision tree
- What expressions can do that people forget
- What arrow-functions-in-Edit-Fields can do
- When the Code node IS the right answer
- JavaScript Code node specifics
- Reference files
- Anti-patterns
Files
SKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesSKILL.mdcore12,238 bytesreferences/ARROW_FUNCTIONS_IN_EDIT_FIELDS.mddoc8,497 bytesreferences/DECISION_TREE.mddoc5,909 bytesreferences/JAVASCRIPT_PATTERNS.mddoc6,108 bytes
Read SKILL.md
# n8n Code Nodes
The Code node is powerful and often the wrong tool. The n8n equivalent of dropping into raw SQL when an ORM would do: real cases exist, but the moment a Code node handles logic an expression could, the workflow is harder to read, debug, and maintain. There's also a real perf gap: Code runs in a sandboxed JS runtime, expressions and Edit Fields run in-process, and the per-invocation overhead can be hundreds of times higher in Code (anecdotally ~2ms vs ~600ms for equivalent logic). For hot paths and large item counts, that compounds.
## Strong defaults
1. **Code node is a last resort.** Decision order: expression (`{{...}}`) → arrow function inside Edit Fields → Code node. The first two paths cover most "transform this data" tasks. Code earns its place for multi-source aggregation, external libraries, and a few specific patterns documented below.
2. **Default to JavaScript.** Write JS unless the user explicitly asked for Python ("use Python here," "I'm a Python shop," pasted Python code). Everywhere else in n8n (expressions, Edit Fields) is JS, JS has a curated library allowlist (`lodash`, `crypto`, `luxon`).
## Decision tree
```
Need custom logic?View the complete source on GitHubn8n-credentials-and-security-official
When your agent uses it
Use when handling any auth, API keys, tokens, OAuth, bearer tokens, basic auth, or secret values in n8n workflows. Triggers on "API key", "token", "bearer", "OAuth", "secret", "auth", "credentials", "Authorization header", "x-api-key", or any node configuration that mentions a third-party service.
What it loads into context
Frontmatter
88 tokensAlways available to the agent
SKILL.md
1,571 tokensWhen the skill is activated
Reference documents
4,032 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiables
- Strong defaults
- The credential system
- Decision tree: how to authenticate this thing
- When the user pastes a secret into a chat
- When no native node exists
- Reference files
- Anti-patterns
Files
SKILL.mdcore6,734 bytesSKILL.mdcore6,734 bytesSKILL.mdcore6,734 bytesSKILL.mdcore6,734 bytesSKILL.mdcore6,734 bytesSKILL.mdcore6,734 bytesSKILL.mdcore6,734 bytesSKILL.mdcore6,734 bytesSKILL.mdcore6,734 bytesSKILL.mdcore6,734 bytesSKILL.mdcore6,734 bytesreferences/CREDENTIAL_SYSTEM.mddoc3,802 bytesreferences/CUSTOM_CREDENTIALS.mddoc2,923 bytesreferences/FINDING_API_DOCS.mddoc4,724 bytesreferences/HTTP_REQUEST_WITH_AUTH.mddoc5,025 bytes
Read SKILL.md
# n8n Credentials and Security
## Non-negotiables
1. **Secrets via the credential system, never in text fields or SDK code.** API keys, bearer tokens, OAuth secrets, passwords: all go through `newCredential()` or the node's `credentials` parameter. A Set node hardcoding a token and read via `{{$json.token}}` is a text field with extra steps.
2. **List credentials, then bind by ID.** Call `list_credentials({type})` before configuring an auth-needing node. One match: bind via 2-arg `newCredential('Label', 'credId')` at create time, or `setNodeCredential` op on `update_workflow`. Multiple matches: ask the user which. The one-arg `newCredential('Label')` is a placeholder; n8n auto-assigns the most recently edited credential of that type and silently picks wrong when the user has multiples.
3. **Credential creation is the user's job, not yours.** The n8n MCP doesn't expose credential creation. Tell the user the exact credential *type* to create in the UI, then reference it by label in your node config. Don't attempt to create credentials programmatically and don't accept secrets in chat to "set up later".
## Strong defaults
- **Use native credentials when available.** Every native node (Slack, Gmail, Postgres, OpenAI, etc.) has a credential type. Don't reach for generic credential types when a native option exists.
- **For multi-header or header-plus-query auth shapes**, use the `httpCustomAuth` credential type. See `references/CUSTOM_CREDENTIALS.md`.
## The credential systemView the complete source on GitHubn8n-data-tables-official
When your agent uses it
Use when working with n8n's built-in Data Tables, designing schemas, inserting/updating/upserting rows, deduping, or querying. Triggers on "Data Table", "data table", `n8n-nodes-base.dataTable`, "dedup", "idempotency", "lookup", "persistent state", "store across executions", or any schema design discussion inside n8n.
What it loads into context
Frontmatter
95 tokensAlways available to the agent
SKILL.md
2,705 tokensWhen the skill is activated
Reference documents
5,462 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiables
- Strong defaults
- The default columns
- Relational design when the shape calls for it
- Operations: which one for what
- The "Currently no items exist" UI quirk
- Common patterns
- Reference files
- Anti-patterns
- Verification before publishing
Files
SKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesSKILL.mdcore11,383 bytesreferences/DEDUP_PATTERNS.mddoc5,307 bytesreferences/OPERATIONS.mddoc5,759 bytesreferences/SCHEMA_DESIGN.mddoc11,130 bytes
Read SKILL.md
# n8n Data Tables
Data Tables are n8n's **built-in tabular storage**: real tables inside the n8n instance with columns, types, rows, and CRUD via the `dataTable` node and data-table MCP tools.
Use them for local persistent state: lookup tables, recent events, per-session inventories, counters, idempotency tracking, dedup state when there's row-level logic or external visibility (plain "have I seen this value?" dedup belongs in the `Remove Duplicates` node). Small-to-moderate volume (tens of thousands of rows fine, millions belong in a real DB).
## Non-negotiables
1. **System-managed columns + external IDs.** Three columns auto-exist on every table: `id` (bigserial), `createdAt`, `updatedAt`. Don't declare them in `create_data_table` (errors or shadows the system column). Don't write them on insert. For domain identifiers from outside (arxivId, stripeCustomerId, requestId), add a separate column and key dedup/lookup on that.
2. **Only primitives in columns, nested data uses `string` + `_object` postfix.** No JSON/object/array column types exist. For nested data (arrays, parsed objects), use a `string` column with `JSON.stringify(...)` on write and `JSON.parse(...)` on read. Mark the column with `_object` (e.g., `keyInsights_object`). The postfix is the contract that tells readers to parse. See `references/SCHEMA_DESIGN.md`.
## Strong defaults
- **Don't add a Set node before a Data Table node to modify fields.** The Data Table node's per-column expression slots are just as powerful as Set fields, so the Set node is doing zero work the Data Table node can't do itself. (Same Set-node antipattern called out in `n8n-expressions-official`.)View the complete source on GitHubn8n-debugging-official
When your agent uses it
Use when an n8n workflow isn't working, errors appear, results don't match what was expected, or the user says "this isn't working." Triggers on errors, unexpected output, "it's not working", "why is this happening", "the workflow stopped", failure investigation, or any debugging context.
What it loads into context
Frontmatter
73 tokensAlways available to the agent
SKILL.md
2,551 tokensWhen the skill is activated
Reference documents
2,635 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiable
- Strong defaults (cause to cheap check)
- Step-by-step walkthrough
- Reference files
- Anti-patterns
Files
SKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesSKILL.mdcore11,103 bytesreferences/FETCHING_N8N_SOURCE.mddoc4,997 bytesreferences/PARAMETER_VERIFICATION.mddoc5,997 bytes
Read SKILL.md
# n8n Debugging
When something breaks, the cause is almost always:
1. **Parameter misconfiguration** (wrong value, wrong type, missing field).
2. **Stale assumptions** (different version, different behavior than you remember).
3. **Paths misconfigured or misconnected** (wrong output index, wrong merge input, missing wire, IF/Switch wired to the wrong branch).
4. **Upstream data stripped** (an intermediate node replaced `$json` with its own output, so downstream `$json.x` resolves to null even though "it should be there"). Fix: reference the stable upstream node by name (`$('Earlier Node').item.json.x`).
5. **Item context lost** (after Aggregate, Execute Once, or Split Out flows, n8n can't pair `.item` references deterministically, error reads like "The expression is referencing... multiple matching items"). Fix: Merge node to re-establish context, `$input.all().find(...)` for explicit lookup, or redesign to keep item correspondence stable (e.g., split into stateless sub-workflows).
6. **Logical errors** (the wires are right and the parameters are right, but the workflow does the wrong thing, same as a logic bug in code).
7. **Genuine bug** (rare but real).
Diagnose systematically: cheap checks first, deeper investigation only when those fail.
View the complete source on GitHubn8n-error-handling-official
When your agent uses it
Use when building any webhook-triggered workflow, scheduled/production-bound workflow, wiring a per-node error output, or any workflow where silent failure would drop user-visible work. Triggers on "webhook", "respond to webhook", "API", "production", "error", "failure", "5xx", "try/catch", "error workflow", "onError", "continueErrorOutput", "error branch", "node error output", "output(1)", "main[1]", "scheduled", or any workflow that runs unattended.
What it loads into context
Frontmatter
122 tokensAlways available to the agent
SKILL.md
2,822 tokensWhen the skill is activated
Reference documents
8,319 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiables
- Strong defaults
- When error handling can be looser
- API workflow shape
- Schema validator (Set IIFE)
- Per-node error setup (recap)
- Self-healing on transient failures
- Response shapes: map the cause to the status code
- Workflow-level error workflows
- Reference files
- Anti-patterns
Scripts executed separately
references/examples/validation-subworkflow-usage.tsreferences/examples/validation-subworkflow.ts
Files
SKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesSKILL.mdcore12,027 bytesreferences/API_WORKFLOWS.mddoc15,244 bytesreferences/ERROR_WORKFLOWS.mddoc7,954 bytesreferences/NODE_ERROR_OUTPUTS.mddoc4,232 bytesreferences/RESPONSE_SHAPES.mddoc7,808 bytesreferences/examples/validation-subworkflow-usage.tsruns7,756 bytesreferences/examples/validation-subworkflow.tsruns6,865 bytes
Read SKILL.md
# n8n Error Handling
Default n8n node behavior: error → workflow halts → caller gets nothing useful. For unattended workflows (webhook APIs, scheduled jobs, queue workers), that default is wrong. The symptom is "the integration just stopped working" with no log, no message, no clue.
This skill is about handling errors so failures are loud, structured, and recoverable. Or best case scenario, handled in a way where it self heals.
## Non-negotiables
For any **API-shaped workflow** (webhook trigger paired with `Respond to Webhook`):
1. **Every fallible node's error output is wired, and both paths end at a `Respond to Webhook`.** No hanging error branches, or the caller would see a timeout. "Fallible" = HTTP, DB, third-party API, file operation, anything that throws.
2. **Status code maps to cause.** Caller's fault → 4xx, your fault → 5xx. A 200 default on an error path produces silent failure: caller thinks success, processes empty data.
For any **unattended workflow** (scheduled, cron, queue-driven, agent tool):View the complete source on GitHubn8n-expressions-official
When your agent uses it
Use when writing or reviewing n8n expressions (`{{...}}` syntax), `$json` / `$node` references, Luxon date code, or expression errors. Triggers on `{{}}`, `$json`, `$node`, `$input`, `DateTime`, `Luxon`, "expression error", "evaluating", "format date", "transform field", or any node-parameter assignment.
What it loads into context
Frontmatter
93 tokensAlways available to the agent
SKILL.md
5,044 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiable
- Strong defaults
- Why reference by node name (`$('Name').item.json.x`) over `$json.x`
- The Set-node antipattern
- What expressions can do
- Useful idioms
- What expressions CAN'T do
- Decision: expression, Edit Fields, or Code node?
- The "extra node" smell
- Anti-patterns
Files
SKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytesSKILL.mdcore21,281 bytes
Read SKILL.md
# n8n Expressions
n8n's expression language is JavaScript embedded in `{{...}}` blocks. They run synchronously, on a single item at a time (`$json`), with access to upstream nodes (`$('Name')`), Luxon for dates, and most of native JS.
## Non-negotiable
**Reference data by node name, not `$json`.** Use `$('Node Name').item.json.field` (or `.first().json.field`). `$json` works but breaks when any node clears item context (Aggregate, Code with Run for All, branching merges) or a refactor adds an intermediate. Failures are silent, and downstream gets the wrong data with no error. Node-name references are stable.
## Strong defaults
- **No Set nodes whose only purpose is to feed a single downstream field.** Inline the expression at the consumer. Set earns its place when 2+ consumers read the same derived value, the derivation is non-trivial, or the Set is a sub-workflow's final return-shaper. See "The Set-node antipattern" below.
- **Luxon for dates, not the DateTime node.** Date math, formatting, and parsing all work in expressions: `{{ DateTime.now().minus({ days: 7 }).toISO() }}`. The DateTime node is more visible on the canvas for beginner human users, but avoid it unless the user specifically asks for it.
- **Expressions over extra nodes generally.** Build the email body in the email node's body field, and compute the URL in the HTTP Request's URL field. Reach for an extra node when the transform is reused or the *primary purpose* of a section.
- **Multi-line expressions are indented and commented.** When an expression spans more than one line, format it like real code. Most n8n users are not coders, so explain the code with concise inline commentsView the complete source on GitHubn8n-extending-mcp-official
When your agent uses it
Use when you want to expose an n8n workflow as a tool the coding agent can call. Two cases. (1) Wrap n8n API capabilities the MCP doesn't natively expose: folder deletion, project create/rename, tag rename/delete, instance metadata, credential creation. (2) Expose a general-purpose workflow as an agent tool: a workflow that calls a third-party API, runs business logic, or does any task you want the agent to invoke. Triggers on "expose as MCP tool", "build a tool for my agent", "I need to know X" where X isn't an MCP tool, "delete folder", "rename tag", or any capability gap.
What it loads into context
Frontmatter
159 tokensAlways available to the agent
SKILL.md
2,007 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to reach for this
- Non-negotiables
- Protocol
- The pattern, end to end
- Common case-1 wrappers (missing MCP capabilities)
- How the agent invokes a tool workflow
- Anti-patterns
Files
SKILL.mdcore8,719 bytesSKILL.mdcore8,719 bytesSKILL.mdcore8,719 bytes
Read SKILL.md
<!-- TEMPORARY: update whenever n8n mcp capacities are added. a lot of listed functionalities missing are coming soon -->
# n8n Extending MCP
Any n8n workflow with MCP access enabled becomes a tool the coding agent can call by name. Two common cases:
1. **Wrap n8n capabilities the MCP doesn't expose.** The MCP covers workflow CRUD, validation, execution, data tables, credential listing, execution search, folder create/rename/move and folder/project listing, tag listing and attach/detach. Still missing: folder deletion, project create/rename, tag rename/delete, instance metadata, credential creation. Build a workflow that hits the n8n API and exposes the result as an agent tool.
2. **Expose a general-purpose workflow as a tool.** A workflow that has nothing to do with n8n itself (calls a third-party API, runs internal business logic, looks something up in a private system) can be MCP-callable. Lets the agent invoke real operations during a coding session.
The MCP calls your workflow as if it were a native tool: input from the `Execute Workflow Trigger`, output from the workflow's last node.
## When to reach for this
Case 1 (wrap n8n capability):
View the complete source on GitHubn8n-loops-official
When your agent uses it
Use when working with multi-item data, batches, paginated APIs, rate-limited APIs, fan-out across multiple branches, anything that needs to "do this for each", or any time the user mentions looping, iterating, batching, paging, parallelism, or "loop over items". Triggers on "loop", "iterate", "for each", "batch", "page through", "paginate", "rate limit", "process all", "fan-out", "parallel branches", "concurrency", or any node that should run once vs once-per-item.
What it loads into context
Frontmatter
126 tokensAlways available to the agent
SKILL.md
3,196 tokensWhen the skill is activated
Reference documents
5,166 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The model: items are an array
- Non-negotiable
- Strong defaults
- Decision tree: which mechanism do I need?
- `executeOnce`: the single-fire setting
- When the implicit loop bites you
- When to reach for `Loop Over Items`
- When NOT to reach for `Loop Over Items`
- When to reach for HTTP pagination
- Sub-workflow recursion
- Reference files
- Anti-patterns
Files
SKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesSKILL.mdcore13,605 bytesreferences/HTTP_PAGINATION.mddoc9,649 bytesreferences/LOOP_OVER_ITEMS.mddoc12,290 bytes
Read SKILL.md
# n8n Loops
Three meanings of "loop" map to three mechanisms:
1. **"Run this node for every item."** Default. Most nodes loop automatically, so do nothing.
2. **"Run this node *once* with all items, not once per item."** The `executeOnce` setting (single boolean).
3. **"Process items in explicit batches with control flow between iterations."** The `Loop Over Items` node (formerly `Split In Batches`).
For paginated APIs, the HTTP Request node has built-in pagination. Almost always preferable to a hand-built page-counting loop.
## The model: items are an array
Data flows between nodes as an array of items, each `{ json: {...}, binary?: {...} }`. 50 items = 50-entry array.
View the complete source on GitHubn8n-node-configuration-official
When your agent uses it
Use when configuring any n8n node: HTTP, webhooks, database, comms (Slack/Gmail/Discord), AI, triggers, Merge, anything. Triggers on any node-builder call (`node(...)`, `trigger(...)`, `tool(...)`, `memory(...)`, `languageModel(...)`, `ifElse(...)`, `merge(...)`, etc.), configuring a parameter, `useDataOfInput`, `numberOfInputs`, fan-in convergence, or any node-specific debugging.
What it loads into context
Frontmatter
111 tokensAlways available to the agent
SKILL.md
1,800 tokensWhen the skill is activated
Reference documents
7,427 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiable
- Strong defaults
- The flow for any new node
- Operation-aware configuration
- Property dependencies: the subtle trap
- Reference files
- Anti-patterns
Files
SKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesSKILL.mdcore7,940 bytesreferences/AI_NODES.mddoc3,273 bytesreferences/COMMS_NODES.mddoc6,294 bytesreferences/DATABASE_NODES.mddoc7,580 bytesreferences/HTTP_NODES.mddoc3,056 bytesreferences/MERGE_NODE.mddoc4,245 bytesreferences/SWITCH_FALLBACK.mddoc904 bytesreferences/TRIGGER_NODES.mddoc1,793 bytesreferences/WEBHOOK_NODES.mddoc3,024 bytes
Read SKILL.md
# n8n Node Configuration
Each n8n node has its own parameter shape, often with conditional fields (parameter X only matters when parameter Y has value Z). Shapes evolve between versions. Guessing produces cryptic validation errors.
Don't guess, use the `get_node_types` tool.
## Non-negotiable
**Call `get_node_types` with discriminators (resource, operation, mode) before configuring a node.** Without discriminators you get the generic shape, missing operation-specific parameters and required fields. Build against the exact shape. Don't guess from memory.
**The live `get_node_types` output is the canonical parameter shape.** The references in this skill cover patterns, gotchas, security rules, and decision-making (when to use which operation, why credentials over text fields, engine retry caps, etc.) not parameter names or field structures. If a reference example conflicts with what `get_node_types` returns, trust the tool. Markdown drifts; the type def is generated from the live source.
**Never guess resource-locator or load-options values.** When `get_node_types` shows a param with `@searchListMethod` or `@loadOptionsMethod` (Slack channels, Sheets tabs/docs, DB tables/columns, model lists, labels), resolve the real value with `explore_node_resources` (pass a `credentialId` from `list_credentials`) and use a returned `value`. If you already know the exact ID, use it; if several match and intent is ambiguous, ask the user. An invented ID validates but points at nothing. Exception: `toolWorkflow.workflowId` has no search method, resolve it via `search_workflows` and use `mode: 'id'`.
View the complete source on GitHubn8n-subworkflows-official
When your agent uses it
Use when building anything multi-step, anything that looks repeatable, anything the user mentions reusing, or any workflow with more than ~10 nodes. Triggers on "reuse", "I do this in another workflow", "extract", "modular", "shared logic", "subworkflow", multi-step builds, or any task that mentions logic the user has built before.
What it loads into context
Frontmatter
88 tokensAlways available to the agent
SKILL.md
5,425 tokensWhen the skill is activated
Reference documents
2,944 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiables
- Strong defaults
- Decision tree: should this be a sub-workflow?
- Stateless vs. stateful sub-workflows
- When to extract
- Linear, long workflows are fine when most of the work is in sub-workflows
- When NOT to extract
- Search-before-build protocol
- Sub-workflow inputs and outputs
- Calling sub-workflows: `Execute Workflow` modes
- Reference files
- Anti-patterns
Files
SKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesSKILL.mdcore23,699 bytesreferences/NAMING_AND_DISCOVERY.mddoc6,580 bytesreferences/SUBWORKFLOW_PATTERNS.mddoc6,032 bytes
Read SKILL.md
# n8n Sub-workflows
Sub-workflows are reusable functions. The `Execute Workflow Trigger` declares input parameters, the body does work, the last node returns output. Callers invoke it like any other node.
That framing opens up the function-shaped wins: encapsulation, reuse, testability, replaceability. It's the primary reuse mechanism in n8n, and unfortunately underused.
Without sub-workflows, the same logic gets duplicated across workflows. Bug fixes happen in multiple places, one gets missed, and "identical" copies drift.
## Non-negotiables
1. **Search before you build.** Before writing logic that handles a generic problem, check if a sub-workflow already exists. Filter by tag (`search_workflows({ tags: ['subworkflow'] })`, a domain tag) and/or keyword (`query: '<keyword>'`). Tags are the discovery mechanism (n8n 2.27.0+).
2. **`Execute Workflow Trigger` uses "Define Below" with typed fields, not passthrough.** Define Below is the only mode that lets agent tools (`fromAi`) and structured callers pass values in. Two exceptions: (a) the sub-workflow specifically needs to receive binary (then it can't be wired as an agent tool directly), or (b) the sub-workflow takes no inputs at all (Define Below requires at least one field). See "Sub-workflow inputs and outputs" below.
## Strong defaultsView the complete source on GitHubn8n-workflow-lifecycle-official
When your agent uses it
Use when starting, designing, organizing, finishing, or shipping an n8n workflow. Covers visual layout (sticky notes), descriptions that capture the *why*, node names, validation, testing, folders/projects, and publishing. Triggers on create_workflow_from_code, update_workflow, validate_workflow, publish_workflow, archive_workflow, "design", "lay out", "organize", "structure", "sticky", "describe this workflow", "ship", "deploy", "publish", "name this workflow", or any folder/project organization request.
What it loads into context
Frontmatter
127 tokensAlways available to the agent
SKILL.md
4,515 tokensWhen the skill is activated
Reference documents
20,334 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The six stages
- Non-negotiables
- Strong defaults
- Validation isn't enough
- Execution model
- Naming conventions
- Readability: descriptions, node groups, sticky notes, conventions
- Folder management
- Per-workflow MCP access
- User-side wire-up (part of stage 3)
- Handoff: production handoff (stage 6)
- Reference files
- Anti-patterns
Files
SKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesSKILL.mdcore19,582 bytesreferences/FOLDER_LIMITATIONS.mddoc1,716 bytesreferences/MCP_ACCESS_PER_WORKFLOW.mddoc1,641 bytesreferences/NAMING_CONVENTIONS.mddoc5,709 bytesreferences/NODE_GROUPS.mddoc5,378 bytesreferences/REVIEW_CHECKLIST.mddoc39,432 bytesreferences/STICKY_NOTES.mddoc9,575 bytesreferences/TESTING.mddoc8,179 bytesreferences/VALIDATION_CHECKLIST.mddoc10,942 bytes
Read SKILL.md
# n8n Workflow Lifecycle
## The six stages
1. **PLAN.** Gather requirements, ask clarifying questions, search for existing workflows / sub-workflows that already do this.
2. **BUILD.** Write SDK code (with skills: subworkflows, node-config, expressions, code-nodes; readability section below). Use `validate_node_config` as a side-channel for iteration, debugging, or small single-node edits: clean per-parameter errors without full-graph noise. Not a replacement for `validate_workflow` in VALIDATE.
3. **VALIDATE.** `validate_workflow` + `get_workflow_details` for connections, then have the user verify per-node credentials and create anything you couldn't (missing credentials, folders, etc).
4. **TEST.** `test_workflow` with `prepare_workflow_pin_data`; iterate until output matches intent.
5. **PUBLISH.** `publish_workflow` only after stages 3 and 4 are clean.
6. **HANDOFF.** Production handoff: how to trigger it, what it returns, what to watch, what they should know to use it well.
Skipping a stage produces workflows that look done but break in production, or solve the wrong problem entirely. Three most common skips:
- **Build before plan.** "User asked for X, I'll start coding" without confirming what X means, whether the same logic already exists as a sub-workflow, or which folder/project it belongs in. Cheaper to ask one clarifying question than to rebuild after.View the complete source on GitHubusing-n8n-skills-official
When your agent uses it
Use when working with n8n workflows in any capacity. The always-on protocol for the n8n-skills plugin, loaded by the SessionStart hook every session. Routes to the right skill, summarizes every n8n MCP tool (closing the deferred-description gap), and lists the cross-cutting rules.
What it loads into context
Frontmatter
75 tokensAlways available to the agent
SKILL.md
6,512 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiables
- Lean on skills, not training data
- Strong defaults (each skill owns its exceptions)
- Red flags: thoughts that mean STOP and invoke
- Skill index
- n8n MCP tools (compact reference)
- The protocol, in order
- Reporting skills used
- Reviewing existing workflows or projects
- When in doubt
Files
SKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytesSKILL.mdcore27,614 bytes
Read SKILL.md
# Using n8n Skills
The official n8n MCP evolves over time, so tool names, parameters, and default behaviors can drift between versions. When you spot drift (a tool a skill names doesn't exist, a parameter shape doesn't match what `get_node_types` returns, or behavior differs from what the skill describes), suggest updating the skill and n8n instance to the latest stable.
## Non-negotiables
Three rules with no exceptions. Violating any produces workflows that look right but break in production.
1. **Invoke the relevant skill before any n8n action.** Not just MCP tool calls. Before writing SDK code, configuring a node, designing a workflow, wiring a connection, building an agent, or handling errors: invoke the matching skill via the Skill tool. This document is a router. The skill body has the actual rules. The PreToolUse hooks remind you on the highest-impact MCP calls if a plugin is installed. The responsibility is yours on everything else. Err on the side of reading extra documents.
2. **Validate AND verify before publishing.** `validate_workflow` before `publish_workflow`, and `get_workflow_details` after every create or update to check the `connections` object. Validation alone misses many issues documented in the skills that will silently break workflows.
3. **Tokens/secrets never go in text fields.** Always use the n8n credential system. If no native node exists, configure HTTP Request with the official credential type. See `n8n-credentials-and-security-official`.
## Lean on skills, not training data
View the complete source on GitHubSkills included
- n8n-agents-official
- n8n-ai-nodes-official
- n8n-binary-and-data-official
- n8n-code-nodes-official
- n8n-credentials-and-security-official
- n8n-data-tables-official
- n8n-debugging-official
- n8n-error-handling-official
- n8n-expressions-official
- n8n-extending-mcp-official
- n8n-loops-official
- n8n-node-configuration-official
- n8n-subworkflows-official
- n8n-workflow-lifecycle-official
- using-n8n-skills-official
Repository facts
- License
- Apache-2.0
- Created
- Apr 20, 2026
- Last pushed
- Oct 30, 2026
- Forks
- 90
- Open issues
- 16
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 286 notes
skills/n8n-agents-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-ai-nodes-official/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 1 dangerous shell commandin 1 file: hooks/session-start.sh:36
- 69 network referencesin 18 files: .claude-plugin/plugin.json:5 n8n-loops-official/references/HTTP_PAGINATION.md:16 n8n-binary-and-data-official/references/AGENT_TOOL_BINARY.md:181 and 15 more
- No hidden or obfuscated text
- No instruction overrides
- 11 executable scriptsin 11 files: hooks/post-tool-use/validate-workflow.sh:1 hooks/pre-tool-use/agent-build.sh:1 hooks/pre-tool-use/create-workflow.sh:1 and 8 more
- No requests to vote in Hot
Show all 85 signals by file
.claude-plugin/marketplace.json
.claude-plugin/plugin.json
- Network accessline 5
"author": { "name": "n8n", "url": "https://n8n.io" - Network accessline 6
"name": "n8n", "url": "https://n8n.io" }, - Network accessline 7
"url": "https://n8n.io" - Network accessline 8
}, "homepage": "https://github.com/n8n-io/skills", "repository": "https://github.com/n8n-io/skills", - Network accessline 9
"homepage": "https://github.com/n8n-io/skills", - Network accessline 10
"repository": "https://github.com/n8n-io/skills", - Network accessline 14
"n8n_url": { "type": "string", "title": "n8n Base Url (example: https://sub.domain.com)", - Network accessline 15
"type": "string", "title": "n8n Base Url (example: https://sub.domain.com)", "description": "Your instance URL only, no path and no trailing slash (e.g. https://sub.domain.com). We add the MCP path for you. Requires n8n 2.2.0+ w - Network accessline 16
"title": "n8n Base Url (example: https://sub.domain.com)", - Network accessline 17
"description": "Your instance URL only, no path and no trailing slash (e.g. https://sub.domain.com). We add the MCP path for you. Requires n8n 2.2.0+ with Settings > Instance-level MCP enabled.",
hooks/post-tool-use/validate-workflow.sh
- Executable scriptline 1
#!/usr/bin/env bash
hooks/pre-tool-use/agent-build.sh
- Executable scriptline 1
#!/usr/bin/env bash
hooks/pre-tool-use/create-workflow.sh
- Executable scriptline 1
#!/usr/bin/env bash
hooks/pre-tool-use/execute-workflow.sh
- Executable scriptline 1
#!/usr/bin/env bash
hooks/pre-tool-use/get-node.sh
- Executable scriptline 1
#!/usr/bin/env bash
hooks/pre-tool-use/test-workflow.sh
- Executable scriptline 1
#!/usr/bin/env bash
hooks/pre-tool-use/update-workflow.sh
- Executable scriptline 1
#!/usr/bin/env bash
hooks/pre-tool-use/validate-workflow.sh
- Executable scriptline 1
#!/usr/bin/env bash
hooks/session-start.sh
skills/n8n-agents-official/references/TOOLS.md
- Network accessline 23
"nodeParameters": { "method": "GET", "url": "https://httpbin.org/get", - Network accessline 24
"method": "GET", "url": "https://httpbin.org/get", "sendQuery": true, - Network accessline 25
"url": "https://httpbin.org/get", - Network accessline 69
{ "name": "github", "url": "https://api.githubcopilot.com/mcp/", - Network accessline 70
"name": "github", "url": "https://api.githubcopilot.com/mcp/",
skills/n8n-ai-nodes-official/references/RAG.md
- Network accessline 26
n8n ships a starter template that demonstrates the in-memory pattern end-to-end. See [n8n's RAG docs](https://docs.n8n.io/advanced-ai/rag-in-n8n/).
skills/n8n-ai-nodes-official/references/SUBWORKFLOW_AS_TOOL.md
- Network accessline 151
{ "imageUrl": "https://...", "imageKey": "abc123.png" }
skills/n8n-ai-nodes-official/references/examples/agent-core.json
- Network accessline 6
"hasOutputParser": true, "options": { "systemMessage": "=You are a personal AI assistant. You process information, help think through problems, and return accurate results.\n\nThe current time is {{ $now.format('DDDD TTTT' - Network accessline 7
"options": { "systemMessage": "=You are a personal AI assistant. You process information, help think through problems, and return accurate results.\n\nThe current time is {{ $now.format('DDDD TTTT') }}\n\n## Core identity\n\nYou a - Network accessline 8
"systemMessage": "=You are a personal AI assistant. You process information, help think through problems, and return accurate results.\n\nThe current time is {{ $now.format('DDDD TTTT') }}\n\n## Core identity\n\nYou are a tool, a word calcu
skills/n8n-binary-and-data-official/references/AGENT_TOOL_BINARY.md
- Network accessline 181
"ok": true, "file_id": "abc123", "url": "https://storage.example.com/files/abc123", - Network accessline 182
"file_id": "abc123", "url": "https://storage.example.com/files/abc123", "mime_type": "application/pdf", - Network accessline 183
"url": "https://storage.example.com/files/abc123", - Network accessline 193
## Display Protocol ALWAYS display generated images using inline markdown:  - Network accessline 195
 - Network accessline 197
For VIDEOS, share as a plain markdown link, NOT a video embed: [Descriptive video title](https://videourl.com) - Network accessline 198
[Descriptive video title](https://videourl.com)
skills/n8n-binary-and-data-official/references/CDN_REQUIREMENT.md
- Network accessline 14
<img src="https://cdn.example.com/img/abc123.png"> - Network accessline 23
1. **Recommended: a real CDN / object storage service.** Cloudflare R2 (`https://pub-xxxxx.r2.dev/<key>`), AWS S3 + CloudFront (`https://d1234.cloudfront.net/<key>`), Google Cloud Storage, Azure Blob, Backblaze B2, Vercel Blob, Supabase Sto - Network accessline 44
binaryPropertyName: 'data' ↓ [Set: { image_url: 'https://pub-<id>.r2.dev/<key>' }] - Network accessline 45
↓ [Set: { image_url: 'https://pub-<id>.r2.dev/<key>' }] ↓ - Network accessline 46
[Set: { image_url: 'https://pub-<id>.r2.dev/<key>' }]
skills/n8n-code-nodes-official/references/ARROW_FUNCTIONS_IN_EDIT_FIELDS.md
skills/n8n-credentials-and-security-official/references/CUSTOM_CREDENTIALS.md
- Access to secretsline 15
[Credential-related source omitted]
skills/n8n-credentials-and-security-official/references/FINDING_API_DOCS.md
- Network accessline 23
Base URL: https://api.acme.com/v1 - Access to secretsline 55
[Credential-related source omitted] - Network accessline 103
> "Acme's API uses Bearer auth at `https://api.acme.com/v1`. To list widgets, `GET /widgets` with optional `?limit=N&cursor=X`. Cursor-based pagination via `next_cursor`. Rate limit: 100 req/min with 429 responses.
skills/n8n-credentials-and-security-official/references/HTTP_REQUEST_WITH_AUTH.md
- Access to secretsline 21
[Credential-related source omitted] - Network accessline 37
parameters: { method: 'GET', url: 'https://api.acme.com/v1/widgets', - Network accessline 38
method: 'GET', url: 'https://api.acme.com/v1/widgets', authentication: 'genericCredentialType', - Network accessline 39
url: 'https://api.acme.com/v1/widgets', - Network accessline 59
[Credential-related source omitted] - Network accessline 60
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted]
skills/n8n-debugging-official/SKILL.md
- Network accessline 142
- Have the user post a question on https://community.n8n.io
skills/n8n-debugging-official/references/FETCHING_N8N_SOURCE.md
skills/n8n-error-handling-official/references/examples/validation-subworkflow-usage.ts
- Executable scriptline 1
Executable file
skills/n8n-error-handling-official/references/examples/validation-subworkflow.ts
- Executable scriptline 1
Executable file
skills/n8n-extending-mcp-official/SKILL.md
- Network accessline 72
> **n8n REST API reference:** https://docs.n8n.io/api/api-reference/. Start here for any case-1 wrap. Find the endpoint, then wrap it with an HTTP Request node + `n8nApi` credential. Self-hosted instances expose this at `<instance-url>/api/ - Network accessline 76
The MCP now creates, renames, and moves folders natively (`create_folder`, `update_folder`, `move_workflows_to_folder`), so those no longer need wrapping. Still missing: **deleting** a folder, and creating/renaming **projects**. n8n's REST
skills/n8n-loops-official/references/HTTP_PAGINATION.md
- Network accessline 16
parameters: { method: 'GET', url: 'https://api.example.com/items', - Network accessline 17
method: 'GET', url: 'https://api.example.com/items', options: { - Network accessline 18
url: 'https://api.example.com/items', - Network accessline 172
{ method: 'GET', url: 'https://api.github.com/repos/{owner}/{repo}/issues', - Network accessline 173
method: 'GET', url: 'https://api.github.com/repos/{owner}/{repo}/issues', sendQuery: true, - Network accessline 174
url: 'https://api.github.com/repos/{owner}/{repo}/issues', - Network accessline 202
{ method: 'GET', url: 'https://api.stripe.com/v1/customers', - Network accessline 203
method: 'GET', url: 'https://api.stripe.com/v1/customers', sendQuery: true, - Network accessline 204
url: 'https://api.stripe.com/v1/customers',
skills/n8n-loops-official/references/LOOP_OVER_ITEMS.md
- Network accessline 135
parameters: { method: 'POST', url: 'https://api.example.com/bulk', - Network accessline 136
method: 'POST', url: 'https://api.example.com/bulk', sendBody: true, - Network accessline 137
url: 'https://api.example.com/bulk', - Network accessline 186
config: { parameters: { url: '=https://api.example.com/jobs/{{ $("Start Job").item.json.job_id }}', - Network accessline 187
parameters: { url: '=https://api.example.com/jobs/{{ $("Start Job").item.json.job_id }}', }, - Network accessline 188
url: '=https://api.example.com/jobs/{{ $("Start Job").item.json.job_id }}',
skills/n8n-node-configuration-official/references/MERGE_NODE.md
- Network accessline 85
Pre-2.21.4 this threw `MERGE_SINGLE_INPUT`: the branch handler hardcoded input index 0 and ignored the `.input(n)` selector. Since 2.21.4 ([n8n#29716](https://github.com/n8n-io/n8n/pull/29716)) the handler respects the selector and wires th
skills/n8n-workflow-lifecycle-official/SKILL.md
- Network accessline 139
- **How it triggers.** Webhook URL (live now that it's published), schedule cadence + timezone, manual trigger button, sub-workflow caller, whichever applies. For webhooks, hand them the URL. - **What it returns / where the data goes.** One - Network accessline 140
- **What it returns / where the data goes.** One sentence. "Writes new rows to the `customers` table," "responds JSON to the caller," "fires the on-call Slack channel." - **How to invoke it for real, with an example.** "Hit the webhook with - Network accessline 141
- **How to invoke it for real, with an example.** "Hit the webhook with `curl -X POST <url> -d '{...}'`," "trigger manually from the UI," "wait until 09:00 UTC for the first scheduled run."
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 69 facts
- Executable script in code of a file that runshooks/post-tool-use/validate-workflow.sh:1High confidence
- Executable script in code of a file that runshooks/pre-tool-use/agent-build.sh:1High confidence
- Executable script in code of a file that runshooks/pre-tool-use/create-workflow.sh:1High confidence
- Executable script in code of a file that runshooks/pre-tool-use/execute-workflow.sh:1High confidence
- Executable script in code of a file that runshooks/pre-tool-use/get-node.sh:1High confidence
- Executable script in code of a file that runshooks/pre-tool-use/test-workflow.sh:1High confidence
- Executable script in code of a file that runshooks/pre-tool-use/update-workflow.sh:1High confidence
- Executable script in code of a file that runshooks/pre-tool-use/validate-workflow.sh:1High confidence
- Executable script in code of a file that runshooks/session-start.sh:1High confidence
- Dangerous shell operation in code of a file that runshooks/session-start.sh:36High confidence
- Network access in code of documentationn8n-agents-official/references/TOOLS.md:23Low confidence
- Network access in code of documentationn8n-agents-official/references/TOOLS.md:24Low confidence
- Network access in code of documentationn8n-agents-official/references/TOOLS.md:25Low confidence
- Network access in code of documentationn8n-agents-official/references/TOOLS.md:69Low confidence
- Network access in code of documentationn8n-agents-official/references/TOOLS.md:70Low confidence
- Network access in prose of documentationn8n-ai-nodes-official/references/RAG.md:26Low confidence
- Network access in code of documentationn8n-ai-nodes-official/references/SUBWORKFLOW_AS_TOOL.md:151Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/AGENT_TOOL_BINARY.md:181Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/AGENT_TOOL_BINARY.md:182Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/AGENT_TOOL_BINARY.md:183Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/AGENT_TOOL_BINARY.md:193Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/AGENT_TOOL_BINARY.md:195Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/AGENT_TOOL_BINARY.md:197Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/AGENT_TOOL_BINARY.md:198Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/CDN_REQUIREMENT.md:14Low confidence
- Network access in prose of documentationn8n-binary-and-data-official/references/CDN_REQUIREMENT.md:23Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/CDN_REQUIREMENT.md:44Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/CDN_REQUIREMENT.md:45Low confidence
- Network access in code of documentationn8n-binary-and-data-official/references/CDN_REQUIREMENT.md:46Low confidence
- Network access in code of documentationn8n-code-nodes-official/references/ARROW_FUNCTIONS_IN_EDIT_FIELDS.md:227Low confidence
- Network access in code of documentationn8n-code-nodes-official/references/ARROW_FUNCTIONS_IN_EDIT_FIELDS.md:228Low confidence
- Network access in code of documentationn8n-code-nodes-official/references/ARROW_FUNCTIONS_IN_EDIT_FIELDS.md:229Low confidence
- Access to secrets in prose of documentationn8n-credentials-and-security-official/references/CUSTOM_CREDENTIALS.md:15Low confidence
- Network access in code of documentationn8n-credentials-and-security-official/references/FINDING_API_DOCS.md:23Low confidence
- Access to secrets in prose of documentationn8n-credentials-and-security-official/references/FINDING_API_DOCS.md:55Low confidence
- Network access in prose of documentationn8n-credentials-and-security-official/references/FINDING_API_DOCS.md:103Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuen8n-credentials-and-security-official/references/HTTP_REQUEST_WITH_AUTH.md:21Low confidence
- Network access in code of documentationn8n-credentials-and-security-official/references/HTTP_REQUEST_WITH_AUTH.md:37Low confidence
- Network access in code of documentationn8n-credentials-and-security-official/references/HTTP_REQUEST_WITH_AUTH.md:38Low confidence
- Network access in code of documentationn8n-credentials-and-security-official/references/HTTP_REQUEST_WITH_AUTH.md:39Low confidence
- Network access in code of documentationn8n-credentials-and-security-official/references/HTTP_REQUEST_WITH_AUTH.md:59Low confidence
- Network access in code of documentationn8n-credentials-and-security-official/references/HTTP_REQUEST_WITH_AUTH.md:60Low confidence
- Access to secrets in code of documentationn8n-credentials-and-security-official/references/HTTP_REQUEST_WITH_AUTH.md:60Low confidence
- Network access in prose of the SKILL.mdn8n-debugging-official/SKILL.md:142Low confidence
- Network access in code of documentationn8n-debugging-official/references/FETCHING_N8N_SOURCE.md:8Low confidence
- Network access in prose of documentationn8n-debugging-official/references/FETCHING_N8N_SOURCE.md:101Low confidence
- Executable script in code of a file that runsn8n-error-handling-official/references/examples/validation-subworkflow-usage.ts:1High confidence
- Executable script in code of a file that runsn8n-error-handling-official/references/examples/validation-subworkflow.ts:1High confidence
- Network access in prose of the SKILL.mdn8n-extending-mcp-official/SKILL.md:72Low confidence
- Network access in prose of the SKILL.mdn8n-extending-mcp-official/SKILL.md:76Low confidence
and 19 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/n8n-agents-official/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/n8n-agents-official/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/n8n-agents-official/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/n8n-agents-official/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/n8n-agents-official/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.