Agent skill

Beyond Compare Git Diff Opener

by SensoriumEmbedded in SensoriumEmbedded/TeensyROM

Opens Beyond Compare on a git diff for the current work, a pull request, a branch, a commit or a range, without touching the checkout.

MITAuto-check passedDevelopment

Install Beyond Compare Git Diff Opener

skills CLI
$ npx skills add SensoriumEmbedded/TeensyROM --skill bcbc -a claude-code

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

GitHub CLI
$ gh skill install SensoriumEmbedded/TeensyROM bcbc --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/SensoriumEmbedded/TeensyROM.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/bcbc .claude/skills/bcbc && 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
bcbc
GitHub stars
227
Token cost
~2.4k tokens
SKILL.md length
1,300 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Opens Beyond Compare on a git diff for the current work, a pull request, a branch, a commit or a range, without touching the checkout.

  • Works in 7 steps: Preconditions and ground rules → Pick the mode from the argument → Current work → …
  • Reviewing the current uncommitted changes in Beyond Compare
  • SKILL.md covers 0. Preconditions and ground…, 1. Pick the mode from the…, 2. Current work and 3. PR, plus 3 more sections
  • Calls git, gh and curl; reaches api.github.com

What it does

It runs through git's own folder-diff tool, so git writes only the changed files from each side into two temporary folders, Beyond Compare compares the folders, and git deletes them when the tool closes; there is no reference clone and no change to the user's working tree, index or remote. On Windows it insists on the variant that waits for its window to close before git cleans up the temp folders, and it tells the user how to configure the diff tool setting if none is set.

With no argument it diffs the current work, either the uncommitted changes against HEAD on main or the branch's commits plus uncommitted edits against main's merge base elsewhere; a bare number or a PR reference first creates or refreshes a dedicated review branch for that PR, and an existing branch name, a range, or anything else that resolves to a commit each select their own comparison mode. For Beyond Compare specifically it adds an expanded tree, titles for each side and read-only snapshots.

When your agent uses it

  • Reviewing the current uncommitted changes in Beyond Compare
  • Pulling a PR into a review branch and diffing it visually
  • Comparing two branches, commits or a range in Beyond Compare

Example prompts

  • “Open Beyond Compare on my current uncommitted changes.”
  • “Pull PR 48 into a review branch and show it in BC.”
  • “Diff main against the release branch in Beyond Compare.”

Requirements

  • Beyond Compare
  • `git config diff.tool` pointed at Beyond Compare

Workflow steps

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

  1. Preconditions and ground rules
  2. Pick the mode from the argument
  3. Current work
  4. PR
  5. Branch
  6. Commit or range
  7. Launch and report

What it can do on your machine

Read from SKILL.md and the folder at commit 28f6aa8. 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
    • gh
    • curl

    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:

    • api.github.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

Beyond Compare Git Diff Opener loads about 2.4k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 1,300 words of instructions outside code blocks.

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

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 SensoriumEmbedded/TeensyROM at commit 28f6aa8, republished under its MIT licence (© SensoriumEmbedded). 1,300 words, ~2,379 tokens.

Download SKILL.mdSave it as .claude/skills/bcbc/SKILL.md (or your agent's skills folder).
name
bcbc
description
Open Beyond Compare on a git diff. With no argument it shows the current work against main. With a PR number it first creates or refreshes that PR's prNN-check review branch. It also takes a branch, a commit or a range. Use whenever the user asks to see a diff in Beyond Compare/"BC", asks to pull a PR into a review branch and show it, or says "bcbc".

bcbc: Beyond Compare on a git diff

Opens Beyond Compare (BC) through git difftool --dir-diff. Git writes only the changed files of each side into two temp folders, BC compares the folders, and git deletes them when BC closes. There is no reference clone. The only machine-specific part is the user's own git diff.tool setting.

0. Preconditions and ground rules

  • git config diff.tool must name a tool that can compare folders, and that waits until its window closes. Git deletes the temp folders as soon as the tool returns. For BC on Windows that means BComp.exe. BCompare.exe returns at once and leaves BC showing deleted folders. If no tool is configured, tell the user how to set one up and stop:
    git config --global diff.tool bc
    git config --global difftool.bc.path "C:/Program Files/Beyond Compare 5/BComp.exe"
  • Beyond Compare gets extras (section 6): an expanded tree, titles for each side, and read-only snapshots. The tool counts as BC when its executable ends in BComp.exe or BCompare.exe. Find the executable from git config difftool.<tool>.path, or as the first quoted path in git config difftool.<tool>.cmd. Either way, use the BComp.exe in that same folder, because it's the one that waits.
  • Never switch the user's checkout, touch their working tree or index, or push. Everything below works on refs and objects only, so it works with uncommitted changes or with any branch checked out.

1. Pick the mode from the argument

ArgumentMode
noneCurrent work (section 2)
digits, e.g. 48 or #48PR (section 3)
contains ..Range (section 5)
an existing local branchBranch (section 4)
anything else that resolves to a commit (git rev-parse --verify <arg>^{commit})Commit (section 5)

2. Current work

  • On main: use git difftool --dir-diff HEAD, which shows the uncommitted changes. If git status --porcelain --untracked-files=no is empty, say there's nothing to show and stop.
  • On another branch: use git difftool --dir-diff $(git merge-base main HEAD), which shows the branch's commits plus uncommitted edits, without main's newer commits.
  • Tell the user three things:
    • The right side is their working tree.
    • Untracked files don't appear until added. git add -N <file> makes one show.
    • Edits saved on the right side are copied back into the working tree when BC closes. That is git's own --dir-diff behavior when it copies files, which is the Windows default.

3. PR

N is the PR number and B is the review branch prN-check.

  1. Fetch. Run git fetch origin main "+refs/pull/N/head:refs/remotes/origin/pr/N". The + is there because PRs get force-pushed. If local main is behind origin/main, say so, because the review branch is built on local main. Don't update main yourself.

  2. Already merged? If git merge-base --is-ancestor origin/pr/N main succeeds, the PR is already in main.

    • Find the merge commit that brought it in: M=$(git log --merges --ancestry-path --format=%H origin/pr/N..main | tail -1).
    • Show that merge's changes with git difftool --dir-diff M^1 M.
    • Don't create a review branch. Then go to section 6.
  3. Trial merge. Run git merge-tree --write-tree --name-only --no-messages main origin/pr/N.

    • Exit 0 means it's clean, and the first output line is the merged tree T.
    • Exit 1 means there are conflicts. The lines after the first name the conflicting files; go to step 6.

    This merges across all merge bases, the same as git merge. GitHub's merge button sometimes reports conflicts that this doesn't, for example PR #48's criss-cross history. Those aren't real conflicts.

  4. Decide what to do with B.

    • B doesn't exist: create it (step 5).
    • B is a bcbc review branch. That means its tip has exactly two parents, its message is Merge remote-tracking branch 'origin/pr/N' into prN-check, and git merge-base --is-ancestor B^1 main succeeds.
      • If B^1 is main and B^2 is origin/pr/N, it's up to date. Leave it.
      • Otherwise the PR or main has moved. Rebuild it (step 5). The old tip stays in the reflog; report it.
    • B is anything else, such as local commits on it, a squash preview, or a plain copy of the PR head: don't touch it.
      • Say what it is.
      • Show the would-be merge anyway: run step 5's commit-tree without git branch -f, which leaves a dangling commit.
      • Ask whether to rebuild it.
    • B is checked out (git branch --show-current is B) and would need creating or rebuilding: don't move it under the working tree. Say so and ask.
  5. Create or rebuild. This gives the same tree, parents and message that git merge --no-ff origin/pr/N on a fresh B would.

    C=$(git commit-tree <T> -p main -p origin/pr/N -m "Merge remote-tracking branch 'origin/pr/N' into prN-check")
    git branch -f prN-check $C

    Then show it with git difftool --dir-diff B^1 B. That is exactly what the PR changes on main.

  6. Conflicts.

    • Don't create or touch B.
    • Show the PR's own changes since it left main with git difftool --dir-diff main...origin/pr/N.
    • List the conflicting files. Suggest that the PR's author update the PR, or offer to resolve the conflicts on a branch.
    • If git merge-base --all main origin/pr/N returns more than one commit, warn that this three-dot view may include unrelated changes.

When the GitHub API is reachable, add the PR's title, author and state to the report. Use gh pr view N, or curl -s https://api.github.com/repos/<owner>/<repo>/pulls/N with the owner and repo taken from git remote get-url origin. If neither works, skip it without comment.

Show full SKILL.md (474 more words)Show less

4. Branch

This shows what merging the branch into main would change, without creating anything.

  • Trial-merge as in section 3, step 3.
  • Clean: run C=$(git commit-tree <T> -p main -p <branch> -m "bcbc trial merge"), which leaves a dangling commit with no ref. Then git difftool --dir-diff main $C.
  • Conflicts: run git difftool --dir-diff main...<branch> and list the conflicting files.

5. Commit or range

  • Commit: git difftool --dir-diff <c>^1 <c>. For a merge commit, that is what the merge brought in on top of its first parent.
  • Range: pass it straight through, e.g. git difftool --dir-diff a..b or a...b.

6. Launch and report

  • Run the difftool command in the background (Bash with run_in_background: true). It blocks until BC closes, and git deletes the temp folders when it returns. Don't wait on it. Its completion notice only means the user closed BC.
  • Any tool except Beyond Compare: run git difftool --dir-diff <left> [<right>]. Leave <right> out when the right side is the working tree.
  • Beyond Compare: pass a one-off tool definition with git -c, which leaves the user's config untouched:
    MSYS_NO_PATHCONV=1 BCBC_LEFT="<left title>" BCBC_RIGHT="<right title>" \
    git -c difftool.bcbc.cmd='"<path to BComp.exe>" /expandall <ro> "/title1=$BCBC_LEFT" "/title2=$BCBC_RIGHT" "$LOCAL" "$REMOTE"' \
        difftool --dir-diff --tool=bcbc <left> [<right>]
    • /expandall opens every folder. /title1= and /title2= replace the temp-folder paths in BC's path bars.
    • Set <ro> from what's on the right:
      • /lro (left side read-only) when the right side is the working tree, so edits there can still be copied back.
      • /ro (both sides read-only) when both sides are commits, because edits there would be thrown away.
    • Titles are each side's ref and short hash, for example main 306daef, pr48-check 82dc4d5 (PR #48), working tree, or trial merge of <branch>.
    • Why it's built this way:
      • Git runs a tool command through its bundled shell, which rewrites any argument starting with / into a Windows path, so /expandall becomes C:/Program Files/Git/expandall. MSYS_NO_PATHCONV=1 turns that off. Without it, the switches need a doubled slash (//expandall).
      • git difftool -x "<cmd> /switches" doesn't work in folder mode. Git spawns the whole string as one program name and fails with "cannot spawn ...: Permission denied". A named tool's cmd does go through the shell, which is why the switches go there.
      • The shell expands $LOCAL, $REMOTE and the BCBC_* titles at run time, which is why they stay inside single quotes above.
  • Report in a few lines:
    • What's on the left and right, as refs with short hashes.
    • The file count, from git diff --stat on the same two sides.
    • In PR mode, whether B was created, already up to date, or rebuilt (give the old tip), and whether local main is behind origin/main.
    • Anything that will look odd in BC:
      • A renamed or moved file shows as two one-sided files, because BC doesn't follow renames. Compare the pair directly to see the edits.
      • Binary files show only as binary.

© SensoriumEmbedded, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/bcbc of SensoriumEmbedded/TeensyROM.

Open the folder on GitHubat commit 28f6aa8

Compare with similar skills

Beyond Compare Git Diff Opener 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.

Beyond Compare Git Diff Opener compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Beyond Compare Git Diff Opener this skillSensoriumEmbedded/TeensyROM227—~2.4kAutomated safety check: PassMIT
Git History Bug Auditben-manes/caffeine18k—~3.3kAutomated safety check: PassApache-2.0
Address PR Feedback for ruby-gitruby-git/ruby-git1.8k—~657Automated safety check: PassMIT
PR Review Triagestickerdaniel/linkedin-mcp-server3.8k—~1.4kAutomated safety check: PassApache-2.0
GitHub Workflowtransilienceai/communitytools562—~812Automated safety check: NotesMIT
Git CL for Gerritwebrtc-sdk/webrtc4461 repos~146Automated safety check: PassBSD-3-Clause

Similar skills

  • Git History Bug Audit

    ben-manes/caffeine

    Audits a module by walking its git history commit by commit, tracking unresolved issues forward, and reporting the ones that survive to HEAD as findings.

    18k GitHub stars~3.3k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Addresses unresolved pull request review threads and suppressed (low-confidence) Copilot review comments on the current branch, folds each fix into the…

    1.8k GitHub stars~657 tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • PR Review Triage

    stickerdaniel/linkedin-mcp-server

    Collects every review comment on a pull request, checks each against the real code, fixes the valid ones, pushes, and replies on and resolves each thread.

    3.8k GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check passed
  • GitHub Workflow

    transilienceai/communitytools

    GitHub workflow automation — branching, committing, pushing, pull requests, issues, and code review.

    562 GitHub stars~812 tokensUpdated 2 mo ago
    DevelopmentAuto-check: notes
  • Git CL for Gerrit

    webrtc-sdk/webrtc

    Provides commands for interacting with Gerrit CLs using git cl, including issue management and non-interactive uploads.

    446 GitHub starsUsed in 1 repo~146 tokens
    DevelopmentAuto-check passed
  • Code Review

    iZiTTMarvin/Nova-agent

    收集工作区未提交改动或最近一次提交的 git 变更面,做只读代码审查并给出带文件行号的问题清单。适用:审查改动、检查刚写的代码质量。不修改代码。

    177 GitHub stars~475 tokensUpdated yesterday
    DevelopmentAuto-check passed

More from SensoriumEmbedded/TeensyROM

  • TeensyROM IO Handler Checklist

    SensoriumEmbedded/TeensyROM

    Walks through adding a new cartridge or peripheral IO handler to TeensyROM's MinimalBoot firmware and the three files that must stay in sync.

    227 GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • TeensyROM Menu Program Adder

    SensoriumEmbedded/TeensyROM

    Adds a Commodore 64 program, cartridge, SID or picture to TeensyROM's built-in menu by converting it to a PROGMEM header and wiring it into MainMenuItems.h.

    227 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • TeensyROM Build and Flash

    SensoriumEmbedded/TeensyROM

    Explains how to build the C64 menu programs and the dual-boot TeensyROM firmware from the repo and flash it to one or more boards over USB.

    227 GitHub stars~1.3k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Beyond Compare Git Diff Opener

What does Beyond Compare Git Diff Opener do?

Opens Beyond Compare on a git diff for the current work, a pull request, a branch, a commit or a range, without touching the checkout. It runs through git's own folder-diff tool, so git writes only the changed files from each side into two temporary folders, Beyond Compare compares the folders, and git deletes them when the tool closes; there is no reference clone and no change to the user's working tree, index or remote. On Windows it insists on the variant that waits for its window to close before git cleans up the temp folders, and it tells the user how to configure the diff tool setting if none is set.

When should I use Beyond Compare Git Diff Opener?

Beyond Compare Git Diff Opener fits situations like: reviewing the current uncommitted changes in Beyond Compare; pulling a PR into a review branch and diffing it visually; comparing two branches, commits or a range in Beyond Compare.

How do I install Beyond Compare Git Diff Opener in Claude Code?

Run `npx skills add SensoriumEmbedded/TeensyROM --skill bcbc -a claude-code`. Or copy the skill folder (.claude/skills/bcbc in SensoriumEmbedded/TeensyROM) into .claude/skills/bcbc in your project. Claude Code loads it when a task matches its description.

How do I install Beyond Compare Git Diff Opener in Codex?

Run `npx skills add SensoriumEmbedded/TeensyROM --skill bcbc -a codex`. Or copy the skill folder (.claude/skills/bcbc in SensoriumEmbedded/TeensyROM) into .agents/skills/bcbc in your project. Codex loads it when a task matches its description.

Can I use Beyond Compare Git Diff Opener 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 SensoriumEmbedded/TeensyROM --skill bcbc -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bcbc, .gemini/skills/bcbc, .github/skills/bcbc and .opencode/skills/bcbc in your project.

What does Beyond Compare Git Diff Opener need to run?

Going by SKILL.md and its folder, Beyond Compare Git Diff Opener needs the command-line tools its instructions call (git, gh and curl). Our summary lists: Beyond Compare; `git config diff.tool` pointed at Beyond Compare.

Does Beyond Compare Git Diff Opener access the network?

SKILL.md names 1 domain. In commands or code: api.github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Beyond Compare Git Diff Opener 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 Beyond Compare Git Diff Opener use?

Beyond Compare Git Diff Opener is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Beyond Compare Git Diff Opener use?

About 2.4k tokens (SKILL.md is roughly 9.5k 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 Beyond Compare Git Diff Opener?

Skills that share tags, products or a category with Beyond Compare Git Diff Opener: Git History Bug Audit (ben-manes/caffeine, 18k stars), Address PR Feedback for ruby-git (ruby-git/ruby-git, 1.8k stars), PR Review Triage (stickerdaniel/linkedin-mcp-server, 3.8k stars) and GitHub Workflow (transilienceai/communitytools, 562 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Beyond Compare Git Diff Opener?

SensoriumEmbedded (a GitHub user) maintains it in SensoriumEmbedded/TeensyROM, which has 227 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 7, 2026.

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