agentsclimarketplace

N8n agents review

Skill Impertio-Studio/n8n-Claude-Skill-Package/skills/source/n8n-agents/n8n-agents-review

21 deterministic Claude AI skills for n8n v1.x workflow automation

Install
npx -y skills add Impertio-Studio/n8n-Claude-Skill-Package --skill n8n-agents-review

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when reviewing n8n workflows or validating workflow JSON before deployment. Prevents production errors by catching anti-patterns in node configuration, connection wiring, and expression syntax. Covers workflow JSON structure, node configuration, connection wiring, expression syntax, credential setup, error handling patterns, deployment configuration, and known anti-patterns. Keywords: n8n, review, validation, workflow, audit, anti-pattern, check my workflow, validate before deploy, find mistakes, workflow audit..

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

12.4 KB, as published. Nobody here has run it

n8n Workflow & Code Review Agent

Run this checklist against ANY n8n workflow JSON, custom node code, or deployment configuration to catch errors before they reach production.

Quick Reference: Review Areas

AreaCritical ChecksReference
Workflow JSONIConnections 3-level nesting, unique node names, required fieldsmethods.md
Connection WiringType matching, correct indices, no orphan nodesmethods.md
ExpressionsValid variable refs, context restrictions, JMESPath ordermethods.md
CredentialsICredentialType completeness, authenticate method, test endpointmethods.md
Node TypesINodeType interface, execute return type, property typesmethods.md
Error HandlingError workflow, continueOnFail, retry configmethods.md
DeploymentEncryption key, queue mode, volume mounts, PostgreSQLmethods.md
Code NodeReturn format, restricted variables, sandbox limitsmethods.md
SecurityNo hardcoded secrets, encryption, task runnersmethods.md
Anti-PatternsConsolidated list from all skill areasanti-patterns.md

Decision Tree: Review Workflow

START: What are you reviewing?
├─ Workflow JSON file (.json)
│  ├─ Run: Workflow JSON checks (Section 1)
│  ├─ Run: Connection Wiring checks (Section 2)
│  ├─ Run: Expression checks on all parameter values (Section 3)
│  ├─ Run: Error Handling checks (Section 6)
│  └─ Run: Anti-Pattern scan (Section 10)
│
├─ Custom node code (.node.ts)
│  ├─ Run: Node Type checks (Section 5)
│  ├─ Run: Credential checks if node uses credentials (Section 4)
│  ├─ Run: Error Handling checks (Section 6)
│  └─ Run: Anti-Pattern scan (Section 10)
│
├─ Credential definition (.credentials.ts)
│  └─ Run: Credential checks (Section 4)
│
├─ Code node content
│  ├─ Run: Code Node checks (Section 8)
│  └─ Run: Anti-Pattern scan (Section 10)
│
├─ Deployment config (docker-compose.yml / env vars)
│  ├─ Run: Deployment checks (Section 7)
│  └─ Run: Security checks (Section 9)
│
└─ Full project audit
   └─ Run ALL sections sequentially

1. Workflow JSON Validation

ALWAYS verify these required fields on every node in nodes[]:

FieldTypeRule
idstringMUST be unique UUID
namestringMUST be unique within the workflow
typestringMUST match a registered node type (e.g., n8n-nodes-base.httpRequest)
typeVersionnumberMUST be a valid version for the node type
position[number, number]MUST be [x, y] coordinate array
parametersobjectMUST exist (can be empty {})

ALWAYS verify the workflow root object contains:

  • id (string)
  • name (string)
  • active (boolean)
  • nodes (array)
  • connections (object)

NEVER accept a workflow where two nodes share the same name — connections reference nodes by name, so duplicates break wiring.


2. Connection Wiring Validation

IConnections uses 3-level nesting:

connections[sourceNodeName][connectionType][outputIndex] = IConnection[]

ALWAYS verify:

  1. Every key in connections matches a name in nodes[]
  2. Every IConnection.node value matches a name in nodes[]
  3. IConnection.type is a valid NodeConnectionType (usually "main")
  4. IConnection.index does not exceed the destination node's input count
  5. Trigger nodes (group: ['trigger']) have NO incoming connections
  6. Non-trigger nodes have at least one incoming connection (unless intentionally orphaned)
  7. Multi-output nodes (IF, Switch) have the correct number of output arrays

IF node pattern: connections["IF"].main MUST have exactly 2 arrays — index 0 for true, index 1 for false.


3. Expression Validation

ALWAYS verify expressions ({{ ... }}) use correct variable references:

ContextAvailableNOT Available
Any expression$json, $binary, $input, $execution, $workflow, $now, $today, $env, $vars, $prevNode, $runIndex, $parameter
Code nodeAll $ vars except $itemIndex and $secrets$itemIndex, $secrets
Python Code node_ prefix versions (_json, _items)$ prefix, dot notation on items

ALWAYS verify $jmespath(object, searchString) parameter order — object FIRST, search string SECOND. This differs from the JMESPath spec.

NEVER allow $("<NodeName>") to reference a node name that does not exist in the workflow.


4. Credential Validation

ALWAYS verify ICredentialType implementations include:

PropertyRequiredRule
nameYESInternal identifier, matches node's credential reference
displayNameYESHuman-readable label
propertiesYESArray of INodeProperties[] defining input fields
authenticateYESMethod with type: 'generic' and properties object
testRECOMMENDEDICredentialTestRequest with test endpoint

