@awesomate/hosting-mcp 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +204 -8
- package/package.json +2 -2
- package/skill/awesomate-app-builder/SKILL.md +5 -1
- package/skill/awesomate-credentials/SKILL.md +1 -1
- package/skill/awesomate-hosting/SKILL.md +50 -159
- package/skill/awesomate-hosting/references/connect-troubleshooting.md +77 -0
- package/skill/awesomate-hosting/references/multi-account.md +33 -0
- package/skill/awesomate-hosting/references/rest-fallback.md +30 -0
- package/skill/awesomate-hosting/scripts/bootstrap.mjs +27 -7
- package/skill/awesomate-n8n/SKILL.md +153 -147
- package/skill/awesomate-n8n/evals/ai-agent-build/graders/grader.md +31 -0
- package/skill/awesomate-n8n/evals/ai-agent-build/prompt.md +1 -0
- package/skill/awesomate-n8n/evals/build-form-email/graders/grader.md +30 -0
- package/skill/awesomate-n8n/evals/build-form-email/prompt.md +1 -0
- package/skill/awesomate-n8n/evals/datatable-dedupe/graders/grader.md +32 -0
- package/skill/awesomate-n8n/evals/datatable-dedupe/prompt.md +2 -0
- package/skill/awesomate-n8n/evals/diagnose-failure/graders/grader.md +27 -0
- package/skill/awesomate-n8n/evals/diagnose-failure/prompt.md +2 -0
- package/skill/awesomate-n8n/evals/essentials-upsell/graders/grader.md +27 -0
- package/skill/awesomate-n8n/evals/essentials-upsell/prompt.md +2 -0
- package/skill/awesomate-n8n/evals/live-change-promote/graders/grader.md +35 -0
- package/skill/awesomate-n8n/evals/live-change-promote/prompt.md +2 -0
- package/skill/awesomate-n8n/evals/possibilities-grounded/graders/grader.md +28 -0
- package/skill/awesomate-n8n/evals/possibilities-grounded/prompt.md +1 -0
- package/skill/awesomate-n8n/evals/validated-not-done/graders/grader.md +27 -0
- package/skill/awesomate-n8n/evals/validated-not-done/prompt.md +2 -0
- package/skill/awesomate-n8n/evals/vars-not-env/graders/grader.md +26 -0
- package/skill/awesomate-n8n/evals/vars-not-env/prompt.md +2 -0
- package/skill/awesomate-n8n/evals/webhook-body-fix/graders/grader.md +26 -0
- package/skill/awesomate-n8n/evals/webhook-body-fix/prompt.md +3 -0
- package/skill/awesomate-n8n/references/ai-agents.md +135 -0
- package/skill/awesomate-n8n/references/datatables.md +105 -0
- package/skill/awesomate-n8n/references/{node-recipes.md → platform-notes.md} +56 -7
- package/skill/awesomate-n8n/references/possibilities.md +83 -0
- package/skill/awesomate-n8n/references/testing-policy.md +115 -0
- package/skill/awesomate-n8n/references/troubleshooting.md +69 -0
- package/skill/awesomate-n8n/references/upgrade-loop.md +98 -0
- package/skill/awesomate-n8n/references/vendor/MANIFEST.json +26 -0
- package/skill/awesomate-n8n/references/vendor/code-node/BUILTIN_FUNCTIONS.md +779 -0
- package/skill/awesomate-n8n/references/vendor/code-node/COMMON_PATTERNS.md +1123 -0
- package/skill/awesomate-n8n/references/vendor/code-node/DATA_ACCESS.md +797 -0
- package/skill/awesomate-n8n/references/vendor/code-node/ERROR_PATTERNS.md +776 -0
- package/skill/awesomate-n8n/references/vendor/code-node/SKILL.md +703 -0
- package/skill/awesomate-n8n/references/vendor/expressions/COMMON_MISTAKES.md +406 -0
- package/skill/awesomate-n8n/references/vendor/expressions/EXAMPLES.md +496 -0
- package/skill/awesomate-n8n/references/vendor/expressions/SKILL.md +525 -0
- package/skill/awesomate-n8n/references/vendor/node-configuration/DEPENDENCIES.md +743 -0
- package/skill/awesomate-n8n/references/vendor/node-configuration/OPERATION_PATTERNS.md +926 -0
- package/skill/awesomate-n8n/references/vendor/node-configuration/SKILL.md +583 -0
- package/skill/awesomate-n8n/references/vendor/validation/ERROR_CATALOG.md +781 -0
- package/skill/awesomate-n8n/references/vendor/validation/FALSE_POSITIVES.md +695 -0
- package/skill/awesomate-n8n/references/vendor/validation/SKILL.md +414 -0
- package/skill/awesomate-n8n/references/vendor/workflow-patterns/SKILL.md +413 -0
- package/skill/awesomate-n8n/references/vendor/workflow-patterns/ai_agent_workflow.md +797 -0
- package/skill/awesomate-n8n/references/vendor/workflow-patterns/database_operations.md +798 -0
- package/skill/awesomate-n8n/references/vendor/workflow-patterns/http_api_integration.md +747 -0
- package/skill/awesomate-n8n/references/vendor/workflow-patterns/scheduled_tasks.md +786 -0
- package/skill/awesomate-n8n/references/vendor/workflow-patterns/webhook_processing.md +558 -0
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
VENDORED from n8n-builder@d293559 (n8n-validation-expert/SKILL.md) — DO NOT EDIT HERE.
|
|
3
|
+
Edit the source in ~/Projects/n8n-builder, then re-run:
|
|
4
|
+
node mcp/scripts/sync-n8n-references.mjs --write
|
|
5
|
+
|
|
6
|
+
Awesomate platform overrides — where this file conflicts with
|
|
7
|
+
../platform-notes.md, platform-notes wins:
|
|
8
|
+
- $env is BLOCKED fleet-wide → use {{ $vars.key || 'fallback' }}
|
|
9
|
+
- Task runners are ON → no $helpers in Code nodes; use HTTP Request nodes
|
|
10
|
+
- Webhook payloads live at $json.body
|
|
11
|
+
- saveExecutionProgress must stay false
|
|
12
|
+
-->
|
|
13
|
+
|
|
14
|
+
# n8n Validation Expert
|
|
15
|
+
|
|
16
|
+
Expert guide for interpreting n8n editor warnings and execution errors, and reviewing workflow JSON for configuration mistakes.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## How This Works
|
|
21
|
+
|
|
22
|
+
You don't have direct access to the user's n8n instance. The user pastes:
|
|
23
|
+
|
|
24
|
+
- **Editor warnings** - red/yellow indicators on nodes, "Problem in node" messages
|
|
25
|
+
- **Execution errors** - error output from a failed run
|
|
26
|
+
- **Workflow JSON** - exported or hand-written, to review before import
|
|
27
|
+
|
|
28
|
+
Your job: interpret the message, identify the node and field at fault, and propose an exact fix the user applies in their n8n editor.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Debugging Philosophy
|
|
33
|
+
|
|
34
|
+
**Fix early, recheck often**
|
|
35
|
+
|
|
36
|
+
Debugging is typically iterative:
|
|
37
|
+
- Expect feedback loops
|
|
38
|
+
- Usually 2-3 fix → recheck cycles
|
|
39
|
+
- One error being fixed often reveals the next one
|
|
40
|
+
|
|
41
|
+
**Key insight**: Fixing errors is an iterative process, not one-shot!
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Error Severity Levels
|
|
46
|
+
|
|
47
|
+
### 1. Errors (Must Fix)
|
|
48
|
+
**Blocks workflow execution** - Must be resolved before activation
|
|
49
|
+
|
|
50
|
+
**Types**:
|
|
51
|
+
- `missing_required` - Required field not provided
|
|
52
|
+
- `invalid_value` - Value doesn't match allowed options
|
|
53
|
+
- `type_mismatch` - Wrong data type (string instead of number)
|
|
54
|
+
- `invalid_reference` - Referenced node doesn't exist
|
|
55
|
+
- `invalid_expression` - Expression syntax error
|
|
56
|
+
|
|
57
|
+
**Example** (editor message):
|
|
58
|
+
```
|
|
59
|
+
Problem in node 'Slack'
|
|
60
|
+
Channel name is required
|
|
61
|
+
```
|
|
62
|
+
**Fix**: Provide a channel name (lowercase, no spaces, 1-80 characters)
|
|
63
|
+
|
|
64
|
+
### 2. Warnings (Should Fix)
|
|
65
|
+
**Doesn't block execution** - Workflow can be activated but may have issues
|
|
66
|
+
|
|
67
|
+
**Types**:
|
|
68
|
+
- `best_practice` - Recommended but not required
|
|
69
|
+
- `deprecated` - Using old API/feature
|
|
70
|
+
- `performance` - Potential performance issue
|
|
71
|
+
|
|
72
|
+
**Example**: Slack API can have rate limits → suggest `onError: 'continueRegularOutput'` with Retry On Fail enabled.
|
|
73
|
+
|
|
74
|
+
### 3. Suggestions (Optional)
|
|
75
|
+
**Nice to have** - Improvements that could enhance workflow
|
|
76
|
+
|
|
77
|
+
**Types**:
|
|
78
|
+
- `optimization` - Could be more efficient
|
|
79
|
+
- `alternative` - Better way to achieve same result
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## The Fix-and-Recheck Loop
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
1. User pastes error / warning
|
|
87
|
+
↓
|
|
88
|
+
2. Identify the node and field at fault
|
|
89
|
+
↓
|
|
90
|
+
3. Read the error message carefully - it usually names the fix
|
|
91
|
+
↓
|
|
92
|
+
4. Propose the exact change (field, value, expression)
|
|
93
|
+
↓
|
|
94
|
+
5. User applies it, re-opens the node in the editor or re-executes
|
|
95
|
+
↓
|
|
96
|
+
6. Confirm the warning is gone - or interpret the next error
|
|
97
|
+
↓
|
|
98
|
+
7. Repeat until clean (usually 2-3 iterations)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Example
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
// Iteration 1
|
|
105
|
+
User: "Problem in node 'Slack': Missing required field 'name'"
|
|
106
|
+
Fix: Set Channel Name (e.g. "general") in the node panel.
|
|
107
|
+
|
|
108
|
+
// Iteration 2 - user re-opens node, new warning appears
|
|
109
|
+
User: "Missing required field 'text'"
|
|
110
|
+
Fix: Set Message Text (e.g. "Hello!").
|
|
111
|
+
|
|
112
|
+
// Iteration 3 - user re-executes
|
|
113
|
+
User: "It ran!" ✅
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**This is normal!** Don't be discouraged by multiple iterations - fixing one required field often surfaces the next.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Review Methodology
|
|
121
|
+
|
|
122
|
+
When reviewing workflow JSON or a node configuration, check in this order:
|
|
123
|
+
|
|
124
|
+
### 1. Required fields first
|
|
125
|
+
Most errors are missing required fields. For each node, confirm the fields its operation needs are present (e.g. HTTP Request needs `url`; Slack post needs `channel` + `text`).
|
|
126
|
+
|
|
127
|
+
### 2. Value validity
|
|
128
|
+
Enum values (`resource`, `operation`, `method`) must match allowed options exactly - they are case-sensitive. Check formats (channel names, emails, URLs).
|
|
129
|
+
|
|
130
|
+
### 3. Data types
|
|
131
|
+
Numbers as numbers, booleans as booleans - not `"100"` or `"true"`.
|
|
132
|
+
|
|
133
|
+
### 4. Expressions
|
|
134
|
+
`{{}}` wrapping (with leading `=` in JSON), correct node names in `$node[...]` references, webhook data under `$json.body`.
|
|
135
|
+
|
|
136
|
+
### 5. Connections and structure
|
|
137
|
+
No connections to nodes that don't exist, Switch rules match output count, no accidentally disconnected nodes.
|
|
138
|
+
|
|
139
|
+
**Calibrate depth to stakes**: a quick required-fields pass is fine for dev/test workflows; production workflows deserve the full pass including error handling, retries, and rate limiting.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Common Error Types
|
|
144
|
+
|
|
145
|
+
### 1. missing_required
|
|
146
|
+
**What it means**: A required field is not provided
|
|
147
|
+
|
|
148
|
+
**How to fix**:
|
|
149
|
+
1. Open the node in the editor - required fields are marked and highlighted when empty
|
|
150
|
+
2. Fill in the missing field with an appropriate value
|
|
151
|
+
|
|
152
|
+
**Example**:
|
|
153
|
+
```
|
|
154
|
+
Error: "Channel name is required" (property: channel)
|
|
155
|
+
Fix: Set Channel to "#general"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 2. invalid_value
|
|
159
|
+
**What it means**: Value doesn't match allowed options
|
|
160
|
+
|
|
161
|
+
**How to fix**:
|
|
162
|
+
1. Check the error message for allowed values
|
|
163
|
+
2. Check the node's dropdown in the editor for valid options
|
|
164
|
+
3. Update to a valid value (match case exactly)
|
|
165
|
+
|
|
166
|
+
**Example**:
|
|
167
|
+
```
|
|
168
|
+
Error: "Operation must be one of: post, update, delete" (current: "send")
|
|
169
|
+
Fix: Set Operation to "post"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 3. type_mismatch
|
|
173
|
+
**What it means**: Wrong data type for field
|
|
174
|
+
|
|
175
|
+
**How to fix**:
|
|
176
|
+
1. Check expected type in error message
|
|
177
|
+
2. Convert value to correct type
|
|
178
|
+
|
|
179
|
+
**Example**:
|
|
180
|
+
```
|
|
181
|
+
Error: "Expected number, got string" (property: limit, current: "100")
|
|
182
|
+
Fix: limit: 100 (number, not string - remove the quotes in JSON)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### 4. invalid_expression
|
|
186
|
+
**What it means**: Expression syntax error
|
|
187
|
+
|
|
188
|
+
**How to fix**:
|
|
189
|
+
1. Use the n8n Expression Syntax skill
|
|
190
|
+
2. Check for missing `{{}}` or typos
|
|
191
|
+
3. Verify node/field references
|
|
192
|
+
|
|
193
|
+
**Example**:
|
|
194
|
+
```
|
|
195
|
+
Error: "Invalid expression: $json.name" (property: text)
|
|
196
|
+
Fix: "={{$json.name}}" - add the ={{}} wrapper
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### 5. invalid_reference
|
|
200
|
+
**What it means**: Referenced node doesn't exist
|
|
201
|
+
|
|
202
|
+
**How to fix**:
|
|
203
|
+
1. Check node name spelling
|
|
204
|
+
2. Verify node exists in workflow
|
|
205
|
+
3. Update reference to correct name
|
|
206
|
+
|
|
207
|
+
**Example**:
|
|
208
|
+
```
|
|
209
|
+
Error: "Node 'HTTP Requets' does not exist"
|
|
210
|
+
Fix: "={{$node['HTTP Request'].json.data}}" - correct the typo
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Operator Structure (IF/Switch)
|
|
216
|
+
|
|
217
|
+
The n8n editor normalizes condition operator structures when you save a node. This matters mainly when **hand-writing workflow JSON for import** - get the structure right so conditions behave correctly:
|
|
218
|
+
|
|
219
|
+
### 1. Binary Operators (Two Values)
|
|
220
|
+
**Operators**: equals, notEquals, contains, notContains, greaterThan, lessThan, startsWith, endsWith
|
|
221
|
+
|
|
222
|
+
**Rule**: No `singleValue` property (binary operators compare two values)
|
|
223
|
+
|
|
224
|
+
```javascript
|
|
225
|
+
{
|
|
226
|
+
"type": "boolean",
|
|
227
|
+
"operation": "equals"
|
|
228
|
+
// no singleValue ✅
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### 2. Unary Operators (One Value)
|
|
233
|
+
**Operators**: isEmpty, isNotEmpty, true, false
|
|
234
|
+
|
|
235
|
+
**Rule**: Must have `singleValue: true` (unary operators check a single value)
|
|
236
|
+
|
|
237
|
+
```javascript
|
|
238
|
+
{
|
|
239
|
+
"type": "boolean",
|
|
240
|
+
"operation": "isEmpty",
|
|
241
|
+
"singleValue": true // ✅ Required
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### 3. IF/Switch Metadata
|
|
246
|
+
IF v2.2+ and Switch v3.2+ expect complete `conditions.options` metadata. The editor adds it on save - if reviewing JSON that was built in the editor, incomplete metadata will be filled in when the user opens and saves the node.
|
|
247
|
+
|
|
248
|
+
### What the Editor Cannot Fix
|
|
249
|
+
|
|
250
|
+
#### 1. Broken Connections
|
|
251
|
+
References to non-existent nodes in the `connections` object
|
|
252
|
+
|
|
253
|
+
**Solution**: Remove the stale entry from `connections` (or delete and re-draw the connection in the editor)
|
|
254
|
+
|
|
255
|
+
#### 2. Branch Count Mismatches
|
|
256
|
+
3 Switch rules but only 2 output connections
|
|
257
|
+
|
|
258
|
+
**Solution**: Add missing connections or remove extra rules
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## False Positives
|
|
263
|
+
|
|
264
|
+
### What Are They?
|
|
265
|
+
Warnings that are technically "wrong" but acceptable - or plain incorrect - in your use case.
|
|
266
|
+
|
|
267
|
+
### Structural False Positives (Ignore)
|
|
268
|
+
|
|
269
|
+
#### 1. Community/custom nodes reported as "unknown"
|
|
270
|
+
Nodes from community packages (e.g. `CUSTOM.*`, `n8n-nodes-*`) show as unknown node types when reviewing JSON outside the instance that has them installed. If the target instance has the package, this is not an error.
|
|
271
|
+
|
|
272
|
+
#### 2. Cycles flagged in polling workflows
|
|
273
|
+
Loop-back connections (e.g. Wait → check status → loop back) get flagged as circular dependencies. Cycle-based polling is a legitimate pattern - a cycle is only a bug if there's no exit condition.
|
|
274
|
+
|
|
275
|
+
### Context-Dependent Warnings
|
|
276
|
+
|
|
277
|
+
#### 1. "Missing error handling"
|
|
278
|
+
**When acceptable**: Simple workflows, testing/development, non-critical notifications
|
|
279
|
+
**When to fix**: Production workflows handling important data
|
|
280
|
+
|
|
281
|
+
#### 2. "No retry logic"
|
|
282
|
+
**When acceptable**: APIs with their own retry logic, idempotent operations, manual trigger workflows
|
|
283
|
+
**When to fix**: Flaky external services, production automation
|
|
284
|
+
|
|
285
|
+
#### 3. "Missing rate limiting"
|
|
286
|
+
**When acceptable**: Internal APIs with no limits, low-volume workflows
|
|
287
|
+
**When to fix**: Public APIs, high-volume workflows
|
|
288
|
+
|
|
289
|
+
#### 4. "Unbounded query"
|
|
290
|
+
**When acceptable**: Small known datasets, aggregation queries, development/testing
|
|
291
|
+
**When to fix**: Production queries on large tables
|
|
292
|
+
|
|
293
|
+
Full guide: **[FALSE_POSITIVES.md](FALSE_POSITIVES.md)**
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Reviewing Workflow JSON Before Import
|
|
298
|
+
|
|
299
|
+
When the user pastes a full workflow, check:
|
|
300
|
+
|
|
301
|
+
1. **Node configurations** - each node valid (required fields, values, types)
|
|
302
|
+
2. **Connections** - no broken references, counts match branch rules
|
|
303
|
+
3. **Expressions** - syntax and node references valid
|
|
304
|
+
4. **Flow** - logical workflow structure, triggers wired correctly
|
|
305
|
+
|
|
306
|
+
### Common Workflow-Level Errors
|
|
307
|
+
|
|
308
|
+
#### 1. Broken Connections
|
|
309
|
+
```
|
|
310
|
+
Connection from 'Transform' to 'NonExistent' - target node not found
|
|
311
|
+
```
|
|
312
|
+
**Fix**: Remove stale connection or create the missing node
|
|
313
|
+
|
|
314
|
+
#### 2. Circular Dependencies
|
|
315
|
+
```
|
|
316
|
+
Circular dependency detected: Node A → Node B → Node A
|
|
317
|
+
```
|
|
318
|
+
**Fix**: Restructure to remove the loop - unless it's intentional cycle-based polling with an exit condition (see False Positives)
|
|
319
|
+
|
|
320
|
+
#### 3. Multiple Start Nodes
|
|
321
|
+
```
|
|
322
|
+
Multiple trigger nodes found
|
|
323
|
+
```
|
|
324
|
+
**Fix**: Fine if intentional (e.g. webhook + schedule); otherwise remove extras or split into separate workflows
|
|
325
|
+
|
|
326
|
+
#### 4. Disconnected Nodes
|
|
327
|
+
```
|
|
328
|
+
Node 'Transform' is not connected to workflow flow
|
|
329
|
+
```
|
|
330
|
+
**Fix**: Connect node or remove if unused
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## Recovery Strategies
|
|
335
|
+
|
|
336
|
+
### Strategy 1: Start Fresh
|
|
337
|
+
**When**: Configuration is severely broken
|
|
338
|
+
|
|
339
|
+
**Steps**:
|
|
340
|
+
1. Note the required fields from a fresh node of the same type in the editor
|
|
341
|
+
2. Create minimal valid configuration
|
|
342
|
+
3. Add features incrementally
|
|
343
|
+
4. Re-execute after each addition
|
|
344
|
+
|
|
345
|
+
### Strategy 2: Binary Search
|
|
346
|
+
**When**: Workflow looks valid but executes incorrectly
|
|
347
|
+
|
|
348
|
+
**Steps**:
|
|
349
|
+
1. Disable half the nodes
|
|
350
|
+
2. Execute and observe
|
|
351
|
+
3. If works: problem is in disabled nodes
|
|
352
|
+
4. If fails: problem is in remaining nodes
|
|
353
|
+
5. Repeat until problem isolated
|
|
354
|
+
|
|
355
|
+
### Strategy 3: Clean Stale Connections
|
|
356
|
+
**When**: "Node not found" errors after renaming/deleting nodes
|
|
357
|
+
|
|
358
|
+
**Steps**:
|
|
359
|
+
1. In the editor: delete and re-draw the affected connections
|
|
360
|
+
2. In JSON: remove entries in the `connections` object whose keys or targets name nodes that no longer exist (connections are keyed by node **name** - renames break them)
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## Best Practices
|
|
365
|
+
|
|
366
|
+
### ✅ Do
|
|
367
|
+
|
|
368
|
+
- Recheck after every significant change (re-open node / re-execute)
|
|
369
|
+
- Read error messages completely - they contain fix guidance
|
|
370
|
+
- Fix errors iteratively (one at a time)
|
|
371
|
+
- Fix errors before worrying about warnings
|
|
372
|
+
- Check required fields first when reviewing JSON
|
|
373
|
+
- Recognize structural false positives (community nodes, polling cycles)
|
|
374
|
+
- Document false positives you accept
|
|
375
|
+
|
|
376
|
+
### ❌ Don't
|
|
377
|
+
|
|
378
|
+
- Activate a workflow with unresolved errors
|
|
379
|
+
- Try to fix all errors at once
|
|
380
|
+
- Ignore error messages
|
|
381
|
+
- Assume a fix worked - confirm the warning is gone
|
|
382
|
+
- Hand-fix operator structures the editor normalizes on save
|
|
383
|
+
- Ignore all warnings (some are important!)
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## Detailed Guides
|
|
388
|
+
|
|
389
|
+
For comprehensive error catalogs and false positive examples:
|
|
390
|
+
|
|
391
|
+
- **[ERROR_CATALOG.md](ERROR_CATALOG.md)** - Complete list of error types with examples
|
|
392
|
+
- **[FALSE_POSITIVES.md](FALSE_POSITIVES.md)** - When warnings are acceptable
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## Summary
|
|
397
|
+
|
|
398
|
+
**Key Points**:
|
|
399
|
+
1. **Debugging is iterative** (usually 2-3 fix → recheck cycles)
|
|
400
|
+
2. **Errors must be fixed**, warnings are optional
|
|
401
|
+
3. **The editor normalizes operator structures** on save
|
|
402
|
+
4. **Check required fields first**, then values, types, expressions, connections
|
|
403
|
+
5. **False positives exist** - learn to recognize them
|
|
404
|
+
6. **Read error messages** - they contain fix guidance
|
|
405
|
+
|
|
406
|
+
**Debugging Process**:
|
|
407
|
+
1. Interpret error → propose fix → user applies → recheck
|
|
408
|
+
2. Repeat until clean (usually 2-3 iterations)
|
|
409
|
+
3. Review warnings and decide if acceptable
|
|
410
|
+
4. Activate with confidence
|
|
411
|
+
|
|
412
|
+
**Related Skills**:
|
|
413
|
+
- n8n Expression Syntax - Fix expression errors
|
|
414
|
+
- n8n Node Configuration - Understand required fields
|