n8n-builder
π―Skillfrom bsamiee/parametric_forge
Generates compliant n8n workflow JSON with dynamic nodes, connections, and settings for programmatic workflow automation and AI agent scaffolding.
Installation
npx skills add https://github.com/bsamiee/parametric_forge --skill n8n-builderSkill Details
>-
Overview
# [H1][N8N-BUILDER]
>Dictum: Schema compliance enables n8n import without runtime validation errors.
Generate valid n8n workflow JSON.
Tasks:
- Read [schema.md](./references/schema.md) β Root structure, settings
- Read [nodes.md](./references/nodes.md) β Node definition, typeVersion
- Read [connections.md](./references/connections.md) β Graph topology, AI types
- (dynamic values) Read [expressions.md](./references/expressions.md) β Variables, functions
- (specific nodes) Read [integrations.md](./references/integrations.md) β Node parameters
- Generate JSON β Apply template from [workflow.template.md](./templates/workflow.template.md)
- Validate β Run
uv run .claude/skills/n8n-builder/scripts/validate-workflow.py
[REFERENCE]: [index.md](./index.md) β File listing.
---
[0][N8N_2.0]
>Dictum: Breaking changes invalidate pre-2025 patterns.
Breaking Changes (December 2025):
Databaseβ PostgreSQL required; MySQL/MariaDB support dropped.Pythonβ"language": "python"removed; use"pythonNative"with task runners.SecurityβExecuteCommandandLocalFileTriggerdisabled by default.Code Isolationβ Environment variable access blocked in Code nodes (N8N_BLOCK_ENV_ACCESS_IN_NODE=true).Agent Typeβ Agent type selection removed (v1.82+); all agents are Tools Agent.
---
[1][SCHEMA]
>Dictum: Root structure enables n8n parser recognition and execution.
Guidance:
AI Workflowsβ RequireexecutionOrder: "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β UseworkflowInputsschema 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": falseon generation; activation is a deployment decision. - [NEVER] Hardcode credential IDs; use placeholder names for cross-instance transfer.
[REFERENCE]: [βschema.md](./references/schema.md)
---
[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β UseonError: "continueErrorOutput"for fault-tolerant pipelines; default stops execution.Node Documentationβ Usenotesfield for inline documentation;notesInFlow: truedisplays 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.
[REFERENCE]: [βnodes.md](./references/nodes.md)
---
[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);maincauses 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 oneai_languageModelconnection; multiple models conflict silently.Memory Scopeβai_memorypersists within single trigger execution only; no cross-session persistence.
Best-Practices:
- [ALWAYS] Match connection key AND
typeproperty; mismatches cause silent failures. - [NEVER] Connect AI tools via
maintype; agent cannot discover them. - [NEVER] Connect multiple language models to single agent; use Model Selector node for dynamic selection.
[REFERENCE]: [βconnections.md](./references/connections.md)
---
[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;.itemfails, use.first()or.all()[0]instead.Complex Logicβ IIFE pattern{{(function(){ return ... })()}}enables multi-statement evaluation.Scope Confusionβ$jsonaccesses current node input only; use$('NodeName').item.jsonfor other nodes.
Best-Practices:
- [ALWAYS] Use
$('NodeName')for cross-node data;$jsononly accesses current node input. - [ALWAYS] Escape quotes in JSON strings or use template literals to prevent invalid JSON.
- [NEVER] Assume
.itemworks in all contexts; pinned data testing requires explicit accessors.
[REFERENCE]: [βexpressions.md](./references/expressions.md)
---
[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 requiredescriptionparameter; agent uses it for tool selection reasoning.Code Languageβ Use"pythonNative"for Python;"python"is deprecated.Error Propagationβ UsestopAndErrornode for controlled failures; triggers designated error workflow.2025 Featuresβ MCP nodes enable cross-agent interoperability; Guardrails nodes enforce AI output safety.Output ParserβoutputParserStructuredjsonSchema must be static; expressions in schema are ignored silently.Batch Processingβ UsesplitInBatchesfor 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
descriptionon HTTP nodes used as AI tools; undocumented tools are invisible to agent. - [ALWAYS] Include unique
webhookIdper workflow to prevent path collisions across workflows.
[REFERENCE]: [βintegrations.md](./references/integrations.md)
---
[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_memoryconnection type for memory nodes;mainsilently fails. - [NEVER] Use Simple Vector Store in production; data lost on restart, global user access.
[REFERENCE]: [βrag.md](./references/rag.md)
---
[7][VALIDATION]
>Dictum: Pre-export validation prevents n8n import failures.
Script:
```bash
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 presentnode_id_unique/node_name_uniqueβ no duplicatesnode_id_uuidβ valid UUID formatconn_targets_existβ connection targets reference existing nodesconn_ai_type_matchβ AI connection key matches type propertysettings_exec_order_aiβ LangChain workflows requireexecutionOrder: "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: truetriggers DB I/O per node; disable for high-throughput (>1000 RPM).Source Controlβ StripinstanceIdwhen sharing; credential files contain stubs only, not secrets.
[REFERENCE]: [βvalidation.md](./references/validation.md)
More from this repository10
Queries Nx workspace metadata, project configurations, affected projects, generators, and dependency graphs via unified Python CLI.
Executes web searches, content extraction, website crawling, and site structure mapping using Tavily AI's web operations via a unified Python CLI.
Manages Hostinger cloud infrastructure and services through comprehensive API interactions for VPS, domains, billing, and hosting operations.
Generates comprehensive Mermaid diagrams across 22 types with advanced styling, layout, and semantic categorization for complex visual modeling.
perplexity-tools skill from bsamiee/parametric_forge
Generates TypeScript code using functional patterns and Effect ecosystem, enforcing strict typing, error handling, and modular design principles.
Streamlines complex command generation by dynamically constructing shell and CLI commands with flexible parameter mapping and validation
Queries SonarCloud API to retrieve code quality metrics, issues, hotspots, and analysis history via a unified Python CLI.
Generates structured output formats and response style configurations for Claude, optimizing data serialization and agent communication.
Retrieves comprehensive library documentation via a unified Python CLI, enabling precise resolution and fetching of programming library references.