Skills
Skill 6 of 43
Guides users through creating effective Agent Skills. Use when you want to create, write, or author a new skill, or asks about skill structure, best practices, or SKILL.md format.
3 minutes · 737 words · 12 sections
Install
npx skills add n8n-io/n8n --skill n8n:create-skillnpx skills add n8n-io/n8n/plugin marketplace add n8n-io/n8nThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
Skills are markdown (plus optional scripts) that teach the agent a focused workflow. Keep SKILL.md short—the context window is shared with chat, code, and other skills.
| Location | When to use |
|---|---|
.agents/skills/<name>/ | Default for n8n: team-shared, versioned, agent-neutral source. |
.claude/plugins/n8n/skills/<name>/ | Claude-specific override, or a generated symlink to .agents/skills/<name>/. |
.opencode/skills/<name>/ | OpenCode-specific override only. Shared skills stay in .agents/skills/<name>/. |
~/.claude/skills/<name>/ | Personal skill for Claude Code across all projects. |
~/.config/opencode/skills/<name>/ | Personal skill for OpenCode across all projects. |
~/.cursor/skills/<name>/ | Optional personal skill for Cursor only, global to your machine. |
Do not put custom skills in ~/.cursor/skills-cursor/—that is reserved for Cursor’s built-in skills.
Prefer .agents/skills/ for anything that should match how the rest of the team works. Run pnpm sync:skill-links after adding or removing shared skills.
Ask (or infer) briefly:
.agents/skills/ if one fits.Ask the user in plain language when you need more detail.
skill-name/
├── SKILL.md # required
├── reference.md # optional — detail the agent reads only if needed
├── examples.md # optional
└── scripts/ # optional---
name: n8n:skill-name # n8n:<name> — lowercase, hyphens, max 64 chars
description: >- # max 1024 chars, non-empty — see below
...
---Name — shared n8n skills use the n8n:<name> form so Claude Code namespaces
them under the n8n plugin (invoked as /n8n:<name>). The <name> part must
match the skill’s directory name.
Description (discovery is everything — third person, WHAT + WHEN, trigger words):
Extracts tables from PDFs and fills forms. Use when the user works with PDFs, forms, or document extraction.Helps with documents or I can help you with PDFsSKILL.md; long reference in reference.md. Link one level deep from SKILL.md.scripts/foo.py).Rough size: aim for well under ~200 lines in SKILL.md; if it grows, split detail out.
SKILL.md; avoid pasting full child content into the parent.gh for PRs/issues, pnpm scripts from AGENTS.md.gh, or “ask the user to paste …”) when it is missing.n8n:create-issue where namespacing is available, otherwise create-issue). For human-readable links, give the canonical path from the repo root (e.g. .agents/skills/create-issue/SKILL.md). From a sibling folder, a relative link works too: [create-issue](../create-issue/SKILL.md). Parent skills should delegate steps instead of duplicating long procedures.- [ ] steps for multi-step work.SKILL.md first; add reference.md / scripts/ only if they save tokens or reduce errors.helper, utils).---
name: n8n:my-workflow
description: Does X using project convention Y. Use when the user asks for X or mentions Z.
---
# My workflow
1. …
2. …
## Output format
Use a fenced code block for the exact shape reviewers should see.
## More detail
See [reference.md](reference.md) if edge cases matter.master, last pushed 24 September 2026.SKILL.md, not by matching a directory convention. 5 distinct layouts observed: .agents/skills/*/SKILL.md, .claude/plugins/n8n/skills/*/SKILL.md, .opencode/skills/*/SKILL.md, packages/@n8n/cli/skills/*/SKILL.md, packages/@n8n/instance-ai/skills/*/SKILL.md.h1 and no skipped levels:.claude/plugins/n8n/.claude-plugin/marketplace.json by n8n, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree./n8n-io/n8n.md, and each skill at its own .md URL.