brave/top-crashers
"Get top crashers from Brave's Backtrace crash reporting. Shows crash signatures, stacks, platforms, versions, channel breakdown, code origin, and crashing, top crashes, crash analysis, regression crashers, new crashes."
npx skills add https://github.com/brave/brave-core --skill top-crashers
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:
BACKTRACE_API_KEY must be set. Create a token with query:post capability in Backtrace project settings.
BACKTRACE_PROJECT should be set to the Backtrace project name (or pass --project).
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.
python3 ./.claude/skills/top-crashers/top-crashers.py --project "$BACKTRACE_PROJECT" --format json [parsed flags]
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:
crash or DumpWithoutCrashing. DumpWithoutCrashing is a non-fatal
diagnostic that does NOT affect users.
is in Brave's codebase (src/brave) or upstream Chromium (src/). Only
Brave code crashes are directly fixable by the Brave team.
Release, Older). Highlight whether the crash affects current Nightly
since that represents the latest master code.
Presentation priorities:
actionable
dumps) that affect Nightly (current code) in Brave code
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.
"the 8th top crasher"
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"# 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
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 thedirectory is found, with namespace heuristic fallback
Take brave/top-crashers from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.