Help us improve
Share bugs, ideas, or general feedback.
From n8n-autopilot
Builds and deploys n8n workflows end-to-end via a 3-phase pipeline: research, write/validate, deploy/test/inspect.
npx claudepluginhub neurawork-git/n8n-autopilot --plugin n8n-autopilotHow this skill is triggered — by the user, by Claude, or both
Slash command
/n8n-autopilot:build-workflow "Description of what the workflow should do""Description of what the workflow should do"This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
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
n8n-autopilot is CLI-only (npx n8nac …). There is no mcp__n8n-as-code__* namespace in any working setup — the npm n8nac mcp entry-point is broken upstream and Etienne's plugin ships skill knowledge, not an MCP server. Use the table below.
| 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).
$ARGUMENTS = natural-language description of the workflow. Extract:
If $ARGUMENTS is empty, ask the user before proceeding.
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):
n8n-code-javascript covers $input / $json / $node / $helpers.httpRequest() / DateTime (Luxon) / top mistakesn8n-code-python covers _input / _json / standard library onlyStep 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.
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.ts file from scratch in Decorator-TS format.
Write workflows/<name>.workflow.ts using Decorator-TS format. The companion n8n-architect skill documents the full authoring rules — these conventions are repo-specific additions on top:
[Trigger] Action - Target (e.g. [Webhook] Create Lead - Close CRM)Validate Input, Fetch Users, Send Alert)<workflow-name>.workflow.ts in workflows/ (e.g. workflows/create-lead.workflow.ts)@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: true without notes has no effect.Respond to Webhook node — 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.
Validate locally — single source of truth:
npx n8nac skills validate workflows/<name>.workflow.ts --strict --json
Fix any errors → re-validate. Do not push with errors.
Push + verify in one call:
npx n8nac push workflows/<name>.workflow.ts --verify
--verify fetches 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.
After every successful push, ALWAYS run Phase 2. A workflow is only complete once an execution has been inspected (success or Class-A error reported to the user).
npx n8nac test-plan <workflowId> --json
Extract triggerType, testable, suggestedPayload. Reuse this result in Path A/B — do NOT call test-plan again.
Check the local .workflow.ts for @n8n/n8n-nodes-langchain.mcpTrigger:
grep -l "mcpTrigger\|n8n-nodes-langchain.mcpTrigger" workflows/<name>.workflow.ts
Set HAS_MCP_TRIGGER = true/false.
Routing:
HAS_MCP_TRIGGER=true → Path D (manual publish notice) added on top of A or BtriggerType ∈ {webhook, chat, form} → Path AtriggerType ∈ {schedule, manual, errorTrigger} → Path Bn8nac test calls the test URL (/webhook-test/) — no activation needed.
Check credential presence:
npx n8nac workflow credential-required <workflowId>
Live test (use suggestedPayload from Step 0):
# POST/body webhooks (default):
npx n8nac test <workflowId> --data '<suggestedPayload>'
# GET/HEAD webhooks (workflow reads $json.query):
npx n8nac test <workflowId> --query '<suggestedPayload>'
If the user provided specific test data in $ARGUMENTS, use that instead.
On Class A error (exit 0): inform user about missing credentials/model — do not block.
On Class B error (exit 1): fix workflow → re-validate → re-push (--verify) → re-test (max 3 cycles).
Inspect execution results:
npx n8nac execution get <executionId> --include-data
For large outputs, slice with jq:
npx n8nac execution get <executionId> --include-data | jq '.data.resultData.runData["<nodeName>"]'
Use the node-level output data in the Completion Report.
n8nac cannot trigger these — manual test required. Stop the auto-pipeline here and prompt the user:
Check credential presence (same as Path A step 1).
Resolve the user-facing URL via the CLI (do not string-concat):
npx n8nac workflow present <workflowId> --json
Display to user (prominent), using the URL from step 2:
⚠️ MANUAL TEST REQUIRED — non-HTTP trigger
Open n8n UI: <url from workflow present>
Click: "Execute Workflow" button (top right)
Then report back: execution-id (visible in the executions panel)
Once the user reports an execution-id, inspect results:
npx n8nac execution get <executionId> --include-data
Check status, node outputs, error messages.
On error: fix workflow → re-validate → re-push (--verify) → ask user to re-execute in UI (max 3 cycles).
After successful test, if the user wants the workflow active (cron starts running, webhook becomes available on the production URL):
npx n8nac workflow activate <workflowId>
Note: activate is NOT the same as publish for the new Two-Phase model — see Path D for mcpTrigger workflows.
HAS_MCP_TRIGGER=true)n8nac cannot publish drafts. After a successful push of an mcpTrigger workflow:
npx n8nac workflow present <workflowId> --json⚠️ MANUAL PUBLISH REQUIRED — mcpTrigger detected
The MCP endpoint will return 404 until the workflow is published.
Open n8n UI: <url from workflow present>
Click: "Publish" button
Confirm in the Completion Report once done.
Reminder:
npx n8nac pushwrites a new draft. The previously-published version stays live, but its MCP endpoint may diverge from the new draft. Each push to anmcpTriggerworkflow requires a fresh UI publish.
Gate: Execution status is success or Class A error reported to user. Maximum 3 fix cycles.
## Workflow deployed and verified
**Name:** [Workflow Name]
**ID:** [n8n workflow ID]
**URL:** [from `npx n8nac workflow present <id> --json`]
**Location:** workflows/<name>.workflow.ts
**trigger_type:** [webhook | schedule | manual | mcpTrigger | ...]
**test_path_used:** [Path A (auto) / Path B (manual UI) / Path D-extended]
**Live test result:**
- execution_id: [ID]
- execution_status: [success / error-class-A / error-class-B]
- Nodes executed: [list with status per node]
- output_sample: [key fields from last node, via `n8nac execution get --include-data`]
**MCP Access:** (only when mcpTrigger is present)
- mcp_endpoint: [URL]
- manually_published: yes / no — user confirmation required
**Files created:**
- workflows/<name>.workflow.ts
| Phase | Error | Action |
|---|---|---|
| 0 | npx n8nac skills node-info returns empty for a community node | Run Stage 3 (npm extraction, see /n8n-autopilot:pull-schemas) → rebuild index → read from schemas/nodes/ |
| 0 | Schema-research stuck on parameter ambiguity | Defer to n8n-as-code:n8n-architect skill — it has authoritative rules for resource/operation discriminators |
| 1 | Local validation fails | Fix code → re-validate |
| 1 | Push fails (conflict) | npx n8nac list → npx n8nac resolve <id> → retry |
| 1 | Push fails (archived) | Workflow is archived → read-only. Do not iterate — inform user: unarchive in n8n UI or create a new workflow |
| 1 | Verify fails (remote mismatch) | Re-push → re-verify |
| 2A | Class A error (exit 0) | Report missing credentials to user — do not iterate |
| 2A | Class B error (exit 1) | Fix workflow → re-validate → re-push (--verify) → re-test (max 3 cycles) |
| 2B | Manual UI execution fails | npx n8nac execution get <id> --include-data for error details → fix → re-push → ask user to re-execute |