chain-llm-pattern
Build multi-step LLM reasoning chains in n8n using Groq, OpenAI, or Claude for structured data extraction, categorization, scoring, and analysis. Use this…
Design production-grade n8n workflows from requirements. Use this skill whenever the user wants to build, design, architect, or plan an n8n workflow or automation — including phrases like "build me a workflow", "design an automation", "create an n8n flow", "how should I
$ npx -y skills add masteranime/n8n-claude-skills --skill workflow-architect --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/workflow-architectContext preview
The summary Claude sees to decide when to auto-load this skill.
Design production-grade n8n workflows from requirements. Use this skill whenever the user wants to build, design, architect, or plan an n8n workflow or automation — including phrases like "build me a workflow", "design an automation", "create an n8n flow", "how should I
name: workflow-architect description: Design production-grade n8n workflows from requirements. Use this skill whenever the user wants to build, design, architect, or plan an n8n workflow or automation — including phrases like "build me a workflow", "design an automation", "create an n8n flow", "how should I structure this in n8n", or any request involving connecting services (webhooks, APIs, databases, LLMs, email, WhatsApp, Stripe, Google Sheets, etc.) through n8n. Also use when the user describes a business process and wants it automated. Always use this skill before generating n8n workflow JSON or recommending node structures — do not rely on memory of n8n node names or expression syntax.
You are designing a **production n8n workflow**, not a demo. The workflow must survive real data, real failures, and real volume.
1. **Real node names, not guesses.** n8n is strict about capitalization and spacing. Use `Google Sheets` not `Googlesheets`. `HTTP Request` not `HttpRequest`. `Webhook` not `webhook trigger`. If unsure, say so — don't invent.
2. **Expression syntax is `={{ $json.field }}`.** The leading `=` marks the whole field as an expression. Without it, n8n treats the value as a literal string. This is the #1 hallucination source.
3. **Every external call needs an error branch.** Wrap API calls in an `IF` or use `continueOnFail: true` + a downstream `IF` that checks `{{ $json.error }}`. Never assume third parties don't fail.
4. **Idempotency by default.** If the workflow could be retriggered (webhook, cron, polling), include a checkpoint — a MySQL/Postgres lookup on a natural key, or a `Google Sheets` row check. Reference the `mysql-checkpointing` skill for the pattern.
5. **Sub-workflows for reuse.** If logic exceeds ~8 nodes or is called from multiple places (e.g., error handling, notifications), extract into an `Execute Workflow` sub-workflow.
Follow these steps in order. Skipping steps produces demo-quality output.
Ask (or infer) exactly ONE trigger type:
| Trigger | Use when | |---|---| | `Webhook` | External system pushes events (Stripe, Meta, custom APIs) | | `Schedule Trigger` | Recurring jobs (daily reports, hourly polls) | | `Manual Trigger` | Admin-triggered, testing | | `Form Trigger` | User-facing intake | | `Chat Trigger` | Conversational agents | | `Execute Workflow Trigger` | Called by another workflow |
Webhooks in production need: signature verification (HMAC), idempotency key extraction, and a 200 response within 3s (use `Respond to Webhook` early, process async).
Draft the node sequence as a numbered list BEFORE writing JSON. Each node gets:
Example:
1. Webhook (POST /stripe-events) — receives Stripe events
2. Code — verify HMAC signature against STRIPE_SIGNING_SECRET header
3. IF — branch on signature valid
4. Respond to Webhook — return 200 immediately (no payload)
5. MySQL — SELECT from processed_webhooks WHERE event_id = {{ $('Webhook').item.json.body.id }}
...For EACH external call node, answer:
Common patterns:
If using LLMs (Claude, OpenAI, Groq), reference the `chain-llm-pattern` skill for multi-step reasoning. Key rules:
Produce the workflow as valid n8n workflow JSON. Structure:
{
"name": "Workflow Name",
"nodes": [...],
"connections": {...},
"settings": { "executionOrder": "v1" }
}Every node needs `id` (UUID), `name` (unique in workflow), `type` (exact n8n type), `typeVersion` (integer), `position` ([x, y]), and `parameters` (node-specific config).
Use `typeVersion: 1` as a safe default unless you know a newer version is required.
For connections, `main` is the default output — branching nodes (`IF`, `Switch`) have multiple output indices.
If the user asked for a description rather than importable JSON, produce a clean numbered list matching Step 2 format and offer to generate JSON.
Do NOT produce workflows that:
Don't guess — ask ONE consolidated clarifying question covering:
One question, not five. Move fast.
Production-grade Claude Skills for building, debugging, and shipping n8n workflows — distilled from 100+ production workflows by an n8n Verified Creator. Give Claude Code the instincts of a senior n8n engineer.
Repo: masteranime/n8n-claude-skills
Build multi-step LLM reasoning chains in n8n using Groq, OpenAI, or Claude for structured data extraction, categorization, scoring, and analysis. Use this…
Systematically debug failing n8n workflows — expression errors, node type mismatches, pinned data issues, sub-workflow failures, authentication problems, rate…
Build multi-vendor data enrichment waterfalls in n8n — cascading API calls across SerpAPI, Hunter.io, Apollo, Clearbit, LLM extractors, and scrapers with…
Make n8n workflows idempotent, resumable, and safe at scale using MySQL/Postgres checkpoint tables, batch processing patterns, duplicate prevention, and…