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.
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.
$ npx skills add SensoriumEmbedded/TeensyROM --skill bcbc -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install SensoriumEmbedded/TeensyROM bcbc --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/SensoriumEmbedded/TeensyROM.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/bcbc .claude/skills/bcbc && 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 "bcbc" agent skill from https://github.com/SensoriumEmbedded/TeensyROM/tree/main/.claude/skills/bcbc into .claude/skills/bcbc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bcbc", 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/SensoriumEmbedded/TeensyROM/tree/main/.claude/skills/bcbcType 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 SensoriumEmbedded/TeensyROM --skill bcbc -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install SensoriumEmbedded/TeensyROM bcbc --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SensoriumEmbedded/TeensyROM.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/bcbc .agents/skills/bcbc && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "bcbc" agent skill from https://github.com/SensoriumEmbedded/TeensyROM/tree/main/.claude/skills/bcbc into .agents/skills/bcbc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bcbc", 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 SensoriumEmbedded/TeensyROM --skill bcbc -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install SensoriumEmbedded/TeensyROM bcbc --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SensoriumEmbedded/TeensyROM.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/bcbc .cursor/skills/bcbc && 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 "bcbc" agent skill from https://github.com/SensoriumEmbedded/TeensyROM/tree/main/.claude/skills/bcbc into .cursor/skills/bcbc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bcbc", 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/SensoriumEmbedded/TeensyROM.git --path .claude/skills/bcbc--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 SensoriumEmbedded/TeensyROM --skill bcbc -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install SensoriumEmbedded/TeensyROM bcbc --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SensoriumEmbedded/TeensyROM.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/bcbc .gemini/skills/bcbc && 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 "bcbc" agent skill from https://github.com/SensoriumEmbedded/TeensyROM/tree/main/.claude/skills/bcbc into .gemini/skills/bcbc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bcbc", 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 SensoriumEmbedded/TeensyROM bcbcInstalls 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 SensoriumEmbedded/TeensyROM --skill bcbc -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/SensoriumEmbedded/TeensyROM.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/bcbc .github/skills/bcbc && 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 "bcbc" agent skill from https://github.com/SensoriumEmbedded/TeensyROM/tree/main/.claude/skills/bcbc into .github/skills/bcbc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bcbc", 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 SensoriumEmbedded/TeensyROM --skill bcbc -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install SensoriumEmbedded/TeensyROM bcbc --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SensoriumEmbedded/TeensyROM.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/bcbc .opencode/skills/bcbc && 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 "bcbc" agent skill from https://github.com/SensoriumEmbedded/TeensyROM/tree/main/.claude/skills/bcbc into .opencode/skills/bcbc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bcbc", 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.
bcbcOpens 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.
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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 28f6aa8. 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:
gitghcurlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.github.comFrom 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.
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.
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 SensoriumEmbedded/TeensyROM at commit 28f6aa8, republished under its MIT licence (© SensoriumEmbedded). 1,300 words, ~2,379 tokens.
.claude/skills/bcbc/SKILL.md (or your agent's skills folder).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.
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"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.| Argument | Mode |
|---|---|
| none | Current work (section 2) |
digits, e.g. 48 or #48 | PR (section 3) |
contains .. | Range (section 5) |
| an existing local branch | Branch (section 4) |
anything else that resolves to a commit (git rev-parse --verify <arg>^{commit}) | Commit (section 5) |
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.git difftool --dir-diff $(git merge-base main HEAD), which
shows the branch's commits plus uncommitted edits, without main's newer commits.git add -N <file> makes one show.--dir-diff behavior when it copies files, which is the Windows
default.N is the PR number and B is the review branch prN-check.
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.
Already merged? If git merge-base --is-ancestor origin/pr/N main succeeds, the PR is
already in main.
M=$(git log --merges --ancestry-path --format=%H origin/pr/N..main | tail -1).git difftool --dir-diff M^1 M.Trial merge. Run git merge-tree --write-tree --name-only --no-messages main origin/pr/N.
T.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.
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.B^1 is main and B^2 is origin/pr/N, it's up to date. Leave 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.commit-tree without git branch -f,
which leaves a dangling commit.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.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 $CThen show it with git difftool --dir-diff B^1 B. That is exactly what the PR changes
on main.
Conflicts.
B.git difftool --dir-diff main...origin/pr/N.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.
This shows what merging the branch into main would change, without creating anything.
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.git difftool --dir-diff main...<branch> and list the conflicting files.git difftool --dir-diff <c>^1 <c>. For a merge commit, that is what the merge
brought in on top of its first parent.git difftool --dir-diff a..b or a...b.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.git difftool --dir-diff <left> [<right>]. Leave
<right> out when the right side is the working tree.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.<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.main 306daef,
pr48-check 82dc4d5 (PR #48), working tree, or trial merge of <branch>./ 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.$LOCAL, $REMOTE and the BCBC_* titles at run time, which is
why they stay inside single quotes above.git diff --stat on the same two sides.B was created, already up to date, or rebuilt (give the old tip),
and whether local main is behind origin/main.© SensoriumEmbedded, 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 .claude/skills/bcbc of SensoriumEmbedded/TeensyROM.
Open the folder on GitHubat commit 28f6aa8
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Beyond Compare Git Diff Opener this skillSensoriumEmbedded/TeensyROM | 227 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Git History Bug Auditben-manes/caffeine | 18k | — | ~3.3k | Automated safety check: Pass | Apache-2.0 | |
| Address PR Feedback for ruby-gitruby-git/ruby-git | 1.8k | — | ~657 | Automated safety check: Pass | MIT | |
| PR Review Triagestickerdaniel/linkedin-mcp-server | 3.8k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| GitHub Workflowtransilienceai/communitytools | 562 | — | ~812 | Automated safety check: Notes | MIT | |
| Git CL for Gerritwebrtc-sdk/webrtc | 446 | 1 repos | ~146 | Automated safety check: Pass | BSD-3-Clause |
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.
ruby-git/ruby-git
Addresses unresolved pull request review threads and suppressed (low-confidence) Copilot review comments on the current branch, folds each fix into the…
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.
transilienceai/communitytools
GitHub workflow automation — branching, committing, pushing, pull requests, issues, and code review.
webrtc-sdk/webrtc
Provides commands for interacting with Gerrit CLs using git cl, including issue management and non-interactive uploads.
iZiTTMarvin/Nova-agent
收集工作区未提交改动或最近一次提交的 git 变更面,做只读代码审查并给出带文件行号的问题清单。适用:审查改动、检查刚写的代码质量。不修改代码。
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.
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.
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.
Works with
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.