From n8n-mcp-skills
Provides proven architectural patterns for n8n workflows: webhook processing, HTTP API integration, database operations, AI agents, batch processing, scheduled tasks. Use when building, designing, or automating with n8n.
npx claudepluginhub czlonkowski/n8n-skills --plugin n8n-mcp-skillsThis skill uses the workspace's default tool permissions.
Proven architectural patterns for building n8n workflows.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Proven architectural patterns for building n8n workflows.
Based on analysis of real workflow usage:
Webhook Processing (Most Common)
Batch Processing (below)
Webhook Processing - Use when:
HTTP API Integration - Use when:
Database Operations - Use when:
AI Agent Workflow - Use when:
Scheduled Tasks - Use when:
Batch Processing - Use when:
All patterns share these building blocks:
When building ANY workflow, follow this checklist:
activateWorkflow operationTrigger → Transform → Action → End
Use when: Simple workflows with single path
Trigger → IF → [True Path]
└→ [False Path]
Use when: Different actions based on conditions
Trigger → [Branch 1] → Merge
└→ [Branch 2] ↗
Use when: Independent operations that can run simultaneously
Trigger → Split in Batches → Process → Loop (until done)
Use when: Processing large datasets in chunks
Main Flow → [Success Path]
└→ [Error Trigger → Error Handler]
Use when: Need separate error handling workflow
The SplitInBatches node splits a large dataset into smaller chunks for processing. Understanding its outputs is critical:
main[0] = done — fires ONCE after all batches completemain[1] = each batch — fires per batch (this is the loop body)Prepare Items → SplitInBatches → [main[1]: Process Batch] → (loops back)
[main[0]: Done] → Limit 1 → Aggregate
Always add a Limit 1 node after the done output.
After the loop, $('Node Inside Loop').all() returns ONLY the last batch's items. To accumulate across all iterations, use $getWorkflowStaticData('global') in a Code node inside the loop. See the n8n Code JavaScript skill for the full pattern.
When processing N categories × M items per category (where an API has a batch limit):
Define Categories (N items)
→ Outer Loop (SplitInBatches, batchSize=1)
→ Prepare category data
→ Inner Loop (SplitInBatches, batchSize=1000)
→ API Call → Verify → (loops back to Inner Loop via main[1])
→ Inner done[0] → Rate Limit Delay → back to Outer Loop
→ Outer done[0] → Limit 1 → Final Aggregate
Wiring gotcha: The inner done[0] must connect back to the OUTER loop input, not to the aggregate. The outer done[0] feeds the final aggregate.
For APIs without multi-ID filtering, use id_from + date windowing for efficient pagination:
Schedule → Set Date Window → Fetch Page → Process
→ IF has more? → [true] Update id_from → Fetch Page (loop)
→ [false] → Aggregate → Output
When testing with API write nodes disabled (for dry runs), downstream verification nodes receive the request body instead of the response. Make verification tolerant:
// In verification Code node
const body = $input.first().json;
const looksLikeRequest = body.method && body.parameters && !body.status;
if (looksLikeRequest) {
return [{ json: { status: 'SKIPPED', message: 'Upstream disabled for testing' }}];
}
// Normal response verification below...
append on sheets with formula columns — it breaks formulas. Use Google Sheets API values.update (PUT) via HTTP Request node with a googleApi credentialADD() formulas. Use parseFloat() in a Code nodeconvertToGoogleDocument: true creates a Google Doc (text), NOT a Google Sheet — to upload a CSV for download, omit this option entirelyhttps://drive.google.com/uc?id={fileId}&export=download — use instead of /view linksWhen comparing values (prices, quantities, metrics), always check both directions:
// ❌ Only catches increases
if (diff > threshold) { flag(); }
// ✅ Catches both spikes AND crashes — both are data-quality signals
if (Math.abs(diff) > threshold) { flag(); }
Problem: Can't access webhook payload data
Solution: Data is nested under $json.body
❌ {{$json.email}}
✅ {{$json.body.email}}
See: n8n Expression Syntax skill
Problem: Node processes all input items, but I only want one
Solution: Use "Execute Once" mode or process first item only
{{$json[0].field}} // First item only
Problem: API calls failing with 401/403
Solution:
Problem: Nodes executing in unexpected order
Solution: Check workflow settings → Execution Order
Problem: Expressions showing as literal text
Solution: Use {{}} around expressions
These skills work together with Workflow Patterns:
n8n MCP Tools Expert - Use to:
ai_agents_guide() for AI pattern guidancen8n_manage_datatablen8n Expression Syntax - Use to:
n8n Node Configuration - Use to:
n8n Validation Expert - Use to:
Common workflow patterns:
Most Common Triggers:
Most Common Transformations:
Most Common Outputs:
Average Workflow Complexity:
1. Webhook (path: "form-submit", POST)
2. Set (map form fields)
3. Slack (post message to #notifications)
1. Schedule (daily at 9 AM)
2. HTTP Request (fetch analytics)
3. Code (aggregate data)
4. Email (send formatted report)
5. Error Trigger → Slack (notify on failure)
1. Schedule (every 15 minutes)
2. Postgres (query new records)
3. IF (check if records exist)
4. MySQL (insert records)
5. Postgres (update sync timestamp)
1. Webhook (receive chat message)
2. AI Agent
├─ OpenAI Chat Model (ai_languageModel)
├─ HTTP Request Tool (ai_tool)
├─ Database Tool (ai_tool)
└─ Window Buffer Memory (ai_memory)
3. Webhook Response (send AI reply)
1. Manual Trigger (for testing)
2. HTTP Request (GET /api/users)
3. Split In Batches (process 100 at a time)
4. Set (transform user data)
5. Postgres (upsert users)
6. Loop (back to step 3 until done)
For comprehensive guidance on each pattern:
From n8n template library:
Template #2947: Weather to Slack
Webhook Processing: Most common pattern
HTTP API: Common pattern
Database Operations: Common pattern
AI Agents: Growing in usage
Use search_templates and get_template from n8n-mcp tools to find examples!
Key Points:
Next Steps:
Related Skills: