Agent skill

Bisect

by nwjs in nwjs/chromium.src

Bisect regressions or broken builds in the Chromium repository using deterministic binary search, checking out midpoint commits, syncing dependencies with gclient sync, compiling the target with…

BSD-3-ClauseAuto-check passedTesting & QA

Install Bisect

skills CLI
$ npx skills add nwjs/chromium.src --skill bisect -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install nwjs/chromium.src bisect --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/nwjs/chromium.src.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agents/skills/bisect .claude/skills/bisect && rm -rf skills-src

Use ~/.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/

Facts

Skill name
bisect
GitHub stars
160
Token cost
~1.6k tokens
SKILL.md length
586 words
Files
3
Skills in repo
64
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

Bisect regressions or broken builds in the Chromium repository using deterministic binary search, checking out midpoint commits, syncing dependencies with gclient sync, compiling the target with…

  • Works in 5 steps: Parameters & Initialization → Workspace Pre-Check (Uncommitted Changes) → Deterministic Midpoint Calculation → …
  • Tasks that involve Failing and flaky tests
  • SKILL.md covers 1. Parameters & Initialization, 2. Workspace Pre-Check…, 3. Deterministic Midpoint… and 4. Step-by-Step Bisection Loop, plus 1 more section
  • Calls git; reaches chromium.googlesource.com and chromium-review.googlesource.com

What it does

Bisect is an agent skill from nwjs/chromium.src. Bisect regressions or broken builds in the Chromium repository using deterministic binary search, checking out midpoint commits, syncing dependencies with gclient sync, compiling the target with autoninja, and querying the user for test results until the culprit commit is isolated.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `README.md`).

It sits in Testing & QA, covering Failing and flaky tests. It works with Git. The repository describes itself as: Chromium codebase with NW.js modifications. Based on https://chromium.googlesource.com/chromium/src.git. The licence is BSD-3-Clause.

When your agent uses it

  • Tasks that involve Failing and flaky tests

Example prompts

  • “/bisect”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Parameters & Initialization
  2. Workspace Pre-Check (Uncommitted Changes)
  3. Deterministic Midpoint Calculation
  4. Step-by-Step Bisection Loop
  5. Culprit Commit Inspection & Reporting

What it can do on your machine

Read from SKILL.md and the folder at commit a9e8946. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • chromium.googlesource.com
    • chromium-review.googlesource.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Bisect loads about 1.6k tokens when it runs. Until then it costs about 72 tokens; SKILL.md has 586 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~72
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from nwjs/chromium.src at commit a9e8946, republished under its BSD-3-Clause licence (© nwjs). 586 words, ~1,598 tokens.

Download SKILL.mdSave it as .claude/skills/bisect/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
bisect
description
Bisect regressions or broken builds in the Chromium repository using deterministic binary search, checking out midpoint commits, syncing dependencies with gclient sync, compiling the target with autoninja, and querying the user for test results until the culprit commit is isolated.

Chromium Bisect

This skill guides the agent through bisecting a regression or broken build in the Chromium repository using a deterministic binary search across git commits.

1. Parameters & Initialization

When bisecting, the following information is needed:

  1. Good Commit: The known working git commit hash.
  2. Bad Commit: The known broken git commit hash.
  3. Build Directory: The output build directory (e.g., out/ALDebug, out/Debug, out/Default).
  4. Build Target: The target to compile (e.g., chrome_apk, chrome, content_shell_test_apk, unit_tests).
Invocation Patterns

The skill can be invoked with a commit range and optional build settings, such as:

text
/bisect <good_commit>..<bad_commit> , <out_dir> , <build_target>

Examples:

  • /bisect hash1..hash2 , out/Debug , content_shell_test_apk
  • "Bisect between commit A and commit B using out/Default chrome"
Clarifying Missing Parameters

If any required parameters are not provided in the user's prompt:

  • Missing commits: Ask the user for the known good and bad commit hashes.
  • Missing build directory: Ask the user which output directory to use (e.g., out/ALDebug, out/Debug, or out/Default).
  • Missing build target: Ask the user which build target to compile (e.g., chrome_apk, chrome).

2. Workspace Pre-Check (Uncommitted Changes)

Before checking out commits or beginning the bisect loop, verify that the workspace has no uncommitted modifications to tracked files, as local changes can block git checkout or cause merge conflicts.

Run:

bash
git status --porcelain -uno
  • If output is empty: The working tree is clean of tracked changes. Proceed with the bisect.
  • If output is non-empty: Inform the user that uncommitted changes to tracked files are present and ask them to commit (git commit), stash (git stash), or revert (git restore) them before proceeding.

3. Deterministic Midpoint Calculation

To ensure fast and deterministic midpoint selection across the linear git history, use git rev-list --reverse rather than full graph traversal:

