All skillsEnforce proper resource/operation pattern for better UX in n8n nodes (
Skillintermediate
Enforce proper resource/operation pattern for better UX in n8n nodes (`@n8n/community-nodes/resource-operation-pattern`)
⚠️ This rule _warns_ in the following configs: ✅ `recommended`, ☑️ `recommendedWithoutN8nCloudSupport`.
Claude Code Knowledge Pack7/10/2026
Overview
Enforce proper resource/operation pattern for better UX in n8n nodes (@n8n/community-nodes/resource-operation-pattern)
⚠️ This rule warns in the following configs: ✅ recommended, ☑️ recommendedWithoutN8nCloudSupport.
Rule Details
Warns when a node has more than 5 operations without organizing them into resources. The resource/operation pattern improves user experience by grouping related operations together, making complex nodes easier to navigate.
When you have many operations, users benefit from having them organized into logical resource groups (e.g., "User", "Project", "File") rather than seeing a long flat list of operations.
Examples
❌ Incorrect
description: INodeTypeDescription = {
displayName: 'My Service',
name: 'myService',
properties: [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
options: [
{ name: 'Get User', value: 'getUser' },
{ name: 'Create User', value: 'createUser' },
{ name: 'Update User', value: 'updateUser' },
{ name: 'Delete User', value: 'deleteUser' },
{ name: 'Get Project', value: 'getProject' },
{ name: 'Create Project', value: 'createProject' },
{ name: 'List Files', value: 'listFiles' },
// 7+ operations without resources - hard to navigate!
],
},
// ... other properties
],
};
}
✅ Correct
description: INodeTypeDescription = {
displayName: 'My Service',
name: 'myService',
properties: [
{
displayName: 'Resource',
name: 'resource',
type: 'options',
options: [
{ name: 'User', value: 'user' },
{ name: 'Project', value: 'project' },
{ name: 'File', value: 'file' },
],
default: 'user',
},
{
displayName: 'Operation',
name: 'operation',
type: 'options',
displayOptions: {
show: {
resource: ['user'],
},
},
options: [
{ name: 'Get', value: 'get' },
{ name: 'Create', value: 'create' },
{ name: 'Update', value: 'update' },
{ name: 'Delete', value: 'delete' },
],
default: 'get',
},
// ... similar operation blocks for 'project' and 'file' resources
],
};
}