observability-and-instrumentation

Instruments Android and Flutter apps with logging, analytics, crash reporting, and performance traces.

Updated Jun 13, 2026
One-click install
npx skills add https://github.com/22Teikk/22Teikk-Agent-Skills-Hub --skill observability-and-instrumentation-22teikk
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: observability-and-instrumentation
Source: https://github.com/22Teikk/22Teikk-Agent-Skills-Hub/tree/main/core/skills/observability-and-instrumentation
Command: npx skills add https://github.com/22Teikk/22Teikk-Agent-Skills-Hub --skill observability-and-instrumentation-22teikk

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Mobile apps run on thousands of fragmented devices under unstable networks, making bugs and performance regressions impossible to reproduce locally. This Skill provides guidelines for instrumenting Android and Flutter code so crashes, errors, user behavior, and latency are visible and diagnosable remotely. ## Core Features & Use Cases - Release-safe logging: Configure Timber on Android or Talker on Flutter so debug logs are stripped in release builds while errors still reach the crash reporter. - Crash diagnostics: Attach Crashlytics custom keys and breadcrumbs to captured exceptions so non-fatals are searchable and reproducible. - Analytics and performance traces: Log structured analytics events with bounded cardinality and measure latency with Firebase Performance custom traces and OkHttp/Dio interceptors. - Use Case: When a user reports a failed payment, you can query Crashlytics for the exception filtered by custom keys like payment provider and retry count, then check analytics funnels and network traces to pinpoint whether the cause was a timeout, API error, or cancellation. ## Quick Start Ask the agent to instrument the checkout flow with Talker logging, Crashlytics custom keys on captured exceptions, and a Firebase Analytics event for purchase retries.

Frequently Asked Questions about observability-and-instrumentation

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add logging to an Android app without leaking debug logs in release?▼

Use Timber and plant a DebugTree only when BuildConfig.DEBUG is true, with a custom release tree routing warnings and errors to Crashlytics. Timber.d calls are then stripped in release while Timber.e still reports errors.

How do I set up Talker logging in a Flutter app?▼

Initialize TalkerFlutter.init with safeMode set to !kDebugMode before runApp, attach TalkerDioLogger to your Dio instance, and set Bloc.observer to TalkerBlocObserver. Forward errors to Crashlytics or Sentry in FlutterError.onError and PlatformDispatcher.instance.onError.

What is the difference between Crashlytics custom keys and breadcrumbs?▼

Custom keys are key-value pairs attached to a recorded exception, such as payment provider or retry count, making reports searchable. Breadcrumbs are sequential log messages recorded via Crashlytics log() that reconstruct the user's path leading up to the error.

Can I log full network responses for debugging?▼

No. Logging full request or response bodies can leak tokens, passwords, and other PII into Crashlytics or analytics servers, violating privacy policies. Log only metadata like status codes and never Authorization headers.

Why should analytics events avoid user IDs as parameter values?▼

Analytics tools aggregate events by parameter values, so unbounded values like user IDs or timestamps explode cardinality and break reporting. Group values into discrete categories such as network type or retry count ranges.

When should I not use this instrumentation skill?▼

Do not use it for local CPU or memory profiling during development, which belongs to profiler tools and Macrobenchmark, or for Play Store launch checklists and rollout rules. It covers runtime telemetry, not local benchmarking or release management.