ALWAYS verify authenticate.type is 'generic' — other values are not supported.

ALWAYS verify credential expressions use $credentials prefix: ={{$credentials.apiKey}}.

NEVER allow credentials to be hardcoded in node parameters — ALWAYS use credential references.


5. Node Type Validation

ALWAYS verify INodeType implementations:

CheckExpectedCommon Failure
description propertyINodeTypeDescription with all required fieldsMissing inputs, outputs, or properties
execute() return typePromise<INodeExecutionData[][]>Returning single array [] instead of [[]]
Trigger nodesinputs: [] and group: ['trigger']Having inputs on trigger nodes
Property type valuesValid NodePropertyTypesUsing invalid type strings
displayOptionsReferences existing property names/valuesReferencing non-existent parameters
credentials arrayEach entry has name matching a credential typeCredential name mismatch

ALWAYS verify execute() returns [returnData] (wrapped in outer array), NOT just returnData.

ALWAYS verify each item in the return array has a json property: { json: { ... } }.


6. Error Handling Validation

ALWAYS verify:

  1. Error workflow configuredsettings.errorWorkflow is set in production workflows
  2. continueOnFail pattern — nodes using this.continueOnFail() include error data in output:
    returnData.push({ json: { error: error.message }, pairedItem: { item: i } });
    
  3. Retry on transient failures — HTTP/API nodes set retryOnFail: true, maxTries >= 2, waitBetweenTries >= 1000
  4. Error node exists — at least one Error Trigger workflow is available for the instance
  5. onError setting — nodes specify behavior: 'continueErrorOutput', 'continueRegularOutput', or 'stopWorkflow'

NEVER allow a production workflow without an error workflow — silent failures are unacceptable.


7. Deployment Validation

ALWAYS verify for production deployments:

CheckExpectedConsequence of Missing
N8N_ENCRYPTION_KEYExplicitly set and backed upKey regeneration locks out all credentials
NODE_ENVproductionMissing production optimizations
N8N_PROTOCOLhttpsCredentials transmitted in cleartext
WEBHOOK_URLSet to public URLWebhooks unreachable externally
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONStrueSettings file readable by other users
N8N_RUNNERS_ENABLEDtrueCode runs in main process (security risk)
Volume: /home/node/.n8nMounted to persistent volumeData lost on container restart

Queue mode additional requirements:

CheckExpectedConsequence of Missing
DB_TYPEpostgresdbSQLite does NOT support queue mode
EXECUTIONS_MODEqueueWorkers will not process jobs
Redis configuredQUEUE_BULL_REDIS_HOST + portQueue has no broker
Shared N8N_ENCRYPTION_KEYSame key on main + all workersCredential decryption fails
S3 binary storageConfigured for shared accessBinary data inaccessible across instances

8. Code Node Validation

ALWAYS verify Code node content:

CheckRule
Return format (all items)MUST return [{json: {...}}, ...] — array of objects with json key
Return format (each item)MUST return {json: {...}} — single object with json key
No $itemIndexNEVER use $itemIndex in Code node — it is not available
No $secretsNEVER use $secrets in Code node — it is not available
No HTTP requestsNEVER make HTTP calls in Code node — use HTTP Request node
No file system accessNEVER access files directly — use Read/Write Files nodes
Python bracket notationALWAYS use item["json"]["field"], NEVER item.json.field in Python
Binary data accessALWAYS use this.helpers.getBinaryDataBuffer(), NEVER direct buffer access

9. Security Validation

ALWAYS verify:

  1. No hardcoded credentials — API keys, tokens, passwords NEVER in node parameters or Code node
  2. Encryption key setN8N_ENCRYPTION_KEY is explicitly configured (not auto-generated)
  3. Task runners enabledN8N_RUNNERS_ENABLED=true (isolates Code node execution)
  4. File access restrictedN8N_RESTRICT_FILE_ACCESS_TO limits filesystem paths
  5. Settings permissionsN8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
  6. Env access blockedN8N_BLOCK_ENV_ACCESS_IN_NODE=true if env vars contain secrets
  7. Webhook authentication — production webhooks use Basic Auth, Header Auth, or JWT
  8. HTTPS enforcedN8N_PROTOCOL=https with valid TLS termination
  9. Secure cookiesN8N_SECURE_COOKIE=true in HTTPS deployments

10. Anti-Pattern Detection

Scan for ALL anti-patterns listed in anti-patterns.md. Key categories:

  • Expression anti-patterns: Wrong variable context, reversed JMESPath args, new Date() instead of Luxon
  • Code node anti-patterns: Restricted variables, wrong return format, direct binary access
  • Credential anti-patterns: Hardcoded secrets, missing test endpoint, wrong authenticate type
  • Deployment anti-patterns: Missing encryption key, SQLite in production, no volume mounts
  • Workflow anti-patterns: No error workflow, duplicate node names, orphan nodes

Review Report Template

After completing all applicable checks, produce a report:

## n8n Review Report

**Target**: [filename or description]
**Type**: [Workflow JSON | Custom Node | Credential | Deployment Config | Code Node]
**Date**: [date]

### Summary
- Total checks: [N]
- Passed: [N]
- Failed: [N]
- Warnings: [N]

### Critical Failures
1. [Area] — [What failed] — [Expected state] — [How to fix]

### Warnings
1. [Area] — [What to improve] — [Recommendation]

### Anti-Patterns Detected
1. [AP-XXX] — [Description] — [Location in code/config]

Reference Links

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.