crash-analyst
Skill7 starsChanged 43 days agoMITView on GitHub
Analyze mobile crash reports from Crashlytics, Sentry, or raw logs: symbolicate iOS traces and deobfuscate Android ProGuard/R8 stacks, isolate the exception, and propose a code-level fix. Use when the user shares a stack trace, crash log, ANR, or crash-rate spike from an iOS, Android, React Native, or Flutter app.
In this repository83 other files it gives its agents.
- AGENTS.mdAGENTS.md
- accessibility-enforcerSkill
- access-policy-designerSkill
- adaptive-guardSkill
- agent-reviewerSkill
- anti-ai-slop-designSkill
- api-mock-designerSkill
- api-observability-plannerSkill
- app-store-reviewerSkill
- ask-first-act-laterSkill
- assumption-checkerSkill
- auth-flow-designerSkill
- b2b-founder-roadmapSkill
- brand-name-labSkill
- breaking-change-detectorSkill
- changelog-generatorSkill
- checkpoint-guardianSkill
- claude-style-codingSkill
- claw-integration-designSkill
- context-compressorSkill
- contract-first-designerSkill
- coolify-orchestratorSkill
- data-lineage-tracerSkill
- data-maskerSkill
- deep-link-architectSkill
- design-intelligenceSkill
- design-md-enforcerSkill
- ecosystem-apiSkill
- ecosystem-databaseSkill
- ecosystem-mobileSkill
- ecosystem-orchestrationSkill
- ecosystem-productSkill
- ecosystem-reasoningSkill
- ecosystem-securitySkill
- ecosystem-webSkill
- error-recoverySkill
- fth-design-crafterSkill
- geo-auditorSkill
- geo-optimizerSkill
- index-advisorSkill
- jev-orchestratorSkill
- mastermind-loggerSkill
- memory-ledgerSkill
- migration-strategistSkill
- mobile-perf-auditorSkill
- mobile-security-auditorSkill
- multi-brain-debateSkill
- multi-brain-expertsSkill
- multi-brain-scoreSkill
- multi-brainSkill
- offline-sync-designerSkill
- onboarding-designerSkill
- output-criticSkill
- parallel-plannerSkill
- pgbouncer-architectSkill
- plan-hardenerSkill
- plan-implement-verify-recoverSkill
- proje-analizcisiSkill
- project-analyzerSkill
- project-focus-firstSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 27
Before debugging, check if the report is readable.
- Very specific: line 28
Android: If the trace is full of a.b.c(), it is obfuscated.
- Very specific: line 29
iOS: If the trace is hex addresses (e.g., 0x00000001bcdefg), it is unsymbolicated.
- Distinctive: line 30
If the trace is unreadable, stop the analysis and instruct the developer on how to symbolicate it.
- Distinctive: line 44
Look at the metadata:
- Distinctive: line 102
OOM Warnings: If the exception is an OutOfMemoryError, immediately warn the user that the stack trace provided is likely misleading and …
- Distinctive: line 103
Background vs Foreground: Always check the app state.
≈ “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
Crash Analyst Protocol
A stack trace is a map to a bug, but on mobile, that map is often written in an obfuscated language. This skill interprets raw crash data (Crashlytics, Sentry, Bugsnag), identifies the true origin of the crash (which is often hidden deep in the trace), and provides actionable fixes.
Core principle: The top line of a stack trace is rarely the root cause. Follow the execution path.
Workflow
1. Validate the Crash Report (Is it symbolicated? Is it complete?)
2. Isolate the Core Exception type and the Failing Thread
3. Trace the Stack (Find the highest point of *user* code)
4. Correlate with OS/Device/App Version context
5. Provide Root Cause and MitigationStep 1: Report Validation
Before debugging, check if the report is readable.
- Android: If the trace is full of
a.b.c(), it is obfuscated. The developer needs to upload their ProGuard/R8mapping.txtto their crash reporter. - iOS: If the trace is hex addresses (e.g.,
0x00000001bcdefg), it is unsymbolicated. The developer needs to upload the.dSYMfile. - If the trace is unreadable, stop the analysis and instruct the developer on how to symbolicate it.
Step 2: Exception Isolation
Identify the type of crash:
- NullPointerException (NPE) / Fatal signal 11 (SIGSEGV): Trying to access memory that doesn't exist.
- OutOfMemoryError (OOM) / EXC_RESOURCE: The app used too much RAM. The stack trace here is usually useless because the crash happened at the last straw, not the root memory leak.
- IllegalStateException / Swift Runtime Failure: Framework rules were broken (e.g., modifying UI from a background thread).
- ANR (Application Not Responding): The main thread was blocked for > 5 seconds (Android) or watchdogs killed the app (iOS).
Step 3: Stack Tracing
Ignore the OS framework lines at the very top (e.g., android.app.ActivityThread.main or CoreFoundation).
- Scan down the stack trace until you find the first package name or namespace that belongs to the app developer's code. That is the injection point.
Step 4: Contextual Correlation
Look at the metadata:
- Did this only happen on iOS 15? (Likely an API deprecation/availability issue).
- Did this only happen on Samsung devices? (Vendor-specific OS changes).
- Is it happening in the background? (Background execution limits).
Step 5: Root Cause & Fix
Translate the stack trace into plain English and provide the code block to fix it.
Output Format
# 💥 Crash Analysis Report
## 🔍 Incident Summary
- **Exception:** `[e.g., java.lang.NullPointerException]`
- **Reason:** `[e.g., Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference]`
- **Affected OS/Devices:** `[e.g., Android 12+, All Manufacturers]`
## 🧵 Stack Trace Breakdown
The crash occurred in the `[Thread Name]` thread.
The origin point in your code is:
`com.myapp.utils.FormatHelper.formatNames(FormatHelper.kt:42)`
*Trace path:*
1. User clicked the "Save Profile" button (`ProfileFragment.kt:112`)
2. Formatter tried to parse the middle name.
3. The DB returns null instead of an empty string for missing middle names.
4. Calling `.length` on this null value caused the NPE.
## 🛠 Actionable Fix
### Fix: Safecall / Optional Chaining
Your `formatNames` function assumes the `middleName` parameter string will always be present. You must check for nullability.
**Code Fix:**
```kotlin
// Before (Crashing):
fun formatNames(first: String, middle: String, last: String) {
if (middle.length > 0) { ... }
}
// After (Safe):
fun formatNames(first: String, middle: String?, last: String) {
if (!middle.isNullOrEmpty()) { ... }
}
```When to Skip
- The User is asking about backend server crashes (use a standard backend debug skill).
Guardrails
- OOM Warnings: If the exception is an OutOfMemoryError, immediately warn the user that the stack trace provided is likely misleading and they need to use a memory profiler (like Android Studio Profiler or Xcode Allocations) to find the actual leak.
- Background vs Foreground: Always check the app state. A crash that says "Cannot execute background task" means the OS killed the app for taking too long, not necessarily a logic error in the code itself.
References
See references/EXAMPLES.md for a worked case.
🔗 Next Steps & Handoffs
<!-- BEGIN GENERATED: handoffs (generated from the ecosystem workflow map by build_ecosystems.py — do not edit by hand) -->Ecosystem: @ecosystem-mobile — Mobile App Domain.
Workflows:
- Post-Launch Monitoring Flow (
mobile-post-launch, step 1 of 3): next →@mobile-perf-auditor(optional).
Handoff contract: pass results to the next skill through an inline Handoff block in your reply with the fields skill, workflow, created_at, inputs, summary, and next (the handoff contract of @ecosystem-mobile). If a next skill is not installed, continue with its step from the ecosystem map, or install it with npx skills add fatih-developer/fth-skills --skill <name> after the user agrees.
<!-- END GENERATED: handoffs -->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.

