Claude Code Plugins

Community-maintained marketplace

Feedback
6
0

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

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

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:

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:

// 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'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.