Agent skill

crash-instrumentation

Set up crash instrumentation with actionable context. Use when configuring crash capture, error boundaries, or breadcrumb strategies.

Stars 108
Forks 11

Install this agent skill to your Project

npx add-skill https://github.com/nexus-labs-automation/mobile-observability/tree/main/skills/crash-instrumentation

SKILL.md

Crash Instrumentation

Capture crashes with the context needed to debug them.

Core Principle

A crash report without context is useless. Every crash should include:

Context Why Example
screen Where it happened "CheckoutScreen"
job_name What user was doing "checkout"
job_step Where in the flow "payment"
breadcrumbs What led here Last 20 user actions
app_version Release correlation "1.2.3"
user_segment Who's affected "premium", "trial"

Breadcrumb Strategy

Breadcrumbs are the trail leading to a crash. Capture:

Category What to Log Example
navigation Screen transitions "HomeScreen → CartScreen"
user Taps, inputs, gestures "Tapped checkout button"
network API calls (not payloads) "POST /api/orders started"
state Key state changes "Cart updated: 3 items"
error Non-fatal errors "Retry #2 for payment"

Limit: Keep last 20-50 breadcrumbs. More is noise.

Error Boundaries

Catch errors before they crash the app:

swift
// iOS - capture context before crash
func captureError(_ error: Error, screen: String, job: String?) {
    Observability.captureError(error, context: [
        "screen": screen,
        "job_name": job ?? "unknown",
        "session_duration": sessionDuration(),
        "memory_pressure": memoryPressure()
    ])
}
kotlin
// Android - uncaught exception handler
Thread.setDefaultUncaughtExceptionHandler { thread, throwable ->
    Observability.captureError(throwable, mapOf(
        "thread" to thread.name,
        "screen" to currentScreen,
        "job_name" to currentJob
    ))
    previousHandler?.uncaughtException(thread, throwable)
}

What NOT to Attach

Don't Why
Full stack traces in breadcrumbs Redundant, SDK captures this
User input text PII risk
Full request/response bodies Size limits, PII
Entire app state Unbounded, noise

Crash Types to Handle

Platform Type Instrumentation
iOS EXC_BAD_ACCESS Breadcrumbs, memory context
iOS SIGKILL (watchdog) Background task tracking
Android ANR Main thread breadcrumbs
Android OutOfMemoryError Memory tracking
React Native JS exceptions Error boundaries

Implementation

See references/crash-reporting.md for:

  • Platform-specific crash capture setup
  • Breadcrumb implementation patterns
  • Vendor SDK configuration

See skills/symbolication-setup for readable stack traces.

Didn't find tool you were looking for?

Be as detailed as possible for better results