Stack Trace Analyzer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Stack Trace Analyzer (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.
This skill directs the agent to read a stack trace, identify which frame is the true origin of the bug (not just where the error was thrown), explain what each relevant frame means in plain English, diagnose the root cause, and propose 2–3 concrete fixes ranked by likelihood. It works with JavaScript, TypeScript, Python, Java, Go, Rust, and most other common stack trace formats.
Use this when you have a crash report, a CI failure, or a wall of red text in your terminal and you want to understand it fast.
Copy this file to .agents/skills/stack-trace-analyzer/SKILL.md in your project root.
Then paste the stack trace and ask:
Include any relevant context: the action that triggered the error, environment details (Node version, browser, OS), and any recent code changes.
Add the "Prompt / Instructions" section below to your .cursorrules file. Then paste the stack trace into the chat.
Paste the full stack trace and the relevant source files into the chat, then include the instructions below. Codex benefits from seeing the actual source code so it can match line numbers to real code.
When given a stack trace, follow these steps:
TypeError, NullPointerException, panic, KeyError)## Error Summary
**Type:** [ErrorType]
**Message:** [Full error message]
**Runtime:** [Language/runtime/version]
## Frame Analysis
1. `[file:line]` — [What this function does and why it's on the stack]
2. `[file:line]` — ...
...
## Root Cause
[One sentence identifying the true origin of the bug.]
[2–4 sentences explaining the chain of events.]
## Suggested Fixes
### Fix 1 (Most Likely) — [Title]
[Concrete description of the change, with file/function/line reference.]
### Fix 2 — [Title]
[...]
### Fix 3 — [Title]
[...]
## Additional Notes
[Any warnings about obscured frames, missing source maps, async issues, etc.]Input to Agent:
"Use the Stack Trace Analyzer skill on this error:
>
`` TypeError: Cannot read properties of undefined (reading 'email') at formatUserDisplay (src/utils/format.ts:23:18) at UserCard (src/components/UserCard.tsx:41:12) at renderWithHooks (node_modules/react-dom/cjs/react-dom.development.js:14985:18) at mountIndeterminateComponent (node_modules/react-dom/cjs/react-dom.development.js:17811:13) at beginWork (node_modules/react-dom/cjs/react-dom.development.js:19049:16) ``"Output from Agent:
## Error Summary Type: TypeError Message: Cannot read properties of undefined (reading 'email') Runtime: Browser / React (react-dom development build)
>
## Frame Analysis 1.src/utils/format.ts:23—formatUserDisplaytried to read theundefined. 2.src/components/UserCard.tsx:41—UserCardcalledformatUserDisplaywith auserprop that wasundefinedat render time. 3. React internals — these frames are React mounting the component; not relevant to the bug.
>
## Root CauseUserCardis being rendered before itsuserprop is populated — likely because data is still loading from an async source when the component first mounts.
>
Theuserprop arrives asundefinedon the first render,formatUserDisplaydoes not guard against this, and accessingundefinedthrows immediately.
>
## Suggested Fixes
>
### Fix 1 (Most Likely) — Add a loading guard in UserCard Insrc/components/UserCard.tsx, returnnullor a skeleton UI whenuseris falsy:if (!user) return <Skeleton />. This prevents the component from trying to render before data is ready.
>
### Fix 2 — Add a null guard in formatUserDisplay Insrc/utils/format.ts:23, addif (!user?.email) return ''before accessing the property. This makes the utility defensive and prevents crashes from any caller.
>
### Fix 3 — Ensure the parent always passes a defined user Trace whereUserCardis used and confirm the parent component does not render it until the data fetch is complete. Adding auser &&check at the call site prevents the component from mounting with undefined data.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.