error-interpretation — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited error-interpretation (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Agents with this skill can diagnose failures methodically by reading what the system is actually telling them. Without it, agents fall into shotgun debugging -- trying random fixes, changing multiple things at once, and hoping something sticks. A skilled agent reads the error, forms a hypothesis, and verifies it before writing a single line of corrective code.
This sounds obvious but is the most commonly skipped step. Before doing anything:
TypeError, ECONNREFUSED, HTTP 403, exit code 137).# Example: Don't just see "TypeError". Read the whole thing.
TypeError: Cannot read properties of undefined (reading 'map')
at renderList (src/components/UserList.tsx:14:22)
at processChild (node_modules/react-dom/cjs/react-dom.development.js:1234:12)
# What to extract:
# Type: TypeError
# Message: Cannot read properties of undefined (reading 'map')
# Where: src/components/UserList.tsx, line 14, column 22
# What: Something is undefined when .map() is called on itStack traces list frames from most recent call to oldest. Your job is to find the boundary between your code and framework/library code.
| Frame Type | How to Identify | What to Do |
|---|---|---|
| Your code | File path is in src/, app/, lib/, or your project directories. | This is where the bug lives. Start here. |
| Framework code | Path is in node_modules/, standard library, or runtime internals. | Usually not the bug. Tells you what the framework was doing when your code failed. |
| Generated code | Path references .next/, dist/, build/, __pycache__/. | Map back to the source file. Don't edit generated code. |
Read from the top. The first frame in your code is almost always the place to investigate.
Different categories demand different investigation strategies:
| Category | Examples | First Move |
|---|---|---|
| Syntax | SyntaxError, IndentationError, unexpected token | Go to the exact line. Look for typos, missing brackets, bad indentation. |
| Type | TypeError, AttributeError, ClassCastException | Check what value is actually present vs. what was expected. Add a log or breakpoint one line above. |
| Runtime | RangeError, IndexError, NullPointerException | Trace the data flow. Where did the bad value originate? |
| Network | ECONNREFUSED, TimeoutError, HTTP 4xx/5xx | Check if the target service is running. Verify URL, port, auth. |
| Permission | EACCES, PermissionError, HTTP 401/403 | Check file permissions, API keys, IAM roles, token expiry. |
| Resource | ENOMEM, exit code 137, OOMKilled | The process ran out of memory or disk. This is an environment issue, not a code bug. |
Shotgun debugging is changing things at random until the error disappears. It wastes time and often introduces new bugs. Instead, follow this discipline:
1. Read the error message (competency 1).
2. Locate the failing line (competency 2).
3. Form ONE hypothesis about what is wrong.
4. Identify ONE change that would confirm or refute the hypothesis.
5. Make that change and re-run.
6. If the hypothesis was wrong, revert and form a new one.Never make two changes at once. If you change two things and the error goes away, you do not know which change fixed it -- and one of them may have introduced a latent bug.
Translate the error into a plain-language hypothesis before writing any fix:
| Error Message | Hypothesis |
|---|---|
Cannot read properties of undefined (reading 'map') | The variable I'm calling .map() on is undefined. It was probably not initialized, or the API returned an unexpected shape. |
ECONNREFUSED 127.0.0.1:5432 | The PostgreSQL server is not running on localhost, or it is on a different port. |
Module not found: Can't resolve './utils' | The file utils does not exist at that relative path, or the extension is wrong, or the file was moved. |
403 Forbidden | The credentials are missing, expired, or lack the required scope for this endpoint. |
A hypothesis is testable. "Something is broken" is not a hypothesis. "The users prop is undefined because the parent component does not pass it" is.
| Failure | Symptom | Correction |
|---|---|---|
| Shotgun debugging | Multiple unrelated changes in one attempt; "let me try this" without rationale. | One hypothesis, one change, one test run. Revert if wrong. |
| Ignoring the message | Agent says "I see an error" but never quotes or analyzes it. | Always paste and parse the full error before acting. |
| Fixing the wrong frame | Agent edits framework or generated code instead of source. | Trace the stack to the first frame in project source code. |
| Treating symptoms | Error goes away but root cause remains (e.g., wrapping in try/catch without handling). | Ensure the fix addresses why the error occurs, not just that it occurs. |
| Stale hypothesis | Agent keeps pursuing the same theory despite contradicting evidence. | After two failed attempts on one theory, discard it and re-read the error. |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.