bash
COMMITS=$(git rev-list --reverse <GOOD_COMMIT>..<BAD_COMMIT>)
TOTAL=$(echo "$COMMITS" | wc -l)
MID=$(( (TOTAL + 1) / 2 ))
MID_COMMIT=$(echo "$COMMITS" | sed -n "${MID}p")
echo "Total commits in range: $TOTAL"
echo "Midpoint index: $MID"
echo "Midpoint commit: $MID_COMMIT"
git log -1 --oneline "$MID_COMMIT"

4. Step-by-Step Bisection Loop

Execute the following steps for each iteration until the regression is isolated to a single commit:

Step 1: Checkout the Midpoint Commit

Check out the computed midpoint commit hash:

bash
git checkout <MID_COMMIT> && git log -1 --oneline
Step 2: Sync Dependencies & Hooks

Run gclient sync -DR to align submodules, third-party dependencies, toolchains, DEPS, and build hooks with the checked-out commit:

bash
gclient sync -DR
Step 3: Compile the Build Target

Build the specified target in the target output directory using autoninja:

bash
autoninja -C <out_dir> <target>

Note: If the build runs in the background, monitor its status or use scheduled timers until completion.

Show full SKILL.md (220 more words)Show less
Step 4: Query User for Test Result

Once the build completes successfully, present the user with an interactive question to verify the build on their test setup or device:

  • Use the ask_question tool with options:
    1. The build is Good (working)
    2. The build is Bad (broken)
    3. Skip commit (unbuildable / untestable)
Step 5: Update Range & Repeat

Based on the user's response:

  • Good (working): Set the new Good commit to <MID_COMMIT>.
  • Bad (broken): Set the new Bad commit to <MID_COMMIT>.
  • Skip (unbuildable): Pick an adjacent commit (e.g., MID + 1 or MID - 1) within the range and retest while keeping the outer bounds.

Track each step's commit, result, and remaining range count in memory.

Repeat Steps 1–5 until only 1 commit remains in the range (i.e., the good and bad commits are immediate neighbors: TOTAL == 1 in <GOOD_COMMIT>..<BAD_COMMIT>).


5. Culprit Commit Inspection & Reporting

Once the search converges, the single remaining bad commit in the range is the culprit (the first bad commit).

Inspect the Culprit Commit

Run:

bash
git log -1 <CULPRIT_COMMIT>

