Writes and reviews the JSDoc on `@Env(...)` config properties. The docs team extracts these comments from source into the public environment variable reference, so they are user documentation, not code comments. Use when adding or changing an `@Env` property, a config class, or reviewing a PR that touches one.
The JSDoc above every @Env('...') property is exported almost verbatim into
the environment variables reference
on docs.n8n.io. The generated table has four columns: variable name,
description, data type, default. Your JSDoc is the description column. The
reader is a self-hosting operator, not an n8n developer.
Follow the n8n docs style guide
for these comments. It overrides the ASD-STE100 rule in AGENTS.md for this
one case. The rules below are the parts of that guide that matter for a
one-paragraph description.
@Env property has a JSDoc. No exceptions. A missing comment
ships as an empty description cell.googleOAuth2Api or a mode like postgresdb.
The test: would the operator paste this into a config file, or would they
need the source to know what it means? Details for developers go in a
regular // comment on the implementation, not in the JSDoc.Number or String.sqlite,
postgresdb." For a list, show one inline example in the sentence.@example, @default, @see, @deprecated. The
exporter copies the tag name into the docs. Put the example or the
deprecation notice in a sentence instead.n8n is always lowercase.Bad, as found in the generated docs:
/**
* Instance-level enablement for n8n Connect (AI Gateway). Licensed instances
* are enabled by default; false opts out. Budget / free allowance still comes
* from the license (`quota:aiGatewayBudget`).
*/Wrong product name, a restated default, and an internal license key. Good:
/**
* Whether Gateway credits are available on this instance. Set to false to
* turn them off on a licensed instance. The credit allowance comes from your
* license.
*/Bad:
/**
* Time to live in milliseconds for Redis cache entries. Set to 0 to disable
* expiry. Default: 1 hour.
*/The default is already in the table. Good:
/**
* Time to live in milliseconds for Redis cache entries. Set to 0 to keep
* entries until Redis evicts them.
*/Bad:
/**
* Comma-separated list of credential types for which overwrites are skipped
* when the credential has been customized.
* @example `N8N_SKIP_CREDENTIAL_OVERWRITE=zohoOAuth2Api,salesforceOAuth2Api`
*/The @example tag lands in the description as literal text. Good:
/**
* Comma-separated list of credential types to skip when applying credential
* overwrites, for example `zohoOAuth2Api,salesforceOAuth2Api`. n8n skips an
* overwrite only when a user has already changed one of its fields.
*/Bad:
/**
* Bind OAuth credential callbacks to the browser that initiated the flow.
* When enabled, a session-scoped `n8n-oauth-binding` cookie is set on flow
* initiation and verified on callback. Defeats phishing attacks where an
* attacker injects an OAuth authorize URL into a victim's browser to land
* tokens on the attacker's credential.
*/Attack narrative and an internal cookie name on a public page. Good:
/**
* Whether an OAuth credential connection must finish in the same browser
* that started it. When enabled, n8n rejects the callback if it arrives
* from a different browser.
*/When you review a PR that adds or changes an @Env property, check each
comment against this list and quote the fix in the review:
n8n-io/n8n
c44bd78
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.