npx skills add ...
npx skills add brave/brave-core --skill top-crashers
npx skills add brave/brave-core --skill top-crashers
"Get top crashers from Brave's Backtrace crash reporting. Shows crash signatures, stacks, platforms, versions, channel breakdown, code origin, and regression detection. Triggers on: top crashers, crash report, what's crashing, top crashes, crash analysis, regression crashers, new crashes."
Query Brave's Backtrace crash reporting instance for top crashers. Returns developer-actionable data including crash signatures, stack traces, platform/version breakdowns, channel mapping, code origin classification, and triage URLs.
PII-safe: Only aggregate data is output. Use the triage URLs for full crash details.
The BACKTRACE_API_KEY environment variable must be set with a token that has
query:post capability. The BACKTRACE_PROJECT environment variable should
also be set (or pass --project as an argument).
If not set, inform the user:
When invoked, run the top-crashers script and present the results to the user.
Map the user's request to script arguments:
| User says | Script flags |
|---|---|
| "top crashers" (no args) | --days 7 --limit 25 |
| "top 10 crashers" | --limit 10 |
| "crashers on Windows" | --platform Windows |
| "crashers on Mac" | --platform Darwin |
| "crashers on Linux" | --platform Linux |
| "crashers on Android" | --platform Android |
| "crashers in version 1.73" | --version 1.73. |
| "new crashers" or "crash regressions" | --new-only |
| "compare crashers" or "what's regressing" | --compare 2 |
| "crashers last 30 days" | --days 30 |
| "crashers since 2025-02-01" | --since 2025-02-01 |
| "worst crashers" | --order count (default) |
| "most recent crashers" | --order last-seen |
| "actual crashes" or "real crashes" | --crashes-only |
| "crashes on nightly" or "nightly crashers" | --channels nightly |
| "crashes on nightly and beta" | --channels nightly,beta |
| "release crashes" | --channels release |
| "brave code crashes" or "our crashes" | --brave-only |
| "what should we fix" or "actionable crashes" | --crashes-only --channels nightly |
If the user provides explicit flags (e.g.,
/top-crashers --compare 3 --platform Windows), pass them through directly.
Always use --format json when running programmatically so you can parse and
present the results. For a quick human-readable dump, use --format markdown
instead.
After running the script, present the results to the user in a clear format:
src/brave) or upstream Chromium (src/). Only
Brave code crashes are directly fixable by the Brave team.Presentation priorities:
When mentioning a crasher's rank in GitHub issues, PR descriptions, or comments,
never use #N syntax (e.g., #8). GitHub automatically converts #N into
a link to issue or PR number N, which is misleading.
This applies to issue titles, bodies, PR descriptions, and comments — anywhere GitHub renders markdown.
After presenting results, suggest relevant follow-up actions:
--compare"--crashes-only"--channels nightly, --channels nightly,beta,
etc."--brave-only"Location: ./.claude/skills/top-crashers/top-crashers.py
Output formats: markdown, json, ndjson, csv
Exit codes:
0: Success1: Auth/config error (missing API key or project)2: Network/API error3: No results matching criteriaFull flag reference:
| Flag | Description | Default |
|---|---|---|
--project | Backtrace project name | BACKTRACE_PROJECT env |
--days | Lookback window in days | 7 |
--since | ISO date start (alternative to --days) | — |
--limit | Max crash groups to return | 25 |
--min-count | Minimum crash count threshold | 10 |
--format | Output format | markdown |
--platform | Filter by platform | — |
--version | Filter by version prefix | — |
--channel | Filter by channel | — |
--order | Sort: count, last-seen, rate | count |
--frames | Stack frames to show | 8 |
--new-only | Only first-seen-in-window crashers | false |
--crashes-only | Exclude DumpWithoutCrashing entries | false |
--channels | Filter by channels (comma-separated: nightly,beta,release, or 'all') | all |
--brave-only | Only crashes in Brave code | false |
--brave-src | Path to src/brave for code origin grep | auto-discovered |
--compare | Regression: compare N days vs prior N | — |
--dry-run | Print query without executing | false |
--verbose | Print timing/debug info | false |
Each crash group includes these allowlisted fields only (PII-safe):
"crash" (actual user-impacting) or "dump"
(DumpWithoutCrashing diagnostic)"brave" (Brave-specific code), "chromium" (upstream), or
"mixed"TopFrame (Classifier) on Platform Version{"nightly": N, "beta": N, "release": N, "older": N}In compare mode, also:
Brave versions follow the format
CHROMIUM_MAJOR.BRAVE_MAJOR.BRAVE_MINOR.BRAVE_PATCH:
145.1.87.42 = Brave 1.87.42 on Chromium 145BACKTRACE_API_KEY with query:post capabilitysrc/brave when the
directory is found, with namespace heuristic fallback# Default: top 25 crashers in last 7 days
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT"
# Top 10, JSON output for parsing
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --format json --limit 10
# Real crashes only (exclude DumpWithoutCrashing)
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --crashes-only
# Crashes affecting current Nightly
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --channels nightly
# Crashes on Nightly and Beta
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --channels nightly,beta
# Brave-specific code crashes only
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --brave-only
# Actionable crashes: real crashes on Nightly in Brave code
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --crashes-only --channels nightly --brave-only
# Windows-only crashers
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --platform Windows
# Regression detection: compare last 2 days vs prior 2 days
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --compare 2
# Only new crashers (first seen within lookback window)
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --new-only
# Specific version, sorted by recency
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --version 1.73. --order last-seen
# Last 30 days, CSV for spreadsheet
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --format csv --days 30
# Dry run to see the query without executing
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --dry-run
# NDJSON for piping to jq
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --format ndjson --limit 5 | jq .fingerprint