error-message-explainer
Skill28 starsChanged 28 days agoMITView on GitHub
Explain Arduino and embedded compiler, upload, boot, power, and runtime errors in plain English. Use when a user shares an error or failure from Arduino IDE, Arduino CLI, PlatformIO, or a vendor-specific tool. Separate build, upload, hardware, and system evidence and give a board-specific recovery path without assuming UNO, ESP32, or RP2040 behavior.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- wedsamuel1230/arduino-skillsword for word, first seen Nov 1, 2026
- proflead/codex-skills-librarytheir own version, first seen Jun 18, 2026
- ATOM00blue/agent-skills-protheir own version, first seen May 22, 2026
Other versions3 projects use a version of this.
Word for word · 1
- wedsamuel1230/arduino-skills★ 28100% same
Edited · 0
None found.
Wrote their own version · 2
- proflead/codex-skills-library★ 153same name
- ATOM00blue/agent-skills-pro★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository48 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .cursor/rules/arduino-skills.mdcCursor rule
- cli-creatorSkill
- plugin-creatorSkill
- skill-creatorSkill
- arduino-cli-skillSkill
- arduino-code-generatorSkill
- arduino-project-builderSkill
- arduino-serial-monitorSkill
- arduino-workflow-routerSkill
- battery-selectorSkill
- board-selectionSkill
- board-supportSkill
- bom-generatorSkill
- boot-flash-recoverySkill
- bus-debuggingSkill
- circuit-debuggerSkill
- code-review-facilitatorSkill
- datasheet-interpreterSkill
- embedded-build-workflowSkill
- embedded-project-loopSkill
- enclosure-designerSkill
- fault-forensicsSkill
- field-power-and-connectivity-triagerSkill
- freertos-patternsSkill
- hardware-tddSkill
- i2c-bringup-diagnosticianSkill
- library-selectionSkill
- memory-budgetingSkill
- memory-timing-debuggingSkill
- mermaid-diagram-generatorSkill
- micropython-developmentSkill
- non-blocking-patternsSkill
- ota-deployment-guardianSkill
- pico-sdk-developmentSkill
- pin-assignmentSkill
- power-budget-calculatorSkill
- probe-debuggingSkill
- readme-generatorSkill
- realtime-control-designSkill
- sensor-calibration-workbenchSkill
- sensor-signal-filteringSkill
- stm32-developmentSkill
- usb-debuggingSkill
- wireless-telemetrySkill
- wiring-safety-checkSkill
- zephyr-developmentSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 10 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 42
When user pastes an error message:
- Very specific: line 47
If the target is Uno R4 family and the failure touches WiFi, OTA, USB, or board recognition, open ../../docs/board-support/uno-r4-family.md
- Distinctive: line 52
Before recommending a reset, erase, bootloader repair, or reflash, capture the exact board/revision, tool and library versions, port, power …
- Very specific: line 106
Fix: Add ; at end of the line ABOVE the error.
- Distinctive: line 150
Debugging Tip: Use IDE auto-format (Ctrl+T) to reveal mismatches.
- Distinctive: line 303
When "Connecting..." appears, hold BOOT button
- Distinctive: line 345
Search for library name
- Distinctive: line 347
If not in Library Manager: download ZIP, Sketch → Include Library → Add .ZIP Library
- Very specific: line 359
The actual error is ABOVE this line!: Look for lines containing error:.
- Distinctive: line 426
Read the FIRST error (later ones often cascade)
- Distinctive: line 428
Look at that line AND the line above
- Distinctive: line 429
Check for common patterns above
- Distinctive: line 435
Use the shared Arduino skill contract: state assumptions, required tools and versions, implementation steps, tests/evidence by proof stage, …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Error Message Explainer
Translates cryptic compiler errors into actionable fixes for Arduino/ESP32/RP2040 projects.
Resources
This skill includes bundled tools:
- scripts/parse_errors.py - Automated error analysis with 20+ error patterns
- ../../docs/board-support/uno-r4-family.md - Shared Uno R4 board-family caveats
Quick Start
Analyze error from file:
uv run --no-project scripts/parse_errors.py --file error_log.txtAnalyze single error:
uv run --no-project scripts/parse_errors.py --message "error: 'LED' was not declared in this scope"Interactive mode:
uv run --no-project scripts/parse_errors.py --interactivePipe from compiler:
arduino-cli compile 2>&1 | uv run --no-project scripts/parse_errors.py --stdinHow to Use This Skill
When user pastes an error message:
- Identify the error type from patterns below
- Explain what it means in simple terms
- Show the specific fix with code example
- Explain WHY this error happens (educational value)
- If the target is Uno R4 family and the failure touches WiFi, OTA, USB, or
board recognition, open
../../docs/board-support/uno-r4-family.md
Recovery Boundary
Before recommending a reset, erase, bootloader repair, or reflash, capture the exact board/revision, tool and library versions, port, power path, and last known-good image. Use the router recovery reference for failed uploads, boot failures, power faults, or corrupted firmware. Do not call a compile fix a hardware or system fix.
Common Compilation Errors
1. "'xyz' was not declared in this scope"
error: 'xyz' was not declared in this scopeMeaning: Compiler doesn't recognize the name xyz.
Common Causes & Fixes:
| Cause | Fix |
| Typo in variable/function name | Check spelling, C++ is case-sensitive! |
| Variable used before declaration | Move declaration before first use |
Missing #include | Add required library header |
| Function defined after it's called | Add forward declaration or move function up |
Example - Typo:
// WRONG
int ledpin = 13; // lowercase 'p'
digitalWrite(ledPin, HIGH); // uppercase 'P' - DIFFERENT!
// CORRECT
int ledPin = 13;
digitalWrite(ledPin, HIGH);Example - Missing Include:
// WRONG - Servo not defined!
Servo myServo;
// CORRECT
#include <Servo.h>
Servo myServo;2. "expected ';' before..."
error: expected ';' before 'xyz'Meaning: Missing semicolon on the previous line.
Fix: Add ; at end of the line ABOVE the error.
// WRONG - error points to line 3
int x = 5 // ← missing ; here!
int y = 10;
// CORRECT
int x = 5;
int y = 10;Pro Tip: The error line number is where compiler noticed the problem, not where the missing ; is!
3. "expected ')' before..." or "expected '}' before..."
error: expected ')' before ';'
error: expected '}' at end of inputMeaning: Mismatched parentheses or braces.
Common Patterns:
// WRONG - unmatched parenthesis
if (x > 5 { // missing )
}
// WRONG - unmatched brace
void setup() {
Serial.begin(115200);
// missing closing }
// CORRECT
if (x > 5) {
}
void setup() {
Serial.begin(115200);
}Debugging Tip: Use IDE auto-format (Ctrl+T) to reveal mismatches.
4. "invalid conversion from 'const char*' to 'char*'"
error: invalid conversion from 'const char*' to 'char*'Meaning: Trying to modify a string literal (which is read-only).
// WRONG
char* message = "Hello"; // string literals are const!
message[0] = 'h'; // can't modify!
// CORRECT (if you need to modify)
char message[] = "Hello"; // creates modifiable copy
message[0] = 'h'; // OK!
// CORRECT (if read-only is fine)
const char* message = "Hello";5. "no matching function for call to..."
error: no matching function for call to 'SomeClass::method(int, int, int)'
note: candidate: void SomeClass::method(int, int)Meaning: Function called with wrong number or type of arguments.
// WRONG - too many arguments
myServo.write(90, 100); // write() takes only 1 argument!
// CORRECT
myServo.write(90);Read the "note:" lines - they show what arguments ARE accepted.
6. "multiple definition of 'xyz'"
error: multiple definition of 'xyz'Meaning: Same variable/function defined in multiple files.
Fixes:
// In header file (.h), use 'extern':
extern int globalVar; // declaration only
// In ONE .cpp file, define it:
int globalVar = 0; // actual definitionOr for functions in header:
// WRONG - defined in header, included multiple times
int add(int a, int b) { return a + b; }
// CORRECT - use 'inline'
inline int add(int a, int b) { return a + b; }7. "'xyz' does not name a type"
error: 'WiFiClient' does not name a typeMeaning: Class/type not recognized.
Fixes:
| Board | Library | Include |
| ESP32 | WiFi | #include <WiFi.h> |
| ESP8266 | WiFi | #include <ESP8266WiFi.h> |
| Arduino + WiFi Shield | WiFi | #include <WiFi.h> |
// WRONG
WiFiClient client; // WiFiClient unknown!
// CORRECT for ESP32
#include <WiFi.h>
WiFiClient client;8. "redefinition of 'xyz'"
error: redefinition of 'int x'Meaning: Variable declared twice in same scope.
// WRONG
int count = 0;
int count = 0; // redefinition!
// WRONG in loops
for (int i = 0; i < 10; i++) {
int i = 5; // shadows loop variable!
}
// CORRECT
int count = 0; // declare once
count = 5; // assign without 'int'Upload Errors
9. "avrdude: stk500_recv(): programmer is not responding"
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt X of 10: not in syncMeaning: Arduino IDE can't communicate with the board.
Fixes (try in order):
- ✅ Correct board selected? (Tools → Board)
- ✅ Correct port selected? (Tools → Port)
- ✅ USB cable is data cable (not charge-only)?
- ✅ Try different USB port
- ✅ Nothing connected to pins 0/1 (TX/RX)?
- ✅ Press reset button during upload
- ✅ Install/reinstall USB drivers
10. "A fatal error occurred: Failed to connect to ESP32"
A fatal error occurred: Failed to connect to ESP32:
Timed out waiting for packet headerMeaning: ESP32 not entering bootloader mode.
Fix: Hold BOOT button while uploading:
- Click Upload in IDE
- When "Connecting..." appears, hold BOOT button
- Release when upload starts
- Some boards: hold BOOT, press EN/RST, release BOOT
11. "Sketch too big"
Sketch too big; see https://support.arduino.cc/...
Sketch uses 34816 bytes (107%) of program storage space.
Maximum is 32256 bytes.Meaning: Program doesn't fit in flash memory.
Fixes:
// 1. Use F() macro for strings (saves RAM + sometimes Flash)
Serial.println(F("This string in flash")); // instead of RAM
// 2. Remove unused libraries
// Each #include adds code even if not used
// 3. Use smaller data types
uint8_t x = 5; // instead of int (2 bytes saved)
// 4. Choose board with more flash (ESP32 has 4MB vs Arduino's 32KB)Library Errors
12. "fatal error: xyz.h: No such file or directory"
fatal error: Adafruit_BME280.h: No such file or directoryMeaning: Library not installed.
Fix:
- Sketch → Include Library → Manage Libraries
- Search for library name
- Click Install
- If not in Library Manager: download ZIP, Sketch → Include Library → Add .ZIP Library
13. "exit status 1 / Error compiling for board..."
exit status 1
Error compiling for board Arduino Uno.Meaning: Generic error - scroll UP to find the real error message.
The actual error is ABOVE this line! Look for lines containing error:.
Type Errors
14. "cannot convert 'String' to 'const char*'"
error: cannot convert 'String' to 'const char*'Meaning: Function expects C-string but got Arduino String.
// WRONG
String myString = "hello";
someFunction(myString); // if someFunction expects const char*
// CORRECT
String myString = "hello";
someFunction(myString.c_str()); // convert to C-string15. "invalid operands to binary expression"
error: invalid operands of types 'const char*' and 'const char*' to binary 'operator+'Meaning: Can't use + with C-strings.
// WRONG
const char* a = "hello";
const char* b = " world";
const char* c = a + b; // doesn't work!
// CORRECT - use String
String a = "hello";
String b = " world";
String c = a + b; // works!
// Or use snprintf
char c[20];
snprintf(c, sizeof(c), "%s%s", a, b);Quick Reference Table
| Error Contains | Likely Problem | Quick Fix |
| "not declared" | Typo or missing include | Check spelling, add #include |
| "expected ';'" | Missing semicolon | Add ; to line ABOVE error |
| "expected ')'" | Unmatched parenthesis | Count ( and ) |
| "expected '}'" | Unmatched brace | Count { and } |
| "no matching function" | Wrong arguments | Check function signature |
| "does not name a type" | Missing library | Add #include |
| "multiple definition" | Defined in multiple files | Use extern |
| "stk500" | Upload failed | Check board/port/cable |
| "No such file" | Library not installed | Install via Library Manager |
| "too big" | Out of flash | Use F(), remove unused code |
Debugging Strategy
- Read the FIRST error (later ones often cascade)
- Note the FILE and LINE NUMBER
- Look at that line AND the line above
- Check for common patterns above
- Fix ONE error at a time, recompile
- Repeat until clean
Shared Output Contract
Use the shared Arduino skill contract: state assumptions, required tools and versions, implementation steps, tests/evidence by proof stage, known limitations, and recovery/security notes.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

