CtrlK
BlogDocsLog inGet started
Tessl Logo

n8n-code-javascript

Write JavaScript code in n8n Code nodes. Use when writing JavaScript in n8n, using $input/$json/$node syntax, making HTTP requests with this.helpers / the $helpers global, working with dates using DateTime, troubleshooting Code node errors, choosing between Code node modes, or doing any custom data transformation in n8n. Always use this skill when a workflow needs a Code node — whether for data aggregation, filtering, API calls, format conversion, batch processing logic, or any custom JavaScript. Covers SplitInBatches loop patterns, cross-iteration data, pairedItem, and real-world production patterns. Also use when asked why a Code node or workflow is slow, which execution mode is faster, or how to cut per-item overhead on large datasets. EXCEPTION — for the AI-agent-callable Custom Code Tool (@n8n/n8n-nodes-langchain.toolCode, a tool attached to an AI Agent), use the n8n-code-tool skill instead; it has a different runtime contract.

72

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

The canonical home for this skill is n8n-code-javascript in czlonkowski/n8n-skills

SKILL.md
Quality
Evals
Security

Quality

Content

85%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A strong, highly actionable reference body with exemplary code examples, decision guides, and a validation checklist, weakened by repeated restatements of the same critical facts and — more seriously — by referencing four detail files (DATA_ACCESS.md, COMMON_PATTERNS.md, ERROR_PATTERNS.md, BUILTIN_FUNCTIONS.md) that are missing from the bundle. Progressive disclosure is structurally sound but functionally broken until those files ship.

Suggestions

Ship the four referenced bundle files (DATA_ACCESS.md, COMMON_PATTERNS.md, ERROR_PATTERNS.md, BUILTIN_FUNCTIONS.md) or remove/inline their 'See' pointers — every progressive-disclosure link currently dangles.

Deduplicate the repeated critical facts: state the $helpers-undefined sandbox note, the auto-wrap return behavior, and the webhook .body nesting once each (in the Built-ins, Return Format, and Webhook sections respectively) and have the other mentions point there instead of restating.

DimensionReasoningScore

Conciseness

The body is dense and assumes competence — no JS tutorials, no 'what is n8n' padding, and high-value specifics like the per-item cost table and sandbox flags. It falls between anchors 3 and 4 because several key facts repeat: the $helpers-undefined note appears in Essential Rules #5 and again in the Built-ins section, the auto-wrap return behavior is explained in Rules #3, the Return Format section, and Top Mistakes #3, and webhook .body nesting appears three times. Noticeably above the midpoint, but the redundancy is trimmable.

4 / 5

Actionability

Fully executable throughout: quick-start template, mode-specific examples, wrong/right code pairs for returns and webhook access, exact env flags (N8N_BLOCK_ENV_ACCESS_IN_NODE, N8N_RUNNERS_ALLOWED_BUILT_IN_MODULES), and exact failure strings ('Code doesn't return items properly', ReferenceError, paired_item_no_info). Copy-paste ready and covers the common cases; not a 4 because there are no pseudocode gaps.

5 / 5

Workflow Clarity

Clear decision sequencing with explicit checkpoints: a mode-selection guide with a decision shortcut, an ordered transform gatekeeper (expression → IIFE → Code node), wrong/right error-recovery pairs, and a pre-deploy Quick Reference Checklist that functions as validation for batch/deployment risk. Not a 4 because validation checkpoints (checklist, error lookup) are explicit rather than implied.

5 / 5

Progressive Disclosure

Section structure is excellent — every section ends with a well-signaled one-level-deep pointer ('**See**: [DATA_ACCESS.md](DATA_ACCESS.md) → ...') — but the actual bundle contains no referenced files at all: DATA_ACCESS.md, COMMON_PATTERNS.md, ERROR_PATTERNS.md, and BUILTIN_FUNCTIONS.md do not exist in the skill directory, so every link dangles and navigation to the detail content is impossible. This is a genuine organization defect, not the 'minor organization gaps' of anchor 4, but the in-body structure is too good for anchor 2's 'minimal structure'.

3 / 5

Total

17

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An exemplary description: concrete capabilities, explicit and varied trigger phrases covering both functional and performance questions, and an explicit boundary exception against the sibling n8n-code-tool skill. The only gap is a few natural synonyms such as the legacy 'Function node' terminology. It is long, but every clause carries trigger value rather than padding.

DimensionReasoningScore

Specificity

Lists multiple concrete actions — 'Write JavaScript code in n8n Code nodes', 'making HTTP requests with this.helpers', 'working with dates using DateTime', 'troubleshooting Code node errors', 'choosing between Code node modes', plus 'data aggregation, filtering, API calls, format conversion, batch processing'. Coverage is comprehensive with no vague filler; a 4 would require minor gaps in the action list, which aren't present.

5 / 5

Completeness

Explicitly answers both: what ('Write JavaScript code in n8n Code nodes') and when, with multiple concrete trigger clauses ('Use when writing JavaScript in n8n...', 'Always use this skill when a workflow needs a Code node', 'Also use when asked why a Code node or workflow is slow'). A 4 would need a less explicit 'when', but the triggers here are direct and varied.

5 / 5

Trigger Term Quality

Good natural-phrase coverage: 'writing JavaScript in n8n', 'Code node', 'why a Code node or workflow is slow', 'which execution mode is faster', 'custom data transformation'. Falls between anchors 4 and 5 rather than matching 5 because a few natural variants are missing — notably the legacy 'Function node' name that users on older n8n versions still say, and phrasing around 'n8n expression vs code'.

4 / 5

Distinctiveness Conflict Risk

Clear niche (JavaScript in n8n Code nodes) with distinct triggers, and the EXCEPTION clause explicitly disambiguates from the closely related n8n-code-tool skill for @n8n/n8n-nodes-langchain.toolCode. Minimal conflict risk; a 4 would imply unresolved minor overlap, which the exception clause resolves.

5 / 5

Total

19

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 13 missing

Warning

Total

15

/

16

Passed

Repository
czlonkowski/n8n-mcp
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.