#217 by GitHub stars
czlonkowski/n8n-skills
n8n skillset for Claude Code to build flawless n8n workflows
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/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-binary-and-data/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-code-javascript/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-code-python/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-code-tool/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-error-handling/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-expression-syntax/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-mcp-tools-expert/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-multi-instance/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-node-configuration/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-self-hosting/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-subworkflows/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-validation-expert/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/n8n-workflow-patterns/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
skills/using-n8n-mcp-skills/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
e037563e1017 → e037563e1017
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → e037563e1017
No earlier version was observed for comparison.
Verified commit e037563e101749e630e6688d121d04529fe6ee7b
git clone --filter=blob:none --no-checkout https://github.com/czlonkowski/n8n-skills.git .hotskills/czlonkowski-n8n-skills && git -C .hotskills/czlonkowski-n8n-skills checkout --detach e037563e101749e630e6688d121d04529fe6ee7b
# Copy each selected skill directory from .hotskills/czlonkowski-n8n-skills into .claude/skills/<skill-name>/Heat
6.4- Star growth, last 7 daysAhead of 77% of tracked repositories
- Star growth, last 24 hoursAhead of 70% of tracked repositories
- Rank movement, last 7 daysAhead of 64% of tracked repositories
- Commits, last 30 daysAhead of 77% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- n8n-agents
skills/n8n-agents - n8n-binary-and-data
skills/n8n-binary-and-data - n8n-code-javascript
skills/n8n-code-javascript - n8n-code-python
skills/n8n-code-python - n8n-code-tool
skills/n8n-code-tool - n8n-error-handling
skills/n8n-error-handling - n8n-expression-syntax
skills/n8n-expression-syntax - n8n-mcp-tools-expert
skills/n8n-mcp-tools-expert - n8n-multi-instance
skills/n8n-multi-instance - n8n-node-configuration
skills/n8n-node-configuration - n8n-self-hosting
skills/n8n-self-hosting - n8n-subworkflows
skills/n8n-subworkflows - n8n-validation-expert
skills/n8n-validation-expert - n8n-workflow-patterns
skills/n8n-workflow-patterns - using-n8n-mcp-skills
skills/using-n8n-mcp-skills
How it works
n8n-agents
When your agent uses it
Design n8n AI agents the right way. Use when building or editing any @n8n/n8n-nodes-langchain.* AI node — an AI Agent, LLM chain, Text Classifier, or Information Extractor — and whenever the user mentions AI agents, LLM with tools, tool calling, $fromAI, system prompts, agent memory, sessionId, structured/JSON output, output parser, RAG, vector store, a chat assistant/bot, or human-in-the-loop review. Covers Agent-vs-chain-vs-classifier choice, the model/memory/tools/outputParser slots, tool names/descriptions as prompt, structured output with autoFix, memory, RAG, human review, and chat topologies.
What it loads into context
Frontmatter
160 tokensAlways available to the agent
SKILL.md
6,646 tokensWhen the skill is activated
Reference documents
265,484 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Pick the right node first
- The sub-node pattern
- Two non-negotiables
- Strong defaults
- The four tool types
- System prompt vs tool description
- Structured output: when and how
- Memory: brief mental model
- Binary and the agent boundary
- Human review (gate destructive tools)
- Chat agents (Slack, Discord, Teams, Telegram)
- Persisted n8n Agents (n8n_manage_agents)
- RAG (retrieval augmented generation)
- Reference files
- Anti-patterns
- What's NOT available via the community MCP
- Integration with other skills
- Quick reference checklist
Scripts executed separately
../../hooks/post-tool-use/validate-workflow.sh../../hooks/pre-tool-use/create-workflow.sh../../hooks/pre-tool-use/get-node.sh../../hooks/pre-tool-use/instances.sh../../hooks/pre-tool-use/manage-credentials.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../n8n-self-hosting/assets/init-data.sh
Files
../../.claude-plugin/marketplace.jsonasset2,010 bytes../../.claude-plugin/marketplace.jsonasset2,010 bytes../../.claude-plugin/plugin.jsonasset550 bytes../../hooks/hooks.jsonasset2,267 bytes../../hooks/post-tool-use/validate-workflow.shruns6,641 bytes../../hooks/pre-tool-use/create-workflow.shruns1,503 bytes../../hooks/pre-tool-use/get-node.shruns7,070 bytes../../hooks/pre-tool-use/instances.shruns1,583 bytes../../hooks/pre-tool-use/manage-credentials.shruns1,360 bytes../../hooks/pre-tool-use/test-workflow.shruns1,006 bytes../../hooks/pre-tool-use/update-workflow.shruns1,593 bytes../../hooks/pre-tool-use/validate-workflow.shruns1,182 bytes../../hooks/session-start.shruns2,793 bytesCHAT_AGENT_PATTERNS.mddoc13,047 bytesEXAMPLES.mddoc19,766 bytesHUMAN_REVIEW.mddoc9,442 bytesMEMORY.mddoc7,865 bytesRAG.mddoc6,513 bytesREADME.mddoc8,361 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSKILL.mdcore27,308 bytesSTRUCTURED_OUTPUT.mddoc6,950 bytesSUBWORKFLOW_AS_TOOL.mddoc9,472 bytesSYSTEM_PROMPT.mddoc6,939 bytesTOOLS.mddoc11,357 bytes../n8n-binary-and-data/AGENT_TOOL_BINARY.mddoc14,807 bytes../n8n-binary-and-data/BINARY_BASICS.mddoc9,323 bytes../n8n-binary-and-data/CDN_REQUIREMENT.mddoc6,263 bytes../n8n-binary-and-data/MERGE_FOR_CONTEXT.mddoc7,337 bytes../n8n-binary-and-data/README.mddoc8,578 bytes../n8n-binary-and-data/SKILL.mddoc15,901 bytes../n8n-code-javascript/BUILTIN_FUNCTIONS.mddoc24,049 bytes../n8n-code-javascript/COMMON_PATTERNS.mddoc33,650 bytes../n8n-code-javascript/DATA_ACCESS.mddoc22,732 bytes../n8n-code-javascript/ERROR_PATTERNS.mddoc23,932 bytes../n8n-code-javascript/README.mddoc10,075 bytes../n8n-code-javascript/SKILL.mddoc22,951 bytes../n8n-code-python/COMMON_PATTERNS.mddoc8,425 bytes../n8n-code-python/README.mddoc3,424 bytes../n8n-code-python/SKILL.mddoc11,073 bytes../n8n-code-tool/ERROR_PATTERNS.mddoc6,832 bytes../n8n-code-tool/INPUT_SCHEMA.mddoc6,360 bytes../n8n-code-tool/README.mddoc6,922 bytes../n8n-code-tool/SKILL.mddoc16,247 bytes../n8n-error-handling/API_WORKFLOWS.mddoc17,277 bytes../n8n-error-handling/ERROR_WORKFLOWS.mddoc8,724 bytes../n8n-error-handling/NODE_ERROR_OUTPUTS.mddoc7,690 bytes../n8n-error-handling/README.mddoc8,526 bytes../n8n-error-handling/RESPONSE_SHAPES.mddoc10,045 bytes../n8n-error-handling/SKILL.mddoc21,085 bytes../n8n-expression-syntax/COMMON_MISTAKES.mddoc12,345 bytes../n8n-expression-syntax/EXAMPLES.mddoc8,512 bytes../n8n-expression-syntax/README.mddoc2,674 bytes../n8n-expression-syntax/SKILL.mddoc23,341 bytes../n8n-mcp-tools-expert/OPERATIONS_GUIDE.mddoc6,599 bytes../n8n-mcp-tools-expert/README.mddoc2,717 bytes../n8n-mcp-tools-expert/SEARCH_GUIDE.mddoc9,315 bytes../n8n-mcp-tools-expert/SKILL.mddoc30,758 bytes../n8n-mcp-tools-expert/VALIDATION_GUIDE.mddoc17,998 bytes../n8n-mcp-tools-expert/WORKFLOW_GUIDE.mddoc42,669 bytes../n8n-multi-instance/README.mddoc7,044 bytes../n8n-multi-instance/SKILL.mddoc14,863 bytes../n8n-node-configuration/DEPENDENCIES.mddoc17,634 bytes../n8n-node-configuration/NATIVE_NODES.mddoc21,493 bytes../n8n-node-configuration/NODE_FAMILY_GOTCHAS.mddoc13,995 bytes../n8n-node-configuration/OPERATION_PATTERNS.mddoc27,252 bytes../n8n-node-configuration/README.mddoc9,798 bytes../n8n-node-configuration/SKILL.mddoc20,196 bytes../n8n-self-hosting/CREDENTIAL_OVERWRITES.mddoc8,041 bytes../n8n-self-hosting/DAY2.mddoc8,822 bytes../n8n-self-hosting/QUEUE_MODE.mddoc10,536 bytes../n8n-self-hosting/README.mddoc5,328 bytes../n8n-self-hosting/SECURITY.mddoc8,568 bytes../n8n-self-hosting/SINGLE_MODE.mddoc3,697 bytes../n8n-self-hosting/SKILL.mddoc13,987 bytes../n8n-self-hosting/TASK_RUNNERS.mddoc9,728 bytes../n8n-self-hosting/assets/.env.queue.exampleasset1,854 bytes../n8n-self-hosting/assets/.env.single.exampleasset1,430 bytes../n8n-self-hosting/assets/Caddyfileasset1,136 bytes../n8n-self-hosting/assets/docker-compose.queue.ymlasset6,904 bytes../n8n-self-hosting/assets/docker-compose.queue.ymlasset6,904 bytes../n8n-self-hosting/assets/docker-compose.single.ymlasset3,063 bytes../n8n-self-hosting/assets/init-data.shruns924 bytes../n8n-subworkflows/NAMING_AND_DISCOVERY.mddoc6,500 bytes../n8n-subworkflows/README.mddoc8,595 bytes../n8n-subworkflows/SKILL.mddoc20,292 bytes../n8n-subworkflows/SUBWORKFLOW_PATTERNS.mddoc8,935 bytes../n8n-validation-expert/ERROR_CATALOG.mddoc23,796 bytes../n8n-validation-expert/FALSE_POSITIVES.mddoc21,532 bytes../n8n-validation-expert/README.mddoc8,474 bytes../n8n-validation-expert/REVIEW_CHECKLIST.mddoc16,600 bytes../n8n-validation-expert/SKILL.mddoc22,980 bytes../n8n-workflow-patterns/README.mddoc7,047 bytes../n8n-workflow-patterns/SKILL.mddoc22,055 bytes../n8n-workflow-patterns/ai_agent_workflow.mddoc9,888 bytes../n8n-workflow-patterns/database_operations.mddoc16,987 bytes../n8n-workflow-patterns/http_api_integration.mddoc16,363 bytes../n8n-workflow-patterns/scheduled_tasks.mddoc17,025 bytes../n8n-workflow-patterns/webhook_processing.mddoc13,658 bytes../using-n8n-mcp-skills/README.mddoc3,094 bytes../using-n8n-mcp-skills/SKILL.mddoc17,587 bytes
Read SKILL.md
# n8n Agents
The n8n AI Agent node (`@n8n/n8n-nodes-langchain.agent`) is a multi-turn LLM driver with sub-nodes for the model, memory, tools, and an optional output parser. This skill is the **deep** guide to designing agents and the LangChain family around them. For the high-level "where an agent fits in a workflow" picture, see **n8n-workflow-patterns** `ai_agent_workflow.md` — this skill goes one level down into *how to build it well*.
For node-type formats: in workflow JSON the LangChain nodes use the long `@n8n/n8n-nodes-langchain.*` form (`.agent`, `.lmChatOpenAi`, `.memoryBufferWindow`, `.outputParserStructured`, `.toolWorkflow`, `.toolHttpRequest`, `.toolCode`). When you call `get_node` / `validate_node`, use the **short** form (`nodes-langchain.agent`). See **n8n-mcp-tools-expert** for the format rules.
---
## Pick the right node first
Reaching for an Agent when the task is one-shot classification or extraction is the most common over-build. Decide before you wire anything:
| You need to… | Use | Why |
|---|---|---|View the complete source on GitHubn8n-binary-and-data
When your agent uses it
Handle files and binary data in n8n correctly. Use when working with files, images, PDFs, attachments, uploads or downloads, base64, vision/multimodal input, or when an AI agent needs a file as tool input or output — and whenever the user mentions $binary, binaryPropertyName, "read the PDF", "attach the file", "send the image", Merge losing binary, or a CDN for chat images. Covers the $binary vs $json split, reading/writing binary, keeping binary alive across transforms with Merge, the agent-tool binary boundary, and the CDN/URL requirement for chat surfaces.
What it loads into context
Frontmatter
139 tokensAlways available to the agent
SKILL.md
3,785 tokensWhen the skill is activated
Reference documents
10,938 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The three rules that prevent 90% of binary bugs
- The two slots
- Producing binary
- Reading and writing binary in a Code node
- Keeping binary alive across transforms
- The agent-tool binary boundary
- The CDN requirement for chat surfaces
- What's NOT available
- Where Data Tables live
- Anti-patterns
- Reference files
- Integration with Other Skills
- Verifying binary survived
- Quick Reference Checklist
Files
AGENT_TOOL_BINARY.mddoc14,807 bytesBINARY_BASICS.mddoc9,323 bytesCDN_REQUIREMENT.mddoc6,263 bytesMERGE_FOR_CONTEXT.mddoc7,337 bytesREADME.mddoc8,578 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytesSKILL.mdcore15,901 bytes
Read SKILL.md
# n8n Binary and Data
Every n8n item carries two independent slots: `$json` for structured data and `$binary` for file bytes. They travel side by side through the workflow. File contents — the actual PDF, image, or zip — live in `$binary`, never in `$json`. Get that split wrong and you read an empty field, lose a file mid-flow, or hand an AI agent a tool input it can't use.
This skill covers where binary lives, how to read and write it, how to keep it from being silently stripped, the hard wall between binary and the AI-agent tool boundary, and why chat surfaces need a URL instead of raw bytes.
---
## The three rules that prevent 90% of binary bugs
1. **File contents are in `$binary`, not `$json`.** After an HTTP download, a "Read Files", or an email-attachment trigger, the bytes sit in `$binary.<key>`. `$json` holds metadata at most. Reading `$json.data` for file contents gives you nothing.
2. **Binary cannot cross the AI-agent tool boundary — in either direction.** Tool arguments and tool return values are JSON only. An uploaded image can't be passed into a tool as a file, and a tool can't return raw bytes. Pre-stage to storage and pass a key or URL through JSON instead. See `AGENT_TOOL_BINARY.md`.
View the complete source on GitHubn8n-code-javascript
When your agent uses it
Write, review, or debug JavaScript in an n8n Code node. Use when a Code node is already in the workflow (editing it, fixing an error, choosing its mode, making it faster), or when a new one is justified: no native node fits (check the job-to-node table in using-n8n-mcp-skills first) and the job is on the closed list — loops or recursion no node expresses, state across runs, parsing no node handles, an allowlisted library, heavy all-items work, or one short node replacing 4+ glue nodes. Covers $input/$json/$node in code, this.helpers, Luxon, SplitInBatches loops, cross-iteration data, pairedItem, per-item performance, and the "Why Code:" note. Filtering, totals, dedupe, sorting, joins, file formats and API paging have native nodes (Filter, Summarize, Remove Duplicates, Sort, Merge, Extract From File, HTTP Request): see n8n-node-configuration. EXCEPTION — for the AI-agent-callable Custom Code Tool (@n8n/n8n-nodes-langchain.toolCode), use n8n-code-tool; it has a different runtime contract.
What it loads into context
Frontmatter
262 tokensAlways available to the agent
SKILL.md
5,628 tokensWhen the skill is activated
Reference documents
29,367 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Before you write a Code node
- Quick Start
- Mode Selection Guide
- Data Access Patterns
- Critical: Webhook Data Structure
- Return Format Requirements
- Common Patterns Overview
- Error Prevention - Top Mistakes
- Built-in Functions & Helpers
- Best Practices
- Production Gotchas
- When to Use Code Node
- Integration with Other Skills
- Quick Reference Checklist
- Additional Resources
Files
BUILTIN_FUNCTIONS.mddoc24,049 bytesCOMMON_PATTERNS.mddoc33,650 bytesDATA_ACCESS.mddoc22,732 bytesERROR_PATTERNS.mddoc23,932 bytesREADME.mddoc10,075 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytesSKILL.mdcore22,951 bytes
Read SKILL.md
# JavaScript Code Node
Expert guidance for writing JavaScript code in n8n Code nodes.
---
## Before you write a Code node
A new Code node has to pass this gate first:
1. **Is there a native node for the job?** Check the job-to-node table in `using-n8n-mcp-skills`: Filter, IF / Switch,
Summarize, Aggregate, Split Out, Merge, Compare Datasets, Remove Duplicates, Sort + Limit, Date & Time, XML / HTML /
Extract From File / Convert To File, HTTP Request (pagination, batching) and Crypto cover most reaches for Code.
Their configs are in `n8n-node-configuration` → NATIVE_NODES.md.View the complete source on GitHubn8n-code-python
When your agent uses it
Write Python in n8n Code nodes (native Python, `language` pythonNative, n8n 2.x). Use when the user explicitly wants Python in a Code node, when migrating old Pyodide/"Python (Beta)" code that used _input/_json/_node/_now, or when a Python Code node fails with NameError, "Security violations detected", "Import of standard library module … is disallowed", "__build_class__ not found", "A 'json' property isn't a dictionary", or "Python runner unavailable". Covers the only two variables (_items/_item), dict-only access, imports blocked by default, the sandbox's denied builtins, accepted return shapes, and how errors interact with onError. JavaScript is the default for Code nodes — native Python has no n8n helpers and, by default, no imports. EXCEPTION — for Python in the AI-agent-callable Custom Code Tool (@n8n/n8n-nodes-langchain.toolCode), use the n8n-code-tool skill instead (input is _query, return must be a string).
What it loads into context
Frontmatter
232 tokensAlways available to the agent
SKILL.md
3,005 tokensWhen the skill is activated
Reference documents
3,318 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- JavaScript first — stronger than before
- Quick start
- The only inputs: `_items` and `_item`
- Imports: blocked by default
- Sandbox limits (these fail even without imports)
- Return shapes (verified)
- Errors and `onError`
- Performance
- Checklist
- Reference
- Related skills
Files
COMMON_PATTERNS.mddoc8,425 bytesREADME.mddoc3,424 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytesSKILL.mdcore11,073 bytes
Read SKILL.md
# Python Code Node (native)
Since n8n 2.0 the Code node's Python runs as **native Python in a task runner** (`language:
"pythonNative"`). The old Pyodide "Python (Beta)" is gone, and with it every n8n helper it had:
`_input`, `_json`, `_node`, `_now`, `_today` and `_jmespath` all raise `NameError` now. Code copied
from old templates, forum posts or older docs usually breaks on this.
---
## JavaScript first — stronger than before
Native Python gives you two variables and plain Python, and **by default no imports**: no
`json`, `datetime` or `re`. Everything n8n-specific (`$('Node')`, `$jmespath`, Luxon,
`this.helpers.httpRequest`, static data) exists only in JavaScript. Use Python only when the userView the complete source on GitHubn8n-code-tool
When your agent uses it
Write JavaScript or Python for the n8n Custom Code Tool (@n8n/n8n-nodes-langchain.toolCode) — the AI-agent-callable tool, NOT the workflow Code node. Use when building a Code Tool attached to an AI Agent, writing code that an LLM will invoke, parsing the `query` input, returning a string result, defining an input schema for structured arguments (specifyInputSchema, jsonSchemaExample, DynamicStructuredTool), or troubleshooting errors like "Wrong output type returned", "No execution data available", "The response property should be a string, but it is an object", "Cannot assign to read only property 'name'", or an AI agent that refuses to call the tool. Covers the critical differences between Code node and Code Tool: return format (string vs `[{json:{...}}]`), unavailability of `$fromAI`/`$input`/`$helpers` in the Code Tool sandbox, naming rules for AI invocation, and when to use `toolWorkflow`/HTTP Request Tool instead.
What it loads into context
Frontmatter
227 tokensAlways available to the agent
SKILL.md
4,140 tokensWhen the skill is activated
Reference documents
5,223 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- ⚠<U+FE0F> This is NOT the Code node
- Quick Start
- The Two Input Modes
- Return Format
- Tool Name and Description
- Top Errors and Fixes
- What's NOT Available in the Sandbox
- When to Use Code Tool vs Alternatives
- Complete Working Example
- Integration with Other Skills
- Quick Reference Checklist
- Additional Resources
Files
ERROR_PATTERNS.mddoc6,832 bytesINPUT_SCHEMA.mddoc6,360 bytesREADME.mddoc6,922 bytesSKILL.mdcore16,247 bytesSKILL.mdcore16,247 bytesSKILL.mdcore16,247 bytesSKILL.mdcore16,247 bytesSKILL.mdcore16,247 bytesSKILL.mdcore16,247 bytesSKILL.mdcore16,247 bytesSKILL.mdcore16,247 bytes
Read SKILL.md
# n8n Custom Code Tool
Expert guidance for writing code inside `@n8n/n8n-nodes-langchain.toolCode` — the tool an AI Agent can invoke, **not** the regular workflow Code node.
---
## ⚠<U+FE0F> This is NOT the Code node
The Custom Code Tool looks like a Code node in the editor — same JavaScript editor, similar layout — but it is a **completely different node** from a different package with a **different runtime contract**.
| | Code node | Custom Code Tool |
|---|---|---|
| **Node type** | `n8n-nodes-base.code` | `@n8n/n8n-nodes-langchain.toolCode` |
| **Package** | `n8n-nodes-base` | `@n8n/n8n-nodes-langchain` |View the complete source on GitHubn8n-error-handling
When your agent uses it
Wire n8n error handling so failures are loud, structured, and recoverable. Use when building any webhook/API workflow, a scheduled or unattended workflow, or any path where a silent failure would drop user-visible work — and whenever the user mentions error handling, onError, continueErrorOutput, error branches/outputs, retries, retryOnFail, Respond to Webhook status codes, 4xx/5xx, Error Trigger, or "my workflow fails silently". Covers per-node error outputs and wiring, retry/self-healing, error-trigger workflows, and 4xx/5xx response shapes.
What it loads into context
Frontmatter
132 tokensAlways available to the agent
SKILL.md
5,127 tokensWhen the skill is activated
Reference documents
12,950 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When you actually need this
- The #1 silent trap: per-node error output is a TWO-step setup
- Self-healing first: `retryOnFail` before you wire error paths
- API workflows: the canonical shape
- Response shapes: map cause → status code
- Workflow-level error workflow (the catch-all)
- What's NOT available via the community MCP
- Anti-patterns
- Reference files
- Integration with other skills
- Quick reference checklist
Files
API_WORKFLOWS.mddoc17,277 bytesERROR_WORKFLOWS.mddoc8,724 bytesNODE_ERROR_OUTPUTS.mddoc7,690 bytesREADME.mddoc8,526 bytesRESPONSE_SHAPES.mddoc10,045 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytes
Read SKILL.md
# n8n Error Handling
By default, when an n8n node throws, the **whole workflow halts**. For an interactive run you're watching, that's fine — you see the red node and fix it. For anything unattended (a webhook API, a cron job, a queue worker, an agent tool), it's the wrong default: the caller gets a timeout or an empty 500, the operator gets no alert, and the symptom is "the integration just stopped working" with no log and no clue.
This skill is about making failures **loud, structured, and recoverable** — and, best case, **self-healing** so transient blips never reach a human at all.
The two ideas that prevent most silent failures:
- **Per-node error outputs** — a node's failure routes down a second output you control, instead of killing the run.
- **A workflow-level error workflow** — a catch-all that fires for anything that escapes per-node handling (timeouts, crashes between nodes, unwired failures).
---
## When you actually need thisView the complete source on GitHubn8n-expression-syntax
When your agent uses it
Validate n8n expression syntax and fix common errors. Use when writing n8n expressions, using {{}} syntax, accessing $json/$node variables, troubleshooting expression errors, mapping data between nodes, or referencing webhook data in workflows. Use this skill whenever configuring node fields that reference data from previous nodes — expressions are how n8n passes data between nodes, and getting the syntax wrong is the most common source of workflow errors. Also use when asked whether a complex expression hurts performance.
What it loads into context
Frontmatter
108 tokensAlways available to the agent
SKILL.md
5,999 tokensWhen the skill is activated
Reference documents
6,322 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Expression Format
- Core Variables
- 🚨 CRITICAL: Webhook Data Structure
- Common Patterns
- When NOT to Use Expressions
- The transform gatekeeper
- `$jmespath()` — query nested JSON in one expression
- Built-in helper functions
- The Set-node antipattern and branch convergence
- Validation Rules
- Common Mistakes
- Working Examples
- Data Type Handling
- Advanced Patterns
- Performance: expression complexity is (almost) free
- Debugging Expressions
- Expression Helpers
- Best Practices
- Related Skills
- Summary
Files
COMMON_MISTAKES.mddoc12,345 bytesEXAMPLES.mddoc8,512 bytesREADME.mddoc2,674 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytesSKILL.mdcore23,341 bytes
Read SKILL.md
# n8n Expression Syntax
Expert guide for writing correct n8n expressions in workflows.
---
## Expression Format
All dynamic content in n8n uses **double curly braces**:
```
{{expression}}
```
View the complete source on GitHubn8n-mcp-tools-expert
When your agent uses it
Expert guide for using n8n-mcp MCP tools effectively. Use when searching for nodes, validating configurations, accessing templates, managing workflows, organizing workflows into folders, managing credentials, auditing instance security, or using any n8n-mcp tool. Provides tool selection guidance, parameter formats, and common patterns. IMPORTANT — Always consult this skill before calling any n8n-mcp tool — it prevents common mistakes like wrong nodeType formats, incorrect parameter structures, and inefficient tool usage. If the user mentions n8n, workflows, nodes, or automation and you have n8n MCP tools available, use this skill first.
What it loads into context
Frontmatter
139 tokensAlways available to the agent
SKILL.md
8,016 tokensWhen the skill is activated
Reference documents
20,461 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Tool Categories
- Quick Reference
- Tool Selection Guide
- Critical: nodeType Formats
- Common Mistakes
- Tool Usage Patterns
- Detailed Guides
- Template Usage
- Running Workflows
- Version History
- Data Table Management
- Workflow Folders
- Credential Management
- Agents
- Security & Audit
- Self-Help Tools
- Tool Availability
- Unified Tool Reference
- Performance Characteristics
- Best Practices
- Summary
Files
OPERATIONS_GUIDE.mddoc6,599 bytesREADME.mddoc2,717 bytesSEARCH_GUIDE.mddoc9,315 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesSKILL.mdcore30,758 bytesVALIDATION_GUIDE.mddoc17,998 bytesWORKFLOW_GUIDE.mddoc42,669 bytes
Read SKILL.md
# n8n MCP Tools Expert
Master guide for using n8n-mcp MCP server tools to build workflows.
---
## Tool Categories
n8n-mcp provides tools organized into categories:
1. **Node Discovery** → [SEARCH_GUIDE.md](SEARCH_GUIDE.md)
2. **Configuration Validation** → [VALIDATION_GUIDE.md](VALIDATION_GUIDE.md)
3. **Workflow Management** → [WORKFLOW_GUIDE.md](WORKFLOW_GUIDE.md)
4. **Template Library** - Search and deploy 2,700+ real workflowsView the complete source on GitHubn8n-multi-instance
When your agent uses it
Use when an n8n-mcp account targets more than one n8n instance — i.e. the `n8n_instances` tool is available, the user mentions multiple n8n instances or environments (prod vs staging, several teams or clients), several agents or chats work on one account in parallel, a workflow / datatable / credential / execution call returns an unexpected NOT_FOUND or reads data you don't recognize, or a call is refused with `INSTANCE_AMBIGUOUS` or `INSTANCE_NOT_FOUND`. Covers naming the target instance on each call with the `instance` argument, setting the default with `switch`, verifying the target before high-stakes work — credential writes above all — and recovering from misroutes and fail-closes. Always consult this skill before operating on a specific instance, before any credential create/update/delete on a multi-instance account, or when a call hits the wrong/empty data or an instance error.
What it loads into context
Frontmatter
199 tokensAlways available to the agent
SKILL.md
3,716 tokensWhen the skill is activated
Reference documents
1,669 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Golden rules
- Core workflow
- The `instance` argument
- The `n8n_instances` tool
- How targeting behaves (mental model)
- Switching (only when you need to change the default)
- Recovery playbook
- Credential operations (highest stakes)
- Common multi-instance task: copy something between instances
- Quick reference
- Integration with other skills
Files
README.mddoc7,044 bytesSKILL.mdcore14,863 bytesSKILL.mdcore14,863 bytes
Read SKILL.md
# Working with multiple n8n instances over MCP
When the `n8n_instances` tool is available, the user has **multi-instance mode** on: one MCP
connection can reach several n8n instances (e.g. `prod`, `staging`, or one per client/team).
There are two ways to say which instance a call should hit:
- **Name it on the call** — every n8n tool (`n8n_get_workflow`, `n8n_list_workflows`,
`n8n_update_partial_workflow`, `n8n_manage_datatable`, `n8n_manage_credentials`,
`n8n_executions`, `n8n_test_workflow`, `n8n_health_check`, …) takes an optional
`instance: "<name>"`. It routes **that one call** and changes nothing else. **Prefer this.**
- **Set the default with `switch`** — `n8n_instances({mode:"switch", name})` sets the instance used
by calls that *don't* name one.
View the complete source on GitHubn8n-node-configuration
When your agent uses it
Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node detail levels, or learning common configuration patterns by node type — including the native nodes that replace Code (Summarize, Aggregate, Split Out, Merge, Compare Datasets, Remove Duplicates, Sort, Limit, Date & Time, HTTP Request pagination, Crypto). Always use this skill when setting up node parameters — it explains which fields are required for each operation, how displayOptions control field visibility, and when to use patchNodeField for surgical edits vs full node updates.
What it loads into context
Frontmatter
130 tokensAlways available to the agent
SKILL.md
4,894 tokensWhen the skill is activated
Reference documents
23,578 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configuration Philosophy
- Core Concepts
- Configuration Workflow
- get_node Detail Levels
- Property Dependencies Deep Dive
- Common Node Patterns
- Operation-Specific Configuration
- Handling Conditional Requirements
- Node-Specific Configuration Notes
- Configuration Anti-Patterns
- Surgical Field Edits with patchNodeField
- Best Practices
- Native Nodes for Data Jobs
- Silent-Failure Gotchas by Node Family
- Detailed References
- Summary
Files
DEPENDENCIES.mddoc17,634 bytesNATIVE_NODES.mddoc21,493 bytesNODE_FAMILY_GOTCHAS.mddoc13,995 bytesOPERATION_PATTERNS.mddoc27,252 bytesREADME.mddoc9,798 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytesSKILL.mdcore20,196 bytes
Read SKILL.md
# n8n Node Configuration
Expert guidance for operation-aware node configuration with property dependencies.
---
## Configuration Philosophy
**Progressive disclosure**: Start minimal, add complexity as needed
Configuration best practices:
- `get_node` with `detail: "standard"` is the most used discovery pattern
- 56 seconds average between configuration edits
- Covers 95% of use cases with 1-2K tokens responseView the complete source on GitHubn8n-self-hosting
When your agent uses it
Deploy a production self-hosted n8n end-to-end to a fresh Linux VM over SSH, using Docker Compose behind a Caddy reverse proxy with automatic HTTPS. Use whenever the user wants to self-host, install, provision, or deploy n8n on their own server/VPS (Hetzner, DigitalOcean, AWS EC2, bare metal) — single/regular mode or queue mode with workers — or to update, back up, restore, or harden such an instance, or make Python Code nodes run on it (task runners). For SELF-HOSTED n8n (Docker), not n8n Cloud and not building workflows. The skill makes the agent ask single-vs-queue first, collect domain/SSH/timezone inputs, generate fresh secrets on the box, and bring the stack up with TLS. Trigger on "deploy n8n", "self-host n8n", "n8n docker compose", "n8n queue mode / workers", "n8n reverse proxy / SSL", "back up / update my n8n", "Python runner unavailable" / "n8nio/runners sidecar", or "we don't want to give every user the OAuth client secret" / "enable Sign in with Google" (credential overwrites).
What it loads into context
Frontmatter
271 tokensAlways available to the agent
SKILL.md
3,635 tokensWhen the skill is activated
Reference documents
14,181 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rule 0 — choose the mode (ask the user)
- Rule 1 — secret hygiene (non-negotiable)
- Inputs to collect up front
- The deploy flow
- What NOT to do
- Reference files
Scripts executed separately
assets/init-data.sh
Files
CREDENTIAL_OVERWRITES.mddoc8,041 bytesDAY2.mddoc8,822 bytesQUEUE_MODE.mddoc10,536 bytesREADME.mddoc5,328 bytesSECURITY.mddoc8,568 bytesSINGLE_MODE.mddoc3,697 bytesSKILL.mdcore13,987 bytesSKILL.mdcore13,987 bytesSKILL.mdcore13,987 bytesTASK_RUNNERS.mddoc9,728 bytesassets/.env.queue.exampleasset1,854 bytesassets/.env.single.exampleasset1,430 bytesassets/Caddyfileasset1,136 bytesassets/docker-compose.queue.ymlasset6,904 bytesassets/docker-compose.single.ymlasset3,063 bytesassets/init-data.shruns924 bytes
Read SKILL.md
# Deploying self-hosted n8n
This skill takes a **fresh Linux VM** (Ubuntu/Debian, root or sudo SSH) to a **running,
HTTPS, production n8n** via Docker Compose behind **Caddy** (automatic Let's Encrypt TLS).
It is for **self-hosted n8n on Docker** — not n8n Cloud, and not for building workflows
(that's the rest of this pack).
Two deployment modes. The architectures differ, so **pick the mode before doing anything**.
You drive this end-to-end over SSH: preflight → install Docker → lay down the project →
generate secrets → launch → verify TLS → hand off. The template files live in `assets/`;
the per-mode and security depth live in the reference files named below.
## Rule 0 — choose the mode (ask the user)View the complete source on GitHubn8n-subworkflows
When your agent uses it
Build reusable, composable n8n sub-workflows. Use when extracting shared logic, building anything multi-step or reused across workflows, or any workflow over ~10 nodes — and whenever the user mentions sub-workflows, Execute Workflow, reuse, shared/common logic, modular workflows, "Define Below" inputs, waitForSubWorkflow, mode each vs all, or exposing a workflow as an agent tool. Covers typed sub-workflow inputs, all-vs-each execution, verb-first naming for discovery, stateless vs stateful design, and splitting by input shape.
What it loads into context
Frontmatter
125 tokensAlways available to the agent
SKILL.md
4,741 tokensWhen the skill is activated
Reference documents
5,644 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The two non-negotiables
- Should this be a sub-workflow?
- Stateless vs. stateful (deliberately)
- Inputs and outputs as a contract
- Calling sub-workflows: `mode` and `waitForSubWorkflow`
- Splitting by input shape (the N+1 pattern)
- Sub-workflow as an agent tool
- Anti-patterns
- What's NOT available via the community MCP
- Reference files
- Integration with other skills
- Quick reference checklist
Files
NAMING_AND_DISCOVERY.mddoc6,500 bytesREADME.mddoc8,595 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSKILL.mdcore20,292 bytesSUBWORKFLOW_PATTERNS.mddoc8,935 bytes
Read SKILL.md
# n8n Sub-workflows
A sub-workflow is a reusable function. An **Execute Workflow Trigger** declares typed inputs, the body does the work, and the last node returns the output. A caller invokes it through an **Execute Workflow** node like any other step.
That framing buys you the things functions buy you everywhere: encapsulation, reuse, testability, replaceability. It's the primary reuse mechanism in n8n, and it's badly underused. Without it, the same logic gets copy-pasted across workflows — then a bug gets fixed in two places, the third copy gets missed, and your "identical" copies quietly drift apart.
This skill is about when to reach for a sub-workflow, how to define its input/output contract so callers (and agents) can actually use it, how to call it correctly (`all` vs `each`, blocking vs fire-and-forget), and how to name it so it gets found instead of rebuilt.
---
## The two non-negotiables
Everything else is judgement. These two are not.
View the complete source on GitHubn8n-validation-expert
When your agent uses it
Interpret validation errors and guide fixing them. Use when encountering validation errors, validation warnings, false positives, operator structure issues, or need help understanding validation results. Also use when asking about validation profiles, error types, the validation loop process, or auto-fix capabilities. Consult this skill whenever a validate_node or validate_workflow call returns errors or warnings — it knows which warnings are false positives and which errors need real fixes.
What it loads into context
Frontmatter
95 tokensAlways available to the agent
SKILL.md
5,595 tokensWhen the skill is activated
Reference documents
17,939 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Validation Philosophy
- Error Severity Levels
- The Validation Loop
- Validation Profiles
- Common Error Types
- Auto-Sanitization System
- False Positives
- Validation Result Structure
- Workflow Validation
- Recovery Strategies
- Auto-Fix Capabilities
- Best Practices
- Running the workflow after it validates
- Reviewing an existing workflow
- Detailed Guides
- Summary
Files
ERROR_CATALOG.mddoc23,796 bytesFALSE_POSITIVES.mddoc21,532 bytesREADME.mddoc8,474 bytesREVIEW_CHECKLIST.mddoc16,600 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytesSKILL.mdcore22,980 bytes
Read SKILL.md
# n8n Validation Expert
Expert guide for interpreting and fixing n8n validation errors.
---
## Validation Philosophy
**Validate early, validate often**
Validation is typically iterative:
- Expect validation feedback loops
- Usually 2-3 validate → fix cycles
- Average: 23s thinking about errors, 58s fixing themView the complete source on GitHubn8n-workflow-patterns
When your agent uses it
Proven workflow architectural patterns from real n8n workflows. Use when building new workflows, designing workflow structure, choosing workflow patterns, planning workflow architecture, or asking about webhook processing, HTTP API integration, database operations, AI agent workflows, batch processing, or scheduled tasks. Always consult this skill when the user asks to create, build, or design an n8n workflow, automate a process, or connect services — even if they don't explicitly mention 'patterns'. Covers webhook, API, database, AI, batch processing, and scheduled automation architectures. Also use when optimizing a slow workflow or speeding up large-item-count processing (node count, batchSize, all-items vs per-item).
What it loads into context
Frontmatter
147 tokensAlways available to the agent
SKILL.md
5,192 tokensWhen the skill is activated
Reference documents
20,824 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The 6 Core Patterns
- Pattern Selection Guide
- Common Workflow Components
- Workflow Creation Checklist
- Workflow lifecycle: validate, verify, test before activating
- Data Flow Patterns
- Batch Processing Pattern
- Performance on the hot path
- Integration-Specific Gotchas
- Common Gotchas
- Integration with Other Skills
- Pattern Statistics
- Quick Start Examples
- Detailed Pattern Files
- Real Template Examples
- Best Practices
- Summary
Files
README.mddoc7,047 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesSKILL.mdcore22,055 bytesai_agent_workflow.mddoc9,888 bytesdatabase_operations.mddoc16,987 byteshttp_api_integration.mddoc16,363 bytesscheduled_tasks.mddoc17,025 byteswebhook_processing.mddoc13,658 bytes
Read SKILL.md
# n8n Workflow Patterns
Proven architectural patterns for building n8n workflows.
---
## The 6 Core Patterns
Based on analysis of real workflow usage:
1. **[Webhook Processing](webhook_processing.md)** (Most Common)
- Receive HTTP requests → Process → Output
- Pattern: Webhook → Validate → Transform → Respond/Notify
View the complete source on GitHubusing-n8n-mcp-skills
When your agent uses it
Use 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 pack: it routes you to the right specialist skill, gives working knowledge of every n8n-mcp tool from turn one, and states the rules that keep workflows from breaking in production. Always consult it first on any n8n, workflow, node, or automation task — even a quick one-off, and even when the user names no skill — because n8n's surface drifts between versions and the specialist skills prevent silent failures.
What it loads into context
Frontmatter
169 tokensAlways available to the agent
SKILL.md
4,500 tokensWhen the skill is activated
Reference documents
762 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
- Red flags: "about to ___" → invoke ___
- Skill index
- n8n-mcp tools — working knowledge from turn one
- The protocol, in order
- When in doubt
Files
README.mddoc3,094 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytesSKILL.mdcore17,587 bytes
Read SKILL.md
# Using the n8n-mcp Skills
This is a **router**, not a reference. It tells you which skill owns the rules for what
you're about to do. The skill bodies hold the actual guidance — invoke them with the
Skill tool. When in doubt, load more skills rather than fewer.
The community **n8n-mcp** server and n8n itself move faster than any model's training
cutoff. Tool names, parameters, node `typeVersion`s, and default behaviors drift between
releases. When you spot drift — a tool a skill names doesn't exist, a parameter shape
doesn't match what `get_node` returns, behavior differs from what a skill describes —
trust the **live tool**, tell the user, and suggest updating the pack and the instance.
## Non-negotiables
View the complete source on GitHubSkills included
- n8n-agents
- n8n-binary-and-data
- n8n-code-javascript
- n8n-code-python
- n8n-code-tool
- n8n-error-handling
- n8n-expression-syntax
- n8n-mcp-tools-expert
- n8n-multi-instance
- n8n-node-configuration
- n8n-self-hosting
- n8n-subworkflows
- n8n-validation-expert
- n8n-workflow-patterns
- using-n8n-mcp-skills
Repository facts
- License
- MIT
- Created
- Oct 20, 2025
- Last pushed
- Oct 24, 2026
- Forks
- 1,081
- Open issues
- 10
- Project activity
- Active
Rank over the last 12 weeks
Now #217 · best #173 · down 14 in 30 days
- #210 on Oct 28
- #211 on Oct 29
- #215 on Oct 30
- #216 from Oct 31 to Nov 1
- #218 from Nov 2 to Nov 3
- #217 since Nov 4
65 earlier periods
- #171 on Aug 2
- #174 from Aug 7 to Aug 8
- #173 on Aug 9
- #175 from Aug 10 to Aug 11
- #173 on Aug 12
- #176 on Aug 13
- #178 on Aug 14
- #177 from Aug 15 to Aug 17
- #179 on Aug 18
- #178 on Aug 19
- #175 on Aug 20
- #177 on Aug 21
- #173 on Aug 22
- #180 from Aug 23 to Aug 24
- #181 from Aug 25 to Aug 26
- #183 on Aug 27
- #182 on Aug 28
- #184 on Aug 29
- #183 from Aug 30 to Aug 31
- #188 on Sep 1
- #183 on Sep 2
- #189 on Sep 3
- #187 on Sep 4
- #189 on Sep 5
- #186 on Sep 6
- #189 from Sep 7 to Sep 8
- #192 from Sep 9 to Sep 11
- #193 on Sep 12
- #194 from Sep 13 to Sep 14
- #193 on Sep 15
- #194 from Sep 16 to Sep 17
- #196 on Sep 18
- #194 on Sep 19
- #196 on Sep 20
- #197 on Sep 21
- #198 from Sep 22 to Sep 23
- #197 on Sep 24
- #196 on Sep 25
- #198 on Sep 26
- #197 on Sep 27
- #199 from Sep 28 to Sep 29
- #197 on Sep 30
- #199 on Oct 1
- #201 on Oct 2
- #198 on Oct 3
- #196 on Oct 4
- #198 on Oct 5
- #199 on Oct 6
- #203 on Oct 7
- #201 on Oct 8
- #206 on Oct 9
- #203 from Oct 10 to Oct 11
- #206 on Oct 12
- #207 on Oct 13
- #206 on Oct 14
- #205 on Oct 15
- #203 on Oct 16
- #206 on Oct 17
- #205 on Oct 18
- #207 on Oct 19
- #206 on Oct 20
- #208 on Oct 21
- #207 on Oct 22
- #208 from Oct 23 to Oct 24
- #211 on Oct 25
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 2, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 287 notes
.claude-plugin/marketplace.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/n8n-agents/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 5 dangerous shell commandsin 2 files: skills/n8n-self-hosting/SKILL.md:8 hooks/session-start.sh:39
- 772 network referencesin 59 files: skills/n8n-validation-expert/FALSE_POSITIVES.md:183 skills/n8n-node-configuration/OPERATION_PATTERNS.md:31 skills/n8n-code-javascript/BUILTIN_FUNCTIONS.md:69 and 56 more
- No hidden or obfuscated text
- No instruction overrides
- 11 executable scriptsin 10 files: skills/n8n-self-hosting/assets/init-data.sh:1 hooks/post-tool-use/validate-workflow.sh:1 hooks/pre-tool-use/create-workflow.sh:1 and 7 more
- 112 references to secretsin 23 files: skills/n8n-mcp-tools-expert/SKILL.md:25 skills/n8n-self-hosting/DAY2.md:12 skills/n8n-self-hosting/TASK_RUNNERS.md:44 and 20 more
- No requests to vote in Hot
Show all 900 signals by file
.claude-plugin/marketplace.json
- Network accessline 4
"owner": { "name": "Romuald Członkowski", "url": "https://aiadvisors.pl/en" - Network accessline 5
"name": "Romuald Członkowski", "url": "https://aiadvisors.pl/en" }, - Network accessline 6
"url": "https://aiadvisors.pl/en" - Network accessline 31
"author": { "name": "Romuald Członkowski", "url": "https://aiadvisors.pl/en" - Network accessline 32
"name": "Romuald Członkowski", "url": "https://aiadvisors.pl/en" }, - Network accessline 33
"url": "https://aiadvisors.pl/en" - Network accessline 46
"skills" ], "homepage": "https://github.com/czlonkowski/n8n-skills", - Network accessline 47
], "homepage": "https://github.com/czlonkowski/n8n-skills", "repository": "https://github.com/czlonkowski/n8n-skills", - Network accessline 48
"homepage": "https://github.com/czlonkowski/n8n-skills", - Network accessline 49
"repository": "https://github.com/czlonkowski/n8n-skills",
.claude-plugin/plugin.json
- Network accessline 5
"author": { "name": "Romuald Członkowski", "url": "https://aiadvisors.pl/en" - Network accessline 6
"name": "Romuald Członkowski", "url": "https://aiadvisors.pl/en" }, - Network accessline 7
"url": "https://aiadvisors.pl/en" - Network accessline 19
"python" ], "repository": "https://github.com/czlonkowski/n8n-skills", - Network accessline 20
], "repository": "https://github.com/czlonkowski/n8n-skills", "homepage": "https://github.com/czlonkowski/n8n-skills" - Network accessline 21
"repository": "https://github.com/czlonkowski/n8n-skills", - Network accessline 22
"homepage": "https://github.com/czlonkowski/n8n-skills"
hooks/post-tool-use/validate-workflow.sh
hooks/pre-tool-use/create-workflow.sh
hooks/pre-tool-use/get-node.sh
hooks/pre-tool-use/instances.sh
hooks/pre-tool-use/manage-credentials.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
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 2
# Portions of this file are adapted from the n8n-io/skills plugin # (https://github.com/n8n-io/skills), licensed under Apache License 2.0. - Network accessline 3
# (https://github.com/n8n-io/skills), licensed under Apache License 2.0. - Dangerous shell operationline 39
rm -f "${STATE_DIR}/${SESSION_ID}-"*.loaded 2>/dev/null || true
skills/n8n-agents/EXAMPLES.md
- Network accessline 33
"hasOutputParser": true, "options": { "systemMessage": "=You are a concise, direct assistant. Be a thinking partner, not an answer machine.\n\nCurrent date: {{ $now.format('DDDD') }}\n\n## Output\nYou are replying in Slack - Network accessline 34
"options": { "systemMessage": "=You are a concise, direct assistant. Be a thinking partner, not an answer machine.\n\nCurrent date: {{ $now.format('DDDD') }}\n\n## Output\nYou are replying in Slack using Block Kit. Your entire res - Network accessline 35
"systemMessage": "=You are a concise, direct assistant. Be a thinking partner, not an answer machine.\n\nCurrent date: {{ $now.format('DDDD') }}\n\n## Output\nYou are replying in Slack using Block Kit. Your entire response must be valid JSO
skills/n8n-agents/SKILL.md
- Access to secretsline 196
[Credential-related source omitted]
skills/n8n-agents/SUBWORKFLOW_AS_TOOL.md
skills/n8n-agents/TOOLS.md
- Network accessline 90
It carries **JSON only** — it cannot carry binary (no base64, no file bytes), even through a non-AI binding. For binary, pass a storage key as a string and have the tool re-fetch (→ **n8n-binary-and-data**).
skills/n8n-binary-and-data/AGENT_TOOL_BINARY.md
- Network accessline 152
"ok": true, "key": "sess12-9f3c1a.png", "url": "https://storage.example.com/files/sess12-9f3c1a.png", - Network accessline 152
"ok": true, "key": "sess12-9f3c1a.png", "url": "https://storage.example.com/files/sess12-9f3c1a.png", - Network accessline 153
"key": "sess12-9f3c1a.png", "url": "https://storage.example.com/files/sess12-9f3c1a.png", "mimeType": "image/png", - Network accessline 153
"key": "sess12-9f3c1a.png", "url": "https://storage.example.com/files/sess12-9f3c1a.png", "mimeType": "image/png", - Network accessline 154
"url": "https://storage.example.com/files/sess12-9f3c1a.png", - Network accessline 154
"url": "https://storage.example.com/files/sess12-9f3c1a.png",
skills/n8n-binary-and-data/CDN_REQUIREMENT.md
- Network accessline 22
<img src="https://cdn.example.com/img/abc123.png"> - Network accessline 22
<img src="https://cdn.example.com/img/abc123.png"> - Network accessline 58
binaryPropertyName: data ↓ [Set: { imageUrl: "https://pub-<id>.r2.dev/<key>" }] - Network accessline 58
binaryPropertyName: data ↓ [Set: { imageUrl: "https://pub-<id>.r2.dev/<key>" }] - Network accessline 59
↓ [Set: { imageUrl: "https://pub-<id>.r2.dev/<key>" }] ↓ - Network accessline 59
↓ [Set: { imageUrl: "https://pub-<id>.r2.dev/<key>" }] ↓ - Network accessline 60
[Set: { imageUrl: "https://pub-<id>.r2.dev/<key>" }] - Network accessline 60
[Set: { imageUrl: "https://pub-<id>.r2.dev/<key>" }]
skills/n8n-binary-and-data/README.md
- Network accessline 193
Authoritative facts in this skill come from: - [n8n binary data docs](https://docs.n8n.io/data/binary-data/) — the `$binary` slot, property names, storage - Network accessline 193
Authoritative facts in this skill come from: - [n8n binary data docs](https://docs.n8n.io/data/binary-data/) — the `$binary` slot, property names, storage - Network accessline 194
- [n8n binary data docs](https://docs.n8n.io/data/binary-data/) — the `$binary` slot, property names, storage - Network accessline 194
- [n8n binary data docs](https://docs.n8n.io/data/binary-data/) — the `$binary` slot, property names, storage - Network accessline 195
- [n8n Code node docs](https://docs.n8n.io/code/builtin/) — `getBinaryDataBuffer` and the helpers surface - Network accessline 195
- [n8n Code node docs](https://docs.n8n.io/code/builtin/) — `getBinaryDataBuffer` and the helpers surface - Network accessline 196
- [n8n Merge node docs](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/) — `combineByPosition` semantics - Network accessline 196
- [n8n Merge node docs](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/) — `combineByPosition` semantics - Network accessline 197
- [n8n AI Agent / LangChain nodes docs](https://docs.n8n.io/advanced-ai/) — the agent ↔ tool JSON boundary and `passthroughBinaryImages` - Network accessline 197
- [n8n AI Agent / LangChain nodes docs](https://docs.n8n.io/advanced-ai/) — the agent ↔ tool JSON boundary and `passthroughBinaryImages`
skills/n8n-binary-and-data/SKILL.md
- Network accessline 140
1. The tool sub-workflow generates the binary, uploads it to storage, and returns JSON like `{ "ok": true, "key": "...", "url": "https://...", "mimeType": "image/png" }`. - Network accessline 140
1. The tool sub-workflow generates the binary, uploads it to storage, and returns JSON like `{ "ok": true, "key": "...", "url": "https://...", "mimeType": "image/png" }`.
skills/n8n-code-javascript/BUILTIN_FUNCTIONS.md
- Network accessline 69
const response = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/users' - Network accessline 69
const response = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/users' - Network accessline 70
method: 'GET', url: 'https://api.example.com/users' }); - Network accessline 70
method: 'GET', url: 'https://api.example.com/users' }); - Network accessline 71
url: 'https://api.example.com/users' - Network accessline 71
url: 'https://api.example.com/users' - Network accessline 80
const response = await this.helpers.httpRequest({ method: 'POST', // GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS url: 'https://api.example.com/users', - Network accessline 80
const response = await this.helpers.httpRequest({ method: 'POST', // GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS url: 'https://api.example.com/users', - Network accessline 81
method: 'POST', // GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS url: 'https://api.example.com/users', headers: { - Network accessline 81
method: 'POST', // GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS url: 'https://api.example.com/users', headers: { - Network accessline 82
url: 'https://api.example.com/users', - Network accessline 82
url: 'https://api.example.com/users', - Network accessline 107
const users = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/users' - Network accessline 107
const users = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/users' - Network accessline 108
method: 'GET', url: 'https://api.example.com/users' }); - Network accessline 108
method: 'GET', url: 'https://api.example.com/users' }); - Network accessline 109
url: 'https://api.example.com/users' - Network accessline 109
url: 'https://api.example.com/users' - Network accessline 117
const results = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/search', - Network accessline 117
const results = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/search', - Network accessline 118
method: 'GET', url: 'https://api.example.com/search', qs: { - Network accessline 118
method: 'GET', url: 'https://api.example.com/search', qs: { - Network accessline 119
url: 'https://api.example.com/search', - Network accessline 119
url: 'https://api.example.com/search', - Network accessline 140
const newUser = await this.helpers.httpRequest({ method: 'POST', url: 'https://api.example.com/users', - Network accessline 140
const newUser = await this.helpers.httpRequest({ method: 'POST', url: 'https://api.example.com/users', - Network accessline 141
method: 'POST', url: 'https://api.example.com/users', headers: { - Network accessline 141
method: 'POST', url: 'https://api.example.com/users', headers: { - Network accessline 142
url: 'https://api.example.com/users', - Network accessline 142
url: 'https://api.example.com/users', - Network accessline 161
const updated = await this.helpers.httpRequest({ method: 'PATCH', url: `https://api.example.com/users/${userId}`, - Network accessline 161
const updated = await this.helpers.httpRequest({ method: 'PATCH', url: `https://api.example.com/users/${userId}`, - Network accessline 162
method: 'PATCH', url: `https://api.example.com/users/${userId}`, body: { - Network accessline 162
method: 'PATCH', url: `https://api.example.com/users/${userId}`, body: { - Network accessline 163
url: `https://api.example.com/users/${userId}`, - Network accessline 163
url: `https://api.example.com/users/${userId}`, - Network accessline 177
await this.helpers.httpRequest({ method: 'DELETE', url: `https://api.example.com/users/${userId}`, - Network accessline 177
await this.helpers.httpRequest({ method: 'DELETE', url: `https://api.example.com/users/${userId}`, - Network accessline 178
method: 'DELETE', url: `https://api.example.com/users/${userId}`, headers: { - Network accessline 178
method: 'DELETE', url: `https://api.example.com/users/${userId}`, headers: { - Network accessline 179
url: `https://api.example.com/users/${userId}`, - Network accessline 179
url: `https://api.example.com/users/${userId}`, - Network accessline 193
// Bearer Token (token came from a previous node, not $env) const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', - Network accessline 193
// Bearer Token (token came from a previous node, not $env) const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', - Network accessline 194
const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', headers: { - Network accessline 194
const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', headers: { - Network accessline 195
url: 'https://api.example.com/data', - Network accessline 195
url: 'https://api.example.com/data', - Network accessline 203
// API Key in Header (key came from a previous node, not $env) const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', - Network accessline 203
// API Key in Header (key came from a previous node, not $env) const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', - Network accessline 204
const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', headers: { - Network accessline 204
const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', headers: { - Network accessline 205
url: 'https://api.example.com/data', - Network accessline 205
url: 'https://api.example.com/data', - Network accessline 216
const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', - Network accessline 216
const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', - Network accessline 217
url: 'https://api.example.com/data', - Network accessline 217
url: 'https://api.example.com/data', - Network accessline 229
const response = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/users', - Network accessline 229
const response = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/users', - Network accessline 230
method: 'GET', url: 'https://api.example.com/users', simple: false // Don't throw on 4xx/5xx - Network accessline 230
method: 'GET', url: 'https://api.example.com/users', simple: false // Don't throw on 4xx/5xx - Network accessline 231
url: 'https://api.example.com/users', - Network accessline 231
url: 'https://api.example.com/users', - Network accessline 259
// Get full response including headers and status const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', - Network accessline 259
// Get full response including headers and status const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', - Network accessline 260
const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', resolveWithFullResponse: true - Network accessline 260
const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data', resolveWithFullResponse: true - Network accessline 261
url: 'https://api.example.com/data', - Network accessline 261
url: 'https://api.example.com/data', - Network accessline 785
// Parse URL const url = new URL('https://example.com/path?param1=value1¶m2=value2'); - Network accessline 785
// Parse URL const url = new URL('https://example.com/path?param1=value1¶m2=value2'); - Network accessline 786
const url = new URL('https://example.com/path?param1=value1¶m2=value2'); - Network accessline 786
const url = new URL('https://example.com/path?param1=value1¶m2=value2');
skills/n8n-code-javascript/COMMON_PATTERNS.md
- Network accessline 1161
try { const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data' - Network accessline 1161
try { const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data' - Network accessline 1162
const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data' }); - Network accessline 1162
const response = await this.helpers.httpRequest({ url: 'https://api.example.com/data' }); - Network accessline 1163
url: 'https://api.example.com/data' - Network accessline 1163
url: 'https://api.example.com/data'
skills/n8n-code-javascript/DATA_ACCESS.md
- Network accessline 352
const response = await this.helpers.httpRequest({ method: 'GET', url: `https://api.example.com/users/${userId}/details` - Network accessline 352
const response = await this.helpers.httpRequest({ method: 'GET', url: `https://api.example.com/users/${userId}/details` - Network accessline 353
method: 'GET', url: `https://api.example.com/users/${userId}/details` }); - Network accessline 353
method: 'GET', url: `https://api.example.com/users/${userId}/details` }); - Network accessline 354
url: `https://api.example.com/users/${userId}/details` - Network accessline 354
url: `https://api.example.com/users/${userId}/details` - Access to secretsline 541
[Credential-related source omitted] - Access to secretsline 541
[Credential-related source omitted] - Access to secretsline 597
[Credential-related source omitted] - Access to secretsline 597
[Credential-related source omitted]
skills/n8n-code-javascript/ERROR_PATTERNS.md
- Network accessline 657
// Parent Code node — prepare payloads, then delegate return $input.all().map(i => ({ json: { url: 'https://api.example.com/things', - Network accessline 657
// Parent Code node — prepare payloads, then delegate return $input.all().map(i => ({ json: { url: 'https://api.example.com/things', - Network accessline 658
return $input.all().map(i => ({ json: { url: 'https://api.example.com/things', method: 'POST', - Network accessline 658
return $input.all().map(i => ({ json: { url: 'https://api.example.com/things', method: 'POST', - Network accessline 659
url: 'https://api.example.com/things', - Network accessline 659
url: 'https://api.example.com/things', - Access to secretsline 671
[Credential-related source omitted] - Access to secretsline 671
[Credential-related source omitted] - Network accessline 673
const data = await this.helpers.httpRequest({ url: 'https://api.example.com/data', - Network accessline 673
const data = await this.helpers.httpRequest({ url: 'https://api.example.com/data', - Network accessline 674
url: 'https://api.example.com/data', - Network accessline 674
url: 'https://api.example.com/data', - Access to secretsline 704
[Credential-related source omitted] - Access to secretsline 704
[Credential-related source omitted] - Access to secretsline 726
[Credential-related source omitted] - Access to secretsline 726
[Credential-related source omitted]
skills/n8n-code-javascript/README.md
- Network accessline 305
- **n8n Code Node Guide**: https://docs.n8n.io/code/code-node/ - Network accessline 305
- **n8n Code Node Guide**: https://docs.n8n.io/code/code-node/ - Network accessline 306
- **Built-in Methods Reference**: https://docs.n8n.io/code-examples/methods-variables-reference/ - Network accessline 306
- **Built-in Methods Reference**: https://docs.n8n.io/code-examples/methods-variables-reference/ - Network accessline 307
- **Luxon Documentation**: https://moment.github.io/luxon/ - Network accessline 307
- **Luxon Documentation**: https://moment.github.io/luxon/ - Network accessline 338
Conceived by Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 338
Conceived by Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en)
skills/n8n-code-javascript/SKILL.md
- Network accessline 296
// HTTP requests (no auth — see sandbox note below) const res = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/data' }); - Network accessline 296
// HTTP requests (no auth — see sandbox note below) const res = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/data' }); - Network accessline 297
const res = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/data' }); - Network accessline 297
const res = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.example.com/data' }); - Network accessline 421
### n8n Documentation - Code Node Guide: https://docs.n8n.io/code/code-node/ - Network accessline 421
### n8n Documentation - Code Node Guide: https://docs.n8n.io/code/code-node/ - Network accessline 422
- Code Node Guide: https://docs.n8n.io/code/code-node/ - Network accessline 422
- Code Node Guide: https://docs.n8n.io/code/code-node/ - Network accessline 423
- Built-in Methods: https://docs.n8n.io/code-examples/methods-variables-reference/ - Network accessline 423
- Built-in Methods: https://docs.n8n.io/code-examples/methods-variables-reference/ - Network accessline 424
- Luxon Documentation: https://moment.github.io/luxon/ - Network accessline 424
- Luxon Documentation: https://moment.github.io/luxon/
skills/n8n-code-python/README.md
- Network accessline 79
**Conceived by Romuald Członkowski** - Website: [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 79
**Conceived by Romuald Członkowski** - Website: [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 80
- Website: [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 80
- Website: [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 81
- Part of [n8n-mcp project](https://github.com/czlonkowski/n8n-mcp) - Network accessline 81
- Part of [n8n-mcp project](https://github.com/czlonkowski/n8n-mcp)
skills/n8n-code-tool/README.md
- Network accessline 174
Authoritative facts in this skill come from: - [ToolCode source](https://github.com/n8n-io/n8n/blob/master/packages/%40n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts) — sandbox contract, `query` binding, return handling - Network accessline 174
Authoritative facts in this skill come from: - [ToolCode source](https://github.com/n8n-io/n8n/blob/master/packages/%40n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts) — sandbox contract, `query` binding, return handling - Network accessline 175
- [ToolCode source](https://github.com/n8n-io/n8n/blob/master/packages/%40n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts) — sandbox contract, `query` binding, return handling - Network accessline 175
- [ToolCode source](https://github.com/n8n-io/n8n/blob/master/packages/%40n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts) — sandbox contract, `query` binding, return handling - Network accessline 176
- [n8n Custom Code Tool docs](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/) - Network accessline 176
- [n8n Custom Code Tool docs](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/) - Network accessline 177
- [LangChain tool docs](https://js.langchain.com/docs/modules/agents/tools/) — `DynamicTool` / `DynamicStructuredTool` semantics - Network accessline 177
- [LangChain tool docs](https://js.langchain.com/docs/modules/agents/tools/) — `DynamicTool` / `DynamicStructuredTool` semantics
skills/n8n-code-tool/SKILL.md
- Network accessline 331
### Official sources - [n8n Custom Code Tool docs](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/) - Network accessline 331
### Official sources - [n8n Custom Code Tool docs](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/) - Network accessline 332
- [n8n Custom Code Tool docs](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/) - Network accessline 332
- [n8n Custom Code Tool docs](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/) - Network accessline 333
- [ToolCode source](https://github.com/n8n-io/n8n/blob/master/packages/%40n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts) — the sandbox contract - Network accessline 333
- [ToolCode source](https://github.com/n8n-io/n8n/blob/master/packages/%40n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts) — the sandbox contract - Network accessline 334
- [LangChain tool docs](https://js.langchain.com/docs/modules/agents/tools/) — DynamicTool / DynamicStructuredTool - Network accessline 334
- [LangChain tool docs](https://js.langchain.com/docs/modules/agents/tools/) — DynamicTool / DynamicStructuredTool
skills/n8n-error-handling/ERROR_WORKFLOWS.md
- Network accessline 22
"execution": { "id": "...", "url": "https://your-n8n/workflow/<wfId>/executions/<execId>", - Network accessline 22
"execution": { "id": "...", "url": "https://your-n8n/workflow/<wfId>/executions/<execId>", - Network accessline 23
"id": "...", "url": "https://your-n8n/workflow/<wfId>/executions/<execId>", "retryOf": "...", - Network accessline 23
"id": "...", "url": "https://your-n8n/workflow/<wfId>/executions/<execId>", "retryOf": "...", - Network accessline 24
"url": "https://your-n8n/workflow/<wfId>/executions/<execId>", - Network accessline 24
"url": "https://your-n8n/workflow/<wfId>/executions/<execId>",
skills/n8n-expression-syntax/EXAMPLES.md
- Network accessline 122
https://api.example.com/orders/{{$json.body.order_id}} - Network accessline 122
https://api.example.com/orders/{{$json.body.order_id}} - Access to secretsline 411
[Credential-related source omitted] - Access to secretsline 411
[Credential-related source omitted] - Access to secretsline 415
[Credential-related source omitted] - Access to secretsline 415
[Credential-related source omitted] - Network accessline 421
[Credential-related source omitted] - Network accessline 421
[Credential-related source omitted] - Access to secretsline 421
[Credential-related source omitted] - Access to secretsline 421
[Credential-related source omitted] - Network accessline 423
**Result**: `https://api.example.com/data?key=secret123` - Network accessline 423
**Result**: `https://api.example.com/data?key=secret123` - Network accessline 449
https://nominatim.openstreetmap.org/search?q={{$json.body.text}}&format=json - Network accessline 449
https://nominatim.openstreetmap.org/search?q={{$json.body.text}}&format=json - Network accessline 455
https://api.weather.gov/points/{{$node["OpenStreetMap"].json[0].lat}},{{$node["OpenStreetMap"].json[0].lon}} - Network accessline 455
https://api.weather.gov/points/{{$node["OpenStreetMap"].json[0].lat}},{{$node["OpenStreetMap"].json[0].lon}}
skills/n8n-expression-syntax/README.md
- Network accessline 96
**Part of**: n8n-skills repository **Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 96
**Part of**: n8n-skills repository **Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 97
**Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 97
**Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en)
skills/n8n-expression-syntax/SKILL.md
- Access to secretsline 75
[Credential-related source omitted] - Access to secretsline 75
[Credential-related source omitted] - Network accessline 157
// In URLs https://api.example.com/users/{{$json.body.user_id}} - Network accessline 157
// In URLs https://api.example.com/users/{{$json.body.user_id}} - Network accessline 158
https://api.example.com/users/{{$json.body.user_id}} - Network accessline 158
https://api.example.com/users/{{$json.body.user_id}} - Access to secretsline 203
[Credential-related source omitted] - Access to secretsline 203
[Credential-related source omitted]
skills/n8n-mcp-tools-expert/OPERATIONS_GUIDE.md
skills/n8n-mcp-tools-expert/README.md
- Network accessline 98
**Part of**: n8n-skills repository **Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 98
**Part of**: n8n-skills repository **Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 99
**Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 99
**Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en)
skills/n8n-mcp-tools-expert/SEARCH_GUIDE.md
- Network accessline 343
validate_node({ nodeType: "nodes-base.httpRequest", config: {method: "POST", url: "https://api.example.com"}, - Network accessline 343
validate_node({ nodeType: "nodes-base.httpRequest", config: {method: "POST", url: "https://api.example.com"}, - Network accessline 344
nodeType: "nodes-base.httpRequest", config: {method: "POST", url: "https://api.example.com"}, profile: "runtime" - Network accessline 344
nodeType: "nodes-base.httpRequest", config: {method: "POST", url: "https://api.example.com"}, profile: "runtime" - Network accessline 345
config: {method: "POST", url: "https://api.example.com"}, - Network accessline 345
config: {method: "POST", url: "https://api.example.com"},
skills/n8n-mcp-tools-expert/SKILL.md
- Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 268
[Credential-related source omitted] - Access to secretsline 268
[Credential-related source omitted] - Access to secretsline 288
[Credential-related source omitted] - Access to secretsline 288
[Credential-related source omitted] - Access to secretsline 302
[Credential-related source omitted] - Access to secretsline 302
[Credential-related source omitted] - Access to secretsline 328
[Credential-related source omitted] - Access to secretsline 328
[Credential-related source omitted] - Access to secretsline 348
[Credential-related source omitted] - Access to secretsline 348
[Credential-related source omitted] - Access to secretsline 362
[Credential-related source omitted] - Access to secretsline 362
[Credential-related source omitted] - Access to secretsline 379
[Credential-related source omitted] - Access to secretsline 379
[Credential-related source omitted]
skills/n8n-mcp-tools-expert/WORKFLOW_GUIDE.md
- Access to secretsline 9
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Access to secretsline 555
[Credential-related source omitted] - Access to secretsline 555
[Credential-related source omitted] - Access to secretsline 668
[Credential-related source omitted] - Access to secretsline 668
[Credential-related source omitted]
skills/n8n-node-configuration/NATIVE_NODES.md
- Network accessline 322
{ "method": "GET", "url": "https://api.example.com/v1/contacts", - Network accessline 322
{ "method": "GET", "url": "https://api.example.com/v1/contacts", - Network accessline 323
"method": "GET", "url": "https://api.example.com/v1/contacts", "sendQuery": true, - Network accessline 323
"method": "GET", "url": "https://api.example.com/v1/contacts", "sendQuery": true, - Network accessline 324
"url": "https://api.example.com/v1/contacts", - Network accessline 324
"url": "https://api.example.com/v1/contacts", - Network accessline 473
"notes": "Why HTTP: no native node for this internal API", "notesInFlow": true, "parameters": { "url": "https://config.internal/api/v1/settings" } - Network accessline 473
"notes": "Why HTTP: no native node for this internal API", "notesInFlow": true, "parameters": { "url": "https://config.internal/api/v1/settings" } - Network accessline 474
"notesInFlow": true, "parameters": { "url": "https://config.internal/api/v1/settings" } } - Network accessline 474
"notesInFlow": true, "parameters": { "url": "https://config.internal/api/v1/settings" } } - Network accessline 475
"parameters": { "url": "https://config.internal/api/v1/settings" } - Network accessline 475
"parameters": { "url": "https://config.internal/api/v1/settings" }
skills/n8n-node-configuration/OPERATION_PATTERNS.md
- Network accessline 31
{ "method": "GET", "url": "https://api.example.com/users", - Network accessline 31
{ "method": "GET", "url": "https://api.example.com/users", - Network accessline 32
"method": "GET", "url": "https://api.example.com/users", "authentication": "none" - Network accessline 32
"method": "GET", "url": "https://api.example.com/users", "authentication": "none" - Network accessline 33
"url": "https://api.example.com/users", - Network accessline 33
"url": "https://api.example.com/users", - Network accessline 40
{ "method": "GET", "url": "https://api.example.com/users", - Network accessline 40
{ "method": "GET", "url": "https://api.example.com/users", - Network accessline 41
"method": "GET", "url": "https://api.example.com/users", "authentication": "none", - Network accessline 41
"method": "GET", "url": "https://api.example.com/users", "authentication": "none", - Network accessline 42
"url": "https://api.example.com/users", - Network accessline 42
"url": "https://api.example.com/users", - Network accessline 62
{ "method": "GET", "url": "https://api.example.com/users", - Network accessline 62
{ "method": "GET", "url": "https://api.example.com/users", - Network accessline 63
"method": "GET", "url": "https://api.example.com/users", "authentication": "predefinedCredentialType", - Network accessline 63
"method": "GET", "url": "https://api.example.com/users", "authentication": "predefinedCredentialType", - Network accessline 64
"url": "https://api.example.com/users", - Network accessline 64
"url": "https://api.example.com/users", - Network accessline 74
{ "method": "POST", "url": "https://api.example.com/users", - Network accessline 74
{ "method": "POST", "url": "https://api.example.com/users", - Network accessline 75
"method": "POST", "url": "https://api.example.com/users", "authentication": "none", - Network accessline 75
"method": "POST", "url": "https://api.example.com/users", "authentication": "none", - Network accessline 76
"url": "https://api.example.com/users", - Network accessline 76
"url": "https://api.example.com/users", - Network accessline 91
{ "method": "POST", "url": "https://api.example.com/users", - Network accessline 91
{ "method": "POST", "url": "https://api.example.com/users", - Network accessline 92
"method": "POST", "url": "https://api.example.com/users", "authentication": "none", - Network accessline 92
"method": "POST", "url": "https://api.example.com/users", "authentication": "none", - Network accessline 93
"url": "https://api.example.com/users", - Network accessline 93
"url": "https://api.example.com/users", - Network accessline 116
{ "method": "PUT", // or "PATCH" "url": "https://api.example.com/users/123", - Network accessline 116
{ "method": "PUT", // or "PATCH" "url": "https://api.example.com/users/123", - Network accessline 117
"method": "PUT", // or "PATCH" "url": "https://api.example.com/users/123", "authentication": "none", - Network accessline 117
"method": "PUT", // or "PATCH" "url": "https://api.example.com/users/123", "authentication": "none", - Network accessline 118
"url": "https://api.example.com/users/123", - Network accessline 118
"url": "https://api.example.com/users/123", - Network accessline 134
{ "method": "DELETE", "url": "https://api.example.com/users/123", - Network accessline 134
{ "method": "DELETE", "url": "https://api.example.com/users/123", - Network accessline 135
"method": "DELETE", "url": "https://api.example.com/users/123", "authentication": "none" - Network accessline 135
"method": "DELETE", "url": "https://api.example.com/users/123", "authentication": "none" - Network accessline 136
"url": "https://api.example.com/users/123", - Network accessline 136
"url": "https://api.example.com/users/123", - Network accessline 143
{ "method": "DELETE", "url": "https://api.example.com/users", - Network accessline 143
{ "method": "DELETE", "url": "https://api.example.com/users", - Network accessline 144
"method": "DELETE", "url": "https://api.example.com/users", "authentication": "none", - Network accessline 144
"method": "DELETE", "url": "https://api.example.com/users", "authentication": "none", - Network accessline 145
"url": "https://api.example.com/users", - Network accessline 145
"url": "https://api.example.com/users", - Network accessline 1102
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 1102
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 1103
"method": "POST", "url": "https://api.example.com/create", "authentication": "none" - Network accessline 1103
"method": "POST", "url": "https://api.example.com/create", "authentication": "none" - Network accessline 1104
"url": "https://api.example.com/create", - Network accessline 1104
"url": "https://api.example.com/create", - Network accessline 1121
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 1121
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 1122
"method": "POST", "url": "https://api.example.com/create", "authentication": "none", - Network accessline 1122
"method": "POST", "url": "https://api.example.com/create", "authentication": "none", - Network accessline 1123
"url": "https://api.example.com/create", - Network accessline 1123
"url": "https://api.example.com/create", - Network accessline 1137
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 1137
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 1138
"method": "POST", "url": "https://api.example.com/create", "authentication": "none", - Network accessline 1138
"method": "POST", "url": "https://api.example.com/create", "authentication": "none", - Network accessline 1139
"url": "https://api.example.com/create", - Network accessline 1139
"url": "https://api.example.com/create", - Network accessline 1204
{ "method": "GET", "url": "https://api.example.com/users", - Network accessline 1204
{ "method": "GET", "url": "https://api.example.com/users", - Network accessline 1205
"method": "GET", "url": "https://api.example.com/users", "authentication": "predefinedCredentialType", - Network accessline 1205
"method": "GET", "url": "https://api.example.com/users", "authentication": "predefinedCredentialType", - Network accessline 1206
"url": "https://api.example.com/users", - Network accessline 1206
"url": "https://api.example.com/users", - Network accessline 1223
{ "method": "POST", "url": "https://api.example.com/users", - Network accessline 1223
{ "method": "POST", "url": "https://api.example.com/users", - Network accessline 1224
"method": "POST", "url": "https://api.example.com/users", "authentication": "none", - Network accessline 1224
"method": "POST", "url": "https://api.example.com/users", "authentication": "none", - Network accessline 1225
"url": "https://api.example.com/users", - Network accessline 1225
"url": "https://api.example.com/users",
skills/n8n-node-configuration/README.md
- Network accessline 203
{ "method": "POST", "url": "https://api.example.com/create" - Network accessline 203
{ "method": "POST", "url": "https://api.example.com/create" - Network accessline 204
"method": "POST", "url": "https://api.example.com/create" } - Network accessline 204
"method": "POST", "url": "https://api.example.com/create" } - Network accessline 205
"url": "https://api.example.com/create" - Network accessline 205
"url": "https://api.example.com/create" - Network accessline 216
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 216
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 217
"method": "POST", "url": "https://api.example.com/create", "sendBody": true, - Network accessline 217
"method": "POST", "url": "https://api.example.com/create", "sendBody": true, - Network accessline 218
"url": "https://api.example.com/create", - Network accessline 218
"url": "https://api.example.com/create", - Network accessline 362
Conceived by Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 362
Conceived by Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en)
skills/n8n-node-configuration/SKILL.md
- Network accessline 60
{ "method": "GET", "url": "https://api.example.com" - Network accessline 60
{ "method": "GET", "url": "https://api.example.com" - Network accessline 61
"method": "GET", "url": "https://api.example.com" // sendBody not shown (GET doesn't have body) - Network accessline 61
"method": "GET", "url": "https://api.example.com" // sendBody not shown (GET doesn't have body) - Network accessline 62
"url": "https://api.example.com" - Network accessline 62
"url": "https://api.example.com" - Network accessline 67
{ "method": "POST", "url": "https://api.example.com", - Network accessline 67
{ "method": "POST", "url": "https://api.example.com", - Network accessline 68
"method": "POST", "url": "https://api.example.com", "sendBody": true, // Now visible! - Network accessline 68
"method": "POST", "url": "https://api.example.com", "sendBody": true, // Now visible! - Network accessline 69
"url": "https://api.example.com", - Network accessline 69
"url": "https://api.example.com", - Access to secretsline 177
[Credential-related source omitted] - Access to secretsline 177
[Credential-related source omitted]
skills/n8n-self-hosting/CREDENTIAL_OVERWRITES.md
- Network accessline 12
Docs: <https://docs.n8n.io/administer/manage-credentials/credential-overwrites> - Network accessline 12
Docs: <https://docs.n8n.io/administer/manage-credentials/credential-overwrites> - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Network accessline 51
[Credential-related source omitted] - Network accessline 51
[Credential-related source omitted] - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted]
skills/n8n-self-hosting/DAY2.md
- Access to secretsline 12
[Credential-related source omitted] - Access to secretsline 12
[Credential-related source omitted] - Network accessline 39
just majors. For instances a business depends on, docs recommend trying the update on a staging copy first. Official update guide: <https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/update-n8n>. - Network accessline 39
just majors. For instances a business depends on, docs recommend trying the update on a staging copy first. Official update guide: <https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/update-n8n>. - Network accessline 41
<https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/update-n8n>. - Network accessline 41
<https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/update-n8n>. - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 91
[Credential-related source omitted] - Access to secretsline 91
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Network accessline 119
`N8N_ENCRYPTION_KEY` to re-import; `--decrypted` writes **plaintext secrets** — treat such a file as a live credential dump. CLI reference: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line>. - Network accessline 119
`N8N_ENCRYPTION_KEY` to re-import; `--decrypted` writes **plaintext secrets** — treat such a file as a live credential dump. CLI reference: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line>. - Network accessline 121
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line>. - Network accessline 121
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line>. - Access to secretsline 131
[Credential-related source omitted] - Access to secretsline 131
[Credential-related source omitted] - Network accessline 166
- **Log tuning** — `N8N_LOG_LEVEL` (`info` default; `debug` when diagnosing) and `N8N_LOG_OUTPUT=console` fit Docker; file output + rotation vars exist: <https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/set-up-logging>. - Network accessline 166
- **Log tuning** — `N8N_LOG_LEVEL` (`info` default; `debug` when diagnosing) and `N8N_LOG_OUTPUT=console` fit Docker; file output + rotation vars exist: <https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/set-up-logging>. - Network accessline 167
`N8N_LOG_OUTPUT=console` fit Docker; file output + rotation vars exist: <https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/set-up-logging>. - **Prometheus** — `N8N_METRICS=true` exposes `/metrics` **unauthenticated**; since Caddy proxi - Network accessline 167
`N8N_LOG_OUTPUT=console` fit Docker; file output + rotation vars exist: <https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/set-up-logging>. - **Prometheus** — `N8N_METRICS=true` exposes `/metrics` **unauthenticated**; since Caddy proxi - Network accessline 168
<https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/set-up-logging>. - Network accessline 168
<https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/set-up-logging>. - Network accessline 169
- **Prometheus** — `N8N_METRICS=true` exposes `/metrics` **unauthenticated**; since Caddy proxies everything, that would be public — keep it off, or block `/metrics` in the Caddyfile first: <https://docs.n8n.io/deploy/host-n8n/configure - Network accessline 169
- **Prometheus** — `N8N_METRICS=true` exposes `/metrics` **unauthenticated**; since Caddy proxies everything, that would be public — keep it off, or block `/metrics` in the Caddyfile first: <https://docs.n8n.io/deploy/host-n8n/configure - Network accessline 170
everything, that would be public — keep it off, or block `/metrics` in the Caddyfile first: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/enable-prometheus-metrics>. - **Health/monitoring en - Network accessline 170
everything, that would be public — keep it off, or block `/metrics` in the Caddyfile first: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/enable-prometheus-metrics>. - **Health/monitoring en - Network accessline 171
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/enable-prometheus-metrics>. - Network accessline 171
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/enable-prometheus-metrics>. - Network accessline 172
- **Health/monitoring endpoints** — `/healthz` (process up) vs `/healthz/readiness` (DB ready): <https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/monitor-n8n>. - **Periodic security audit** — `docker compose exec -u node n8n n8n audit - Network accessline 172
- **Health/monitoring endpoints** — `/healthz` (process up) vs `/healthz/readiness` (DB ready): <https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/monitor-n8n>. - **Periodic security audit** — `docker compose exec -u node n8n n8n audit - Network accessline 173
<https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/monitor-n8n>. - Network accessline 173
<https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/monitor-n8n>. - Network accessline 174
- **Periodic security audit** — `docker compose exec -u node n8n n8n audit` (or the `n8n_audit_instance` MCP tool from the n8n-mcp pack): <https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits>. - Network accessline 174
- **Periodic security audit** — `docker compose exec -u node n8n n8n audit` (or the `n8n_audit_instance` MCP tool from the n8n-mcp pack): <https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits>. - Network accessline 176
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits>. - Network accessline 176
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits>.
skills/n8n-self-hosting/QUEUE_MODE.md
- Network accessline 17
mandatory** — don't deploy queue mode without it. `init-data.sh` creates the non-root DB user n8n connects as, separate from the Postgres superuser. Official guide: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mod - Network accessline 17
mandatory** — don't deploy queue mode without it. `init-data.sh` creates the non-root DB user n8n connects as, separate from the Postgres superuser. Official guide: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mod - Network accessline 19
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode>. - Network accessline 19
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode>. - Network accessline 26
- `QUEUE_BULL_REDIS_HOST=redis`, `QUEUE_BULL_REDIS_PORT=6379` (Redis auth/TLS/cluster vars exist for external Redis; `QUEUE_BULL_REDIS_USERNAME` needs Redis ≥ 6 — full list: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-confi - Network accessline 26
- `QUEUE_BULL_REDIS_HOST=redis`, `QUEUE_BULL_REDIS_PORT=6379` (Redis auth/TLS/cluster vars exist for external Redis; `QUEUE_BULL_REDIS_USERNAME` needs Redis ≥ 6 — full list: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-confi - Network accessline 27
exist for external Redis; `QUEUE_BULL_REDIS_USERNAME` needs Redis ≥ 6 — full list: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/queue-mode>) - `QUEUE_HEALTH_CHECK_ACTIVE=true` (workers e - Network accessline 27
exist for external Redis; `QUEUE_BULL_REDIS_USERNAME` needs Redis ≥ 6 — full list: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/queue-mode>) - `QUEUE_HEALTH_CHECK_ACTIVE=true` (workers e - Network accessline 28
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/queue-mode>) - Network accessline 28
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/queue-mode>) - Network accessline 118
CLI runs bypass it — and in queue mode a value other than `-1` **supersedes the worker `--concurrency` flag**. Details: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/control-concurrency>. - Network accessline 118
CLI runs bypass it — and in queue mode a value other than `-1` **supersedes the worker `--concurrency` flag**. Details: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/control-concurrency>. - Network accessline 120
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/control-concurrency>. - Network accessline 120
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/control-concurrency>. - Network accessline 125
shared volume — workers wouldn't reliably resolve each other's files. The template sets `N8N_DEFAULT_BINARY_DATA_MODE=database`: binary data lives in Postgres, visible to main and every worker. Doc: <https://docs.n8n.io/deploy/host-n8n/ - Network accessline 125
shared volume — workers wouldn't reliably resolve each other's files. The template sets `N8N_DEFAULT_BINARY_DATA_MODE=database`: binary data lives in Postgres, visible to main and every worker. Doc: <https://docs.n8n.io/deploy/host-n8n/ - Network accessline 126
`N8N_DEFAULT_BINARY_DATA_MODE=database`: binary data lives in Postgres, visible to main and every worker. Doc: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/handle-binary-data>. - `database` mode makes execution **pruning** l - Network accessline 126
`N8N_DEFAULT_BINARY_DATA_MODE=database`: binary data lives in Postgres, visible to main and every worker. Doc: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/handle-binary-data>. - `database` mode makes execution **pruning** l - Network accessline 127
every worker. Doc: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/handle-binary-data>. - Network accessline 127
every worker. Doc: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/handle-binary-data>. - Network accessline 133
`N8N_EXTERNAL_STORAGE_S3_*` vars, and an S3 **lifecycle policy is mandatory** (in s3 mode n8n delegates binary pruning to the bucket instead of doing it itself). Doc: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/use-extern - Network accessline 133
`N8N_EXTERNAL_STORAGE_S3_*` vars, and an S3 **lifecycle policy is mandatory** (in s3 mode n8n delegates binary pruning to the bucket instead of doing it itself). Doc: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/use-extern - Network accessline 135
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/use-external-storage>. - Network accessline 135
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/use-external-storage>. - Network accessline 141
responsive. Set `N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true` on the main so it stays out of the webhook pool. Most deployments don't need this — add it only when webhook intake is the bottleneck. Doc: <https://docs.n8n.io/deploy/host-n8n/conf - Network accessline 141
responsive. Set `N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true` on the main so it stays out of the webhook pool. Most deployments don't need this — add it only when webhook intake is the bottleneck. Doc: <https://docs.n8n.io/deploy/host-n8n/conf - Network accessline 143
bottleneck. Doc: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode>. - Network accessline 143
bottleneck. Doc: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode>. - Network accessline 156
sizing tables. For OOM crashes the docs' first advice is to redesign the workflow (batches, sub-workflows, less Code node), then raise the heap via `NODE_OPTIONS=--max-old-space-size`: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scal - Network accessline 156
sizing tables. For OOM crashes the docs' first advice is to redesign the workflow (batches, sub-workflows, less Code node), then raise the heap via `NODE_OPTIONS=--max-old-space-size`: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scal - Network accessline 157
sub-workflows, less Code node), then raise the heap via `NODE_OPTIONS=--max-old-space-size`: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues>. Confirm the box is sized before deploying. - Network accessline 157
sub-workflows, less Code node), then raise the heap via `NODE_OPTIONS=--max-old-space-size`: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues>. Confirm the box is sized before deploying. - Network accessline 158
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues>. Confirm the box - Network accessline 158
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues>. Confirm the box - Network accessline 164
docker compose ps # postgres & redis healthy, then n8n (main) + workers Up docker compose logs caddy | grep -i 'certificate obtained' curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz - Network accessline 164
docker compose ps # postgres & redis healthy, then n8n (main) + workers Up docker compose logs caddy | grep -i 'certificate obtained' curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz - Network accessline 165
docker compose logs caddy | grep -i 'certificate obtained' curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz docker compose logs n8n-worker | grep -iE 'ready|listening|jobs' # worker is up + listening - Network accessline 165
docker compose logs caddy | grep -i 'certificate obtained' curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz docker compose logs n8n-worker | grep -iE 'ready|listening|jobs' # worker is up + listening - Network accessline 166
curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz - Network accessline 166
curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz
skills/n8n-self-hosting/README.md
- Network accessline 98
allowlists via the launcher config, and upgrading n8n and the runners together. Previously 1.1.0 — realigned with the restructured official hosting docs ([docs.n8n.io/deploy/host-n8n](https://docs.n8n.io/deploy/host-n8n)): queue-mode binary - Network accessline 98
allowlists via the launcher config, and upgrading n8n and the runners together. Previously 1.1.0 — realigned with the restructured official hosting docs ([docs.n8n.io/deploy/host-n8n](https://docs.n8n.io/deploy/host-n8n)): queue-mode binary - Network accessline 99
Previously 1.1.0 — realigned with the restructured official hosting docs ([docs.n8n.io/deploy/host-n8n](https://docs.n8n.io/deploy/host-n8n)): queue-mode binary data moved to `database` mode (filesystem is unsupported in queue mode), SSRF p - Network accessline 99
Previously 1.1.0 — realigned with the restructured official hosting docs ([docs.n8n.io/deploy/host-n8n](https://docs.n8n.io/deploy/host-n8n)): queue-mode binary data moved to `database` mode (filesystem is unsupported in queue mode), SSRF p - Network accessline 100
([docs.n8n.io/deploy/host-n8n](https://docs.n8n.io/deploy/host-n8n)): queue-mode binary data - Network accessline 100
([docs.n8n.io/deploy/host-n8n](https://docs.n8n.io/deploy/host-n8n)): queue-mode binary data
skills/n8n-self-hosting/SECURITY.md
- Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Network accessline 52
above. Real rotation is a formal, one-way feature (UI: Settings → Data Encryption Keys, behind the `N8N_ENV_FEAT_ENCRYPTION_KEY_ROTATION` flag; full DB backup required first; records re-encrypt lazily): <https://docs.n8n.io/deploy/host- - Network accessline 52
above. Real rotation is a formal, one-way feature (UI: Settings → Data Encryption Keys, behind the `N8N_ENV_FEAT_ENCRYPTION_KEY_ROTATION` flag; full DB backup required first; records re-encrypt lazily): <https://docs.n8n.io/deploy/host- - Network accessline 54
re-encrypt lazily): <https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys>. - Network accessline 54
re-encrypt lazily): <https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys>. - Network accessline 63
| `N8N_ENCRYPTION_KEY` set explicitly | ✓ | Key lives in your secret store, not just a volume | | `N8N_SECURE_COOKIE=true` + `N8N_PROXY_HOPS=1` + `N8N_PROTOCOL=https` | ✓ | Login cookie only over HTTPS; n8n trusts Caddy's `X-Forwarded-*`. ( - Network accessline 63
| `N8N_ENCRYPTION_KEY` set explicitly | ✓ | Key lives in your secret store, not just a volume | | `N8N_SECURE_COOKIE=true` + `N8N_PROXY_HOPS=1` + `N8N_PROTOCOL=https` | ✓ | Login cookie only over HTTPS; n8n trusts Caddy's `X-Forwarded-*`. ( - Network accessline 64
| `N8N_SECURE_COOKIE=true` + `N8N_PROXY_HOPS=1` + `N8N_PROTOCOL=https` | ✓ | Login cookie only over HTTPS; n8n trusts Caddy's `X-Forwarded-*`. (Get these wrong and secure-cookie can lock you out.) | | `WEBHOOK_URL` / `N8N_EDITOR_BASE_URL` = - Network accessline 64
| `N8N_SECURE_COOKIE=true` + `N8N_PROXY_HOPS=1` + `N8N_PROTOCOL=https` | ✓ | Login cookie only over HTTPS; n8n trusts Caddy's `X-Forwarded-*`. (Get these wrong and secure-cookie can lock you out.) | | `WEBHOOK_URL` / `N8N_EDITOR_BASE_URL` = - Network accessline 65
| `WEBHOOK_URL` / `N8N_EDITOR_BASE_URL` = the public HTTPS URL | ✓ | Otherwise n8n hands out `http://localhost:5678/...` webhook & OAuth-callback URLs | - Network accessline 65
| `WEBHOOK_URL` / `N8N_EDITOR_BASE_URL` = the public HTTPS URL | ✓ | Otherwise n8n hands out `http://localhost:5678/...` webhook & OAuth-callback URLs | - Network accessline 66
| `N8N_DIAGNOSTICS_ENABLED=false` | ✓ | Turns off anonymous telemetry (side effect: also disables the Code node's "Ask AI"). For full outbound isolation (update pings, template fetches) see <https://docs.n8n.io/deploy/host-n8n/configure-n8n - Network accessline 66
| `N8N_DIAGNOSTICS_ENABLED=false` | ✓ | Turns off anonymous telemetry (side effect: also disables the Code node's "Ask AI"). For full outbound isolation (update pings, template fetches) see <https://docs.n8n.io/deploy/host-n8n/configure-n8n - Network accessline 70
| Internal ports never published (5678/5432/6379) | ✓ | Only Caddy is internet-facing | | `N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true` | optional | Forces `0600` on the settings file in `~/.n8n` (default `false`) | | `N8N_RUNNERS_ENABLED=tr - Network accessline 70
| Internal ports never published (5678/5432/6379) | ✓ | Only Caddy is internet-facing | | `N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true` | optional | Forces `0600` on the settings file in `~/.n8n` (default `false`) | | `N8N_RUNNERS_ENABLED=tr - Network accessline 71
| `N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true` | optional | Forces `0600` on the settings file in `~/.n8n` (default `false`) | | `N8N_RUNNERS_ENABLED=true` | ✓ | Moves Code-node execution into a task runner (no-op on n8n ≥ 2.0, where runner - Network accessline 71
| `N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true` | optional | Forces `0600` on the settings file in `~/.n8n` (default `false`) | | `N8N_RUNNERS_ENABLED=true` | ✓ | Moves Code-node execution into a task runner (no-op on n8n ≥ 2.0, where runner - Network accessline 72
| `N8N_RUNNERS_ENABLED=true` | ✓ | Moves Code-node execution into a task runner (no-op on n8n ≥ 2.0, where runners are always on). The default **internal** mode is a child process of n8n with the same user and access, which is not isolation - Network accessline 72
| `N8N_RUNNERS_ENABLED=true` | ✓ | Moves Code-node execution into a task runner (no-op on n8n ≥ 2.0, where runners are always on). The default **internal** mode is a child process of n8n with the same user and access, which is not isolation - Network accessline 73
| Code-node module allowlists left at defaults | ✓ | JS: `NODE_FUNCTION_ALLOW_BUILTIN` / `NODE_FUNCTION_ALLOW_EXTERNAL`. Python: `N8N_RUNNERS_STDLIB_ALLOW` / `N8N_RUNNERS_EXTERNAL_ALLOW`, empty by default, so even `import json` is rejected. - Network accessline 73
| Code-node module allowlists left at defaults | ✓ | JS: `NODE_FUNCTION_ALLOW_BUILTIN` / `NODE_FUNCTION_ALLOW_EXTERNAL`. Python: `N8N_RUNNERS_STDLIB_ALLOW` / `N8N_RUNNERS_EXTERNAL_ALLOW`, empty by default, so even `import json` is rejected. - Network accessline 74
| `N8N_SSRF_PROTECTION_ENABLED=true` | optional | Off by default (newer n8n only). Stops HTTP-type nodes from reaching loopback/private/link-local ranges — i.e. Docker-network neighbors like `postgres:5432` and cloud metadata IPs. Enable on - Network accessline 74
| `N8N_SSRF_PROTECTION_ENABLED=true` | optional | Off by default (newer n8n only). Stops HTTP-type nodes from reaching loopback/private/link-local ranges — i.e. Docker-network neighbors like `postgres:5432` and cloud metadata IPs. Enable on - Network accessline 75
| `NODES_EXCLUDE` | optional | Execute Command is already blocked by default (setting `NODES_EXCLUDE=[]` would *re-enable* it). To block more, JSON-array syntax: `NODES_EXCLUDE=["n8n-nodes-base.readWriteFile"]` — <https://docs.n8n.io/deploy - Network accessline 75
| `NODES_EXCLUDE` | optional | Execute Command is already blocked by default (setting `NODES_EXCLUDE=[]` would *re-enable* it). To block more, JSON-array syntax: `NODES_EXCLUDE=["n8n-nodes-base.readWriteFile"]` — <https://docs.n8n.io/deploy - Network accessline 76
| `N8N_PUBLIC_API_DISABLED=true` | optional | Turn the public REST API off if unused (commented in the single template); pair with `N8N_PUBLIC_API_SWAGGERUI_DISABLED=true` to also drop the API playground | | OS firewall: only 22/80/443 | ap - Network accessline 76
| `N8N_PUBLIC_API_DISABLED=true` | optional | Turn the public REST API off if unused (commented in the single template); pair with `N8N_PUBLIC_API_SWAGGERUI_DISABLED=true` to also drop the API playground | | OS firewall: only 22/80/443 | ap - Network accessline 77
| OS firewall: only 22/80/443 | apply in step 5 | `ufw allow OpenSSH && ufw allow 80 && ufw allow 443 && ufw enable` | | Owner account + 2FA | hand-off | Whoever completes the owner-setup form first claims the instance — do it before sharin - Network accessline 77
| OS firewall: only 22/80/443 | apply in step 5 | `ufw allow OpenSSH && ufw allow 80 && ufw allow 443 && ufw enable` | | Owner account + 2FA | hand-off | Whoever completes the owner-setup form first claims the instance — do it before sharin - Network accessline 78
| Owner account + 2FA | hand-off | Whoever completes the owner-setup form first claims the instance — do it before sharing the URL. Enable 2FA (per-user 2FA is free; org-wide *enforcement* via `N8N_MFA_ENFORCED_ENABLED` needs a paid plan). - Network accessline 78
| Owner account + 2FA | hand-off | Whoever completes the owner-setup form first claims the instance — do it before sharing the URL. Enable 2FA (per-user 2FA is free; org-wide *enforcement* via `N8N_MFA_ENFORCED_ENABLED` needs a paid plan). - Network accessline 79
| SMTP (`N8N_EMAIL_MODE=smtp` + `N8N_SMTP_*`) | multi-user | Without SMTP, invite links must be copied manually and users **cannot self-serve password resets**: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-envi - Network accessline 79
| SMTP (`N8N_EMAIL_MODE=smtp` + `N8N_SMTP_*`) | multi-user | Without SMTP, invite links must be copied manually and users **cannot self-serve password resets**: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-envi - Access to secretsline 80
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted]
skills/n8n-self-hosting/SINGLE_MODE.md
- Network accessline 23
These are the only two supported databases — MySQL/MariaDB support no longer exists, and Postgres is supported on "actively maintained versions" only: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/choose-n8ns-database>. - Network accessline 23
These are the only two supported databases — MySQL/MariaDB support no longer exists, and Postgres is supported on "actively maintained versions" only: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/choose-n8ns-database>. - Network accessline 25
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/choose-n8ns-database>. - Network accessline 25
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/choose-n8ns-database>. - Network accessline 52
but writes plaintext secrets to disk — avoid it unless that's explicitly wanted, and shred the file after.) Plan a short maintenance window. CLI reference: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line>. - Network accessline 52
but writes plaintext secrets to disk — avoid it unless that's explicitly wanted, and shred the file after.) Plan a short maintenance window. CLI reference: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line>. - Network accessline 54
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line>. - Network accessline 54
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line>. - Network accessline 65
docker compose ps # caddy + n8n Up docker compose exec n8n wget -qO- http://localhost:5678/healthz # n8n itself up (internal) - Network accessline 65
docker compose ps # caddy + n8n Up docker compose exec n8n wget -qO- http://localhost:5678/healthz # n8n itself up (internal) - Network accessline 66
docker compose exec n8n wget -qO- http://localhost:5678/healthz # n8n itself up (internal) - Network accessline 66
docker compose exec n8n wget -qO- http://localhost:5678/healthz # n8n itself up (internal) - Network accessline 68
curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz # public; retry covers ACME delay - Network accessline 68
curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz # public; retry covers ACME delay
skills/n8n-self-hosting/SKILL.md
- Dangerous shell operationline 8
This skill takes a **fresh Linux VM** (Ubuntu/Debian, root or sudo SSH) to a **running, - Dangerous shell operationline 8
This skill takes a **fresh Linux VM** (Ubuntu/Debian, root or sudo SSH) to a **running, - Dangerous shell operationline 58
- **SSH target** — `user@host` and how you authenticate (key path or the user confirms the agent already has access). Root or a sudo user. - Dangerous shell operationline 58
- **SSH target** — `user@host` and how you authenticate (key path or the user confirms the agent already has access). Root or a sudo user. - Network accessline 78
### 1. Preflight (the cheapest failure is the one you catch here) - SSH in; confirm the OS is Debian/Ubuntu-like (`. /etc/os-release`). - **DNS must already point at the box.** Compare the box's public IP (`curl -s ifconfig.me`) - Network accessline 78
### 1. Preflight (the cheapest failure is the one you catch here) - SSH in; confirm the OS is Debian/Ubuntu-like (`. /etc/os-release`). - **DNS must already point at the box.** Compare the box's public IP (`curl -s ifconfig.me`) - Network accessline 79
- SSH in; confirm the OS is Debian/Ubuntu-like (`. /etc/os-release`). - **DNS must already point at the box.** Compare the box's public IP (`curl -s ifconfig.me`) with `dig +short <fqdn>` (run it from the box AND ideally your laptop). If - Network accessline 79
- SSH in; confirm the OS is Debian/Ubuntu-like (`. /etc/os-release`). - **DNS must already point at the box.** Compare the box's public IP (`curl -s ifconfig.me`) with `dig +short <fqdn>` (run it from the box AND ideally your laptop). If - Network accessline 80
- **DNS must already point at the box.** Compare the box's public IP (`curl -s ifconfig.me`) - Network accessline 80
- **DNS must already point at the box.** Compare the box's public IP (`curl -s ifconfig.me`) - Access to secretsline 109
[Credential-related source omitted] - Access to secretsline 109
[Credential-related source omitted] - Access to secretsline 114
[Credential-related source omitted] - Access to secretsline 114
[Credential-related source omitted] - Network accessline 128
### 7. Verify (don't declare success without this) - `docker compose ps` — every service `Up`/healthy (queue: postgres & redis `healthy` first). - **n8n itself up (internal):** `docker compose exec n8n wget -qO- http://localhost:5678/health - Network accessline 128
### 7. Verify (don't declare success without this) - `docker compose ps` — every service `Up`/healthy (queue: postgres & redis `healthy` first). - **n8n itself up (internal):** `docker compose exec n8n wget -qO- http://localhost:5678/health - Network accessline 129
- `docker compose ps` — every service `Up`/healthy (queue: postgres & redis `healthy` first). - **n8n itself up (internal):** `docker compose exec n8n wget -qO- http://localhost:5678/healthz` → `{"status":"ok"}`. This separates "n8n is ru - Network accessline 129
- `docker compose ps` — every service `Up`/healthy (queue: postgres & redis `healthy` first). - **n8n itself up (internal):** `docker compose exec n8n wget -qO- http://localhost:5678/healthz` → `{"status":"ok"}`. This separates "n8n is ru - Network accessline 130
- **n8n itself up (internal):** `docker compose exec n8n wget -qO- http://localhost:5678/healthz` - Network accessline 130
- **n8n itself up (internal):** `docker compose exec n8n wget -qO- http://localhost:5678/healthz` - Network accessline 131
→ `{"status":"ok"}`. This separates "n8n is running" from "TLS isn't ready yet." - **Cert issued:** `docker compose logs caddy | grep -i 'certificate obtained'`. First-boot ACME can take a minute or two; until it finishes, a public `https - Network accessline 131
→ `{"status":"ok"}`. This separates "n8n is running" from "TLS isn't ready yet." - **Cert issued:** `docker compose logs caddy | grep -i 'certificate obtained'`. First-boot ACME can take a minute or two; until it finishes, a public `https - Network accessline 132
- **Cert issued:** `docker compose logs caddy | grep -i 'certificate obtained'`. First-boot ACME can take a minute or two; until it finishes, a public `https://` request fails TLS — that means the cert is still pending, **not** that n8n - Network accessline 132
- **Cert issued:** `docker compose logs caddy | grep -i 'certificate obtained'`. First-boot ACME can take a minute or two; until it finishes, a public `https://` request fails TLS — that means the cert is still pending, **not** that n8n - Network accessline 133
can take a minute or two; until it finishes, a public `https://` request fails TLS — that means the cert is still pending, **not** that n8n is down. - **Public reachability (with retry):** `curl -fsS --retry 5 --retry-delay 10 https://<fq - Network accessline 133
can take a minute or two; until it finishes, a public `https://` request fails TLS — that means the cert is still pending, **not** that n8n is down. - **Public reachability (with retry):** `curl -fsS --retry 5 --retry-delay 10 https://<fq - Network accessline 134
the cert is still pending, **not** that n8n is down. - **Public reachability (with retry):** `curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz` → `{"status":"ok"}`. (`/healthz` only proves the process is reachable; `/healthz/re - Network accessline 134
the cert is still pending, **not** that n8n is down. - **Public reachability (with retry):** `curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz` → `{"status":"ok"}`. (`/healthz` only proves the process is reachable; `/healthz/re - Network accessline 135
- **Public reachability (with retry):** `curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz` - Network accessline 135
- **Public reachability (with retry):** `curl -fsS --retry 5 --retry-delay 10 https://<fqdn>/healthz` - Network accessline 185
Authoritative upstream reference: the official hosting docs live at <https://docs.n8n.io/deploy/host-n8n> (restructured mid-2026 from the old `/hosting/` paths — - Network accessline 185
Authoritative upstream reference: the official hosting docs live at <https://docs.n8n.io/deploy/host-n8n> (restructured mid-2026 from the old `/hosting/` paths — - Network accessline 186
<https://docs.n8n.io/deploy/host-n8n> (restructured mid-2026 from the old `/hosting/` paths — - Network accessline 186
<https://docs.n8n.io/deploy/host-n8n> (restructured mid-2026 from the old `/hosting/` paths — - Network accessline 187
prefer these URLs). The env-var reference index is at <https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables>. When this skill and the live docs disagree, trust the docs and tell the user. - Network accessline 187
prefer these URLs). The env-var reference index is at <https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables>. When this skill and the live docs disagree, trust the docs and tell the user. - Network accessline 188
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables>. - Network accessline 188
<https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables>.
skills/n8n-self-hosting/TASK_RUNNERS.md
- Network accessline 4
file covers switching a Docker deployment to **external mode** — a `n8nio/runners` sidecar next to n8n — which is what makes Python Code nodes work and what the docs require for real isolation. Official guide: <https://docs.n8n.io/deploy/ho - Network accessline 4
file covers switching a Docker deployment to **external mode** — a `n8nio/runners` sidecar next to n8n — which is what makes Python Code nodes work and what the docs require for real isolation. Official guide: <https://docs.n8n.io/deploy/ho - Network accessline 6
Official guide: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners>. - Network accessline 6
Official guide: <https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners>. - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 57
[Credential-related source omitted] - Access to secretsline 57
[Credential-related source omitted] - Network accessline 61
restart: unless-stopped environment: - N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679 # the n8n service name - Network accessline 61
restart: unless-stopped environment: - N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679 # the n8n service name - Network accessline 62
[Credential-related source omitted] - Network accessline 62
[Credential-related source omitted] - Network accessline 63
- N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679 # the n8n service name - Network accessline 63
- N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679 # the n8n service name - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Network accessline 85
A launcher connects to exactly one broker, and every worker is its own broker. That breaks the template's `deploy.replicas` / `--scale n8n-worker=N` approach. A single `task-runners` service pointed at `http://n8n-worker:5679` attaches to w - Network accessline 85
A launcher connects to exactly one broker, and every worker is its own broker. That breaks the template's `deploy.replicas` / `--scale n8n-worker=N` approach. A single `task-runners` service pointed at `http://n8n-worker:5679` attaches to w - Network accessline 86
template's `deploy.replicas` / `--scale n8n-worker=N` approach. A single `task-runners` service pointed at `http://n8n-worker:5679` attaches to whichever replica DNS returns first. The other workers have no runner, so their Code nodes wait - Network accessline 86
template's `deploy.replicas` / `--scale n8n-worker=N` approach. A single `task-runners` service pointed at `http://n8n-worker:5679` attaches to whichever replica DNS returns first. The other workers have no runner, so their Code nodes wait - Network accessline 87
pointed at `http://n8n-worker:5679` attaches to whichever replica DNS returns first. The other - Network accessline 87
pointed at `http://n8n-worker:5679` attaches to whichever replica DNS returns first. The other - Network accessline 99
restart: unless-stopped environment: N8N_RUNNERS_TASK_BROKER_URI: http://n8n-worker-1:5679 - Network accessline 99
restart: unless-stopped environment: N8N_RUNNERS_TASK_BROKER_URI: http://n8n-worker-1:5679 - Network accessline 100
[Credential-related source omitted] - Network accessline 100
[Credential-related source omitted] - Network accessline 101
N8N_RUNNERS_TASK_BROKER_URI: http://n8n-worker-1:5679 - Network accessline 101
N8N_RUNNERS_TASK_BROKER_URI: http://n8n-worker-1:5679 - Access to secretsline 102
[Credential-related source omitted] - Access to secretsline 102
[Credential-related source omitted] - Access to secretsline 109
[Credential-related source omitted] - Access to secretsline 109
[Credential-related source omitted]
skills/n8n-self-hosting/assets/.env.queue.example
skills/n8n-self-hosting/assets/.env.single.example
skills/n8n-self-hosting/assets/docker-compose.queue.yml
- Access to secretsline 6
[Credential-related source omitted] - Access to secretsline 6
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Network accessline 150
N8N_PORT: "5678" N8N_PROTOCOL: https N8N_EDITOR_BASE_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 150
N8N_PORT: "5678" N8N_PROTOCOL: https N8N_EDITOR_BASE_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 151
N8N_PROTOCOL: https N8N_EDITOR_BASE_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/ WEBHOOK_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 151
N8N_PROTOCOL: https N8N_EDITOR_BASE_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/ WEBHOOK_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 152
N8N_EDITOR_BASE_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 152
N8N_EDITOR_BASE_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 153
WEBHOOK_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 153
WEBHOOK_URL: https://${SUBDOMAIN}.${DOMAIN_NAME}/
skills/n8n-self-hosting/assets/docker-compose.single.yml
- Access to secretsline 5
[Credential-related source omitted] - Access to secretsline 5
[Credential-related source omitted] - Network accessline 37
- N8N_PORT=5678 - N8N_PROTOCOL=https - N8N_EDITOR_BASE_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 37
- N8N_PORT=5678 - N8N_PROTOCOL=https - N8N_EDITOR_BASE_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 38
- N8N_PROTOCOL=https - N8N_EDITOR_BASE_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 38
- N8N_PROTOCOL=https - N8N_EDITOR_BASE_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 39
- N8N_EDITOR_BASE_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 39
- N8N_EDITOR_BASE_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 40
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Network accessline 40
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted]
skills/n8n-self-hosting/assets/init-data.sh
skills/n8n-subworkflows/SKILL.md
skills/n8n-validation-expert/ERROR_CATALOG.md
- Network accessline 102
"method": "GET", "authentication": "none", "url": "https://api.example.com/data" // ✅ Added - Network accessline 102
"method": "GET", "authentication": "none", "url": "https://api.example.com/data" // ✅ Added - Network accessline 103
"authentication": "none", "url": "https://api.example.com/data" // ✅ Added } - Network accessline 103
"authentication": "none", "url": "https://api.example.com/data" // ✅ Added } - Network accessline 104
"url": "https://api.example.com/data" // ✅ Added - Network accessline 104
"url": "https://api.example.com/data" // ✅ Added - Network accessline 152
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 152
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 153
"method": "POST", "url": "https://api.example.com/create", "sendBody": true - Network accessline 153
"method": "POST", "url": "https://api.example.com/create", "sendBody": true - Network accessline 154
"url": "https://api.example.com/create", - Network accessline 154
"url": "https://api.example.com/create", - Network accessline 162
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 162
{ "method": "POST", "url": "https://api.example.com/create", - Network accessline 163
"method": "POST", "url": "https://api.example.com/create", "sendBody": true, - Network accessline 163
"method": "POST", "url": "https://api.example.com/create", "sendBody": true, - Network accessline 164
"url": "https://api.example.com/create", - Network accessline 164
"url": "https://api.example.com/create", - Network accessline 235
{ "method": "FETCH", // ❌ Invalid "url": "https://api.example.com" - Network accessline 235
{ "method": "FETCH", // ❌ Invalid "url": "https://api.example.com" - Network accessline 236
"method": "FETCH", // ❌ Invalid "url": "https://api.example.com" } - Network accessline 236
"method": "FETCH", // ❌ Invalid "url": "https://api.example.com" } - Network accessline 237
"url": "https://api.example.com" - Network accessline 237
"url": "https://api.example.com" - Network accessline 243
{ "method": "GET", // ✅ Use valid HTTP method "url": "https://api.example.com" - Network accessline 243
{ "method": "GET", // ✅ Use valid HTTP method "url": "https://api.example.com" - Network accessline 244
"method": "GET", // ✅ Use valid HTTP method "url": "https://api.example.com" } - Network accessline 244
"method": "GET", // ✅ Use valid HTTP method "url": "https://api.example.com" } - Network accessline 245
"url": "https://api.example.com" - Network accessline 245
"url": "https://api.example.com" - Network accessline 400
{ "method": "GET", "url": "https://api.example.com", - Network accessline 400
{ "method": "GET", "url": "https://api.example.com", - Network accessline 401
"method": "GET", "url": "https://api.example.com", "sendHeaders": "true" // ❌ String "true" - Network accessline 401
"method": "GET", "url": "https://api.example.com", "sendHeaders": "true" // ❌ String "true" - Network accessline 402
"url": "https://api.example.com", - Network accessline 402
"url": "https://api.example.com", - Network accessline 409
{ "method": "GET", "url": "https://api.example.com", - Network accessline 409
{ "method": "GET", "url": "https://api.example.com", - Network accessline 410
"method": "GET", "url": "https://api.example.com", "sendHeaders": true // ✅ Boolean true - Network accessline 410
"method": "GET", "url": "https://api.example.com", "sendHeaders": true // ✅ Boolean true - Network accessline 411
"url": "https://api.example.com", - Network accessline 411
"url": "https://api.example.com",
skills/n8n-validation-expert/FALSE_POSITIVES.md
- Network accessline 183
{ "method": "GET", "url": "https://api.example.com/status" - Network accessline 183
{ "method": "GET", "url": "https://api.example.com/status" - Network accessline 184
"method": "GET", "url": "https://api.example.com/status" // Read-only, no side effects - Network accessline 184
"method": "GET", "url": "https://api.example.com/status" // Read-only, no side effects - Network accessline 185
"url": "https://api.example.com/status" - Network accessline 185
"url": "https://api.example.com/status" - Network accessline 192
// Internal API with high reliability { "url": "http://localhost:3000/process" - Network accessline 192
// Internal API with high reliability { "url": "http://localhost:3000/process" - Network accessline 193
{ "url": "http://localhost:3000/process" // Local service, failures are rare and obvious - Network accessline 193
{ "url": "http://localhost:3000/process" // Local service, failures are rare and obvious - Network accessline 194
"url": "http://localhost:3000/process" - Network accessline 194
"url": "http://localhost:3000/process" - Network accessline 203
// BAD: Known unreliable API without retries { "url": "https://unreliable-api.com/data" - Network accessline 203
// BAD: Known unreliable API without retries { "url": "https://unreliable-api.com/data" - Network accessline 204
{ "url": "https://unreliable-api.com/data" // ❌ Should retry! - Network accessline 204
{ "url": "https://unreliable-api.com/data" // ❌ Should retry! - Network accessline 205
"url": "https://unreliable-api.com/data" - Network accessline 205
"url": "https://unreliable-api.com/data" - Network accessline 209
// GOOD: { "url": "https://unreliable-api.com/data", - Network accessline 209
// GOOD: { "url": "https://unreliable-api.com/data", - Network accessline 210
{ "url": "https://unreliable-api.com/data", "retryOnFail": true, - Network accessline 210
{ "url": "https://unreliable-api.com/data", "retryOnFail": true, - Network accessline 211
"url": "https://unreliable-api.com/data", - Network accessline 211
"url": "https://unreliable-api.com/data", - Network accessline 221
{ "method": "POST", "url": "https://api.example.com/create" - Network accessline 221
{ "method": "POST", "url": "https://api.example.com/create" - Network accessline 222
"method": "POST", "url": "https://api.example.com/create" // ❌ Could timeout and lose data - Network accessline 222
"method": "POST", "url": "https://api.example.com/create" // ❌ Could timeout and lose data - Network accessline 223
"url": "https://api.example.com/create" - Network accessline 223
"url": "https://api.example.com/create" - Network accessline 245
// Internal microservice - no rate limits { "url": "http://internal-api/process" - Network accessline 245
// Internal microservice - no rate limits { "url": "http://internal-api/process" - Network accessline 246
{ "url": "http://internal-api/process" // Company controls both ends - Network accessline 246
{ "url": "http://internal-api/process" // Company controls both ends - Network accessline 247
"url": "http://internal-api/process" - Network accessline 247
"url": "http://internal-api/process" - Network accessline 264
"type": "n8n-nodes-base.httpRequest", "parameters": { "url": "https://api.example.com/daily-report" - Network accessline 264
"type": "n8n-nodes-base.httpRequest", "parameters": { "url": "https://api.example.com/daily-report" - Network accessline 265
"parameters": { "url": "https://api.example.com/daily-report" // Once per day = no rate limit concerns - Network accessline 265
"parameters": { "url": "https://api.example.com/daily-report" // Once per day = no rate limit concerns - Network accessline 266
"url": "https://api.example.com/daily-report" - Network accessline 266
"url": "https://api.example.com/daily-report" - Network accessline 275
// API returns 429 and n8n handles it { "url": "https://api.example.com/data", - Network accessline 275
// API returns 429 and n8n handles it { "url": "https://api.example.com/data", - Network accessline 276
{ "url": "https://api.example.com/data", "options": { - Network accessline 276
{ "url": "https://api.example.com/data", "options": { - Network accessline 277
"url": "https://api.example.com/data", - Network accessline 277
"url": "https://api.example.com/data", - Network accessline 301
"type": "n8n-nodes-base.httpRequest", "parameters": { "url": "https://api.github.com/..." - Network accessline 301
"type": "n8n-nodes-base.httpRequest", "parameters": { "url": "https://api.github.com/..." - Network accessline 302
"parameters": { "url": "https://api.github.com/..." // ❌ GitHub has strict rate limits! - Network accessline 302
"parameters": { "url": "https://api.github.com/..." // ❌ GitHub has strict rate limits! - Network accessline 303
"url": "https://api.github.com/..." - Network accessline 303
"url": "https://api.github.com/..." - Network accessline 311
"type": "n8n-nodes-base.httpRequest", "parameters": { "url": "https://api.github.com/...", - Network accessline 311
"type": "n8n-nodes-base.httpRequest", "parameters": { "url": "https://api.github.com/...", - Network accessline 312
"parameters": { "url": "https://api.github.com/...", "options": { - Network accessline 312
"parameters": { "url": "https://api.github.com/...", "options": { - Network accessline 313
"url": "https://api.github.com/...", - Network accessline 313
"url": "https://api.github.com/...", - Network accessline 489
// Truly public API with no secrets { "url": "https://api.ipify.org" - Network accessline 489
// Truly public API with no secrets { "url": "https://api.ipify.org" - Network accessline 490
{ "url": "https://api.ipify.org" // No credentials needed - Network accessline 490
{ "url": "https://api.ipify.org" // No credentials needed - Network accessline 491
"url": "https://api.ipify.org" - Network accessline 491
"url": "https://api.ipify.org" - Network accessline 498
// Example workflow in documentation { "url": "https://example.com/api", - Network accessline 498
// Example workflow in documentation { "url": "https://example.com/api", - Network accessline 499
{ "url": "https://example.com/api", "headers": { - Network accessline 499
{ "url": "https://example.com/api", "headers": { - Network accessline 500
"url": "https://example.com/api", - Network accessline 500
"url": "https://example.com/api", - Network accessline 644
| Validator says | Reality | What to do | |---|---|---| | **ERROR** "Incorrect error output configuration. Nodes "X" appear to be error handlers but are in main[0]…" | A name/type heuristic: fires when `main[0]` fans out and a target is `re - Network accessline 644
| Validator says | Reality | What to do | |---|---|---| | **ERROR** "Incorrect error output configuration. Nodes "X" appear to be error handlers but are in main[0]…" | A name/type heuristic: fires when `main[0]` fans out and a target is `re - Network accessline 645
|---|---|---| | **ERROR** "Incorrect error output configuration. Nodes "X" appear to be error handlers but are in main[0]…" | A name/type heuristic: fires when `main[0]` fans out and a target is `respondToWebhook`, `emailSend`, or has *erro - Network accessline 645
|---|---|---| | **ERROR** "Incorrect error output configuration. Nodes "X" appear to be error handlers but are in main[0]…" | A name/type heuristic: fires when `main[0]` fans out and a target is `respondToWebhook`, `emailSend`, or has *erro - Network accessline 646
| **ERROR** "Incorrect error output configuration. Nodes "X" appear to be error handlers but are in main[0]…" | A name/type heuristic: fires when `main[0]` fans out and a target is `respondToWebhook`, `emailSend`, or has *error / fail / cat - Network accessline 646
| **ERROR** "Incorrect error output configuration. Nodes "X" appear to be error handlers but are in main[0]…" | A name/type heuristic: fires when `main[0]` fans out and a target is `respondToWebhook`, `emailSend`, or has *error / fail / cat - Network accessline 647
| Warning "Possible missing $ prefix for variable (e.g., use $json instead of json)" | The check reads inside string literals, e.g. the JMESPath query `"[?json.country=='PL'].json.name"` over `.all()` items, where `json.` is required | Igno - Network accessline 647
| Warning "Possible missing $ prefix for variable (e.g., use $json instead of json)" | The check reads inside string literals, e.g. the JMESPath query `"[?json.country=='PL'].json.name"` over `.all()` items, where `json.` is required | Igno - Network accessline 648
| `validate_node` → "Code cannot be empty" (`jsCode`) on a Code node with `language: "pythonNative"` | `validate_node` doesn't recognize `pythonNative`, the only Python option in n8n 2.x | Validate the workflow (`validate_workflow` / `n8n_v - Network accessline 648
| `validate_node` → "Code cannot be empty" (`jsCode`) on a Code node with `language: "pythonNative"` | `validate_node` doesn't recognize `pythonNative`, the only Python option in n8n 2.x | Validate the workflow (`validate_workflow` / `n8n_v - Network accessline 649
| Python "Return value must be a list of dicts" for `return {"count": …}` in Run Once for All Items | Native Python auto-wraps a single dict into one item | Accept, or return `[{"json": {...}}]` to silence it. [#1113](https://github.com/czl - Network accessline 649
| Python "Return value must be a list of dicts" for `return {"count": …}` in Run Once for All Items | Native Python auto-wraps a single dict into one item | Accept, or return `[{"json": {...}}]` to silence it. [#1113](https://github.com/czl - Network accessline 656
- **`$jmespath` mistakes inside expressions**: `country=="PL"` (→ `[]`), a bare number `revenue > 100000`, or `and` instead of `&&` (→ `null`). Only Code-node source is checked. [#1114](https://github.com/czlonkowski/n8n-mcp/issues/1114 - Network accessline 656
- **`$jmespath` mistakes inside expressions**: `country=="PL"` (→ `[]`), a bare number `revenue > 100000`, or `and` instead of `&&` (→ `null`). Only Code-node source is checked. [#1114](https://github.com/czlonkowski/n8n-mcp/issues/1114 - Network accessline 657
`revenue > 100000`, or `and` instead of `&&` (→ `null`). Only Code-node source is checked. [#1114](https://github.com/czlonkowski/n8n-mcp/issues/1114) - **Native Python Code nodes**: legacy `_input`/`_json`/`_node`/`_now`, `item.json.x` d - Network accessline 657
`revenue > 100000`, or `and` instead of `&&` (→ `null`). Only Code-node source is checked. [#1114](https://github.com/czlonkowski/n8n-mcp/issues/1114) - **Native Python Code nodes**: legacy `_input`/`_json`/`_node`/`_now`, `item.json.x` d - Network accessline 658
[#1114](https://github.com/czlonkowski/n8n-mcp/issues/1114) - Network accessline 658
[#1114](https://github.com/czlonkowski/n8n-mcp/issues/1114) - Network accessline 660
any import not on the instance allowlist, `class`, `type()`/`getattr()`, dunder access, `global` inside a function, and a list returned in each-item mode. [#1113](https://github.com/czlonkowski/n8n-mcp/issues/1113), see **n8n-code-pytho - Network accessline 660
any import not on the instance allowlist, `class`, `type()`/`getattr()`, dunder access, `global` inside a function, and a list returned in each-item mode. [#1113](https://github.com/czlonkowski/n8n-mcp/issues/1113), see **n8n-code-pytho - Network accessline 662
[#1113](https://github.com/czlonkowski/n8n-mcp/issues/1113), see **n8n-code-python**. - Network accessline 662
[#1113](https://github.com/czlonkowski/n8n-mcp/issues/1113), see **n8n-code-python**. - Network accessline 673
- **Template literals inside expressions** — `` ={{ `https://api/${$json.id}` }} `` is valid; n8n's engine evaluates full modern JS (template literals, optional chaining `?.`) inside `{{ }}`. - Network accessline 673
- **Template literals inside expressions** — `` ={{ `https://api/${$json.id}` }} `` is valid; n8n's engine evaluates full modern JS (template literals, optional chaining `?.`) inside `{{ }}`.
skills/n8n-validation-expert/README.md
skills/n8n-validation-expert/SKILL.md
- Network accessline 210
- **ERROR "Incorrect error output configuration… appear to be error handlers but are in main[0]"** on a fan-out where one target is a Respond to Webhook or Send Email node, or has *error / fail / catch / exception* in its name. Moving Respo - Network accessline 210
- **ERROR "Incorrect error output configuration… appear to be error handlers but are in main[0]"** on a fan-out where one target is a Respond to Webhook or Send Email node, or has *error / fail / catch / exception* in its name. Moving Respo - Network accessline 211
- **Warning "Possible missing $ prefix"** on `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](https://github.com/czlon - Network accessline 211
- **Warning "Possible missing $ prefix"** on `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](https://github.com/czlon - Network accessline 212
- **`validate_node` on a `language: "pythonNative"` Code node → "Code cannot be empty" (`jsCode`)**. The error is false; validate the workflow instead. ([#1112](https://github.com/czlonkowski/n8n-mcp/issues/1112)) - Network accessline 212
- **`validate_node` on a `language: "pythonNative"` Code node → "Code cannot be empty" (`jsCode`)**. The error is false; validate the workflow instead. ([#1112](https://github.com/czlonkowski/n8n-mcp/issues/1112)) - Network accessline 213
- **Python "Return value must be a list of dicts"** for a single-dict return in all-items mode. n8n accepts it and emits one item. ([#1113](https://github.com/czlonkowski/n8n-mcp/issues/1113)) - Network accessline 213
- **Python "Return value must be a list of dicts"** for a single-dict return in all-items mode. n8n accepts it and emits one item. ([#1113](https://github.com/czlonkowski/n8n-mcp/issues/1113)) - Network accessline 215
**Blind spots (valid workflow, wrong result at runtime):** `$jmespath` syntax/quoting mistakes inside expressions ([#1114](https://github.com/czlonkowski/n8n-mcp/issues/1114)); *any* JS error inside `{{ }}`, which resolves to `null` while t - Network accessline 215
**Blind spots (valid workflow, wrong result at runtime):** `$jmespath` syntax/quoting mistakes inside expressions ([#1114](https://github.com/czlonkowski/n8n-mcp/issues/1114)); *any* JS error inside `{{ }}`, which resolves to `null` while t - Access to secretsline 467
[Credential-related source omitted] - Access to secretsline 467
[Credential-related source omitted]
skills/n8n-workflow-patterns/README.md
- Network accessline 250
**Part of**: n8n-skills repository **Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 250
**Part of**: n8n-skills repository **Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 251
**Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en) - Network accessline 251
**Conceived by**: Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en)
skills/n8n-workflow-patterns/SKILL.md
- Network accessline 301
- **`convertToGoogleDocument: true` creates a Google Doc (text)**, NOT a Google Sheet — to upload a CSV for download, omit this option entirely - **CSV download link format**: `https://drive.google.com/uc?id={fileId}&export=download` — use - Network accessline 301
- **`convertToGoogleDocument: true` creates a Google Doc (text)**, NOT a Google Sheet — to upload a CSV for download, omit this option entirely - **CSV download link format**: `https://drive.google.com/uc?id={fileId}&export=download` — use - Network accessline 302
- **CSV download link format**: `https://drive.google.com/uc?id={fileId}&export=download` — use instead of `/view` links - Network accessline 302
- **CSV download link format**: `https://drive.google.com/uc?id={fileId}&export=download` — use instead of `/view` links
skills/n8n-workflow-patterns/http_api_integration.md
- Network accessline 30
{ method: "GET", // GET, POST, PUT, DELETE, PATCH url: "https://api.example.com/users", - Network accessline 30
{ method: "GET", // GET, POST, PUT, DELETE, PATCH url: "https://api.example.com/users", - Network accessline 31
method: "GET", // GET, POST, PUT, DELETE, PATCH url: "https://api.example.com/users", authentication: "predefinedCredentialType", - Network accessline 31
method: "GET", // GET, POST, PUT, DELETE, PATCH url: "https://api.example.com/users", authentication: "predefinedCredentialType", - Network accessline 32
url: "https://api.example.com/users", - Network accessline 32
url: "https://api.example.com/users", - Access to secretsline 188
[Credential-related source omitted] - Access to secretsline 188
[Credential-related source omitted] - Network accessline 318
{ method: "GET", url: "https://api.example.com/users", - Network accessline 318
{ method: "GET", url: "https://api.example.com/users", - Network accessline 319
method: "GET", url: "https://api.example.com/users", sendQuery: true, - Network accessline 319
method: "GET", url: "https://api.example.com/users", sendQuery: true, - Network accessline 320
url: "https://api.example.com/users", - Network accessline 320
url: "https://api.example.com/users", - Network accessline 332
{ method: "POST", url: "https://api.example.com/users", - Network accessline 332
{ method: "POST", url: "https://api.example.com/users", - Network accessline 333
method: "POST", url: "https://api.example.com/users", sendBody: true, - Network accessline 333
method: "POST", url: "https://api.example.com/users", sendBody: true, - Network accessline 334
url: "https://api.example.com/users", - Network accessline 334
url: "https://api.example.com/users", - Network accessline 346
{ method: "POST", url: "https://api.example.com/upload", - Network accessline 346
{ method: "POST", url: "https://api.example.com/upload", - Network accessline 347
method: "POST", url: "https://api.example.com/upload", sendBody: true, - Network accessline 347
method: "POST", url: "https://api.example.com/upload", sendBody: true, - Network accessline 348
url: "https://api.example.com/upload", - Network accessline 348
url: "https://api.example.com/upload", - Network accessline 365
{ method: "PATCH", url: "https://api.example.com/users/={{$json.userId}}", - Network accessline 365
{ method: "PATCH", url: "https://api.example.com/users/={{$json.userId}}", - Network accessline 366
method: "PATCH", url: "https://api.example.com/users/={{$json.userId}}", sendBody: true, - Network accessline 366
method: "PATCH", url: "https://api.example.com/users/={{$json.userId}}", sendBody: true, - Network accessline 367
url: "https://api.example.com/users/={{$json.userId}}", - Network accessline 367
url: "https://api.example.com/users/={{$json.userId}}", - Network accessline 378
{ method: "DELETE", url: "https://api.example.com/users/={{$json.userId}}" - Network accessline 378
{ method: "DELETE", url: "https://api.example.com/users/={{$json.userId}}" - Network accessline 379
method: "DELETE", url: "https://api.example.com/users/={{$json.userId}}" } - Network accessline 379
method: "DELETE", url: "https://api.example.com/users/={{$json.userId}}" } - Network accessline 380
url: "https://api.example.com/users/={{$json.userId}}" - Network accessline 380
url: "https://api.example.com/users/={{$json.userId}}" - Network accessline 484
{ method: "GET", url: "https://api.example.com/download/file.pdf", - Network accessline 484
{ method: "GET", url: "https://api.example.com/download/file.pdf", - Network accessline 485
method: "GET", url: "https://api.example.com/download/file.pdf", responseFormat: "file", // Important for binary data - Network accessline 485
method: "GET", url: "https://api.example.com/download/file.pdf", responseFormat: "file", // Important for binary data - Network accessline 486
url: "https://api.example.com/download/file.pdf", - Network accessline 486
url: "https://api.example.com/download/file.pdf", - Network accessline 521
{ method: "POST", url: "https://api.example.com/batch", - Network accessline 521
{ method: "POST", url: "https://api.example.com/batch", - Network accessline 522
method: "POST", url: "https://api.example.com/batch", bodyParametersJson: JSON.stringify({ - Network accessline 522
method: "POST", url: "https://api.example.com/batch", bodyParametersJson: JSON.stringify({ - Network accessline 523
url: "https://api.example.com/batch", bodyParametersJson: JSON.stringify({ requests: $json.items.map(item => ({ - Network accessline 523
url: "https://api.example.com/batch", bodyParametersJson: JSON.stringify({ requests: $json.items.map(item => ({ - Network accessline 539
url: "https://api.example.com/prod/users" - Network accessline 539
url: "https://api.example.com/prod/users" - Network accessline 605
### Planning - [ ] Test API with Postman/curl first - Network accessline 605
### Planning - [ ] Test API with Postman/curl first - Network accessline 606
- [ ] Test API with Postman/curl first - Network accessline 606
- [ ] Test API with Postman/curl first
skills/n8n-workflow-patterns/scheduled_tasks.md
skills/n8n-workflow-patterns/webhook_processing.md
- Network accessline 24
{ path: "form-submit", // URL path: https://n8n.example.com/webhook/form-submit - Network accessline 24
{ path: "form-submit", // URL path: https://n8n.example.com/webhook/form-submit - Network accessline 25
path: "form-submit", // URL path: https://n8n.example.com/webhook/form-submit - Network accessline 25
path: "form-submit", // URL path: https://n8n.example.com/webhook/form-submit - Network accessline 391
curl -X POST https://n8n.example.com/webhook/form-submit \ - Network accessline 391
curl -X POST https://n8n.example.com/webhook/form-submit \
skills/using-n8n-mcp-skills/SKILL.md
- Network accessline 143
- **Hosted (`https://api.n8n-mcp.com/mcp`)** — sign in through the client's OAuth prompt on - Network accessline 143
- **Hosted (`https://api.n8n-mcp.com/mcp`)** — sign in through the client's OAuth prompt on - Access to secretsline 146
[Credential-related source omitted] - Access to secretsline 146
[Credential-related source omitted] - Access to secretsline 185
[Credential-related source omitted] - Access to secretsline 185
[Credential-related source omitted]
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: 500 facts
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:4High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:5High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:6High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:31High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:32High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:33High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:46High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:47High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:48High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:49High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:5High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:6High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:7High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:19High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:20High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:21High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:22High confidence
- Executable script in code of another filehooks/post-tool-use/validate-workflow.sh:1Low confidence
- Network access in a comment of another filehooks/post-tool-use/validate-workflow.sh:2Low confidence
- Network access in a comment of another filehooks/post-tool-use/validate-workflow.sh:3Low confidence
- Executable script in code of another filehooks/pre-tool-use/create-workflow.sh:1Low confidence
- Network access in a comment of another filehooks/pre-tool-use/create-workflow.sh:2Low confidence
- Network access in a comment of another filehooks/pre-tool-use/create-workflow.sh:3Low confidence
- Executable script in code of another filehooks/pre-tool-use/get-node.sh:1Low confidence
- Network access in a comment of another filehooks/pre-tool-use/get-node.sh:2Low confidence
- Network access in a comment of another filehooks/pre-tool-use/get-node.sh:3Low confidence
- Executable script in code of another filehooks/pre-tool-use/instances.sh:1Low confidence
- Network access in a comment of another filehooks/pre-tool-use/instances.sh:2Low confidence
- Network access in a comment of another filehooks/pre-tool-use/instances.sh:3Low confidence
- Executable script in code of another filehooks/pre-tool-use/manage-credentials.sh:1Low confidence
- Network access in a comment of another filehooks/pre-tool-use/manage-credentials.sh:2Low confidence
- Network access in a comment of another filehooks/pre-tool-use/manage-credentials.sh:3Low confidence
- Executable script in code of another filehooks/pre-tool-use/test-workflow.sh:1Low confidence
- Network access in a comment of another filehooks/pre-tool-use/test-workflow.sh:2Low confidence
- Network access in a comment of another filehooks/pre-tool-use/test-workflow.sh:3Low confidence
- Executable script in code of another filehooks/pre-tool-use/update-workflow.sh:1Low confidence
- Network access in a comment of another filehooks/pre-tool-use/update-workflow.sh:2Low confidence
- Network access in a comment of another filehooks/pre-tool-use/update-workflow.sh:3Low confidence
- Executable script in code of another filehooks/pre-tool-use/validate-workflow.sh:1Low confidence
- Network access in a comment of another filehooks/pre-tool-use/validate-workflow.sh:2Low confidence
- Network access in a comment of another filehooks/pre-tool-use/validate-workflow.sh:3Low confidence
- Executable script in code of another filehooks/session-start.sh:1Low confidence
- Network access in a comment of another filehooks/session-start.sh:2Low confidence
- Network access in a comment of another filehooks/session-start.sh:3Low confidence
- Dangerous shell operation in code of another filehooks/session-start.sh:39Low confidence
- Network access in code of documentationn8n-agents/EXAMPLES.md:33Low confidence
- Network access in code of documentationn8n-agents/EXAMPLES.md:34Low confidence
- Network access in code of documentationn8n-agents/EXAMPLES.md:35Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valuen8n-agents/SKILL.md:196Low confidence
- Network access in code of documentationn8n-agents/SUBWORKFLOW_AS_TOOL.md:134Low confidence
and 450 more
Only the first 500 facts are listed.
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/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/n8n-agents/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/n8n-agents/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/n8n-agents/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/n8n-agents/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.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/czlonkowski-n8n-skills/)