skills/n8n-mcp-tools-expert/SKILL.md
Use when working with n8n MCP tools (search_nodes, get_node, validate_node, create/update workflows), choosing nodeType formats, selecting validation profiles, or deploying templates. NEVER for expression syntax (use n8n-expression-syntax) or Code node content (use n8n-code-javascript/python).
npx skillsauth add sharkitect-solutions/sharkitect-claude-toolkit n8n-mcp-tools-expertInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Two prefixes exist. Using the wrong one = "Node not found" error.
SHORT prefix -- for search, get, validate tools:
nodes-base.slack
nodes-base.httpRequest
nodes-langchain.agent
FULL prefix -- for workflow tools (create, update, deploy):
n8n-nodes-base.slack
n8n-nodes-base.httpRequest
@n8n/n8n-nodes-langchain.agent
The bridge: search_nodes returns BOTH formats in every result:
nodeType = short (use with get_node, validate_node, validate_workflow)workflowNodeType = full (use with n8n_create_workflow, n8n_update_partial_workflow)Always capture both values from search results. Never construct prefixes manually when search results are available.
WHAT DO YOU NEED?
|
|-- Find a node by keyword/service?
| --> search_nodes (returns both nodeType formats)
|
|-- Understand a node's config?
| --> get_node (detail: "standard" -- the default, 1-2K tokens)
| | Need more? See "get_node Escalation Strategy" below
|
|-- Validate a node config?
| --> validate_node (profile: "runtime" recommended)
|
|-- Validate a whole workflow?
| --> validate_workflow (local JSON) or n8n_validate_workflow (by ID)
|
|-- Create a new workflow?
| --> n8n_create_workflow (requires API)
|
|-- Edit an existing workflow?
| --> n8n_update_partial_workflow (requires API, 17 operation types)
|
|-- Fix validation errors automatically?
| --> n8n_autofix_workflow (preview first, then apply)
|
|-- Start from a proven pattern?
| --> search_templates --> get_template --> n8n_deploy_template
|
|-- Check what tools exist or how they work?
| --> tools_documentation (self-documenting, always available)
Start small. Escalate only when the previous level was insufficient.
Level 1 (95% of cases): get_node({nodeType: "nodes-base.X"})
Level 2 - readable docs: get_node({nodeType: "...", mode: "docs"})
Level 3 - find specific field: get_node({nodeType: "...", mode: "search_properties", propertyQuery: "auth"})
Level 4 (last resort): get_node({nodeType: "...", detail: "full"})
Version tools (when upgrading nodes):
mode: "versions" -- list all versions with breaking change flagsmode: "breaking" + fromVersion -- show only breaking changesmode: "compare" + fromVersion + toVersion -- property-level diffmode: "migrations" + fromVersion -- auto-migratable changes| Profile | When to use | Strictness |
|---------|-------------|------------|
| minimal | During editing, quick checks | Most permissive |
| runtime | Pre-deployment (RECOMMENDED DEFAULT) | Balanced |
| ai-friendly | AI-generated configurations | Reduces false positives |
| strict | Production deployment | Most thorough |
Always specify the profile explicitly. Omitting it uses defaults that may not match your intent.
Telemetry shows this pattern repeats thousands of times:
This is normal and expected. Do not try to get validation right on the first pass.
mode: "minimal" -- quick check: what fields are required?mode: "full" (default) -- comprehensive with errors/warnings/suggestionsValidates: node configs + connection validity + expression syntax + workflow
structure + AI connections. Use profile: "runtime" in options for node-level
validation within workflow context.
applyFixes: false (default) = preview mode, shows what would changeapplyFixes: true = apply fixesconfidenceThreshold: "high", "medium", "low"IF node connections -- use branch instead of sourceIndex:
branch: "true" --> true output (sourceIndex 0)
branch: "false" --> false output (sourceIndex 1)
Switch node connections -- use case instead of sourceIndex:
case: 0 --> first case output
case: 1 --> second case output
case: 2 --> third case output
Smart parameters are clearer, less error-prone, and self-documenting.
Always include intent in update operations. It describes what you are trying
to accomplish and produces better AI-generated responses:
intent: "Add error handling for API failures"
intent: "Connect webhook to Slack notification"
intent: "Activate workflow for production"
Telemetry data (31,464 occurrences): workflows are built iteratively, averaging 56s between edits. This is the expected pattern:
Do NOT attempt to build complete workflows in a single operation. The iterative approach has a 99.0% success rate per operation.
Node ops: addNode, removeNode, updateNode, moveNode, enableNode, disableNode Connection ops: addConnection, removeConnection, rewireConnection, cleanStaleConnections, replaceConnections Metadata ops: updateSettings, updateName, addTag, removeTag Activation ops: activateWorkflow, deactivateWorkflow
updateNode uses dot notation for nested properties. removeNode accepts node ID or name. cleanStaleConnections removes references to deleted/renamed nodes. rewireConnection atomically changes a connection target (source + from + to).
Set a property to undefined to remove it:
updates: { continueOnFail: undefined, onError: "continueErrorOutput" }
Useful for migrating from deprecated properties to their replacements.
8 sourceOutput types for AI workflow connections:
Always specify sourceOutput when connecting AI nodes. Without it, the
connection type defaults to "main" which is wrong for AI sub-nodes.
continueOnError: true -- apply what works, skip what failsvalidateOnly: true -- preview changes without applyingRuns automatically on ALL nodes during ANY workflow update (create or update_partial). You do not invoke it -- it happens silently.
singleValuesingleValue: trueconditions.options metadataconditions.options for all rulesNever manually set singleValue on operators. Let auto-sanitization handle it.
If you see operator structure validation errors, just do another update and
auto-sanitization will correct them. For broken connections, use
cleanStaleConnections. For deeper issues, use n8n_autofix_workflow.
2,700+ templates available. Four search modes:
| Mode | Use when | Key parameter |
|------|----------|---------------|
| keyword (default) | Know what you want | query: "webhook slack" |
| by_nodes | Have specific nodes | nodeTypes: ["n8n-nodes-base.httpRequest"] |
| by_task | Know the task type | task: "webhook_processing" |
| by_metadata | Filter by attributes | complexity: "simple", maxSetupMinutes: 15 |
get_template modes:
structure -- nodes + connections only (for understanding the pattern)full -- complete workflow JSON (for deployment or deep inspection)n8n_deploy_template (requires API):
autoFix: true (default) -- auto-fix common issues during deploymentautoUpgradeVersions: true (default) -- upgrade nodes to latest versionsstripCredentials: true (default) -- remove credential referencesTemplates are the fastest way to start. Deploy first, then customize iteratively.
Always available (no API needed): search_nodes, get_node, validate_node, validate_workflow, search_templates, get_template, tools_documentation
These tools work offline against the bundled node database and template catalog.
Requires n8n API (N8N_API_URL + N8N_API_KEY): n8n_create_workflow, n8n_update_partial_workflow, n8n_validate_workflow (by ID), n8n_list_workflows, n8n_get_workflow, n8n_test_workflow, n8n_executions, n8n_deploy_template, n8n_autofix_workflow, n8n_workflow_versions
When API is unavailable: Use search/get/validate tools to design and validate node configurations locally. Use templates as reference patterns. Build the workflow JSON structure, validate it with validate_workflow, and deploy manually.
When working with n8n MCP tools, reason through:
development
When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms. Also use when the user mentions 'PPC,' 'paid media,' 'ad copy,' 'ad creative,' 'ROAS,' 'CPA,' 'ad campaign,' 'retargeting,' or 'audience targeting.' This skill covers campaign strategy, ad creation, audience targeting, and optimization.
testing
--- name: using-sharkitect-methodology description: Use when starting any conversation in a Sharkitect workspace OR before any task involving NEW pricing, positioning, proposal, strategy, plan-execution, or schema-design work — mandates invocation of Sharkitect-specific methodology skills (pricing-strategy, marketing-strategy-pmm, smb-cfo, hq-revenue-ops, executing-plans, brainstorming) under the same anti-rationalization discipline as using-superpowers. Documentation has failed 4 times across H
testing
Use when user says 'end session', 'wrap up', 'stop for the day', 'done for today', 'close out', 'save session', 'wrapping up', or invokes /end-session. Runs the full 9-step end-of-session protocol: resource audit, MEMORY.md update, lessons capture, plan status, pending items, workspace checklist, .tmp/ audit, git commit+push, Supabase brain sync, session brief, summary. Final step schedules a detached self-kill of the current session ONLY (3s delay) so the window closes cleanly. Other claude.exe processes (active workspaces) are NOT touched -- orphan cleanup is handled separately by Claude-Orphan-Cleanup-Hourly with proper age safeguards. Do NOT use for: mid-session quick saves (use session-checkpoint), skill syncing (use sync-skills.py), brain memory queries (use supabase-sync.py pull), document freshness reviews (use document-lifecycle), resource gap detection (use resource-auditor).
testing
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, passive voice, negative parallelisms, and filler phrases.