Build Workflow (Full Pipeline)
Take a natural-language description and ship it as a verified live execution on n8n. All three phases are mandatory. The skill is only complete after a successful execution has been inspected and reported.
Companion plugin required. This skill leans on
n8n-as-code:n8n-architect(from then8nac-marketplaceplugin by Etienne Lescot) for schema research, authoring rules, and n8n best practices — installingn8n-autopilotwithout the companion plugin will work but you will miss the shared knowledge base. Install both:claude plugin marketplace add EtienneLescot/n8n-as-code claude plugin install n8n-as-code@n8nac-marketplace
Tools — all CLI
n8n-autopilot drives everything through the CLI (npx n8nac …) — use the table below. Since n8nac
2.4 a working MCP server exists (n8nac mcp, plus the read-only native-mcp assist against the
instance's own MCP endpoint — see docs/MCP.md); it complements research and
execution inspection but does NOT replace the CLI pipeline here: authoring stays .workflow.ts +
push, and live tests stay n8nac test (binary/file payloads NEVER go through MCP).
| Command | Role |
|---|---|
npx n8nac skills examples search "<q>" / info <id> / download <id> | Community-template lookup (7000+ from n8nworkflows.xyz) — always Step 0 |
npx n8nac skills search "<q>" / node-info <name> --json / node-schema <name> --json | Node discovery + exact TypeScript defs from local schemas |
npx n8nac skills related "<q>" / guides "<q>" | Alternative nodes + tutorials |
npx n8nac skills validate <file> --strict --json | Local workflow validation |
npx n8nac push <file> --verify | Deploy + remote-state verification in one call |
npx n8nac test-plan <id> --json | Infer triggerType + suggestedPayload before testing |
npx n8nac test <id> --data '...' | HTTP-trigger live test (webhook/chat/form) |
npx n8nac execution get <execId> --include-data | Inspect execution output |
npx n8nac find <q> --json --remote | Search existing remote workflows |
npx n8nac workflow present <id> --json | Resolve the user-facing n8n URL — never string-concat <host>/workflow/<id> |
npx n8nac workflow credential-required <id> | Check credential readiness (exit 0 = all present, exit 1 = missing) |
Limits: n8nac test cannot fire schedule/manual/errorTrigger workflows (user runs "Execute Workflow" in the n8n UI). n8nac cannot publish drafts (mcpTrigger workflows need manual UI publish).
Input
$ARGUMENTS = natural-language description of the workflow. Extract:
- Trigger type: webhook, schedule, error, manual, chat, telegram
- Action: what the workflow does
- Target: which service/API is involved
- AI components: agent, model, memory, tools?
- Test data: what input should the live test use?
If $ARGUMENTS is empty, ask the user before proceeding.
Pipeline
Phase 0 — Research
Goal: Know exact node types, parameter names, and SDK patterns before writing code. Delegate schema-research details to the companion n8n-architect skill — it owns Schema-First Research, Workflow Authoring Rules, AI/LangChain rules, Common Mistakes.
Step 0 — Community-template lookup (MANDATORY before any node-by-node work):
npx n8nac skills examples search "<2-3 keywords from the description>" --json
Inspect top hits with npx n8nac skills examples info <id>. If a template matches the requested workflow by ≥70 % (same trigger family + same target service + comparable transformations), download it as the starting point:
npx n8nac skills examples download <id>
Then jump to Phase 1 step 1 with the downloaded file as the seed and only run Steps 1–2 below for nodes you add or change. Adapting an existing template is cheaper, less hallucination-prone, and lands on a community-proven pattern.
Step 1 — Node discovery (CLI-only):
npx n8nac skills search "<service>" --json # find candidate nodes
npx n8nac skills node-info <type> --json # exact parameters, credential keys, typeVersion
npx n8nac skills related "<service>" --json # alternatives + nearest docs
For AI agents/memory/vector stores also check npx n8nac skills guides "<topic>".
Step 2 — Code-Node specifics (only if the workflow uses Code nodes):
- Skill
n8n-code-javascriptcovers$input/$json/$node/$helpers.httpRequest()/ DateTime (Luxon) / top mistakes - Skill
n8n-code-pythoncovers_input/_json/ standard library only
Step 3 — Find similar existing workflows (optional):
npx n8nac find <query> --json --remote
Gate: Do not proceed to Phase 1 without verified parameter names for every node. Never guess — wrong keys are silently ignored by n8n at runtime.
Missing schema? If
npx n8nac skills node-info <type>returns empty or not-found for a community node:
- Look up the npm package name in
docs/COMMUNITY_NODES.md(Package column)- Run Stage 3 extraction immediately (see
/n8n-autopilot:pull-schemasskill) for that package- Rebuild
schemas/_index.json- Then re-run
skills node-info— or read the cached schema directly fromschemas/nodes/A missing schema is always recoverable via Stage 3.
Phase 1 — Write + Validate
-
Pull the closest existing workflow as starting point (optional, only if Step 0 / Step 3 surfaced a useful one):
npx n8nac pull <workflowId>Or create a new
.workflow.tsfile from scratch in Decorator-TS format. -
Write
workflows/<name>.workflow.tsusing Decorator-TS format. The companionn8n-architectskill documents the full authoring rules — these conventions are repo-specific additions on top:- Workflow names:
[Trigger] Action - Target(e.g.[Webhook] Create Lead - Close CRM) - Node names: Verb + Object (e.g.
Validate Input,Fetch Users,Send Alert) - File:
<workflow-name>.workflow.tsinworkflows/(e.g.workflows/create-lead.workflow.ts) - Every workflow MUST include a sticky note documenting Purpose + Required Credentials
- Inline node notes (visible on the canvas without opening the node) — useful for short "why this node exists" explanations:
@node({ name: 'Filter Inactive Users', type: 'n8n-nodes-base.filter', notes: 'Removes users with status != active before CRM sync', notesInFlow: true, // shows the note on the canvas position: [500, 300] })notesInFlow: truewithoutnoteshas no effect. - Every webhook-triggered workflow MUST include a
Respond to Webhooknode — a webhook without a response will hang and time out for the caller.
mcpTrigger rule: If the workflow uses
@n8n/n8n-nodes-langchain.mcpTrigger, always setavailableInMCP: trueexplicitly in the@workflowsettings block:settings: { executionOrder: "v1", callerPolicy: "any", availableInMCP: true, // required — prevents n8n API bug #25987 from resetting to false }The PreToolUse hook (
ensure-mcp-trigger-setting.sh) auto-fixesfalse → trueand warns when the field is missing entirely, but setting it explicitly here is the canonical source of truth. - Workflow names:
-
Validate locally — single source of truth:
npx n8nac skills validate workflows/<name>.workflow.ts --strict --jsonFix any errors → re-validate. Do not push with errors.
-
Push + verify in one call:
npx n8nac push workflows/<name>.workflow.ts --verify--verifyfetches the workflow from n8n after push and validates it against the local schema. On mismatch: re-push. On success: proceed to Phase 2.
Gate: Local validation passes + push succeeds + verify passes. Fix and retry if needed.
Phase 2 — Execute + Test (MANDATORY)
**After every successful push, ALWAYS r