Why Use This
This skill provides specialized capabilities for nexus-labs-automation's codebase.
Use Cases
- Developing new features in the nexus-labs-automation repository
- Refactoring existing code to follow nexus-labs-automation standards
- Understanding and working with nexus-labs-automation's codebase structure
Install Guide
2 steps - 1
- 2
Install inside Ananke
Click Install Skill, paste the link below, then press Install.
https://github.com/nexus-labs-automation/mobile-observability/tree/main/skills/crash-instrumentation
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Updated At Jan 15, 2026, 08:45 AM
Skill Stats
SKILL.md 100 Lines
Total Files 1
Total Size 0 B
License NOASSERTION
---
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:
```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.