agents/skills/bisect/SKILL.md
Find which commit introduced a bug using git bisect with automatic test verification. Use when tracking down which commit introduced a bug.
npx skillsauth add drn/dots bisectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Find the exact commit that introduced a bug using binary search with automatic test verification.
$ARGUMENTS - Required: a test command to verify the bug (e.g., "go test ./pkg/..." or "npm test"), or a description of the bug to investigate manuallygit branch --show-currentgit status --shortgit log --oneline -50 2>/dev/null | head -50find . -maxdepth 1 \( -name go.mod -o -name Gemfile -o -name package.json -o -name Cargo.toml -o -name pyproject.toml \) 2>/dev/null | head -5git describe --tags --abbrev=0 2>/dev/null | head -1git status --short shows uncommitted changes, offer to stash them with git stash push -m "bisect: stashing before bisect". If the user declines, stop and tell them to commit or stash first.$ARGUMENTS is empty, ask the user: "What test command should I run to detect the bug? Or describe the bug and I will check each commit manually."The "bad" commit is HEAD (current state where the bug exists).
For the "good" commit, ask the user or infer:
git bisect start
git bisect bad HEAD
git bisect good <good-commit>
Report how many commits are in the range and the estimated number of steps (log2).
IF the range exceeds 1000 commits, warn the user: "This is a large range (<N> commits, ~<steps> steps). Consider narrowing the boundaries."
IF the user provided a test command:
git bisect run <test-command> for automatic bisection.IF the user described the bug (manual mode):
git bisect good or git bisect bad based on findings.git bisect reset, report "Bisect exceeded 20 steps — likely inconclusive. Consider narrowing the range." and stop.Once bisect identifies the offending commit:
git bisect reset to restore the original state.git stash pop.git show <hash> --stat
git show <hash>
git log --merges --ancestry-path <hash>..HEAD --oneline
## Bisect Result
**Offending commit:** <hash>
**Author:** <name> (<date>)
**Subject:** <commit message>
### Changed files
<list of files changed>
### Diff
<relevant diff excerpts>
### Related
- Merge commit: <if found>
- PR: <if identifiable from merge commit message>
Verify that bisect state is fully cleaned up:
git bisect reset (if not already done)development
Walk every unresolved review thread on a PR, triage each one, reply with a rationale of whether or not the comment will be acted upon, make the code change if warranted, and mark the thread resolved. Use when the user asks to address only the open PR comments without re-running CI, respond to review feedback, resolve review threads, or clear bot comments on a PR.
tools
Iteratively run /rereview, fix the findings, and loop until reviewers approve clean. Use for iterative automated review, when you want /rereview to loop until clean, or for a paranoid pre-merge review that auto-addresses every blocker.
development
Generate self-contained HTML visualizations with Plannotator theming. Use for implementation plans, PR explainers, architecture diagrams, data tables, slide decks, and any visual explanation of technical concepts. Plans and PR explainers follow Plannotator's prescriptive approach; all other visual content delegates to nicobailon/visual-explainer.
development
Create reviewed Codex goal setup packages for long-running /goal work. Use when the user wants to turn an idea, backlog, project mission, or vague objective into durable goal files under a project goals slug folder, with Plannotator review gates for brief, narrative plan with acceptance criteria, verification, blockers, and the final /goal prompt.