This is the entry point. When the user asks anything n8n-related, route to the matching sub-skill.
${PWD}/n8n-evol-I-workspace/ (created by init.md).helpers/. Invoke them with python3 ${CLAUDE_PLUGIN_ROOT}/helpers/<name>.py [args] (plugin mode) or python3 <path-to-harness>/helpers/<name>.py [args] (skill mode).--workspace ${PWD}/n8n-evol-I-workspace. Pass --workspace <path> if the user runs from elsewhere.N8N-WORKSPACE-MEMORY.md in the workspace at the start of every session; append a dated entry whenever you learn something durable about this project. Full guidance in AGENTS.md (also in the workspace root).SkillWheninit.mdFirst-time setup. Creates the workspace at ${PWD}/n8n-evol-I-workspace/.bootstrap-env.mdConfigure an environment ( dev / staging / prod). Creates env YAML + .env, validates, mints placeholder workflow IDs.doctor.mdHealth check. Run before/after major changes.create-new-workflow.mdAuthor a brand-new workflow.register-workflow-to-error-handler.mdWire settings.errorWorkflow.create-lock.mdFirst-time setup for distributed locking (Redis-backed primitives).copy-primitive.mdCopy a single primitive (any) into the workspace. General-purpose; doesn't register.add-lock-to-workflow.mdWrap a workflow's main flow in lock acquire/release.add-rate-limit-to-workflow.mdGate a workflow's main flow with a Redis-backed fixed-window rate-limit check.create-queue.mdFirst-time setup for queue primitive (Redis Streams + atomic-INCR semaphore).add-queue-publish-to-workflow.mdWrap a workflow with a producer-side XADD call.add-queue-consumer-to-workflow.mdTurn a workflow into a schedule-polled queue consumer with bounded concurrency.tidy-workflow.mdApply n8n's canvas-layout algorithm to a workflow template to clean up node positions.deploy.mdDeploy one workflow to one env.activate-single-workflow-in-env.mdActivate after deploy.deactivate-single-workflow-in-env.mdPause triggers (commonly during dev).archive-workflow.mdRetire a deployed workflow (hidden + read-only on the live instance).unarchive-workflow.mdRestore a previously-archived workflow so it accepts updates again.deploy_all.mdRoll out an entire env in tier order.resync.mdPull live state of one workflow back into its template.resync_all.mdSnapshot a full env back to templates.dehydrate-workflow.mdConvert raw exported JSON into a template.validate.mdStructural REST validation before deploy.run.mdFire a webhook + assert terminal status.debug.mdInvestigate a failing or missing execution — from vague symptom to root-cause with evidence.deploy-run-assert.mdOne-shot validate → deploy → run verify.find-skills.mdWhile authoring, find applicable patterns/integrations.manage-credentials.mdCreate or link n8n credentials (Path A from .env.<env> / Path B from existing UI credential).manage-variables.mdLifecycle for n8n Variables ( $vars.* — non-credential runtime values, or secret fallback when $env is blocked).add-cloud-function.mdScaffold a Python serverless function / cloud function / serverless API under <workspace>/cloud-functions/.iterate-prompt.mdOptimize a prompt against a paired schema + dataset using DSPy.test.mdRun unit tests over n8n Code-node JS and / or cloud-function Python.
These are reference docs, not action triggers. Read them while authoring.
Templates use {{@type:path}} (preferred form) or the canonical long form {{INTERPOLATE_type:path}}. The two are equivalent — @ is an alias for INTERPOLATE_. Examples below use the @ form.
TypeSyntaxSourceenv``{{@env:key.path}}YAML config value (dot notation)txt``{{@txt:relative/path.txt}}Text file in workspacejson``{{@json:relative/path.json}}JSON file (stringified)html``{{@html:relative/path.html}}HTML filejs``{{@js:relative/path.js}}JavaScript filepy``{{@py:relative/path.py}}Python file (Code-node language: python)uuid``{{@uuid:identifier}}Fresh UUID v4 (consistent within one hydration)