n8n Custom Code Tool Guide
czlonkowski/n8n-skills
Explains the n8n Custom Code Tool's actual runtime contract so an AI-agent-callable tool doesn't get written like a regular workflow Code node.
Write and debug JavaScript or Python for the AI-callable n8n Custom Code Tool, including schemas, sandbox limits, and return formats.
$ npx skills add sickn33/agentic-awesome-skills --skill n8n-code-tool -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sickn33/agentic-awesome-skills n8n-code-tool --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/n8n-code-tool .claude/skills/n8n-code-tool && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "n8n-code-tool" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/n8n-code-tool into .claude/skills/n8n-code-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-code-tool", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/n8n-code-toolType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add sickn33/agentic-awesome-skills --skill n8n-code-tool -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sickn33/agentic-awesome-skills n8n-code-tool --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/n8n-code-tool .agents/skills/n8n-code-tool && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "n8n-code-tool" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/n8n-code-tool into .agents/skills/n8n-code-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-code-tool", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sickn33/agentic-awesome-skills --skill n8n-code-tool -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sickn33/agentic-awesome-skills n8n-code-tool --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/n8n-code-tool .cursor/skills/n8n-code-tool && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "n8n-code-tool" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/n8n-code-tool into .cursor/skills/n8n-code-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-code-tool", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/sickn33/agentic-awesome-skills.git --path skills/n8n-code-tool--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add sickn33/agentic-awesome-skills --skill n8n-code-tool -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sickn33/agentic-awesome-skills n8n-code-tool --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/n8n-code-tool .gemini/skills/n8n-code-tool && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "n8n-code-tool" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/n8n-code-tool into .gemini/skills/n8n-code-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-code-tool", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install sickn33/agentic-awesome-skills n8n-code-toolInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add sickn33/agentic-awesome-skills --skill n8n-code-tool -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/n8n-code-tool .github/skills/n8n-code-tool && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "n8n-code-tool" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/n8n-code-tool into .github/skills/n8n-code-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-code-tool", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sickn33/agentic-awesome-skills --skill n8n-code-tool -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sickn33/agentic-awesome-skills n8n-code-tool --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/n8n-code-tool .opencode/skills/n8n-code-tool && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "n8n-code-tool" agent skill from https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/n8n-code-tool into .opencode/skills/n8n-code-tool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n-code-tool", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
n8n-code-toolWrite and debug JavaScript or Python for the AI-callable n8n Custom Code Tool, including schemas, sandbox limits, and return formats.
N8n Code Tool is an agent skill from sickn33/agentic-awesome-skills. Write and debug JavaScript or Python for the AI-callable n8n Custom Code Tool, including schemas, sandbox limits, and return formats.
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/ERROR_PATTERNS.md` and `references/INPUT_SCHEMA.md`).
It sits in Productivity & Automation, covering Workflow automation. It works with n8n, JavaScript, Python and LangChain. The repository describes itself as: AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,400+ agentic skills. Includes… The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 1e53ce2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript, python and json).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.n8n.iogithub.comjs.langchain.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
N8n Code Tool loads about 4.1k tokens when it runs, and up to ~7.4k if it reads all its reference files. Until then it costs about 37 tokens; SKILL.md has 1,522 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from sickn33/agentic-awesome-skills at commit 1e53ce2, republished under its MIT licence (© sickn33). 1,522 words, ~4,121 tokens.
.claude/skills/n8n-code-tool/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Use this skill specifically for code executed by the AI-agent-callable n8n Custom Code Tool. Use the separate JavaScript or Python Code-node skills for ordinary workflow Code nodes.
Do not hardcode secrets or accept arbitrary executable code from untrusted input. Constrain inputs with a schema, validate outputs, allowlist any network destinations, and ask before testing a tool whose code can write data or invoke an external service.
Expert guidance for writing code inside @n8n/n8n-nodes-langchain.toolCode — the tool an AI Agent can invoke, not the regular workflow Code node.
The Custom Code Tool looks like a Code node in the editor — same JavaScript editor, similar layout — but it is a completely different node from a different package with a different runtime contract.
| Code node | Custom Code Tool | |
|---|---|---|
| Node type | n8n-nodes-base.code | @n8n/n8n-nodes-langchain.toolCode |
| Package | n8n-nodes-base | @n8n/n8n-nodes-langchain |
| Invoked by | Previous node (workflow flow) | AI Agent (LangChain) |
| Input | $input.all() — item stream | query — string or object from LLM |
| Return | [{json: {...}}] (items array) | A string |
$fromAI() | N/A | Not available (see Errors) |
| HTTP helper | this.helpers.httpRequest (auth helpers blocked) | Not exposed to the tool sandbox |
| State | Per-run execution data | No getContext, no $getWorkflowStaticData |
If you treat it like a Code node, it fails. The rest of this skill covers the Code Tool's actual contract.
// `query` is whatever the AI sent (a string by default)
return `You asked: ${query}`;# `_query` is whatever the AI sent (a string by default)
return f"You asked: {_query}""The response property should be a string, but it is an object".query (JS), _query (Python). You cannot rename it.$fromAI() inside the Code Tool sandbox — it throws "No execution data available".[{json: {...}}] return format — that's for Code nodes. Throws "Wrong output type returned".The Code Tool has two input shapes, controlled by specifyInputSchema:
specifyInputSchema: false)The AI passes a single string as query. If you need multiple fields, the AI has to stuff them into that one string and you parse them out. In practice, LLMs will happily pass a JSON string if your description tells them to.
// Parse a JSON string the AI sent
let params;
try {
params = typeof query === 'string' ? JSON.parse(query) : query;
} catch (e) {
throw new Error('Expected a JSON object. Parser said: ' + e.message);
}
const price = Number(params.price);
const months = Number(params.months);
// ...
return JSON.stringify({ monthly_payment: /* ... */ });Pros: simplest to set up, one field to describe. Cons: no schema validation — if the LLM forgets a field, the tool throws at runtime.
Best for: quick prototypes, tools with one natural input (a question, a URL, a text blob).
specifyInputSchema: true)The tool becomes a LangChain DynamicStructuredTool. The LLM sees a typed argument schema and passes a validated object as query. You access fields directly.
// query is now an object matching your schema
const price = query.price;
const months = query.months;
const residual_percent = query.residual_percent;
const monthly = computeAnnuity(price, months, residual_percent);
return JSON.stringify({ monthly_payment: monthly });Schema is defined via either:
schemaType: "fromJson" + jsonSchemaExample (n8n v≥1.3) — paste an example JSON, n8n infers the schemaschemaType: "manual" + inputSchema — write a full JSON Schema yourselfPros: LLM gets type hints, invalid calls rejected before your code runs, cleaner code. Cons: a little more setup; requires n8n version with schema support.
Best for: production tools with multiple typed parameters (calculators, API wrappers, anything with numeric fields the LLM tends to stringify).
See: references/INPUT_SCHEMA.md for complete schema setup.
The return value must be a string. The LLM reads it as the tool's observation.
// ✅ String
return "42";
// ✅ Number (auto-converted to string by n8n)
return 42;
// ✅ JSON-encoded structured result (recommended for rich output)
return JSON.stringify({ result: 42, currency: "SEK" });
// ❌ Raw object → "The response property should be a string, but it is an object"
return { result: 42 };
// ❌ Workflow item format → "Wrong output type returned"
return [{ json: { result: 42 } }];
// ❌ Array → "The response property should be a string, but it is an object"
return [1, 2, 3];When your tool has more than a trivial scalar output, return a JSON string:
return JSON.stringify({
monthly_payment_sek: 5405,
loan_amount: 351920,
total_cost_of_credit: 63295
});The LLM parses JSON reliably and can pick the fields it needs to present to the user.
Errors don't just stop the workflow — they go back to the LLM, which usually corrects its call and retries. Use that:
// Option A: throw — n8n surfaces the message to the agent
if (!isFinite(price)) throw new Error('price must be a number, e.g. 439900');
// Option B: return an error string — agent reads it like any tool result
if (!isFinite(price)) return JSON.stringify({ error: 'price must be a number, e.g. 439900' });Either way, write error messages for the LLM: state what was wrong and what a valid call looks like. A bare throw new Error('invalid input') wastes the retry; an instructive message usually fixes the next call.
These fields are NOT documentation — they are the tool contract the LLM sees. Treat them as prompt engineering.
[A-Za-z0-9_]+ (v1.1+). No spaces, no hyphens, no emoji.calculate_car_loan, get_weather, search_orders.Code Tool (the default) is useless — the agent won't know when to call it.Unstructured example (JSON-in-string pattern):
Deterministiskt beräknar månadskostnad för billån. Anropa med EN JSON-sträng:
{"price":439900,"down_payment":87980,"interest_rate":6.95,"months":36,"residual_percent":50}
Fält: price (SEK), down_payment (SEK), interest_rate (% per år), months, residual_percent (0-99).Structured example (schema-defined):
Deterministically computes the monthly car-loan payment given price, down payment,
annual interest rate, term, and residual percent. Use whenever the user asks for
monthly cost, total credit cost, or loan breakdown."There was an error: 'Cannot assign to read only property \"name\" of object: Error: No execution data available'"Cause: you called $fromAI() inside the Code Tool sandbox.
Fix: $fromAI() is a helper for other tool-enabled nodes (HTTP Request Tool, SendGrid Tool, toolWorkflow, etc.) — it's not exposed inside toolCode. Read the AI's input from query directly (or use specifyInputSchema for structured fields).
"Wrong output type returned"Cause: you returned a workflow-style array like [{ json: { ... } }]. That's the Code node contract, not the Code Tool contract.
Fix: return a string. For structured data, return JSON.stringify(output).
"The response property should be a string, but it is an object"Cause: you returned a plain object or array.
Fix: JSON.stringify() the result, or coerce to a string.
Cause: tool name is generic (Code Tool, My Tool) or description doesn't clearly state when to use it.
Fix: rename to a verb-y name (calculate_car_loan), and rewrite the description to explicitly state the trigger conditions (e.g. "Use this whenever the user asks about monthly cost").
queryCause: unstructured tool with a vague description. The LLM guesses at the format.
Fix: either (a) include a concrete JSON example in the description, or (b) switch to specifyInputSchema: true so the LLM gets a typed schema.
See: references/ERROR_PATTERNS.md for full catalog with reproductions.
The Code Tool sandbox is narrower than the Code node sandbox. Don't assume helpers carry over:
| Helper | Code node | Code Tool |
|---|---|---|
$input.all(), $input.first(), $input.item | ✅ | ❌ |
$node["NodeName"] | ✅ | ❌ |
$json, $binary | ✅ | ❌ |
$fromAI() | ❌ | ❌ (despite sitting next to an AI agent) |
this.helpers.httpRequest() | ✅ | ❌ |
DateTime (Luxon) | ✅ | ✅ (standard in JS sandbox) |
$jmespath() | ✅ | ❌ |
this.getContext(...) | ✅ | ❌ |
$getWorkflowStaticData(...) | ✅ | ❌ |
Implication: the Code Tool is for pure computation. If you need an HTTP call, an API lookup, or cross-invocation state, use a different tool node:
toolWorkflow (Call Sub-workflow Tool) for multi-step logic with access to the full Code node sandboxUse Code Tool when:
Use toolWorkflow (Call Sub-workflow Tool) when:
$fromAI() typingthis.helpers, credentials, or other nodesUse HTTP Request Tool when:
$fromAI() bindings in URL/query/bodyRule of thumb: if you find yourself wanting $fromAI(), you probably want toolWorkflow instead of toolCode.
A production calculator tool (unstructured, JSON-in-string pattern):
{
"parameters": {
"name": "calculate_car_loan",
"description": "Computes monthly car-loan payment using an annuity formula with residual/balloon. Call with a single JSON string. Example: {\"price\":439900,\"down_payment\":87980,\"interest_rate\":6.95,\"months\":36,\"residual_percent\":50,\"setup_fee\":695,\"monthly_admin_fee\":59}. Required: price, down_payment, interest_rate, months, residual_percent. Optional: setup_fee, monthly_admin_fee (default 0).",
"language": "javaScript",
"jsCode": "let params;\ntry {\n params = typeof query === 'string' ? JSON.parse(query) : query;\n} catch (e) {\n throw new Error('Invalid JSON: ' + e.message);\n}\n\nconst price = Number(params.price);\nconst down_payment = Number(params.down_payment);\nconst interest_rate = Number(params.interest_rate);\nconst months = Number(params.months);\nconst residual_percent= Number(params.residual_percent);\nconst setup_fee = Number(params.setup_fee ?? 0) || 0;\nconst monthly_admin_fee = Number(params.monthly_admin_fee ?? 0) || 0;\n\nif (!isFinite(price) || price <= 0) throw new Error('price must be > 0');\nif (down_payment < 0 || down_payment >= price) throw new Error('down_payment must be in [0, price)');\n\nconst principal = price - down_payment;\nconst residual = price * (residual_percent / 100);\nconst r = interest_rate / 100 / 12;\nconst growth = Math.pow(1 + r, months);\nconst base = r === 0\n ? (principal - residual) / months\n : (principal - residual / growth) * r / (1 - 1 / growth);\nconst monthly_payment = base + monthly_admin_fee;\n\nreturn JSON.stringify({\n monthly_payment_sek: Math.round(monthly_payment),\n loan_amount: Math.round(principal),\n residual_value_sek: Math.round(residual),\n total_cost_of_credit: Math.round(monthly_payment * months + residual + setup_fee - principal)\n});"
},
"type": "@n8n/n8n-nodes-langchain.toolCode",
"typeVersion": 1.3,
"name": "calculate_car_loan"
}Wire it into an AI Agent via the ai_tool connection type.
n8n-code-javascript: the Code node skill. Most JavaScript patterns (arrays, map/filter, DateTime) transfer — but I/O contract is different. Don't copy data-access code.
n8n-node-configuration: specifyInputSchema is a classic displayOptions-driven conditional field. Use get_node({detail: "standard"}) on @n8n/n8n-nodes-langchain.toolCode to see schema-related properties.
n8n-workflow-patterns: Code Tool sits inside the "AI Agent with tools" pattern. An agent typically has several tools; Code Tool is the "local compute" option.
n8n-validation-expert: the three Code Tool errors listed above have clear signatures — if validation surfaces "Wrong output type returned", you know to switch from array-of-items to a string.
Before deploying a Code Tool:
@n8n/n8n-nodes-langchain.toolCode (not nodes-base.code)calculate_car_loan)query (JS) or _query (Python)$fromAI() in the code body$input / $json / $helpers — those aren't in the sandboxJSON.stringify() for structured output)ai_tool connectionRemember: the Code Tool is a LangChain tool wearing a Code-node UI. Contract is: string in, string out. Everything else follows from that.
© sickn33, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in skills/n8n-code-tool of sickn33/agentic-awesome-skills.
Open the folder on GitHubat commit 1e53ce2
We found 5 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in sickn33/agentic-awesome-skills, which our catalogue first saw on October 7, 2026.
N8n Code Tool next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| N8n Code Tool this skillsickn33/agentic-awesome-skills | 47k | 1 repos | ~4.1k | Automated safety check: Pass | MIT | |
| n8n Custom Code Tool Guideczlonkowski/n8n-skills | 6.4k | — | ~4k | Automated safety check: Pass | MIT | |
| Native Python in n8n Code Nodesczlonkowski/n8n-skills | 6.4k | — | ~2.8k | Automated safety check: Pass | MIT | |
| N8n Code Pythondavila7/claude-code-templates | 32k | 7 repos | ~4.5k | Automated safety check: Pass | MIT | |
| n8n Code Node JavaScriptczlonkowski/n8n-skills | 6.4k | — | ~4.9k | Automated safety check: Pass | MIT | |
| N8n Code Javascriptdavila7/claude-code-templates | 32k | 4 repos | ~4k | Automated safety check: Pass | MIT |
czlonkowski/n8n-skills
Explains the n8n Custom Code Tool's actual runtime contract so an AI-agent-callable tool doesn't get written like a regular workflow Code node.
czlonkowski/n8n-skills
Explains how to write native Python in n8n Code nodes, including the two input variables, blocked imports and fixes for common errors.
davila7/claude-code-templates
Write Python code in n8n Code nodes. An agent skill from davila7/claude-code-templates.
czlonkowski/n8n-skills
Guides writing JavaScript in n8n Code nodes: picking an execution mode, reading input data, returning items, using built-in helpers and avoiding common errors.
davila7/claude-code-templates
Write JavaScript code in n8n Code nodes. An agent skill from davila7/claude-code-templates.
apify/agent-skills
Guides designing and building an official Apify integration for a company's product: workflow-automation apps, AI agent plugins, AI framework packages or direct API clients.
sickn33/agentic-awesome-skills
Implements an interface in one of two named color modes, iridescent white or colorful black, from a parameterized starter that reports measured color intensity.
sickn33/agentic-awesome-skills
Saves a user's project decisions, rules and preferences into a project-local mdbase so later sessions and other agents can recover the intent.
sickn33/agentic-awesome-skills
Keeps project decisions, research and verified results available across coding-agent sessions through LWC memory, a document Wiki graph and a CodeGraph code index.
sickn33/agentic-awesome-skills
Guides an agent through assessing its own owner for cofounder fit, publishing an approved profile, and ranking complementary profiles other agents published for their owners.
sickn33/agentic-awesome-skills
Integracao com WhatsApp Business Cloud API (Meta). An agent skill from sickn33/agentic-awesome-skills.
sickn33/agentic-awesome-skills
Acts as a proxy for the Cline CLI, dispatching coding tasks one at a time, monitoring runs by hard evidence, relaying decisions to you and learning per-project preferences.
Works with
Categories
Write and debug JavaScript or Python for the AI-callable n8n Custom Code Tool, including schemas, sandbox limits, and return formats. N8n Code Tool is an agent skill from sickn33/agentic-awesome-skills. Write and debug JavaScript or Python for the AI-callable n8n Custom Code Tool, including schemas, sandbox limits, and return formats.
N8n Code Tool fits situations like: tasks that involve Workflow automation.
Run `npx skills add sickn33/agentic-awesome-skills --skill n8n-code-tool -a claude-code`. Or copy the skill folder (skills/n8n-code-tool in sickn33/agentic-awesome-skills) into .claude/skills/n8n-code-tool in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sickn33/agentic-awesome-skills --skill n8n-code-tool -a codex`. Or copy the skill folder (skills/n8n-code-tool in sickn33/agentic-awesome-skills) into .agents/skills/n8n-code-tool in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sickn33/agentic-awesome-skills --skill n8n-code-tool -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/n8n-code-tool, .gemini/skills/n8n-code-tool, .github/skills/n8n-code-tool and .opencode/skills/n8n-code-tool in your project.
SKILL.md names no scripts, command-line tools or credentials: N8n Code Tool is instructions for the agent only. Our summary lists: Python 3.
SKILL.md names 3 domains. As links in the text: docs.n8n.io, github.com and js.langchain.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
N8n Code Tool is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with N8n Code Tool: n8n Custom Code Tool Guide (czlonkowski/n8n-skills, 6.4k stars), Native Python in n8n Code Nodes (czlonkowski/n8n-skills, 6.4k stars), N8n Code Python (davila7/claude-code-templates, 32k stars) and n8n Code Node JavaScript (czlonkowski/n8n-skills, 6.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sickn33 (a GitHub user) maintains it in sickn33/agentic-awesome-skills, which has 47,304 GitHub stars. The repository holds 1,394 skills in this directory. The repository was last updated on October 6, 2026.
Source: sickn33/agentic-awesome-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.