n8n-io/n8n-docs-author
>- Authors and reviews n8n documentation pages following the n8n docs style and contribution guides. Use when writing new doc pages, editing existing docs, reviewing doc PRs, or checking content against the style guide. Covers writing style, GitBook formatting syntax (hints, collapsibles, tabs, code blocks), internal and external links, and linting guidance. Use when asked to write or edit docs, or to review content against the style guide.
npx skills add https://github.com/n8n-io/n8n-docs --skill n8n-docs-author
You write and review documentation for the n8n-docs repo.
The definitive guides live in the repo and are the source of truth. This skill
distills them so you can act quickly, but defer to the guides when in doubt:
docs/contribute/style-guide-for-n8n-docs.md — writing style, frontmatter, and GitBook formatting.docs/contribute/contribution-guide-for-n8n-docs.md — content types, templates, PR process, and what not to submit.docs/contribute/terminology.md — official product terms to use, and the non-official ones to avoid.The n8n Docs site is built with GitBook. Pages are
written in Markdown plus GitBook-specific blocks (hints, tabs, collapsibles,
code blocks). Use GitBook syntax, not MkDocs/Material syntax.
Determine what the user needs and work accordingly:
to match structure and tone. Use the correct template from
document-templates/ for the page type (see Content types below). Add any
new page to its space's SUMMARY.md so it appears in the navigation (see
reference.md for the format).
violations without changing meaning. Preserve GitBook block syntax, link
format, code block indentation, and existing heading anchor tags exactly.
| Location | Current text | Issue | Suggested fix |
|----------|-------------|-------|---------------|
Group by: terminology / structure first, then style, then grammar.
Each type has a template in the document-templates/ folder. Match the page
type to its template:
the node type — app-nodes.md, core-nodes.md, trigger-nodes.md, or cluster-nodes.md.
credentials.md).common-issues.md).feature.md).tutorial.md).Don't edit fully-generated pages (those with generated: true in their
frontmatter) or course content (frozen). See the contribution guide's
"What not to submit" section.
<a href ...></a> anchor markup to new headings, and don't strip the migration anchors on existing ones.(always numerals): decimals, percentages, versions and technical strings, units.
code formatted.<hyphenated-words> inside code spans.(use "for example" not "e.g.", "that is" not "i.e.").
Write simply. AI drafts tend to inflate vocabulary, add filler, and reach for
marketing words. Prefer the plainer version:
| Avoid | Use instead |
|-------|-------------|
| utilize, leverage | use |
| in order to | to |
| functionality, capabilities | features, what it does |
| It's important to note that X | X |
| powerful, robust, seamless, effortless | cut it; state what the feature does |
| allows you to, enables you to | lets you, or rephrase around the action |
"There is a node available that can be used to schedule workflows."
Use one term per concept, and prefer the official product term over a synonym.
Full do/don't list: docs/contribute/terminology.md. Highest-value rules:
n8n lowercase always; node and UI names in bold with exact casing.sub-workflow (not subworkflow), self-hosted, community node (not custom node).
One focused page per concept, task, or reference category. Aim for a band, not
the shortest possible page. Pages are the unit humans scan and AI tools (search,
docs assistant) chunk on ##/### headings.
well; fold stubs into a parent or sibling.
(concept + how-to + reference), or when one section grows without bound
(per-client examples).
vars for a category, all parameters for a node).
surrounding context arrives stripped of it and the agent guesses. Give each
section a descriptive, full-topic heading and make it stand alone: restate the
key context instead of "as mentioned above" / "see below". Restate, don't
duplicate — repeat a fact or two, not whole paragraphs (sections that need the
same long explanation belong under one heading).
link parents and children both ways (an overview lists all its child pages;
each child links back with ./), and aim for each page to sit in a cluster of
5+ interlinked pages on the same topic (AI search cites connected clusters far
more than standalone pages). Put
links in the body at the first meaningful mention, with descriptive anchor text
naming the target (Configure the Schedule Trigger, never "click here").
Links point to separate topics; they don't replace context a section needs, so
restate that instead.
Reference n8n versions and status (available, preview, deprecated) consistently.
See reference.md for full examples and the marker formats.
like 2.30.0) and node version (a node's version, usually two parts like
4.7). Qualify a bare number in prose ("n8n 2.30.0", "node version 4.7"),
never just "version 2".
n8n 2.30.0. No v prefix, and don'twrite "version" after "n8n".
page title. A section → a hint under its heading. Mentioned in passing → fold
it into the sentence ("The Data table node (available from n8n 2.17.0) stores
data between executions"). A table row → description cell, or an **Available
from** column when many rows differ.
info hint containing Available from n8n 2.17.0.State the fallback for older versions when there is one.
info hint saying the feature may change and isn't forproduction. Use "preview" for a feature's status; reserve "beta" for release
channels, version tracks, and access programs (a beta release, a closed beta).
warning hint with Deprecated from n8n 2.0, then namethe replacement and the removal version if known ("n8n removes it in 3.0").
Always name a version, never a vague timeframe.
go in their own info hint, separate from the version marker.
versioned nodes page rather than restating per node. That page is automatically
updated from the codebase, so don't edit it by hand.
Every page opens with valid YAML frontmatter. Fields n8n Docs uses:
description: short summary of the page. May appear in search results and link previews.layout.description.visible: always include and set to false (hides the description on the rendered page).hidden: set to true to remove the page from the side menu. Omit for normal pages (most pages appear in the menu).generated: true marks the page as fully automation-managed. Don't edit these by hand.Minimal frontmatter for a new page:
---
description: Learn how to merge data streams in your n8n workflows.
layout:
description:
visible: false
---
Don't add migration-support fields (contentType, nodeTitle, originalFilePath, originalUrl, url) to new pages, even though existing pages may carry them.
See reference.md for full examples. Quick reference:
| Element | Syntax |
|---------|--------|
| External link | standard Markdown text (opens in a new tab automatically) |
| Internal link (same space) | relative path including .md: text; text for the parent README.md |
| Internal link (different space) | GitBook page URL, no .md: text. Each top-level docs/ folder is a separate space, so relative paths don't cross spaces. See reference.md for the space ID table |
| Image | !Alt text — stored in the space's .gitbook/assets/ folder |
| Video | {% embed url="..." %} — host externally; can't go inside a hint |
| Hint / callout | {% hint style="info" %} … {% endhint %} |
| Collapsible block | <details> … <summary>Title</summary> … </details> |
| Tabbed content | {% tabs %}{% tab title="Name" %} … {% endtab %}{% endtabs %} |
| Code block (with options) | {% code title="File.ts" %} … {% endcode %}` |
| Embedded workflow | {% @n8n-blocks/n8n-workflow-demo content="" url="..." %} |
Tabs: short parallel snippets only (block under ~3,000 chars). AI tools serialize every variant. For long or 4+ variants, use a
heading per variant instead of tabs; split to a page per variant only if the page
would exceed the length guidance. Keep shared content outside the tabs.
Images: supplementary only. Agents and screen readers get the alt text and
file path, not the picture, so every instruction, value, and menu path must be in
the prose. Don't screenshot text (code, commands, errors, config); use a code
block or table. Screenshots confirm or orient; they never carry a step on their
own. See reference.md.
Worked examples: for any code, expression, or config surface, include an
example — readers and agents rely on examples more than prose. Cover the common
case, then edge cases and failures (the error and the fix). Favour diverse
examples over near-identical ones, comment each example's intent inline, label
placeholders as <hyphenated-words>, and put parameters, defaults, and limits in
a table or schema block, not a paragraph. If you show a wrong example, pair it
with the correct one beside it.
Use sparingly — overuse dilutes impact.
| Type | When to use |
|------|-------------|
| info | General notes, information to highlight, and feature restrictions (platform or pricing tier) |
| warning | Risks or unexpected behaviours |
| danger | High security risk or permanent data loss |
| success | Positive confirmations or tips. Use sparingly |
See reference.md for full syntax examples (hints, collapsibles,
tabs, code blocks, link format) and linting guidance (Vale + Lexi targets).
Take n8n-io/n8n-docs-author from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
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.