Cleaned up all skills to remove research/telemetry context that was used during design but is not needed at runtime when AI agents use the skills. ## Changes Made ### Pattern 1: Research Framing Removed - "From analysis of X workflows/events" → Removed - "From telemetry analysis:" → Replaced with operational context - "Based on X real workflows" → Simplified to general statements ### Pattern 2: Popularity Metrics Removed - "**Popularity**: Second most common (892 templates)" → Removed entirely - "813 searches", "456 templates", etc. → Removed ### Pattern 3: Frequency Percentages Converted - "**Frequency**: 45% of errors" → "Most common error" - "**Frequency**: 28%" → "Second most common" - "**Frequency**: 12%" → "Common error" - Percentages in tables → Priority levels (Highest/High/Medium/Low) ### Pattern 4: Operational Guidance Kept - ✅ Success rates (91.7%) - helps tool selection - ✅ Average times (18s, 56s) - sets expectations - ✅ Relative priority (most common, typical) - guides decisions - ✅ Iteration counts (2-3 cycles) - manages expectations ## Files Modified (19 files across 4 skills) **Skill #2: MCP Tools Expert (5 files)** - Removed telemetry occurrence counts - Kept success rates and average times **Skill #3: Workflow Patterns (7 files)** - Removed all popularity metrics from pattern files - Removed "From analysis of 31,917 workflows" - Removed template counts **Skill #4: Validation Expert (4 files)** - Converted frequency % to priority levels - Removed "From analysis of 19,113 errors" - Removed telemetry loop counts (kept iteration guidance) **Skill #5: Node Configuration (3 files)** - Removed workflow update counts - Removed essentials call counts - Kept success rates and timing guidance ## Result Skills now provide clean, focused runtime guidance without research justification. Content is more actionable for AI agents using the skills. All technical guidance, examples, patterns, and operational metrics preserved. Only removed: research methodology, data source attribution, and statistical justification for design decisions. 🤖 Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en
7.9 KiB
Configuration Validation Tools Guide
Complete guide for validating node configurations and workflows.
Validation Philosophy
Validate early, validate often
Validation is typically iterative with validate → fix cycles
validate_node_minimal (QUICK CHECK)
Success Rate: 97.4% | Speed: <100ms
Use when: Checking what fields are required
Syntax:
validate_node_minimal({
nodeType: "nodes-base.slack",
config: {} // Empty to see all required fields
})
Returns:
{
"valid": true, // Usually true (most nodes have no strict requirements)
"missingRequiredFields": []
}
When to use: Planning configuration, seeing basic requirements
validate_node_operation (FULL VALIDATION)
Success Rate: Varies | Speed: <100ms
Use when: Validating actual configuration before deployment
Syntax:
validate_node_operation({
nodeType: "nodes-base.slack",
config: {
resource: "channel",
operation: "create",
channel: "general"
},
profile: "runtime" // Recommended!
})
Validation Profiles
Choose based on your stage:
minimal - Only required fields
- Fastest
- Most permissive
- Use: Quick checks during editing
runtime - Values + types (RECOMMENDED)
- Balanced validation
- Catches real errors
- Use: Pre-deployment validation
ai-friendly - Reduce false positives
- For AI-generated configs
- Tolerates minor issues
- Use: When AI configures nodes
strict - Maximum validation
- Strictest rules
- May have false positives
- Use: Production deployment
Returns
{
"valid": false,
"errors": [
{
"type": "missing_required",
"property": "name",
"message": "Channel name is required",
"fix": "Provide a channel name (lowercase, no spaces, 1-80 characters)"
}
],
"warnings": [
{
"type": "best_practice",
"property": "errorHandling",
"message": "Slack API can have rate limits",
"suggestion": "Add onError: 'continueRegularOutput' with retryOnFail"
}
],
"suggestions": [],
"summary": {
"hasErrors": true,
"errorCount": 1,
"warningCount": 1
}
}
Error Types
missing_required- Must fixinvalid_value- Must fixtype_mismatch- Must fixbest_practice- Should fix (warning)suggestion- Optional improvement
validate_workflow (STRUCTURE VALIDATION)
Success Rate: 95.5% | Speed: 100-500ms
Use when: Checking complete workflow before execution
Syntax:
validate_workflow({
workflow: {
nodes: [...], // Array of nodes
connections: {...} // Connections object
},
options: {
validateNodes: true, // Default: true
validateConnections: true, // Default: true
validateExpressions: true, // Default: true
profile: "runtime" // For node validation
}
})
Validates:
- Node configurations
- Connection validity (no broken references)
- Expression syntax ({{ }} patterns)
- Workflow structure (triggers, flow)
- AI connections (8 types)
Returns: Comprehensive validation report with errors, warnings, suggestions
Validation Loop Pattern
Typical cycle: 23s thinking, 58s fixing
1. Configure node
↓
2. validate_node_operation (23s thinking about errors)
↓
3. Fix errors
↓
4. validate_node_operation again (58s fixing)
↓
5. Repeat until valid
Example:
// Iteration 1
let config = {
resource: "channel",
operation: "create"
};
const result1 = validate_node_operation({
nodeType: "nodes-base.slack",
config,
profile: "runtime"
});
// → Error: Missing "name"
// Iteration 2 (~58s later)
config.name = "general";
const result2 = validate_node_operation({
nodeType: "nodes-base.slack",
config,
profile: "runtime"
});
// → Valid!
Auto-Sanitization System
When it runs: On ANY workflow update (create or update_partial)
What it fixes (automatically on ALL nodes):
- Binary operators (equals, contains, greaterThan) → removes
singleValue - Unary operators (isEmpty, isNotEmpty, true, false) → adds
singleValue: true - Invalid operator structures → corrects to proper format
- IF v2.2+ nodes → adds complete
conditions.optionsmetadata - Switch v3.2+ nodes → adds complete
conditions.optionsfor all rules
What it CANNOT fix:
- Broken connections (references to non-existent nodes)
- Branch count mismatches (3 Switch rules but only 2 outputs)
- Paradoxical corrupt states (API returns corrupt, rejects updates)
Example:
// Before auto-sanitization
{
"type": "boolean",
"operation": "equals",
"singleValue": true // ❌ Binary operators shouldn't have this
}
// After auto-sanitization (automatic!)
{
"type": "boolean",
"operation": "equals"
// singleValue removed automatically
}
Recovery tools:
cleanStaleConnectionsoperation - removes broken connectionsn8n_autofix_workflow- preview/apply fixes
Binary vs Unary Operators
Binary operators (compare two values):
- equals, notEquals, contains, notContains
- greaterThan, lessThan, startsWith, endsWith
- Must NOT have
singleValue: true
Unary operators (check single value):
- isEmpty, isNotEmpty, true, false
- Must have
singleValue: true
Auto-sanitization fixes these automatically!
Handling Validation Errors
Process
1. Read error message carefully
2. Check if it's a known false positive
3. Fix real errors
4. Validate again
5. Iterate until clean
Common Errors
"Required field missing" → Add the field with appropriate value
"Invalid value" → Check allowed values in essentials/documentation
"Type mismatch" → Convert to correct type (string/number/boolean)
"Cannot have singleValue" → Auto-sanitization will fix on next update
"Missing operator metadata" → Auto-sanitization will fix on next update
False Positives
Some validation warnings may be acceptable:
- Optional best practices
- Node-specific edge cases
- Profile-dependent issues
Use ai-friendly profile to reduce false positives.
Best Practices
✅ Do
- Use runtime profile for pre-deployment
- Validate after every configuration change
- Fix errors immediately (avg 58s)
- Iterate validation loop
- Trust auto-sanitization for operator issues
- Use minimal profile for quick checks
❌ Don't
- Skip validation before deployment
- Ignore error messages
- Use strict profile during development (too many warnings)
- Assume validation passed (check result)
- Try to manually fix auto-sanitization issues
Example: Complete Validation Workflow
// Step 1: Get node requirements
validate_node_minimal({
nodeType: "nodes-base.slack",
config: {}
});
// → Know what's required
// Step 2: Configure node
const config = {
resource: "message",
operation: "post",
channel: "#general",
text: "Hello!"
};
// Step 3: Validate configuration
const result = validate_node_operation({
nodeType: "nodes-base.slack",
config,
profile: "runtime"
});
// Step 4: Check result
if (result.valid) {
console.log("✅ Configuration valid!");
} else {
console.log("❌ Errors:", result.errors);
// Fix and validate again
}
// Step 5: Validate in workflow context
validate_workflow({
workflow: {
nodes: [{...config as node...}],
connections: {...}
}
});
Summary
Key Points:
- Use runtime profile (balanced validation)
- Validation loop: validate → fix (58s) → validate again
- Auto-sanitization fixes operator structures automatically
- Binary operators ≠ singleValue, Unary operators = singleValue: true
- Iterate until validation passes
Tool Selection:
- validate_node_minimal: Quick check
- validate_node_operation: Full config validation (use this!)
- validate_workflow: Complete workflow check
Related:
- SEARCH_GUIDE.md - Find nodes
- WORKFLOW_GUIDE.md - Build workflows