Community nodes now checked for missing data lineage

A new ESLint rule automatically catches community nodes that forget to include the pairedItem property on their returned data, preventing a common review blocker and keeping workflow data linked properly.
When community node developers forget to include the pairedItem property on data returned from their execute() methods, downstream nodes lose the ability to trace where that data came from. Expressions like $('NodeName').item silently fail, and workflow authors are left debugging mysterious empty results with no clue why.
A new ESLint rule now catches this automatically during development. The rule scans .node.ts files for INodeType classes, flags any object literals with a json property but no pairedItem inside execute() methods, and points developers directly to the fix. It smartly skips cases where pairing is handled automatically via constructExecutionMetaData() or already present through spread elements.
The rule is enabled by default in the recommended community nodes ESLint configuration, eliminating a review bottleneck that appeared across most community node submissions. Developers get immediate, actionable feedback instead of waiting for manual review cycles.
View Original GitHub Description
Summary
Add new ESLint rule @n8n/community-nodes/missing-paired-item that detects INodeExecutionData objects missing pairedItem in execute() methods. This is the most common blocking finding in community node reviews (4 occurrences across 8 reviewed tickets).
The rule:
- Only applies to
.node.tsfiles inINodeTypeclasses - Flags object literals with
jsonbut nopairedIteminsideexecute()methods - Skips objects inside
constructExecutionMetaData()(which adds pairing viaitemData) - Skips objects with spread elements (may already contain
pairedItem) - Uses a known-keys heuristic to avoid false positives on non-
INodeExecutionDataobjects
Related Linear tickets, Github issues, and Community forum posts
https://linear.app/n8n/issue/CE-731
Review / Merge checklist
- PR title and summary are descriptive. (conventions)
- Docs updated or follow-up ticket created.
- Tests included.
- PR Labeled with
Backport to Beta,Backport to Stable, orBackport to v1(if the PR is an urgent fix that needs to be backported)