Apify Integration Development
apify/agent-skills
Guides designing and building an official Apify integration for a company's product: workflow-automation apps, AI agent plugins, AI framework packages or direct API clients.
A skill your agent uses when operating a live n8n instance programmatically — its REST API ({host}/api/v1, X-N8N-API-KEY) or the n8n-mcp server — to create, validate, test, activate, update, delete…
$ npx skills add ericrisco/rsc-harness --skill n8n -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness n8n --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/n8n .claude/skills/n8n && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "n8n" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/n8n into .claude/skills/n8n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/n8nType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ericrisco/rsc-harness --skill n8n -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness n8n --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/n8n .agents/skills/n8n && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "n8n" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/n8n into .agents/skills/n8n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill n8n -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness n8n --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/n8n .cursor/skills/n8n && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "n8n" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/n8n into .cursor/skills/n8n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/n8n--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill n8n -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness n8n --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/n8n .gemini/skills/n8n && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "n8n" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/n8n into .gemini/skills/n8n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ericrisco/rsc-harness n8nInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ericrisco/rsc-harness --skill n8n -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/n8n .github/skills/n8n && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "n8n" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/n8n into .github/skills/n8n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill n8n -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness n8n --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/n8n .opencode/skills/n8n && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "n8n" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/n8n into .opencode/skills/n8n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "n8n", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
n8nA skill your agent uses when operating a live n8n instance programmatically — its REST API ({host}/api/v1, X-N8N-API-KEY) or the n8n-mcp server — to create, validate, test, activate, update, delete…
N8n is an agent skill from ericrisco/rsc-harness. Use when operating a live n8n instance programmatically — its REST API ({host}/api/v1, X-N8N-API-KEY) or the n8n-mcp server — to create, validate, test, activate, update, delete workflows and read executions on self-host or n8n.cloud. NOT designing the flow or its importable JSON (that is automation-flows), NOT another platform (make, zapier).
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/auth-and-selfhost.md`).
It sits in Productivity & Automation, covering Workflow automation and REST APIs. It works with n8n, Model Context Protocol and Zapier. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e3d5b33. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
N8N_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
N8n loads about 2.6k tokens when it runs, and up to ~5.5k if it reads all its reference files. Until then it costs about 90 tokens; SKILL.md has 959 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
### `.env`Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ericrisco/rsc-harness at commit e3d5b33, republished under its MIT licence (© ericrisco). 959 words, ~2,557 tokens.
.claude/skills/n8n/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.You already have a workflow design — the trigger→steps→error shape and the importable JSON, which is
automation-flows' job and this skill does not re-teach it. This skill is the operate half: push
that JSON into a running n8n, validate it, test it, flip it live, watch its executions, and tear it
down safely — all without touching the UI. n8n has the richest programmatic story of the no-code
platforms: a first-party REST API plus a mature MCP server, both hitting the same instance.
Two ways to drive the same instance. Pick by who is at the wheel.
| Public REST API | n8n-mcp (czlonkowski, de-facto standard) | |
|---|---|---|
| What it is | n8n's own HTTP API at {host}/api/v1 | MCP server wrapping that API + offline node/expression knowledge |
| Best for | scripts, CI/CD, deterministic deploys, no extra dependency | an agent (Claude) building/fixing workflows in the loop — it can look up node schemas, then validate/autofix before it writes |
| Auth | API key in header X-N8N-API-KEY | management tools need N8N_API_URL + N8N_API_KEY; node-knowledge tools need no auth |
| Surface | identical on self-host and *.app.n8n.cloud | same underlying API; hosted trial at dashboard.n8n-mcp.com |
Version reality (verify at author time — n8n moves fast):
{host}/api/v1. Self-host ships interactive Swagger at /api/v1/docs; cloud does not
— on cloud, work from the docs.POST /workflows/{id}/execute (run-by-id) is recent (n8n PR #20234). Older instances lack it —
there, the only programmatic run is POSTing to a Webhook node's URL..env# host root only — you append /api/v1 for REST; n8n-mcp reads it whole
N8N_API_URL=https://your-instance.app.n8n.cloud # or N8N_HOST for self-host, e.g. http://localhost:5678
N8N_API_KEY=n8n_api_... # Settings → n8n API → Create an API keyNever inline the key in a command that gets logged, and never put a node credential (Slack token,
etc.) in the workflow payload — reference it by the n8n credential store id/name (see
automation-flows' JSON schema). Full key-creation + self-host vs cloud + MCP install:
references/auth-and-selfhost.md.
The create/update body is exactly the automation-flows workflow JSON. Required top-level keys on
create: name, nodes, connections, settings. Build it per
../automation-flows/references/n8n-workflow-json.md — non-empty nodes with one trigger, a wired
connections map, settings.errorWorkflow, credentials referenced by store (never inlined).
Node/expression essentials (pointer, not a tutorial): node type is namespaced
(n8n-nodes-base.webhook), typeVersion must match a node version installed on the target instance
or activation/execution fails; field values use expressions like ={{ $json.email }} or
={{ $node["Webhook"].json.body.id }}. If you are hand-authoring nodes, let n8n-mcp's node-knowledge
tools (search_nodes, get_node_essentials, validate_node_operation) fill in the exact property
shapes rather than guessing — that is the single biggest reason to drive via MCP.
create → validate → test → activate → manage → delete. A concrete sketch per step, curl and
n8n-mcp side by side; every endpoint with pagination and scopes is in
references/rest-api-cheatsheet.md.
REST has no validation endpoint — n8n only tells you at create/activate time. MCP does, so validate first when it is available:
n8n_validate_workflow { "workflow": { …the full JSON… } }
n8n_autofix_workflow { "workflow": { … } } # repairs common structural errors, returns fixed JSONcurl -sS -X POST "$N8N_API_URL/api/v1/workflows" \
-H "X-N8N-API-KEY: $N8N_API_KEY" -H "Content-Type: application/json" \
-d @workflow.json # body = { name, nodes, connections, settings }
# → returns the created workflow WITH its "id" — capture it for every step belown8n_create_workflow { "name": "...", "nodes": [ … ], "connections": { … }, "settings": { … } }POST /workflows/{id}/execute./webhook-test/<path> while "Listen for test event" is armed; production
/webhook/<path> once active).curl -sS -X POST "$N8N_API_URL/api/v1/workflows/$ID/execute" -H "X-N8N-API-KEY: $N8N_API_KEY"
curl -sS -X POST "$N8N_API_URL/webhook-test/my-path" -H "Content-Type: application/json" -d '{"foo":"bar"}'n8n_test_workflow { "id": "$ID" }active (and tags) in the create/update body are read-only and silently ignored. Setting
"active": true does nothing, which is why the workflow you just created never fires. You MUST call
the separate endpoint:
curl -sS -X POST "$N8N_API_URL/api/v1/workflows/$ID/activate" -H "X-N8N-API-KEY: $N8N_API_KEY"
curl -sS -X POST "$N8N_API_URL/api/v1/workflows/$ID/deactivate" -H "X-N8N-API-KEY: $N8N_API_KEY"n8n-mcp deliberately does not expose activate/deactivate as tools (activation has live side effects).
Check the current tool list; if absent, call the REST /activate endpoint as above.
curl -sS "$N8N_API_URL/api/v1/workflows?limit=50" -H "X-N8N-API-KEY: $N8N_API_KEY" # list (paginate via nextCursor)
curl -sS "$N8N_API_URL/api/v1/workflows/$ID" -H "X-N8N-API-KEY: $N8N_API_KEY" # get
curl -sS -X PUT "$N8N_API_URL/api/v1/workflows/$ID" -H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" -d @workflow.json # FULL replace
curl -sS "$N8N_API_URL/api/v1/executions?workflowId=$ID&limit=20" -H "X-N8N-API-KEY: $N8N_API_KEY"n8n_list_workflows {} n8n_get_workflow { "id": "$ID" } n8n_executions { "workflowId": "$ID" }
n8n_update_full_workflow { "id": "$ID", "nodes": [ … ], "connections": { … } } # replace everything
n8n_update_partial_workflow { "id": "$ID", "operations": [ … ] } # atomic diff — preferred
n8n_health_check {} # confirm API reachable + which features the instance supportsPUT is a full replace — GET, mutate the whole object, PUT it back, or you drop the nodes you
omitted. n8n-mcp's n8n_update_partial_workflow applies a targeted, atomic batch instead (safer).
DELETE is a hard delete: no trash, no undo, so export the current JSON first, every time — this
one is absolute because nothing downstream can recover the workflow if you skip it.
curl -sS "$N8N_API_URL/api/v1/workflows/$ID" -H "X-N8N-API-KEY: $N8N_API_KEY" > backup-$ID.json # export FIRST
curl -sS -X DELETE "$N8N_API_URL/api/v1/workflows/$ID" -H "X-N8N-API-KEY: $N8N_API_KEY"n8n_get_workflow { "id": "$ID" } → save output → n8n_delete_workflow { "id": "$ID" }The same applies to a full replace: export before PUT.
If you expose n8n-mcp to an agent, lock down destructive tools with the DISABLED_TOOLS env var
(comma-separated), e.g. DISABLED_TOOLS=n8n_delete_workflow,n8n_update_full_workflow. Scope the API
key itself too — n8n supports scoped keys (e.g. grant workflow:read without workflow:execute).
Details in references/n8n-mcp-tools.md.
| Anti-pattern | Why it bites | Do instead |
|---|---|---|
"active": true (or tags) in the create/update body | Read-only fields, silently ignored — the #1 "why is my workflow inactive" bug | POST /workflows/{id}/activate; set tags via their own endpoint |
Passing runtime input to /workflows/{id}/execute | It accepts no custom input, and older instances 404 the endpoint entirely | Trigger a Webhook workflow by POSTing to its URL |
PUT with a partial body, or DELETE on a live workflow | Full replace drops every node you omitted; delete is a hard delete with no trash | GET and export first; prefer n8n_update_partial_workflow for edits |
A typeVersion the target instance doesn't have | Create succeeds; it fails only at activate/execute time | Validate via MCP, or test, before activating |
| Inlining node credential secrets, or expecting to read them back | Credentials are not fully manageable over the public API — it can create some, but never returns a secret | Provision in the UI or via n8n_manage_credentials, then reference existing credentials by id/name |
| Treating a successful API activation as proof it works | The public API historically skips a few UI-side activation validations, so a workflow can be "active" yet non-functional | Run it live after activating and check the execution |
| If the ask is | Skill |
|---|---|
| Designing the flow (trigger/steps/error path, dedup) and producing the importable JSON | automation-flows — start there if the logic isn't settled |
| Whether n8n is the right platform at all — cost model, self-host vs cloud | automation-strategy |
| Operating a different platform | make, zapier, power-automate (neither Zapier nor Power Automate can create flows via API — n8n's edge) |
| A generic typed HTTP client with auth/pagination/backoff — real code, not a workflow | api-connector-builder |
| The inbound webhook receiver in your own app (here webhooks are only n8n triggers) | webhooks |
© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in skills/n8n of ericrisco/rsc-harness.
Open the folder on GitHubat commit e3d5b33
N8n next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| N8n this skillericrisco/rsc-harness | 167 | — | ~2.6k | Automated safety check: Notes | MIT | |
| Apify Integration Developmentapify/agent-skills | 2.4k | — | ~3.1k | Automated safety check: Pass | None | |
| N8n Docs Assistantn8n-io/n8n | 207k | — | ~550 | Automated safety check: Pass | Custom licence | |
| Planningn8n-io/n8n | 207k | — | ~2.5k | Automated safety check: Pass | Custom licence | |
| Suggest Automationsn8n-io/n8n | 207k | — | ~2k | Automated safety check: Pass | Custom licence | |
| Zapier Demozapier/zapier-mcp | 428 | — | ~2.7k | Automated safety check: Pass | MIT |
apify/agent-skills
Guides designing and building an official Apify integration for a company's product: workflow-automation apps, AI agent plugins, AI framework packages or direct API clients.
n8n-io/n8n
Answers n8n product, setup, credential, node, hosting, API, and usage questions from current n8n docs.
n8n-io/n8n
ONLY for coordinated multi-artifact work: multiple workflows with dependencies, shared data-table schema/migration across tasks, or the user explicitly asked to review a plan first.
n8n-io/n8n
Offer the three most common automations for a user as a single-choice card, from your own knowledge of their team and their apps, then build the one they choose once they confirm, or offer more.
zapier/zapier-mcp
Walk a new user through setting up their first Zapier action and running it live — the smallest possible win.
zapier/zapier-mcp
Check the health of your Zapier MCP setup. An agent skill from zapier/zapier-mcp.
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Works with
Categories
A skill your agent uses when operating a live n8n instance programmatically — its REST API ({host}/api/v1, X-N8N-API-KEY) or the n8n-mcp server — to create, validate, test, activate, update, delete…. N8n is an agent skill from ericrisco/rsc-harness.cloud.
N8n fits situations like: operating a live n8n instance programmatically — its REST API ({host}/api/v1; the n8n-mcp server — to create; delete workflows and read executions on self-host.
Run `npx skills add ericrisco/rsc-harness --skill n8n -a claude-code`. Or copy the skill folder (skills/n8n in ericrisco/rsc-harness) into .claude/skills/n8n in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill n8n -a codex`. Or copy the skill folder (skills/n8n in ericrisco/rsc-harness) into .agents/skills/n8n in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill n8n -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/n8n, .gemini/skills/n8n, .github/skills/n8n and .opencode/skills/n8n in your project.
Going by SKILL.md and its folder, N8n needs the command-line tools its instructions call (curl) and credentials named N8N_API_KEY. Our summary lists: A credential in N8N_API_KEY.
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
N8n is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with N8n: Apify Integration Development (apify/agent-skills, 2.4k stars), N8n Docs Assistant (n8n-io/n8n, 207k stars), Planning (n8n-io/n8n, 207k stars) and Suggest Automations (n8n-io/n8n, 207k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 167 GitHub stars. The repository holds 227 skills in this directory. The repository was last updated on October 7, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.