CtrlK
BlogDocsLog inGet started
Tessl Logo

n8n-code-python

Write Python code in n8n Code nodes. Use when writing Python in n8n, using _input/_json/_node syntax, working with standard library, or need to understand Python limitations in n8n Code nodes. Use this skill when the user specifically requests Python for an n8n Code node. Note — JavaScript is recommended for 95% of use cases — only use Python when the user explicitly prefers it or the task requires Python-specific standard library capabilities (regex, hashlib, statistics). 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).

65

Quality

79%

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

Fix and improve this skill with Tessl

tessl review fix ./data/skills/n8n-code-python/SKILL.md

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

SKILL.md
Quality
Evals
Security

Quality

Content

71%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 highly actionable, n8n-specific reference with excellent correct/incorrect code examples and decision routing, weakened by repetitive JavaScript-first messaging, basic-Python explanations, and four prominently referenced companion files that are missing from the bundle. The dangling references are the most consequential defect since the body repeatedly defers detail to them.

Suggestions

Ship the four referenced files (DATA_ACCESS.md, COMMON_PATTERNS.md, ERROR_PATTERNS.md, STANDARD_LIBRARY.md) or remove/inline their references — the body defers substantial detail to files that do not exist in the bundle.

Consolidate the JavaScript-first recommendation to one section and delete its repeats in Essential Rules, the When-to-Use section, and the closing line; likewise fold the duplicated Essential Rules into their dedicated sections.

Cut Best Practices items that teach basic Python Claude already knows (.get() defaults, list comprehension vs manual loop) and keep only n8n-specific guidance; add an explicit run → error → ERROR_PATTERNS fix → retry loop for the deployment checklist.

DimensionReasoningScore

Conciseness

Mostly efficient n8n-specific content, but with real padding: the JavaScript-first recommendation is repeated in at least four places ("⚠️ Important: JavaScript First", "Essential Rules #1", "When to Use Python vs JavaScript", the closing line); "Essential Rules" duplicates the later Data Access / Return Format / Limitations sections; and Best Practices items 1–3 (.get(), list comprehension vs manual loop) explain basic Python Claude already knows. Not anchor 2 because the bulk is genuinely non-obvious n8n knowledge (webhook body nesting, _node.first() semantics, SplitInBatches outputs); not anchor 4 because the repetition and beginner-Python explanations are more than minor trims.

3 / 5

Actionability

Every section gives copy-paste-ready executable code with correct-vs-incorrect pairs ("# ❌ WRONG ... # ✅ CORRECT"), named error classes (ModuleNotFoundError, KeyError), concrete module lists, and specific workaround routes (HTTP Request node, Set/Filter/IF nodes, search_nodes/get_node/validate_node MCP calls). Matches the anchor-5 pattern of runnable examples covering the common cases.

5 / 5

Workflow Clarity

Decision routing is well sequenced — JavaScript-first check → mode selection (All Items vs Each Item with when-to-use) → Beta vs Native mode → data access patterns → Python/JS/other-node decision lists — and the closing "Quick Reference Checklist" acts as a pre-deploy validation gate. Not anchor 5 because there is no explicit error-recovery feedback loop (run → read error → apply ERROR_PATTERNS fix → retry) for the fragile batch/deployment cases it warns about.

4 / 5

Progressive Disclosure

The in-SKILL.md structure is good — lean overview sections with well-signaled, one-level-deep pointers to [DATA_ACCESS.md], [COMMON_PATTERNS.md], [ERROR_PATTERNS.md], [STANDARD_LIBRARY.md], each annotated with what it contains — but none of these four referenced files exist in the bundle (no references/, scripts/, or assets/ directories at all). Scored against the actual bundle structure, the promised detail layer is inaccessible, which is a structural failure beyond the 'minor organization gaps' of anchor 4; better than anchor 2 because the overview itself is genuinely well organized and signals references clearly.

3 / 5

Total

15

/

20

Passed

Description

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

A strong description with explicit what/when triggers, concrete syntax and scope terms, and excellent conflict disambiguation against sibling skills. It is somewhat long (three use-when clauses plus a note and an exception), which borders on over-claiming verbosity but every clause carries routing information.

DimensionReasoningScore

Specificity

Concrete actions are named — "Write Python code in n8n Code nodes", "using _input/_json/_node syntax", "working with standard library", "understand Python limitations" — plus specific module names (regex, hashlib, statistics). Falls short of anchor 5 because it does not enumerate a comprehensive list of capabilities (e.g., transformation, filtering, aggregation) the way the top anchor's example does.

4 / 5

Completeness

Explicitly answers both what ("Write Python code in n8n Code nodes" with syntax and library scope) and when — two explicit trigger clauses ("Use when writing Python in n8n..." and "Use this skill when the user specifically requests Python for an n8n Code node"), with a scoped-out exception for the toolCode variant. Matches the anchor-5 example's structure of concrete what + concrete when.

5 / 5

Trigger Term Quality

Good natural-term coverage: "writing Python in n8n", "Code node", "_input/_json/_node", "standard library", "specifically requests Python for an n8n Code node" — phrases a user would plausibly say. Not clearly at anchor 5 because coverage relies on one phrasing family and lacks broader synonym variations users might use (e.g., "script", "py", error-message terms).

4 / 5

Distinctiveness Conflict Risk

Clear niche (Python in n8n Code nodes only) with active conflict prevention: the "EXCEPTION — ... use the n8n-code-tool skill instead" clause disambiguates the closest neighbor, and the JavaScript-95% note separates it from the JS code skill. Minimal risk of triggering for the wrong skill.

5 / 5

Total

18

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (502 lines); consider splitting into references/ and linking

Warning

relative_links

Relative link issues: 11 missing

Warning

Total

14

/

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.