nexus-labs-automation

crash-instrumentation

@nexus-labs-automation/crash-instrumentation
nexus-labs-automation
98
8 forks
Updated 1/18/2026
View on GitHub

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

Installation

$skills install @nexus-labs-automation/crash-instrumentation
Claude Code
Cursor
Copilot
Codex
Antigravity

Details

Pathskills/crash-instrumentation/SKILL.md
Branchmain
Scoped Name@nexus-labs-automation/crash-instrumentation

Usage

After installing, this skill will be available to your AI coding assistant.

Verify installation:

skills list

Skill Instructions


name: crash-instrumentation description: Set up crash instrumentation with actionable context. Use when configuring crash capture, error boundaries, or breadcrumb strategies. triggers:

  • "breadcrumb strategy"
  • "capture crashes"
  • "crash context"
  • "crash reporting"
  • "debug crashes"
  • "error boundaries" priority: 1

Crash Instrumentation

Capture crashes with the context needed to debug them.

Core Principle

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

ContextWhyExample
screenWhere it happened"CheckoutScreen"
job_nameWhat user was doing"checkout"
job_stepWhere in the flow"payment"
breadcrumbsWhat led hereLast 20 user actions
app_versionRelease correlation"1.2.3"
user_segmentWho's affected"premium", "trial"

Breadcrumb Strategy

Breadcrumbs are the trail leading to a crash. Capture:

CategoryWhat to LogExample
navigationScreen transitions"HomeScreen → CartScreen"
userTaps, inputs, gestures"Tapped checkout button"
networkAPI calls (not payloads)"POST /api/orders started"
stateKey state changes"Cart updated: 3 items"
errorNon-fatal errors"Retry #2 for payment"

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

Error Boundaries

Catch errors before they crash the app:

// 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()
    ])
}
// 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'tWhy
Full stack traces in breadcrumbsRedundant, SDK captures this
User input textPII risk
Full request/response bodiesSize limits, PII
Entire app stateUnbounded, noise

Crash Types to Handle

PlatformTypeInstrumentation
iOSEXC_BAD_ACCESSBreadcrumbs, memory context
iOSSIGKILL (watchdog)Background task tracking
AndroidANRMain thread breadcrumbs
AndroidOutOfMemoryErrorMemory tracking
React NativeJS exceptionsError 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.