carbon-pr
Post the development footprint of the current branch as a sticky PR comment
Skill by gwittebolle
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/gwittebolle-carbon-pr
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/carbon-pr
What's inside
- Skill name
carbon-pr- Description
- Post the development footprint of the current branch as a sticky PR comment
- License
- MIT
- Instructions
- 53 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- files: referenced but missing: scripts/backfill.sh
- body: contains an absolute path from the author's machine
Files (1)
- SKILL.md
SKILL.md (first lines)
Run the following bash script from the repository the PR belongs to, and present the output to the user.
```bash
#!/usr/bin/env bash
# Locate the install wired into the status line (honours CLAUDE_CONFIG_DIR),
# then fall back to CLAUDE_PLUGIN_ROOT / CLAUDE_CARBON_DIR / the default path.
# Windows (Git Bash): CLAUDE_* variables and the paths stored in settings.json can
# arrive in the native "C:\Users\..." spelling, which bash cannot open. cygpath
# ships with Git for Windows; everywhere else this is the identity function.
ccp() {
case "${OSTYPE:-}" in msys*|cygwin*) ;; *) printf '%s' "$1"; return 0 ;; esac
case "$1" in
[A-Za-z]:[\\/]*|*\\*) cygpath -u "$1" 2>/dev/null || printf '%s' "$1" ;;
*) printf '%s' "$1" ;;
esac
}
CFG="$(ccp "${CLAUDE_CONFIG_DIR:-$HOME/.claude}")"
# A jq the installer fetched into the data folder (a Mac older than macOS 15 has none)
if ! command -v jq >/dev/null 2>&1 && [ -x "$CFG/claude-carbon/bin/jq" ]; then PATH="$CFG/claude-carbon/bin:$PATH"; fi
REPO_DIR=""
if command -v jq >/dev/null 2>&1 && [ -f "$CFG/settings.json" ]; then
SL_CMD="$(jq -r '.statusLine.command // empty' "$CFG/settings.json" 2>/dev/null)"
# statusLine.command stores a path, shell-escaped, or in double quotes on Windows:
# unquote, expand ~ and unescape spaces
SL_CMD="${SL_CMD#\"}"; SL_CMD="${SL_CMD%\"}"
SL_CMD="${SL_CMD//\\ / }"; SL_CMD="${SL_CMD/#\~/$HOME}"; SL_CMD="$(ccp "$SL_CMD")"
[ -n "$SL_CMD" ] && [ -f "$SL_CMD" ] && REPO_DIR="$(cd "$(dirname "$SL_CMD")/.." 2>/dev/null && pwd)"
fi
[ -z "$REPO_DIR" ] && [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && REPO_DIR="$(ccp "$CLAUDE_PLUGIN_ROOT")"
[ -z "$REPO_DIR" ] && [ -n "${CLAUDE_CARBON_DIR:-}" ] && REPO_DIR="$(ccp "$CLAUDE_CARBON_DIR")"
if [ -z "$REPO_DIR" ]; then
# Pure marketplace installs reach here: no statusLine.command in settings.json and
# no CLAUDE_PLUGIN_ROOT in a skill's bash env. Pick the newest cached plugin copy,
# keeping only candidates that ship the PR report script.
CACHE_LATEST=""
for D in "$CFG/plugins/cache"/*/claude-carbon/*/; do
[ -f "${D}scripts/generate-pr-report.sh" ] || continue
if [ -z "$CACHE_LATEST" ] || [ "$(printf '%s\n%s\n' "$CACHE_LATEST" "$D" | sort -V | tail -1)" = "$D" ]; then
CACHE_LATEST="$D"
fi
done
[ -n "$CACHE_LATEST" ] && REPO_DIR="${CACHE_LATEST%/}"
fi
[ -z "$REPO_DIR" ] && REPO_DIR="$HOME/code/claude-carbon"
bash "$REPO_DIR/scripts/generate-pr-report.sh"
```
The script sums the local Claude Code sessions recorded for the current branch of the current project and posts (or updates in place) one sticky comment on the branch's open PR, through the user's own `gh` auth. Report its final line to the user as printed; never recompute or reformat the numbers.
With `--pr <number>` the script reports that PR's own branch (read through `gh`, so even `--dry-run` needs it), wherever it runs; never pass a PR number to report the current branch's sessions on another PR. It refuses a PR opened from a fork: tell the user to run it without `--pr` from the fork's clone, on the PR's branch. It also refuses a branch checked out in no worktree whose name sessions of other folders carry: say that nothing was posted and pass on its suggestion (run it from the branch's worktree, or switch to the branch in the folder its sessions ran in and run it there without `--pr`). If it reports no sessions for the branch, say that nothing was posted, that a session counts for the branch it ended on and so do its agents, except an agent that worked in a worktree of another branch and ended with this version installed (it counts there), that only sessions recorded since the `git_branch` column exists carry a branch, and that `scripts/backfill.sh` repairs older rows while their transcripts are still on disk. If it reports no open PR, suggest pushing the branch and opening one first, or passing `--pr <number>`. If the script itself is missing (an install that predates it), suggest `/carbon-update`.From gwittebolle/claude-carbon, MIT.
More from gwittebolle/claude-carbon
- 0.780score
carbon-badge
gwittebolle
Generate a shields.io badge of your Claude Code carbon footprint for your READMEs
SkillAFreshness: A★ 226Claude Code +9 - 0.780score
carbon-card
gwittebolle
Generate shareable PNG report cards of your Claude Code carbon footprint
SkillAFreshness: A★ 226Claude Code +9 - 0.780score
carbon-update
gwittebolle
Update claude-carbon to the latest version (a clone install also re-prices its history, CO2-only)
SkillAFreshness: A★ 226Claude Code +9 - 0.779score
carbon-panel
gwittebolle
Open the carbon pane, your CO2 molecule and the warming stripes of your sessions
SkillAFreshness: A★ 226Claude Code +9 - 0.777score
carbon-report
gwittebolle
Display CO2 emissions report for Claude Code sessions
SkillAFreshness: A★ 226Claude Code +9
Signals
- Stars
- 226
- Forks
- 18
- Open issues
- 0
- Last commit (this folder)
- Oct 21, 2026 (7 days ago)
- Last release
- Oct 21, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/gwittebolle/claude-carbon
- Website
- tokenclimate.com
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from gwittebolle
- 0.780score
carbon-badge
gwittebolle
Generate a shields.io badge of your Claude Code carbon footprint for your READMEs
SkillAFreshness: A★ 226Claude Code +9 - 0.780score
carbon-card
gwittebolle
Generate shareable PNG report cards of your Claude Code carbon footprint
SkillAFreshness: A★ 226Claude Code +9 - 0.780score
carbon-update
gwittebolle
Update claude-carbon to the latest version (a clone install also re-prices its history, CO2-only)
SkillAFreshness: A★ 226Claude Code +9 - 0.779score
carbon-panel
gwittebolle
Open the carbon pane, your CO2 molecule and the warming stripes of your sessions
SkillAFreshness: A★ 226Claude Code +9 - 0.777score
carbon-report
gwittebolle
Display CO2 emissions report for Claude Code sessions
SkillAFreshness: A★ 226Claude Code +9
Cite this page
carbon-pr skill. Agent Mart. https://agentmart.dev/skills/gwittebolle-carbon-pr (last updated 2026-10-24)