
Chrome Release Fix Mapper
FreeMap Chrome security fixes to their corresponding commits.
Free · Opens the source repo
What Chrome Release Fix Mapper does
The Chrome Release Fix Mapper skill is designed to help developers and security researchers efficiently trace the underlying commit logs associated with security vulnerabilities in Chrome releases. By providing a URL to a Chrome Releases blog post, users can extract critical information such as CVEs, bug IDs, and the corresponding Gerrit CLs that addressed these issues. This tool is particularly valuable for those involved in maintaining Chrome or Chromium-based projects, as it streamlines the process of identifying which commits resolve specific vulnerabilities.
The skill operates by first parsing the provided blog post URL to extract CVE and bug ID pairs. It uses a combination of curl and Python to handle the HTML content, ensuring that the relevant data is retrieved accurately. Once the CVEs are identified, the skill searches through the local Chromium checkout and its sub-repositories for commits that reference these bug IDs. This includes a systematic approach to querying different repositories based on the component associated with each bug, ensuring that users receive comprehensive results.
In cases where the local repository does not yield results, the skill intelligently falls back to querying remote repositories or directly accessing Gerrit to find the relevant commit information. This includes handling special cases for components that may not follow standard commit message formats, ensuring that users receive accurate and actionable data.
Overall, the Chrome Release Fix Mapper is an essential tool for developers and security teams looking to maintain an up-to-date understanding of Chrome's security landscape. It simplifies the often complex task of mapping security fixes to their respective commits, thereby enhancing productivity and facilitating a more robust approach to security management in software development.
When to use it
Use this tool when you need to find the specific commits that address security vulnerabilities listed in Chrome release notes.
When not to use it
This skill is not suitable for general development tasks unrelated to Chrome security fixes or for users without access to the Chromium source code.
What you can build with it
Mapping CVEs to Fixes
Quickly find which commits correspond to specific CVEs listed in Chrome security updates.
Analyzing Security Updates
Streamline the review process of security updates by directly linking fixes to their commit history.
Maintaining Chromium Projects
Keep your Chromium-based projects secure by easily identifying relevant fixes for vulnerabilities.
How to install Chrome Release Fix Mapper
View source1. Install with the skills CLI
npx skills add electron/electron/chrome-release-cls --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by electronChrome Release → Fixing CL Mapper
Maps every security fix in a Chrome Releases blog post to the Gerrit CL(s) that fixed it.
Input
$ARGUMENTS — a https://chromereleases.googleblog.com/... URL. If empty, ask the user for one.
Procedure
1. Extract CVE → bug ID pairs from the blog post
The blog HTML buries bug IDs inside <a> tags, so strip tags first. Run:
curl -sL "$URL" | python3 -c '
import sys, re, html
t = re.sub(r"<[^>]+>", " ", sys.stdin.read())
t = re.sub(r"\s+", " ", html.unescape(t))
seen = set()
for m in re.finditer(r"\[\s*(\d{6,})\s*\]\s*(Critical|High|Medium|Low)\s*(CVE-\d{4}-\d+):\s*([^.]+?)\.", t):
if m.group(3) in seen: continue
seen.add(m.group(3))
print(f"{m.group(3)}|{m.group(1)}|{m.group(2)}|{m.group(4).strip()}")
' > /tmp/cve_bugs.txt
cat /tmp/cve_bugs.txt
If this yields nothing, the page may have changed format — fall back to grep -oE 'CVE-[0-9]{4}-[0-9]+' and grep -oE 'crbug\.com/[0-9]+' and pair them by order.
2. Find the fixing CL for each bug
Search git history in the Chromium checkout and relevant sub-repos for commits whose Bug: or Fixed: footer references the bug ID, then extract the Reviewed-on: Gerrit URL.
Repo selection by component keyword:
- ANGLE →
third_party/angle - Skia, Graphite →
third_party/skia - PDFium →
third_party/pdfium - Dawn →
third_party/dawn - V8, Turbofan, Maglev, Turboshaft →
v8 - everything else →
.(chromium/src)
Always also fall back to . if the hinted repo has no match.
cd /root/src/electron/src # chromium root (parent of electron/)
lookup() {
local bug="$1" repos="$2"
for repo in $repos . v8 third_party/skia third_party/angle third_party/pdfium third_party/dawn; do
local hits
hits=$(git -C "$repo" log --all --since='6 months ago' -E \
--grep="(Bug|Fixed):.*\\b${bug}\\b" --format='%H' 2>/dev/null | sort -u)
[[ -z "$hits" ]] && continue
while read -r h; do
git -C "$repo" log -1 --format='%B' "$h" | grep '^Reviewed-on:' | sed 's/^/ /'
echo " ↳ $(git -C "$repo" log -1 --format='%s' "$h")"
done <<<"$hits"
return 0
done
echo " (not found locally)"
}
Drive it from /tmp/cve_bugs.txt. Prefer the non-[M1xx]-prefixed commit subject as the canonical main CL; the [M1xx] ones are branch cherry-picks.
3. Handle misses
For any bug with no local hit:
git -C <repo> fetch originthen re-search--remotes(fix may be newer than the checkout).- Query Gerrit directly:
curl -s "https://chromium-review.googlesource.com/changes/?q=bug:${BUG}&n=10" | tail -n +2 | python3 -m json.tool(also tryskia-review,pdfium-review,dawn-review,aomedia-review). b/bug format (Skia, Graphite, Dawn): These repos reference bugs asb/<id>in commit messages rather thanBug: <id>footers. The Gerritbug:query will return nothing. Usemessage:<id>search instead:
Apply the same pattern forcurl -s "https://skia-review.googlesource.com/changes/?q=message:${BUG}&n=5" | tail -n +2dawn-review.googlesource.comwhen the component is Dawn.- Tracing main CLs from merges: When only
[M1xx]merge CLs are found, query the CL detail forcherry_pick_of_changeto find the original main CL number:curl -s "https://chromium-review.googlesource.com/changes/${CL_NUM}?o=CURRENT_REVISION" | tail -n +2 | python3 -c " import sys, json d = json.load(sys.stdin) print(d.get('cherry_pick_of_change', 'none')) " - If still nothing and the bug was reported very recently (especially by "Google Threat Intelligence" or marked in-the-wild), the CL is likely still access-restricted — report it as such rather than guessing.
4. Special cases
-
Roll CLs — skip and find the upstream fix: For components whose fixes land in upstream repos (PDFium, Dawn, Skia, Graphite, libaom, libvpx, ffmpeg), the chromium-review hit will be a
Roll src/third_party/...commit. Do not report the roll CL as the fix. Instead, query the component's own Gerrit instance directly for the actual fixing CL:- PDFium →
pdfium-review.googlesource.com(usebug:ormessage:query) - Dawn →
dawn-review.googlesource.com(usemessage:query — usesb/format) - Skia / Graphite →
skia-review.googlesource.com(usemessage:query — usesb/format) - libaom →
aomedia-review.googlesource.com
Only if the upstream Gerrit instance returns no results should you fall back to reporting the roll CL — in that case, include the roll CL and note that the actual fix is upstream but the specific CL could not be identified.
- PDFium →
-
Multiple
Reviewed-on:lines in one commit body: cherry-picks keep the original line plus a new one. The firstReviewed-on:is the original CL. -
A bug may have multiple distinct fix CLs (fix + follow-up hardening) — list all of them.
5. Output
Produce a markdown table per severity level: CVE | Bug | Component | Fix CL (main). Link bugs as https://crbug.com/<id>. Save raw output (including all branch merges) to /tmp/cve_cls.txt and mention the path.
Frequently asked questions about Chrome Release Fix Mapper
Similar skills
Quality Playbook Generator
Run comprehensive quality audits on any codebase.
PR Draft Summary
Automate PR summary generation for openai-agents-python.
Final Release Review
Streamline your release candidate audits with ease.
Unit Test Vue Pinia
Efficiently write and review unit tests for Vue 3 applications.
Slang Shader Expert
Optimize and integrate Slang shaders with ease.
Telemetry Standards
Ensure consistent event tracking in Supabase Studio.
