#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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

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

Compare on GitHub

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.

Compare on GitHub

View on GitHubAdd to my skills

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>/
6.6kGitHub stars
44stars in 7 days
15skills in this repository
10commits in 30 days

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

Aug 2, 2026Nov 6, 20266,597

Individual skills in this repository

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 tokens

Always available to the agent

SKILL.md

6,646 tokens

When the skill is activated

Reference documents

265,484 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Pick the right node first
  2. The sub-node pattern
  3. Two non-negotiables
  4. Strong defaults
  5. The four tool types
  6. System prompt vs tool description
  7. Structured output: when and how
  8. Memory: brief mental model
  9. Binary and the agent boundary
  10. Human review (gate destructive tools)
  11. Chat agents (Slack, Discord, Teams, Telegram)
  12. Persisted n8n Agents (n8n_manage_agents)
  13. RAG (retrieval augmented generation)
  14. Reference files
  15. Anti-patterns
  16. What's NOT available via the community MCP
  17. Integration with other skills
  18. 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 bytes
  • CHAT_AGENT_PATTERNS.mddoc13,047 bytes
  • EXAMPLES.mddoc19,766 bytes
  • HUMAN_REVIEW.mddoc9,442 bytes
  • MEMORY.mddoc7,865 bytes
  • RAG.mddoc6,513 bytes
  • README.mddoc8,361 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • SKILL.mdcore27,308 bytes
  • STRUCTURED_OUTPUT.mddoc6,950 bytes
  • SUBWORKFLOW_AS_TOOL.mddoc9,472 bytes
  • SYSTEM_PROMPT.mddoc6,939 bytes
  • TOOLS.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 GitHub

Skills 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

  1. #210 on Oct 28
  2. #211 on Oct 29
  3. #215 on Oct 30
  4. #216 from Oct 31 to Nov 1
  5. #218 from Nov 2 to Nov 3
  6. #217 since Nov 4
65 earlier periods
  1. #171 on Aug 2
  2. #174 from Aug 7 to Aug 8
  3. #173 on Aug 9
  4. #175 from Aug 10 to Aug 11
  5. #173 on Aug 12
  6. #176 on Aug 13
  7. #178 on Aug 14
  8. #177 from Aug 15 to Aug 17
  9. #179 on Aug 18
  10. #178 on Aug 19
  11. #175 on Aug 20
  12. #177 on Aug 21
  13. #173 on Aug 22
  14. #180 from Aug 23 to Aug 24
  15. #181 from Aug 25 to Aug 26
  16. #183 on Aug 27
  17. #182 on Aug 28
  18. #184 on Aug 29
  19. #183 from Aug 30 to Aug 31
  20. #188 on Sep 1
  21. #183 on Sep 2
  22. #189 on Sep 3
  23. #187 on Sep 4
  24. #189 on Sep 5
  25. #186 on Sep 6
  26. #189 from Sep 7 to Sep 8
  27. #192 from Sep 9 to Sep 11
  28. #193 on Sep 12
  29. #194 from Sep 13 to Sep 14
  30. #193 on Sep 15
  31. #194 from Sep 16 to Sep 17
  32. #196 on Sep 18
  33. #194 on Sep 19
  34. #196 on Sep 20
  35. #197 on Sep 21
  36. #198 from Sep 22 to Sep 23
  37. #197 on Sep 24
  38. #196 on Sep 25
  39. #198 on Sep 26
  40. #197 on Sep 27
  41. #199 from Sep 28 to Sep 29
  42. #197 on Sep 30
  43. #199 on Oct 1
  44. #201 on Oct 2
  45. #198 on Oct 3
  46. #196 on Oct 4
  47. #198 on Oct 5
  48. #199 on Oct 6
  49. #203 on Oct 7
  50. #201 on Oct 8
  51. #206 on Oct 9
  52. #203 from Oct 10 to Oct 11
  53. #206 on Oct 12
  54. #207 on Oct 13
  55. #206 on Oct 14
  56. #205 on Oct 15
  57. #203 on Oct 16
  58. #206 on Oct 17
  59. #205 on Oct 18
  60. #207 on Oct 19
  61. #206 on Oct 20
  62. #208 on Oct 21
  63. #207 on Oct 22
  64. #208 from Oct 23 to Oct 24
  65. #211 on Oct 25

Before you install

Network or broad shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/n8n-agents/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
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

  • 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.

hooks/pre-tool-use/create-workflow.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.

hooks/pre-tool-use/get-node.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.

hooks/pre-tool-use/instances.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.

hooks/pre-tool-use/manage-credentials.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.

hooks/pre-tool-use/test-workflow.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.

hooks/pre-tool-use/update-workflow.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.

hooks/pre-tool-use/validate-workflow.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.

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

  • Network accessline 134
    { "imageUrl": "https://...", "imageKey": "abc123.png" }
  • Access to secretsline 182
    [Credential-related source omitted]

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&param2=value2');
  • Network accessline 785
    // Parse URL const url = new URL('https://example.com/path?param1=value1&param2=value2');
  • Network accessline 786
    const url = new URL('https://example.com/path?param1=value1&param2=value2');
  • Network accessline 786
    const url = new URL('https://example.com/path?param1=value1&param2=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

  • Access to secretsline 83
    [Credential-related source omitted]
  • Access to secretsline 83
    [Credential-related source omitted]

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

  • Access to secretsline 1
    [Credential-related source omitted]
  • Access to secretsline 1
    [Credential-related source omitted]
  • Network accessline 9
    # --- your domain: final URL becomes https://SUBDOMAIN.DOMAIN_NAME/ ---
  • Network accessline 9
    # --- your domain: final URL becomes https://SUBDOMAIN.DOMAIN_NAME/ ---

skills/n8n-self-hosting/assets/.env.single.example

  • Access to secretsline 1
    [Credential-related source omitted]
  • Access to secretsline 1
    [Credential-related source omitted]
  • Network accessline 9
    # --- your domain: final URL becomes https://SUBDOMAIN.DOMAIN_NAME/ ---
  • Network accessline 9
    # --- your domain: final URL becomes https://SUBDOMAIN.DOMAIN_NAME/ ---

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

  • Executable scriptline 1
    #!/bin/bash
  • Executable scriptline 1
    #!/bin/bash

skills/n8n-subworkflows/SKILL.md

  • Access to secretsline 69
    [Credential-related source omitted]
  • Access to secretsline 69
    [Credential-related source omitted]

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

  • Network accessline 288
    Conceived by Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en)
  • Network accessline 288
    Conceived by Romuald Członkowski - [aiadvisors.pl/en](https://aiadvisors.pl/en)

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

  • Network accessline 210
    2. HTTP Request (GET https://example.com/health)
  • Network accessline 210
    2. HTTP Request (GET https://example.com/health)

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

and 450 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/n8n-agents/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/n8n-agents/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/n8n-agents/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/n8n-agents/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.

czlonkowski/n8n-skills: #217 on hotskills, 6.6k stars

[![czlonkowski/n8n-skills on hotskills](https://hotskills.dev/badge/czlonkowski-n8n-skills.svg)](https://hotskills.dev/skill/czlonkowski-n8n-skills/)