Diagnosing Bugs
getsentry/sentry-react-native
A discipline for hard bugs, flaky tests, CI hangs, native crashes, and performance regressions in this SDK.
A discipline for hard bugs, flaky tests, CI hangs, and performance regressions in this SDK.
$ npx skills add getsentry/sentry-dart --skill diagnosing-bugs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install getsentry/sentry-dart diagnosing-bugs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/getsentry/sentry-dart.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/diagnosing-bugs .claude/skills/diagnosing-bugs && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "diagnosing-bugs" agent skill from https://github.com/getsentry/sentry-dart/tree/main/.agents/skills/diagnosing-bugs into .claude/skills/diagnosing-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "diagnosing-bugs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/getsentry/sentry-dart/tree/main/.agents/skills/diagnosing-bugsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add getsentry/sentry-dart --skill diagnosing-bugs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install getsentry/sentry-dart diagnosing-bugs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/getsentry/sentry-dart.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/diagnosing-bugs .agents/skills/diagnosing-bugs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "diagnosing-bugs" agent skill from https://github.com/getsentry/sentry-dart/tree/main/.agents/skills/diagnosing-bugs into .agents/skills/diagnosing-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "diagnosing-bugs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add getsentry/sentry-dart --skill diagnosing-bugs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install getsentry/sentry-dart diagnosing-bugs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/getsentry/sentry-dart.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/diagnosing-bugs .cursor/skills/diagnosing-bugs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "diagnosing-bugs" agent skill from https://github.com/getsentry/sentry-dart/tree/main/.agents/skills/diagnosing-bugs into .cursor/skills/diagnosing-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "diagnosing-bugs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/getsentry/sentry-dart.git --path .agents/skills/diagnosing-bugs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add getsentry/sentry-dart --skill diagnosing-bugs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install getsentry/sentry-dart diagnosing-bugs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/getsentry/sentry-dart.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/diagnosing-bugs .gemini/skills/diagnosing-bugs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "diagnosing-bugs" agent skill from https://github.com/getsentry/sentry-dart/tree/main/.agents/skills/diagnosing-bugs into .gemini/skills/diagnosing-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "diagnosing-bugs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install getsentry/sentry-dart diagnosing-bugsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add getsentry/sentry-dart --skill diagnosing-bugs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/getsentry/sentry-dart.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/diagnosing-bugs .github/skills/diagnosing-bugs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "diagnosing-bugs" agent skill from https://github.com/getsentry/sentry-dart/tree/main/.agents/skills/diagnosing-bugs into .github/skills/diagnosing-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "diagnosing-bugs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add getsentry/sentry-dart --skill diagnosing-bugs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install getsentry/sentry-dart diagnosing-bugs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/getsentry/sentry-dart.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/diagnosing-bugs .opencode/skills/diagnosing-bugs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "diagnosing-bugs" agent skill from https://github.com/getsentry/sentry-dart/tree/main/.agents/skills/diagnosing-bugs into .opencode/skills/diagnosing-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "diagnosing-bugs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
diagnosing-bugsA discipline for hard bugs, flaky tests, CI hangs, and performance regressions in this SDK.
Diagnosing Bugs is an agent skill from getsentry/sentry-dart, published by the product's own GitHub organization. A discipline for hard bugs, flaky tests, CI hangs, and performance regressions in this SDK. Use when the user says "diagnose" or "debug this", reports something broken/throwing/failing/hanging/slow, or a test is flaky. Builds a tight, red-capable feedback loop before hypothesizing.
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Failing and flaky tests and Cross-platform mobile apps. It works with Sentry and Flutter. The repository describes itself as: Sentry SDK for Dart and Flutter. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 96d6367. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
flutterdartgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Diagnosing Bugs loads about 1.7k tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 1,014 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from getsentry/sentry-dart at commit 96d6367, republished under its MIT licence (© getsentry). 1,014 words, ~1,714 tokens.
.claude/skills/diagnosing-bugs/SKILL.md (or your agent's skills folder).A discipline for hard bugs. Skip a phase only when you can say why.
The whole skill is Phase 1: get a loop that goes red on this bug. Everything after is mechanical once you have it. If you catch yourself reading code to form a theory before that loop exists, stop — jumping to a hypothesis without a red-capable loop is the exact failure this prevents.
For trivial bugs with an obvious fix and an obvious test, skip this and just write the failing test — this skill is for the bugs that resist.
A tight loop is fast, deterministic, and goes red on this bug. Build one and the bug is 90% solved; bisection, hypothesis-testing, and instrumentation all just consume it. Be aggressive and creative here — spend disproportionate effort.
dart test path/to/test.dart or flutter test, unit or widget, at whatever seam reaches the bug. Tightest loop there is.fakeAsync harness — for timer, microtask, and timing-dependent bugs (most flakes). Pin the clock via options.clock, elapse time deterministically.testWidgets harness — for Flutter UI bugs: pump the widget tree, drive the gesture, assert on the tree (e.g. a hit-test or navigation regression).flutter test integration_test/... when the bug crosses the native (JNI/FFI) boundary, which cannot be faked (see packages/flutter/AGENTS.md).void main() that exercises the bug path with one call and mocked deps.git bisect run it.Once you have a loop, treat it as a product and tighten it:
options.clock), use fakeAsync, seed any randomness, avoid real network/filesystem (per test-guidelines). A 2-second deterministic loop beats a 30-second flaky one.For non-deterministic bugs the goal is a high enough reproduction rate to debug against — a 50% flake is debuggable, 1% is not. Keep raising the rate.
Phase 1 is done when you can name one command — a test invocation or script path — that you have already run at least once (paste the invocation and its output), and that is:
No red-capable command, no Phase 2.
Say so explicitly, list what you tried, and ask the user for: access to an environment that reproduces it, a captured artifact (envelope dump, log, CI run, screen recording with timestamps), or permission for temporary instrumentation. Do not hypothesise without a loop.
Run the loop, watch it go red. Confirm it produces the failure mode the user described — not a nearby one (wrong bug = wrong fix). Then shrink the repro to the smallest scenario that still goes red: cut inputs, callers, config, and steps one at a time, re-running after each cut. Done when every remaining element is load-bearing — removing any one turns it green. The minimal repro shrinks the hypothesis space and becomes the regression test.
Generate 3–5 ranked, falsifiable hypotheses before testing any — a single hypothesis anchors you on the first plausible idea. Each must state its prediction: "If X is the cause, then changing Y makes the bug vanish." If you can't state the prediction, it's a vibe — sharpen or discard it. Show the ranked list to the user before testing; they often re-rank it instantly ("we just changed #3"). Don't block on it if they're away.
Each probe maps to one prediction from Phase 3. Change one variable at a time.
[DEBUG-a4f2] so cleanup is one grep.Stopwatch, a timing harness, DevTools, the observatory), then bisect. Measure first, fix second.Write the regression test before the fix — but only at a correct seam, one that exercises the real bug pattern as it occurs at the call site (per test-guidelines). A too-shallow seam (a unit test that can't replicate the chain that triggered it) gives false confidence. If no correct seam exists, that is itself the finding — note it; the architecture is preventing the bug from being locked down.
With a correct seam: turn the minimised repro into a failing test, watch it fail, apply the fix, watch it pass, then re-run the Phase 1 loop against the original un-minimised scenario.
Before declaring done:
[DEBUG-…] instrumentation removed (grep the prefix)Then ask: what would have prevented this bug? If the answer is architectural — no good test seam, tangled callers, a shallow module hiding the real bug behind it — hand off to the design-first skill with the specifics. Make that call after the fix is in, when you know the most.
© getsentry, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/diagnosing-bugs of getsentry/sentry-dart.
Open the folder on GitHubat commit 96d6367
Diagnosing Bugs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Diagnosing Bugs this skillgetsentry/sentry-dart | 873 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Diagnosing Bugsgetsentry/sentry-react-native | 1.8k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Flutter TestingMADTeacher/mad-agents-skills | 110 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Testingevanca/flutter-ai-rules | 647 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Test Guidelinesgetsentry/sentry-react-native | 1.8k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Frb Fix CIfzyzcjy/flutter_rust_bridge | 5.4k | — | ~4.4k | Automated safety check: Pass | MIT |
getsentry/sentry-react-native
A discipline for hard bugs, flaky tests, CI hangs, native crashes, and performance regressions in this SDK.
MADTeacher/mad-agents-skills
Write, fix, review, debug, and validate Flutter tests for apps, packages, and plugins.
evanca/flutter-ai-rules
A skill your agent uses when writing or reviewing Flutter/Dart tests (unit, widget, golden), fixing flaky tests, adding coverage, or choosing between unit and widget tests.
getsentry/sentry-react-native
Enforce Sentry React Native SDK test conventions for naming, structure, mocking, and fixtures with Jest.
fzyzcjy/flutter_rust_bridge
A skill your agent uses when CI fails in flutterrustbridge - before deep investigation
VeryGoodOpenSource/vgv-ai-flutter-plugin
Drives a Dart or Flutter package fully green through a verify-fix-rerun loop across four gates: analyze, format, test, coverage.
getsentry/sentry-dart
Enforce Sentry Dart/Flutter SDK code guidelines for implementation, refactoring, and review.
getsentry/sentry-dart
Enforce Sentry Dart/Flutter SDK test conventions for naming, structure, and fixtures.
getsentry/sentry-dart
Shape non-trivial work before writing it — decide the modules, the seams, and the public API surface up front.
getsentry/sentry-dart
Three-axis review of the branch diff — Standards (this repo's documented standards + public API surface), Spec (the originating Linear issue / PR), and Correctness (runtime bugs + the SDK threat…
Categories
A discipline for hard bugs, flaky tests, CI hangs, and performance regressions in this SDK. Diagnosing Bugs is an agent skill from getsentry/sentry-dart, published by the product's own GitHub organization. A discipline for hard bugs, flaky tests, CI hangs, and performance regressions in this SDK.
Diagnosing Bugs fits situations like: the user says diagnose; reports something broken/throwing/failing/hanging/slow; A test is flaky.
Run `npx skills add getsentry/sentry-dart --skill diagnosing-bugs -a claude-code`. Or copy the skill folder (.agents/skills/diagnosing-bugs in getsentry/sentry-dart) into .claude/skills/diagnosing-bugs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add getsentry/sentry-dart --skill diagnosing-bugs -a codex`. Or copy the skill folder (.agents/skills/diagnosing-bugs in getsentry/sentry-dart) into .agents/skills/diagnosing-bugs in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add getsentry/sentry-dart --skill diagnosing-bugs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/diagnosing-bugs, .gemini/skills/diagnosing-bugs, .github/skills/diagnosing-bugs and .opencode/skills/diagnosing-bugs in your project.
Going by SKILL.md and its folder, Diagnosing Bugs needs the command-line tools its instructions call (flutter, dart and git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Diagnosing Bugs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Diagnosing Bugs: Diagnosing Bugs (getsentry/sentry-react-native, 1.8k stars), Flutter Testing (MADTeacher/mad-agents-skills, 110 stars), Testing (evanca/flutter-ai-rules, 647 stars) and Test Guidelines (getsentry/sentry-react-native, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
getsentry (a GitHub organization, an official publisher) maintains it in getsentry/sentry-dart, which has 873 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 7, 2026.
Source: getsentry/sentry-dart on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.