CtrlK
BlogDocsLog inGet started
Tessl Logo

n8n-code-python

Write Python in n8n Code nodes (native Python, `language` pythonNative, n8n 2.x). Use when the user explicitly wants Python in a Code node, when migrating old Pyodide/"Python (Beta)" code that used _input/_json/_node/_now, or when a Python Code node fails with NameError, "Security violations detected", "Import of standard library module … is disallowed", "__build_class__ not found", "A 'json' property isn't a dictionary", or "Python runner unavailable". Covers the only two variables (_items/_item), dict-only access, imports blocked by default, the sandbox's denied builtins, accepted return shapes, and how errors interact with onError. JavaScript is the default for Code nodes — native Python has no n8n helpers and, by default, no imports. EXCEPTION — for Python in the AI-agent-callable Custom Code Tool (@n8n/n8n-nodes-langchain.toolCode), use the n8n-code-tool skill instead (input is _query, return must be a string).

72

Quality

89%

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

SKILL.md
Quality
Evals
Security

Quality

Content

78%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.

Highly actionable and well-structured reference with strong verification discipline, but slightly more narrative prose than needed and a dangling reference to COMMON_PATTERNS.md that is not present in the bundle.

Suggestions

Ship the missing COMMON_PATTERNS.md in the bundle (or remove the Reference section link) so the one-level-deep progressive disclosure it promises actually resolves.

Tighten the narrative prose around the tables (e.g. the opening "Since n8n 2.0…" paragraph and "Code copied from old templates…" aside) to lean header-plus-fact form, since the verified tables already carry the substance.

Promote the final Checklist into an explicit ordered workflow with a formal fix→re-test retry loop so the validation checkpoints form one sequenced path rather than a distributed list.

DimensionReasoningScore

Conciseness

Dense with n8n-specific verified facts Claude does not already know (not basic-Python padding), but carries narrative prose around the tables (e.g. the opening "Since n8n 2.0…" and "Code copied from old templates…usually breaks") that could be trimmed — efficient with minor over-explanation, not maximally lean.

4 / 5

Actionability

Fully executable, copy-paste-ready quick-start code for both modes, exact node-config JSON, a legacy→native migration table, concrete "Use instead" alternatives (isinstance(x, dict), nonlocal counter), and a one-line test-node snippet covering the common cases.

5 / 5

Workflow Clarity

A strong verification checklist with an explicit test-execution checkpoint ("Ran a real test execution and inspected the output items") plus error-recovery guidance in the onError section; validation is present so no destructive/batch cap, but checkpoints are distributed across a topical reference rather than one formal fix→revalidate sequence.

4 / 5

Progressive Disclosure

Section headers are well-organized and the single external reference (COMMON_PATTERNS.md) is clearly signaled and described, but that file is absent from the bundle (no references/scripts/assets dirs, no such file) — scoring against the actual bundle structure, the promised one-level-deep disclosure is broken because navigation leads to a missing file, which is more than a minor organization gap.

3 / 5

Total

16

/

20

Passed

Description

100%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 actions, comprehensive natural trigger terms (including exact error messages and legacy identifiers), explicit what-and-when guidance, and clear disambiguation from sibling skills, all in third person.

DimensionReasoningScore

Specificity

Lists multiple concrete actions and coverage areas comprehensively — "Write Python in n8n Code nodes", "migrating old Pyodide/'Python (Beta)' code", and "Covers the only two variables (_items/_item), dict-only access, imports blocked by default, the sandbox's denied builtins, accepted return shapes, and how errors interact with onError".

5 / 5

Completeness

Explicitly answers both what (write/migrate native Python, covers specific topics) and when via a concrete "Use when the user explicitly wants Python in a Code node, when migrating…, or when a Python Code node fails with [errors]" clause; no missing-trigger cap applies.

5 / 5

Trigger Term Quality

Comprehensive natural triggers users would actually paste — "NameError", "Security violations detected", "Import of standard library module … is disallowed", "__build_class__ not found", "A 'json' property isn't a dictionary", "Python runner unavailable", plus legacy "_input/_json/_node/_now" and "Python (Beta)".

5 / 5

Distinctiveness Conflict Risk

Clear niche (native Python, `language` pythonNative, n8n 2.x) with explicit disambiguation from the JS default and an EXCEPTION routing the Custom Code Tool case to n8n-code-tool, minimizing conflict risk.

5 / 5

Total

20

/

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: 1 missing

Warning

Total

15

/

16

Passed

Repository
czlonkowski/n8n-skills
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.