mcpbeat Sign in

N8n:nathan Agent Skill

Deploy a temporary n8n test instance (or generate a local docker run command) via the internal "Nathan" bot, from the repo instead of Slack. Use after opening a PR to offer the user a live test instance, or whenever someone asks to spin up / deploy a test instance for a branch.

1k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
199283
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/n8n-io/n8n --skill n8n:nathan

What it tells the agent to use

found in the instruction text
Bash runs shell commands — read the instruction before connecting

The instruction itself

11 sections, as written by the author

Nathan — repo-local test instances

Nathan is n8n's internal bot that deploys throwaway test instances from a branch

or Docker image. It's normally driven from Slack (/nathan ...); this skill runs

the same commands from the repo via pnpm nathan.

Prerequisites

  • No tunnel setup needed. Nathan replies asynchronously through a short-lived

public tunnel that the script opens for you (npx localtunnel). A deploy to a

new test-<name> also polls that instance URL directly, so it still reports

success even if the tunnel drops. (Redeploying a name that's *already up* skips

the poll — it can't tell the old instance from the new — so it falls back to the

tunnel; prefer a fresh name when you need the reliable report.)

  • A token in ~/.n8n/dev/nathan-token. If a command reports no token, **ask the

user for one** — point them at the form

(https://internal.users.n8n.cloud/form/d6d34a2f-4899-4ee8-afc8-f8c41a8a243d),

where they log in with their n8n account and copy the token from the response —

then save it for them (the script's interactive paste prompt needs a real

terminal, so as an agent use the subcommand):

  pnpm nathan set-token '<PASTED_TOKEN>'

Offer a test instance

Only when it's worth it

Use judgement — don't offer for every branch. Offer when the change is

something a person would actually want to click through in a running instance:

  • New features / feature branches
  • UI / editor changes, node changes, workflow-execution or behaviour changes
  • Larger or user-facing diffs

Skip the offer (a test instance adds nothing) for:

  • Dev tooling, CI, build config, scripts (like this one)
  • Docs-only or tests-only changes
  • Tiny bug fixes, no-behaviour-change refactors, dependency bumps

When skipping, don't nag — at most mention once that a test instance is available

on request.

Offer after opening a PR, and re-offer on push

After you open a PR for a branch that warrants it, offer a live test instance.

Also re-offer whenever you git push new commits to such a branch — the

deployed instance reflects the pushed code, so a new push means a new build worth

redeploying. Don't just ask a bare yes/no — look at the diff and **propose a

sensible profile**, then let them confirm or adjust. For example:

> "Want a test instance for this? Based on the diff I'd deploy it with instance AI

> enabled (--ai) since it touches the AI assistant. Sound good, or a different

> license?"

Pick the profile from the PR contents

Inspect what the PR changes (git diff --stat origin/master...HEAD and the file

paths / feature area), then choose:

| PR touches… | Suggest | Why |

|---|---|---|

| AI features — @n8n/nodes-langchain, @n8n/instance-ai, the AI assistant/builder, N8N_AI_*, "askAi"/agent code | --ai | Enables instance AI (and defaults the license to pro2) so the AI features actually run |

| License-gated / enterprise features — .ee.ts files or /ee/ dirs, license checks (@n8n_io/license-sdk, hasFeature), SSO/SAML/OIDC/LDAP, RBAC/roles/scopes, projects, variables, external secrets, source control/environments, log streaming, insights, folders | --enterprise | The feature is gated behind a license and won't be testable on community |

| A specific gated feature/quota you want on/off | --license pro2 --featureOverride <featureKey>:<value> | Bakes the override into a generated license (community/enterprise can't be overridden) |

| Anything else — core nodes, generic UI, non-gated bug fixes | *(nothing — community default)* | No license needed |

If both AI and enterprise apply, combine them: --ai --enterprise. When unsure,

state your best guess and ask. Run pnpm nathan help for the full flag reference.

Deploy

pnpm nathan deploy <branch-name> test-<short-name> [flags]

Nathan builds the branch image (a few minutes) and the command prints the instance

URL (https://test-<short-name>.stage-app.n8n.cloud, login [email protected] /

helloWorld7). Relay that URL to the user.

Common commands

pnpm nathan help                                   # full option reference
pnpm nathan deploy my-branch test-my-feature       # community license
pnpm nathan deploy my-branch test-sso --enterprise # enterprise license
pnpm nathan deploy my-branch test-ai --ai          # instance AI (license -> pro2)
pnpm nathan deploy nightly test-nightly            # deploy the n8nio/n8n:nightly image

Key flags (after the deploy args): --license community|enterprise|starter|pro1|pro2|trial,

--enterprise, --ai, -e KEY=value (repeatable), --featureOverride key:value

(needs a generated license).

local caveat

pnpm nathan local ... generates a runnable docker run bundle, but Nathan

delivers it as Slack file attachments (run-n8n.sh + .env), not to the

terminal — they land in #updates-pnpm-nathan

(https://n8nio.slack.com/archives/C0BGVHZ0SCW). deploy and help return fully

in the terminal.

Do not invent a NATHAN_SLACK_CHANNEL. Leave it unset (it defaults to

updates-pnpm-nathan); only set it if the user explicitly gives you a channel id.

Unsupported

Queue mode, multi-main, and non-SQLite databases are not supported by Nathan.

Other skills for the same job

different authors, same section of the catalogue
Azure Messaging
by microsoft
vendor ×1

Troubleshoot and resolve issues with Azure Messaging SDKs for Event Hubs and Service Bus. Covers connection failures, authentication errors, message processing issues, and SDK configuration problems. WHEN: event hub SDK error, service bus SDK issue, messaging connection failure, AMQP error, event processor host issue, message lock lost, message lock expired, lock renewal, lock renewal batch, send timeout, receiver disconnected, SDK troubleshooting, azure messaging SDK, event hub consumer, service bus queue issue, topic subscription error, enable logging event hub, service bus logging, eventhub python, servicebus java, eventhub javascript, servicebus dotnet, event hub checkpoint, event hub not receiving messages, service bus dead letter, batch processing lock, session lock expired, idle timeout, connection inactive, link detach, slow reconnect, session error, duplicate events, offset reset, receive batch.

820 tokens
Slack To Teams
by microsoft
vendor ×1

Sub-skill of microsoft-365-agents-toolkit. Routed expert system with 100+ micro-expert files for migrating Slack bots to Teams, cross-platform bridging, and dual-platform bot development. USE FOR: migrating Slack bot to Teams, adding Teams support to Slack bot, building dual-platform bots, converting Block Kit to Adaptive Cards, identity/OAuth bridging, deploying bots to Azure or AWS, configuring AI model providers. DO NOT USE FOR: general web development, non-bot projects, standalone Teams development without Slack (use parent skill instead).

2k tokens
Azure Messaging
by microsoft
vendor ×1

Troubleshoot and resolve issues with Azure Messaging SDKs for Event Hubs and Service Bus. Covers connection failures, authentication errors, message processing issues, and SDK configuration problems. WHEN: event hub SDK error, service bus SDK issue, messaging connection failure, AMQP error, event processor host issue, message lock lost, message lock expired, lock renewal, lock renewal batch, send timeout, receiver disconnected, SDK troubleshooting, azure messaging SDK, event hub consumer, service bus queue issue, topic subscription error, enable logging event hub, service bus logging, eventhub python, servicebus java, eventhub javascript, servicebus dotnet, event hub checkpoint, event hub not receiving messages, service bus dead letter, batch processing lock, session lock expired, idle timeout, connection inactive, link detach, slow reconnect, session error, duplicate events, offset reset, receive batch.

837 tokens
Azure Communication Chat Java
by lingxling
×1

Build real-time chat applications with thread management, messaging, participants, and read receipts.

2k tokens
Azure Messaging Webpubsub Java
by lingxling
×1

Build real-time web applications with Azure Web PubSub SDK for Java. Use when implementing WebSocket-based messaging, live updates, chat applications, or server-to-client push notifications.

2k tokens
Azure Messaging Webpubsubservice Py
by lingxling
×1

Azure Web PubSub Service SDK for Python. Use for real-time messaging, WebSocket connections, and pub/sub patterns.

2k tokens
Azure Mgmt Botservice Dotnet
by lingxling
×1

Azure Resource Manager SDK for Bot Service in .NET. Management plane operations for creating and managing Azure Bot resources, channels (Teams, DirectLine, Slack), and connection settings.

2k tokens
Azure Servicebus Ts
by lingxling
×1

Enterprise messaging with queues, topics, and subscriptions.

2k tokens

How to use it

Copy the folder

Take n8n-io/n8n:nathan from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference npx, docker. Without those the skill loads but fails at the first command.