Extract:

  • Commit Hash
  • Git Source Link: https://chromium.googlesource.com/chromium/src/+/<CULPRIT_COMMIT>
  • Author: Name and email (Author: ...)
  • Review (Gerrit CL): Extracted from Reviewed-on: in the commit message or https://chromium-review.googlesource.com/c/chromium/src/+/<cl_number>
  • Cr-Commit-Position: Extracted from Cr-Commit-Position: (e.g., refs/heads/main@{#...})
  • Title / Subject: Commit title line
  • Bug: Extracted from Bug: or Fixed: line
Final Report Format

Produce a final report matching the following structure:

Template:
markdown
The bisect has completed successfully and isolated the regression to the first bad commit.

---

### Bisect Summary

| Step | Commit Tested | Result | Range Left |
|---|---|---|---|
| 1 | <commit_hash_1> | <Good|Bad> | <remaining_commits_1> |
| 2 | <commit_hash_2> | <Good|Bad> | <remaining_commits_2> |
| ... | ... | ... | ... |
| N | <commit_hash_N> | <Good|Bad> | 1 |

---

### First Bad Commit (Culprit)

* **Commit**: [<CULPRIT_COMMIT>](https://chromium.googlesource.com/chromium/src/+/<CULPRIT_COMMIT>)
* **Author**: <author_name> (<author_email>)
* **Review**: [crrev.com/c/<cl_number>](https://chromium-review.googlesource.com/c/chromium/src/+/<cl_number>)
* **Commit Position**: `refs/heads/main@{#<position>}`
* **Title**: <commit_title>
* **Bug**: <bug_ID>

© nwjs, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in agents/skills/bisect of nwjs/chromium.src.

  • SKILL.md
  • OWNERS
  • README.md

Open the folder on GitHubat commit a9e8946

Compare with similar skills

Bisect 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.

Bisect compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Bisect this skillnwjs/chromium.src160—~1.6kAutomated safety check: PassBSD-3-Clause
Diagnose a Red Rundifferent-ai/openwork24k—~779Automated safety check: PassCustom licence
Make Git Escrowinternet-court/internet-court-skill6.4k2 repos~922Automated safety check: NotesMIT
cmux Package Test Bisectmanaflow-ai/cmux28k—~1.5kAutomated safety check: PassCustom licence
Bisect Aware InstrumentationArabelaTso/Skills-4-SE253—~2kAutomated safety check: PassApache-2.0
CI Fix MonitorZaxbyHub/opencode-swarm490—~551Automated safety check: PassMIT

Similar skills

  • Diagnose a Red Run

    different-ai/openwork

    Classifies a failing test, typecheck or CI job before any code changes, by recording the failure and running a clean control to show whether it was already broken.

    24k GitHub stars~779 tokensUpdated today
    Testing & QAAuto-check passed
  • Make Git Escrow

    internet-court/internet-court-skill

    Create a new git escrow bounty for a test suite. An agent skill from internet-court/internet-court-skill.

    6.4k GitHub starsUsed in 2 repos~922 tokens
    Testing & QAAuto-check: notes
  • cmux Package Test Bisect

    manaflow-ai/cmux

    Finds which commit broke a failing Swift package suite in the cmux repo by bisecting on CI, then judges per test whether it went stale or the code regressed.

    28k GitHub stars~1.5k tokensUpdated today
    Testing & QAAuto-check passed
  • Bisect Aware Instrumentation

    ArabelaTso/Skills-4-SE

    Instrument code to support efficient git bisect by producing deterministic pass/fail signals and concise runtime summaries for each tested commit.

    253 GitHub stars~2k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • CI Fix Monitor

    ZaxbyHub/opencode-swarm

    Codex adapter for monitoring and fixing CI failures on opencode-swarm PRs.

    490 GitHub stars~551 tokensUpdated today
    Testing & QAAuto-check passed
  • Git Bisect Assistant

    ArabelaTso/Skills-4-SE

    Automatically performs git bisect to identify the first bad commit that introduced a bug or failure.

    253 GitHub stars~1.2k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed

More from nwjs/chromium.src

All 64 skills in this repo
  • Analyzing SQL Traces

    nwjs/chromium.src

    Extracts raw trace data from Perfetto traces, runs arbitrary SQL queries for custom follow-up analysis, and applies expert cognitive principles (Tiered Flow Analysis, Semantic Mismatch, Redundancy)…

    160 GitHub stars~2.9k tokensUpdated 4 days ago
    Auto-check passed
  • Autonomous multi-agent performance optimization loop for Chromium and V8.

    160 GitHub stars~4.2k tokensUpdated 4 days ago
    Auto-check passed
  • Automated Tracing

    nwjs/chromium.src

    Automated Tracing & Performance Telemetry in Chromium using Perfetto and Telemetry benchmarks.

    160 GitHub stars~1.5k tokensUpdated 4 days ago
    Auto-check passed
  • Chrome Releases

    nwjs/chromium.src

    Queries Chrome commit, version, release, and milestone metadata.

    160 GitHub stars~1.3k tokensUpdated 4 days ago
    Auto-check passed
  • Chromium Docs

    nwjs/chromium.src

    Search and reference Chromium documentation from the local docs index, including design docs, APIs, and development guides.

    160 GitHub stars~1.2k tokensUpdated 4 days ago
    Auto-check passed
  • Gn Deps Debugging

    nwjs/chromium.src

    Diagnose Chromium GN dependency and include-visibility failures, including BUILD.gn deps/publicdeps, DEPS include rules, private headers, and circular dependencies.

    160 GitHub stars~1.5k tokensUpdated 4 days ago
    Auto-check passed

Works with

Questions about Bisect

What does Bisect do?

Bisect regressions or broken builds in the Chromium repository using deterministic binary search, checking out midpoint commits, syncing dependencies with gclient sync, compiling the target with…. src. Bisect regressions or broken builds in the Chromium repository using deterministic binary search, checking out midpoint commits, syncing dependencies with gclient sync, compiling the target with autoninja, and querying the user for test results until the culprit commit is isolated.

When should I use Bisect?

Bisect fits situations like: tasks that involve Failing and flaky tests.

How do I install Bisect in Claude Code?

Run `npx skills add nwjs/chromium.src --skill bisect -a claude-code`. Or copy the skill folder (agents/skills/bisect in nwjs/chromium.src) into .claude/skills/bisect in your project. Claude Code loads it when a task matches its description.

How do I install Bisect in Codex?

Run `npx skills add nwjs/chromium.src --skill bisect -a codex`. Or copy the skill folder (agents/skills/bisect in nwjs/chromium.src) into .agents/skills/bisect in your project. Codex loads it when a task matches its description.

Can I use Bisect in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nwjs/chromium.src --skill bisect -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bisect, .gemini/skills/bisect, .github/skills/bisect and .opencode/skills/bisect in your project.

What does Bisect need to run?

Going by SKILL.md and its folder, Bisect needs the command-line tools its instructions call (git).

Does Bisect access the network?

SKILL.md names 2 domains. In commands or code: chromium.googlesource.com and chromium-review.googlesource.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Bisect safe to install?

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.

What licence does Bisect use?

Bisect is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Bisect use?

About 1.6k tokens (SKILL.md is roughly 6.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Bisect?

Skills that share tags, products or a category with Bisect: Diagnose a Red Run (different-ai/openwork, 24k stars), Make Git Escrow (internet-court/internet-court-skill, 6.4k stars), cmux Package Test Bisect (manaflow-ai/cmux, 28k stars) and Bisect Aware Instrumentation (ArabelaTso/Skills-4-SE, 253 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Bisect?

nwjs (a GitHub organization) maintains it in nwjs/chromium.src, which has 160 GitHub stars. The repository holds 64 skills in this directory. The repository was last updated on October 3, 2026.

Source: nwjs/chromium.src on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.