File contents [H1][N8N-BUILDER]
Dictum: Schema compliance enables n8n import without runtime validation errors.
Generate valid n8n workflow JSON.
Tasks:
Read schema.md — Root structure, settings
Read nodes.md — Node definition, typeVersion
Read connections.md — Graph topology, AI types
(dynamic values) Read expressions.md — Variables, functions
(specific nodes) Read integrations.md — Node parameters
Generate JSON — Apply template from workflow.template.md
Validate — Run uv run .claude/skills/n8n-builder/scripts/validate-workflow.py
References:
Domain
File
Schema
schema.md
Nodes
nodes.md
Connections
connections.md
Expressions
expressions.md
Integrations
integrations.md
RAG
rag.md
Validation
validation.md
Template
workflow.template.md
Script
validate-workflow.py
[0][N8N_2.0]
Dictum: Breaking changes invalidate pre-2025 patterns.
Breaking Changes (December 2025):
[INDEX]
[CHANGE]
[DETAIL]
[1]
Database
PostgreSQL required; MySQL/MariaDB support dropped
[2]
Python
"language": "python" removed; use "pythonNative" with Task Runners
[3]
Security
ExecuteCommand and LocalFileTrigger disabled by default
[4]
Code Isolation
Environment variable access blocked (N8N_BLOCK_ENV_ACCESS_IN_NODE=true)
[5]
Agent Type
Agent type selection removed (v1.82+); all agents are Tools Agent
[6]
Task Runners
Enabled by default for code execution isolation; external process sandbox
[7]
MCP Client
mcpClient standalone node for calling external MCP servers as AI tools
[8]
HITL
Human-in-the-loop for AI tool calls; agent pauses for human approval
[9]
MCP OAuth
MCP servers support OAuth 2.1 authentication for credential exchange
[10]
Publish/Save
Save preserves edits (draft); Publish updates live version (separate act)
[11]
SQLite Pool
High-performance pooling driver reduces "Database Locked" errors
[12]
Sub-Workflow Wait
Sub-workflows pause, wait for external input (Slack approval), return data
[13]
Project Vars
Project-level variables alongside global; override global per project
[CRITICAL]:
[ALWAYS] Use Task Runners for Code node execution — default isolation mode since 2025.
[ALWAYS] Use mcpClient node (not HTTP) for MCP server integration — handles protocol negotiation.
[NEVER] Use deprecated "language": "python" — fails silently with Task Runners enabled.
[1][SCHEMA]
Dictum: Root structure enables n8n parser recognition and execution.
Guidance:
AI Workflows — Require executionOrder: "v1" in settings; async node ordering fails without.
Portability — Credential IDs and errorWorkflow UUIDs are instance-specific; expect reassignment post-import.
Optional Fields — Include empty objects ("pinData": {}) over omission; prevents import edge cases.
Sub-Workflow Typing — Use workflowInputs schema on trigger nodes to validate caller payloads before execution.
pinData Limits — Keep under 12MB; large payloads slow editor rendering and cannot contain binary data.
Best-Practices:
[ALWAYS] Set "active": false on generation; activation is a deployment decision.
[NEVER] Hardcode credential IDs; use placeholder names for cross-instance transfer.
[2][NODES]
Dictum: Unique identity enables deterministic cross-node references.
Guidance:
Name Collisions — n8n auto-renames duplicates (Set→Set1); breaks $('NodeName') expressions silently.
Version Matching — typeVersion must match target n8n instance; newer versions may lack backward compatibility.
Error Strategy — Use onError: "continueErrorOutput" for fault-tolerant pipelines; default stops execution.
Node Documentation — Use notes field for inline documentation; notesInFlow: true displays on canvas.
Best-Practices:
[ALWAYS] Generate UUID per node before building connections; connections reference node.name.
[ALWAYS] Space nodes 200px horizontal, 150px vertical for canvas readability.
[3][CONNECTIONS]
Dictum: Connection types enable workflow mode distinction at parse time.
Guidance:
AI vs Main — AI nodes require specialized types (ai_tool, ai_languageModel); main causes silent tool invisibility.
Fan-out — Single output to multiple nodes executes in parallel; order within array is non-deterministic.
Multi-output — Array index maps to output port; IF node: index 0 = true branch, index 1 = false branch.
Single Model — Agent accepts exactly one ai_languageModel connection; multiple models conflict silently.
Memory Scope — ai_memory persists within single trigger execution only; no cross-session persistence.
Best-Practices:
[ALWAYS] Match connection key AND type property; mismatches cause silent failures.
[NEVER] Connect AI tools via main type; agent cannot discover them.
[NEVER] Connect multiple language models to single agent; use Model Selector node for dynamic selection.
[4][EXPRESSIONS]
Dictum: Dynamic evaluation eliminates hardcoded parameters.
Guidance:
Static vs Dynamic — Prefix = signals evaluation; without it, value is literal string including {{ }}.
Pinned Data — Test mode pins lack execution context; .item fails, use .first() or .all()[0] instead.
Complex Logic — IIFE pattern {{(function(){ return ... })()}} enables multi-statement evaluation.
Scope Confusion — $json accesses current node input only; use $('NodeName').item.json for other nodes.
Best-Practices:
[ALWAYS] Use $('NodeName') for cross-node data; $json only accesses current node input.
[ALWAYS] Escape quotes in JSON strings or use template literals to prevent invalid JSON.
[NEVER] Assume .item works in all contexts; pinned data testing requires explicit accessors.
[5][INTEGRATIONS]
Dictum: Node type selection determines integration capability.
Guidance:
Trigger Selection — Webhook for external calls, scheduleTrigger for periodic; choose based on initiation source.
AI Tool Visibility — Sub-workflow tools require description parameter; agent uses it for tool selection reasoning.
Code Language — Use "pythonNative" for Python; "python" is deprecated.
Error Propagation — Use stopAndError node for controlled failures; triggers designated error workflow.
MCP Client — mcpClient standalone node connects to external MCP servers; discovers tools dynamically via ai_tool connection. Supports OAuth 2.1.
Guardrails — guardrails node enforces AI output safety with configurable rules and actions.
HITL — Human-in-the-loop approval for AI agent tool calls; agent pauses execution until human approves.
Output Parser — outputParserStructured jsonSchema must be static; expressions in schema are ignored silently.
Batch Processing — Use splitInBatches for large datasets to prevent memory exhaustion; process in chunks.
Best-Practices:
[ALWAYS] Set responseMode: "lastNode" for webhook→response patterns; ensures output reaches caller.
[ALWAYS] Include description on HTTP nodes used as AI tools; undocumented tools are invisible to agent.
[ALWAYS] Include unique webhookId per workflow to prevent path collisions across workflows.
[6][RAG]
Dictum: RAG pipelines ground LLM responses in domain-specific knowledge.
Guidance:
Vector Store Selection — Simple for development; PGVector/Pinecone/Qdrant for production persistence.
Embedding Consistency — Same embedding model required for insert and query; mismatch causes semantic drift.
Chunk Strategy — Recursive Character splitter recommended; splits Markdown/HTML/code before character fallback.
Memory vs Chains — Only agents support memory; chains are stateless single-turn processors.
Retriever Modes — MultiQuery for complex questions; Contextual Compression for noise reduction.
Best-Practices:
[ALWAYS] Match embedding model between document insert and query operations.
[ALWAYS] Use ai_memory connection type for memory nodes; main silently fails.
[NEVER] Use Simple Vector Store in production; data lost on restart, global user access.
[7][VALIDATION]
Dictum: Pre-export validation prevents n8n import failures.
Script:
uv run .claude/skills/n8n-builder/scripts/validate-workflow.py workflow.json
uv run .claude/skills/n8n-builder/scripts/validate-workflow.py workflow.json --strict
Checks (12 automated):
root_required — name, nodes, connections present
node_id_unique / node_name_unique — no duplicates
node_id_uuid — valid UUID format
conn_targets_exist — connection targets reference existing nodes
conn_ai_type_match — AI connection key matches type property
settings_exec_order_ai — LangChain workflows require executionOrder: "v1"
settings_caller_policy / node_on_error — enum value validation
Guidance:
API Deployment — Use POST then PUT pattern; single POST may ignore settings due to API bug.
Performance — saveExecutionProgress: true triggers DB I/O per node; disable for high-throughput (>1000 RPM).
Source Control — Strip instanceId when sharing; credential files contain stubs only, not secrets.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1 --- 2 name: bsamiee-parametric-portal-n8n-builder 3 description: [H1][N8N-BUILDER] 4 --- 5 6 # [H1][N8N-BUILDER] 7 >**Dictum:** *Schema compliance enables n8n import without runtime validation errors.* 8 9 <br> 10 11 Generate valid n8n workflow JSON. 12 13 **Tasks:** 14 1. Read [schema.md](./references/schema.md) — Root structure, settings 15 2. Read [nodes.md](./references/nodes.md) — Node definition, typeVersion 16 3. Read [connections.md](./references/connections.md) — Graph topology, AI types 17 4. (dynamic values) Read [expressions.md](./references/expressions.md) — Variables, functions 18 5. (specific nodes) Read [integrations.md](./references/integrations.md) — Node parameters 19 6. Generate JSON — Apply template from [workflow.template.md](./templates/workflow.template.md) 20 7. Validate — Run `uv run .claude/skills/n8n-builder/scripts/validate-workflow.py` 21 22 **References:** 23 24 | Domain | File | 25 | ------------ | ---------------------------------------------------------- | 26 | Schema | [schema.md](references/schema.md) | 27 | Nodes | [nodes.md](references/nodes.md) | 28 | Connections | [connections.md](references/connections.md) | 29 | Expressions | [expressions.md](references/expressions.md) | 30 | Integrations | [integrations.md](references/integrations.md) | 31 | RAG | [rag.md](references/rag.md) | 32 | Validation | [validation.md](references/validation.md) | 33 | Template | [workflow.template.md](templates/workflow.template.md) | 34 | Script | [validate-workflow.py](scripts/validate-workflow.py) | 35 36 --- 37 ## [0][N8N_2.0] 38 >**Dictum:** *Breaking changes invalidate pre-2025 patterns.* 39 40 <br> 41 42 **Breaking Changes (December 2025):** 43 44 | [INDEX] | [CHANGE] | [DETAIL] | 45 | :-----: | ----------------- | -------------------------------------------------------------------------- | 46 | [1] | Database | PostgreSQL required; MySQL/MariaDB support dropped | 47 | [2] | Python | `"language": "python"` removed; use `"pythonNative"` with Task Runners | 48 | [3] | Security | `ExecuteCommand` and `LocalFileTrigger` disabled by default | 49 | [4] | Code Isolation | Environment variable access blocked (`N8N_BLOCK_ENV_ACCESS_IN_NODE=true`) | 50 | [5] | Agent Type | Agent type selection removed (v1.82+); all agents are Tools Agent | 51 | [6] | Task Runners | Enabled by default for code execution isolation; external process sandbox | 52 | [7] | MCP Client | `mcpClient` standalone node for calling external MCP servers as AI tools | 53 | [8] | HITL | Human-in-the-loop for AI tool calls; agent pauses for human approval | 54 | [9] | MCP OAuth | MCP servers support OAuth 2.1 authentication for credential exchange | 55 | [10] | Publish/Save | Save preserves edits (draft); Publish updates live version (separate act) | 56 | [11] | SQLite Pool | High-performance pooling driver reduces "Database Locked" errors | 57 | [12] | Sub-Workflow Wait | Sub-workflows pause, wait for external input (Slack approval), return data | 58 | [13] | Project Vars | Project-level variables alongside global; override global per project | 59 60 [CRITICAL]: 61 - [ALWAYS] Use Task Runners for Code node execution — default isolation mode since 2025. 62 - [ALWAYS] Use `mcpClient` node (not HTTP) for MCP server integration — handles protocol negotiation. 63 - [NEVER] Use deprecated `"language": "python"` — fails silently with Task Runners enabled. 64 65 --- 66 ## [1][SCHEMA] 67 >**Dictum:** *Root structure enables n8n parser recognition and execution.* 68 69 <br> 70 71 **Guidance:** 72 - `AI Workflows` — Require `executionOrder: "v1"` in settings; async node ordering fails without. 73 - `Portability` — Credential IDs and errorWorkflow UUIDs are instance-specific; expect reassignment post-import. 74 - `Optional Fields` — Include empty objects (`"pinData": {}`) over omission; prevents import edge cases. 75 - `Sub-Workflow Typing` — Use `workflowInputs` schema on trigger nodes to validate caller payloads before execution. 76 - `pinData Limits` — Keep under 12MB; large payloads slow editor rendering and cannot contain binary data. 77 78 **Best-Practices:** 79 - [ALWAYS] Set `"active": false` on generation; activation is a deployment decision. 80 - [NEVER] Hardcode credential IDs; use placeholder names for cross-instance transfer. 81 82 [REFERENCE]: [→schema.md](./references/schema.md) 83 84 --- 85 ## [2][NODES] 86 >**Dictum:** *Unique identity enables deterministic cross-node references.* 87 88 <br> 89 90 **Guidance:** 91 - `Name Collisions` — n8n auto-renames duplicates (Set→Set1); breaks `$('NodeName')` expressions silently. 92 - `Version Matching` — typeVersion must match target n8n instance; newer versions may lack backward compatibility. 93 - `Error Strategy` — Use `onError: "continueErrorOutput"` for fault-tolerant pipelines; default stops execution. 94 - `Node Documentation` — Use `notes` field for inline documentation; `notesInFlow: true` displays on canvas. 95 96 **Best-Practices:** 97 - [ALWAYS] Generate UUID per node before building connections; connections reference node.name. 98 - [ALWAYS] Space nodes 200px horizontal, 150px vertical for canvas readability. 99 100 [REFERENCE]: [→nodes.md](./references/nodes.md) 101 102 --- 103 ## [3][CONNECTIONS] 104 >**Dictum:** *Connection types enable workflow mode distinction at parse time.* 105 106 <br> 107 108 **Guidance:** 109 - `AI vs Main` — AI nodes require specialized types (`ai_tool`, `ai_languageModel`); `main` causes silent tool invisibility. 110 - `Fan-out` — Single output to multiple nodes executes in parallel; order within array is non-deterministic. 111 - `Multi-output` — Array index maps to output port; IF node: index 0 = true branch, index 1 = false branch. 112 - `Single Model` — Agent accepts exactly one `ai_languageModel` connection; multiple models conflict silently. 113 - `Memory Scope` — `ai_memory` persists within single trigger execution only; no cross-session persistence. 114 115 **Best-Practices:** 116 - [ALWAYS] Match connection key AND `type` property; mismatches cause silent failures. 117 - [NEVER] Connect AI tools via `main` type; agent cannot discover them. 118 - [NEVER] Connect multiple language models to single agent; use Model Selector node for dynamic selection. 119 120 [REFERENCE]: [→connections.md](./references/connections.md) 121 122 --- 123 ## [4][EXPRESSIONS] 124 >**Dictum:** *Dynamic evaluation eliminates hardcoded parameters.* 125 126 <br> 127 128 **Guidance:** 129 - `Static vs Dynamic` — Prefix `=` signals evaluation; without it, value is literal string including `{{ }}`. 130 - `Pinned Data` — Test mode pins lack execution context; `.item` fails, use `.first()` or `.all()[0]` instead. 131 - `Complex Logic` — IIFE pattern `{{(function(){ return ... })()}}` enables multi-statement evaluation. 132 - `Scope Confusion` — `$json` accesses current node input only; use `$('NodeName').item.json` for other nodes. 133 134 **Best-Practices:** 135 - [ALWAYS] Use `$('NodeName')` for cross-node data; `$json` only accesses current node input. 136 - [ALWAYS] Escape quotes in JSON strings or use template literals to prevent invalid JSON. 137 - [NEVER] Assume `.item` works in all contexts; pinned data testing requires explicit accessors. 138 139 [REFERENCE]: [→expressions.md](./references/expressions.md) 140 141 --- 142 ## [5][INTEGRATIONS] 143 >**Dictum:** *Node type selection determines integration capability.* 144 145 <br> 146 147 **Guidance:** 148 - `Trigger Selection` — Webhook for external calls, scheduleTrigger for periodic; choose based on initiation source. 149 - `AI Tool Visibility` — Sub-workflow tools require `description` parameter; agent uses it for tool selection reasoning. 150 - `Code Language` — Use `"pythonNative"` for Python; `"python"` is deprecated. 151 - `Error Propagation` — Use `stopAndError` node for controlled failures; triggers designated error workflow. 152 - `MCP Client` — `mcpClient` standalone node connects to external MCP servers; discovers tools dynamically via `ai_tool` connection. Supports OAuth 2.1. 153 - `Guardrails` — `guardrails` node enforces AI output safety with configurable rules and actions. 154 - `HITL` — Human-in-the-loop approval for AI agent tool calls; agent pauses execution until human approves. 155 - `Output Parser` — `outputParserStructured` jsonSchema must be static; expressions in schema are ignored silently. 156 - `Batch Processing` — Use `splitInBatches` for large datasets to prevent memory exhaustion; process in chunks. 157 158 **Best-Practices:** 159 - [ALWAYS] Set `responseMode: "lastNode"` for webhook→response patterns; ensures output reaches caller. 160 - [ALWAYS] Include `description` on HTTP nodes used as AI tools; undocumented tools are invisible to agent. 161 - [ALWAYS] Include unique `webhookId` per workflow to prevent path collisions across workflows. 162 163 [REFERENCE]: [→integrations.md](./references/integrations.md) 164 165 --- 166 ## [6][RAG] 167 >**Dictum:** *RAG pipelines ground LLM responses in domain-specific knowledge.* 168 169 <br> 170 171 **Guidance:** 172 - `Vector Store Selection` — Simple for development; PGVector/Pinecone/Qdrant for production persistence. 173 - `Embedding Consistency` — Same embedding model required for insert and query; mismatch causes semantic drift. 174 - `Chunk Strategy` — Recursive Character splitter recommended; splits Markdown/HTML/code before character fallback. 175 - `Memory vs Chains` — Only agents support memory; chains are stateless single-turn processors. 176 - `Retriever Modes` — MultiQuery for complex questions; Contextual Compression for noise reduction. 177 178 **Best-Practices:** 179 - [ALWAYS] Match embedding model between document insert and query operations. 180 - [ALWAYS] Use `ai_memory` connection type for memory nodes; `main` silently fails. 181 - [NEVER] Use Simple Vector Store in production; data lost on restart, global user access. 182 183 [REFERENCE]: [→rag.md](./references/rag.md) 184 185 --- 186 ## [7][VALIDATION] 187 >**Dictum:** *Pre-export validation prevents n8n import failures.* 188 189 <br> 190 191 **Script:** 192 ```bash 193 uv run .claude/skills/n8n-builder/scripts/validate-workflow.py workflow.json 194 uv run .claude/skills/n8n-builder/scripts/validate-workflow.py workflow.json --strict 195 ``` 196 197 **Checks (12 automated):** 198 - `root_required` — name, nodes, connections present 199 - `node_id_unique` / `node_name_unique` — no duplicates 200 - `node_id_uuid` — valid UUID format 201 - `conn_targets_exist` — connection targets reference existing nodes 202 - `conn_ai_type_match` — AI connection key matches type property 203 - `settings_exec_order_ai` — LangChain workflows require `executionOrder: "v1"` 204 - `settings_caller_policy` / `node_on_error` — enum value validation 205 206 **Guidance:** 207 - `API Deployment` — Use POST then PUT pattern; single POST may ignore settings due to API bug. 208 - `Performance` — `saveExecutionProgress: true` triggers DB I/O per node; disable for high-throughput (>1000 RPM). 209 - `Source Control` — Strip `instanceId` when sharing; credential files contain stubs only, not secrets. 210 211 [REFERENCE]: [→validation.md](./references/validation.md) 212 213 --- 214 > Converted and distributed by [TomeVault](https://tomevault.io/claim/bsamiee) — claim your Tome and manage your conversions. 215 <!-- tomevault:4.0:skill_md:2026-04-13 -->
tomevault-io/skills-registry/tree/main/bsamiee--parametric-portal--n8n-builder commit 5588ab55a5
Frequently asked questions How do I install the Bsamiee Parametric Portal N8n Builder skill? Run npx skillmds@latest add tomevault-io/bsamiee-parametric-portal-n8n-builder in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Bsamiee Parametric Portal N8n Builder skill do? [H1][N8N-BUILDER] It is listed under Coding & Dev Tools on SkillMD.
Is Bsamiee Parametric Portal N8n Builder safe to use? This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Bsamiee Parametric Portal N8n Builder? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Bsamiee Parametric Portal N8n Builder free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Bsamiee Parametric Portal N8n Builder? tomevault-io (@tomevault-io) published this skill. Their other Agent Skills are listed on their SkillMD profile.