n8n-agents
Design n8n AI agents the right way. Use when building or editing any @n8n/n8n-nodes-langchain.* AI node — an AI Agent, LLM chain, Text Classifier, or…
Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node detail levels, or learning common configuration patterns by node type. Always use this skill when setting up node
$ npx -y skills add czlonkowski/n8n-skills --skill n8n-node-configuration --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/n8n-node-configurationContext preview
The summary Claude sees to decide when to auto-load this skill.
Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node detail levels, or learning common configuration patterns by node type. Always use this skill when setting up node
name: n8n-node-configuration description: Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node detail levels, or learning common configuration patterns by node type. Always use this skill when setting up node parameters — it explains which fields are required for each operation, how displayOptions control field visibility, and when to use patchNodeField for surgical edits vs full node updates.
Expert guidance for operation-aware node configuration with property dependencies.
---
**Progressive disclosure**: Start minimal, add complexity as needed
Configuration best practices:
**Key insight**: Most configurations need only standard detail, not full schema!
---
**Not all fields are always required** - it depends on operation!
**Example**: Slack node
// For operation='post'
{
"resource": "message",
"operation": "post",
"channel": "#general", // Required for post
"text": "Hello!" // Required for post
}
// For operation='update'
{
"resource": "message",
"operation": "update",
"messageId": "123", // Required for update (different!)
"text": "Updated!" // Required for update
// channel NOT required for update
}**Key**: Resource + operation determine which fields are required!
**Fields appear/disappear based on other field values**
**Example**: HTTP Request node
// When method='GET'
{
"method": "GET",
"url": "https://api.example.com"
// sendBody not shown (GET doesn't have body)
}
// When method='POST'
{
"method": "POST",
"url": "https://api.example.com",
"sendBody": true, // Now visible!
"body": { // Required when sendBody=true
"contentType": "json",
"content": {...}
}
}**Mechanism**: displayOptions control field visibility
**Use the right detail level**:
1. **get_node({detail: "standard"})** - DEFAULT
2. **get_node({mode: "search_properties", propertyQuery: "..."})** (for finding specific fields)
3. **get_node({detail: "full"})** (complete schema)
---
1. Identify node type and operation. 2. Use `get_node` (standard detail is default). 3. Configure required fields. 4. Validate configuration. 5. If a field is unclear → `get_node({mode: "search_properties"})`. 6. Add optional fields as needed. 7. Validate again. 8. Deploy.
The validate-driven loop in practice: start minimal (`method`, `url`, `authentication`), then let each `validate_node` error surface the next required field (`sendBody` for POST → `body` when `sendBody=true`) until valid. Full step-by-step walkthrough in **[OPERATION_PATTERNS.md](OPERATION_PATTERNS.md#worked-example-configuring-http-request-step-by-step)**.
---
**✅ Starting configuration**
get_node({
nodeType: "nodes-base.slack"
});
// detail="standard" is the default**Returns** (~1-2K tokens):
**Use**: 95% of configuration needs
**✅ When standard isn't enough**
get_node({
nodeType: "nodes-base.slack",
detail: "full"
});**Returns** (~3-8K tokens):
**Warning**: Large response, use only when standard insufficient
**✅ Looking for specific field**
get_node({
nodeType: "nodes-base.httpRequest",
mode: "search_properties",
propertyQuery: "auth"
});**Use**: Find authentication, headers, body fields, etc.
1. Starting a new node config → `get_node` (standard). 2. Standard has what you need → configure with it. Otherwise continue. 3. Looking for a specific field → `search_properties` mode. Otherwise continue. 4. Still need more → `get_node({detail: "full"})`.
**Dynamic properties**: when `standard` detail marks a property with `dynamicOptions: {methodName, methodType, dependsOn}`, its real values come from a live `loadOptions`/`listSearch` method, not from bundled docs — don't guess an ID for it. Resolve it with `n8n_explore_node_resources` (needs `N8N_MCP_ACCESS_TOKEN`, n8n 2.34+) and put the returned `value` in the config; `name` is display text only.
All six parameters are required and none are inferred from each other:
n8n_explore_node_resources({
nodeType: "n8n-nodes-base.googleSheets", // LONG form
version: 4.5, // the node typeVersion the method belongs to
methodName: "getSheets", // copied verbatim from dynamicOptions
methodType: "listSearch", // "listSearch" for resource locators, "loadOptions" for plain dropdowns
credentialType: "googleSheetsOAuth2Api",
credentialId: "c2", // from n8n_manage_credentials({action: "list"})
currentNodeParameters: { // whatever dependsOn names, in its real shape
documentId: {__rl: true, mode: "id", value: "1AbC…"}
}
})`dependsOn` names the parameters the method needs already chosen — pass them in `currentNodeParameters`, keeping resource-locator values in their `{__rl: true, mode, value}` shape, or the method
Expert Claude Code skills for building flawless n8n workflows using the n8n-mcp MCP server
Repo: czlonkowski/n8n-skills
Design n8n AI agents the right way. Use when building or editing any @n8n/n8n-nodes-langchain.* AI node — an AI Agent, LLM chain, Text Classifier, or…
Handle files and binary data in n8n correctly. Use when working with files, images, PDFs, attachments, uploads or downloads, base64, vision/multimodal input,…
Write JavaScript code in n8n Code nodes. Use when writing JavaScript in n8n, using $input/$json/$node syntax, making HTTP requests with this.helpers / the…
Write Python code in n8n Code nodes. Use when writing Python in n8n, using _input/_json/_node syntax, working with standard library, or need to understand…
Write JavaScript or Python for the n8n Custom Code Tool (@n8n/n8n-nodes-langchain.toolCode) — the AI-agent-callable tool, NOT the workflow Code node. Use when…
Wire n8n error handling so failures are loud, structured, and recoverable. Use when building any webhook/API workflow, a scheduled or unattended workflow, or…