n8n Handoff
SkillDev toolsValidate a runx execution context and hand off a governed payload to an n8n workflow through any compatible provider binding, with idempotency and receipt-backed readback.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the n8n Handoff skill
What this skill tells your AI
The instructions your AI receives, as published by runxhq/runx in skills/n8n-handoff/SKILL.md and read by ahel’s review.
Hand off governed runx work to an n8n workflow without turning n8n into the authority holder.
This skill is for the outbound side of the n8n integration story. runx owns the policy decision, credential delivery, execution context, and receipt. n8n owns its workflow webhook, canvas, branching, fan-out, and downstream notifications.
Runners
preflight: validates and normalizes the handoff context without network.send: validates the context, invokes the selected n8n workflow, and reads the invocation back.
Use preflight for reviews, CI, and local harnesses; it never needs approval.
The send runner first calls native control.prepare_handoff, which validates
the execution identity and produces the canonical delivery envelope. It then
uses the provider boundary for workflow.invoke; that boundary owns the exact
approval, credential custody, idempotency, and provider operation. A separate
provider read verifies the same event and invocation reference. The binding may
be local or hosted and may target self-hosted or cloud n8n; the skill never
assumes who holds the credential.
Execution context
execution_context must identify where the handoff came from. Include at least
one of:
callerorcaller_idprincipalorprincipal_idworkflow,workflow_id,workflow_ref, orsource_workflowupstream_execution_idorupstream_run_id
When present, these fields must match the top-level inputs:
platformevent_ididempotency_key(bound toevent_id)handoff_scopehandoff_audience
The receiver gets the normalized delivery object, not an independently
reassembled copy of these fields. That object carries the business payload,
source context, exact handoff scope and audience, and idempotency binding the
receiver must validate before starting its workflow.
Edge cases
- A compatible n8n binding must resolve the selected
webhook_host; absence is an actionable preflight blocker, not permission to fall back to ambient HTTP. - Self-hosted and cloud bindings must both dedupe
event_idbefore branching. - Do not put raw provider credentials into
payloadorexecution_context. Pass credential references or let runx hold the provider secret. - If the workflow slug changes, update
handoff_audienceto the matchingn8n:workflow:<slug>value. - The receiver must dedupe by
event_idbefore branching or sending downstream notifications.
Inputs
event_id(required): stable id for receiver-side dedupe.execution_context(required): explicit caller/workflow context.payload(required): business payload delivered to n8n.handoff_audience(optional): defaults ton8n:workflow:runx-governed-effect.webhook_hostandworkflow_slug(send runner): exact n8n binding target and workflow selector.
event_id is also the Runx mutation idempotency key and the value delivered as
idempotency_key; there is no second retry identity that can drift from it.
Signals
- GitHub stars
- 87
- Forks
- 101
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
n8n-handoff- Source
- github.com/runxhq/runx