Skip to content
Agentmart
Submit a tool

carbon-update

Update claude-carbon to the latest version (a clone install also re-prices its history, CO2-only)

Skill by gwittebolle

IndexedMIT★ 226
Write a review

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-update

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.

We use your email only for this newsletter. Privacy

About

Update claude-carbon to the latest version (a clone install also re-prices its history, CO2-only)

No 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-update

What's inside

Skill name
carbon-update
Description
Update claude-carbon to the latest version (a clone install also re-prices its history, CO2-only)
License
MIT
Instructions
83 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Agent Skills spec issues

  • body: contains an absolute path from the author's machine

Files (1)

  • SKILL.md

SKILL.md (first lines)

Run the following bash script exactly as written and present its output to the user. Do not paraphrase. It updates the user's claude-carbon install, whichever way it was installed: the plugin through Claude Code's own plugin commands, or the installer's git clone (dirty-safe `git pull`, setup refreshed, stored sessions re-priced with the new factors).

```bash
#!/usr/bin/env bash
# Locate the install that is actually wired into the status line, then run its updater.
REPO_DIR=""
# 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
}
SETTINGS="$(ccp "${CLAUDE_CONFIG_DIR:-$HOME/.claude}")/settings.json"
# A jq the installer fetched into the data folder (a Mac older than macOS 15 has none)
JQ_DIR="$(ccp "${CLAUDE_CONFIG_DIR:-$HOME/.claude}")/claude-carbon/bin"
if ! command -v jq >/dev/null 2>&1 && [ -x "$JQ_DIR/jq" ]; then PATH="$JQ_DIR:$PATH"; fi
if command -v jq >/dev/null 2>&1 && [ -f "$SETTINGS" ]; then
  SL_CMD="$(jq -r '.statusLine.command // empty' "$SETTINGS" 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")"
  if [ -n "$SL_CMD" ] && [ -f "$SL_CMD" ]; then
    REPO_DIR="$(cd "$(dirname "$SL_CMD")/.." 2>/dev/null && pwd)"
  fi
fi
# The install the status line runs from, before any guess below
SL_REPO="$REPO_DIR"
[ -z "$REPO_DIR" ] && [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && REPO_DIR="$(ccp "$CLAUDE_PLUGIN_ROOT")"
[ -z "$REPO_DIR" ] && REPO_DIR="$(ccp "${CLAUDE_CARBON_DIR:-$HOME/code/claude-carbon}")"

# Installed as a plugin and turned on, under its own name or the co2-tracker listing of
# Anthropic's community directory (as scripts/install-mod.sh reads it): Claude Code updates
# it from that marketplace
PLUGIN_KEY=""
if command -v jq >/dev/null 2>&1 && [ -f "$SETTINGS" ]; then
  PLUGIN_KEY="$(jq -r '[(.enabledPlugins // {}) | to_entries[] | select(.value == true) | .key
      | select(test("^(claude-carbon|co2-tracker)@")) | select(. != "claude-carbon@skills-dir")]
      | first // empty' "$SETTINGS" 2>/dev/null | tr -d '\r')"
fi

if [ -n "$PLUGIN_KEY" ]; then
  MARKETPLACE="${PLUGIN_KEY#*@}"
  # The claude running this session, else the claude command, else the newest one the
  # desktop app keeps for itself on a Mac
  CLAUDE_BIN=""
  [ -x "${CLAUDE_CODE_EXECPATH:-}" ] && CLAUDE_BIN="$CLAUDE_CODE_EXECPATH"
  [ -n "$CLAUDE_BIN" ] || CLAUDE_BIN="$(command -v claude 2>/dev/null || true)"
  if [ -z "$CLAUDE_BIN" ]; then
    CLAUDE_BIN="$(for C in "$HOME/Library/Application Support/Claude/claude-code"/*/*/claude.app/Contents/MacOS/claude; do
      [ -x "$C" ] && printf '%s\n' "$C"
    done | sort -V | tail -1)"
  fi
  if [ -n "$CLAUDE_BIN" ] && "$CLAUDE_BIN" plugin marketplace update "$MARKETPLACE" \
     && "$CLAUDE_BIN" plugin update "$PLUGIN_KEY"; then
    echo "Restart Claude Code (quit the desktop app completely) to load the new version."
  else
    echo "claude-carbon is installed as a plugin. Update it from a terminal:"
    echo "  claude plugin marketplace update ${MARKETPLACE}"
    echo "  claude plugin update ${PLUGIN_KEY}"
    echo "then restart Claude Code."
  fi
  # A clone next to the plugin, for the status line: its updater would wire the hooks a
  # second time (the plugin brings its own) and re-price the stored history, so it is
  # left to the person.
  if [ -n "$SL_REPO" ] && [ -d "${SL_REPO}/.git" ]; then
    echo ""
    echo "The status line runs from the clone at ${SL_REPO}. To update it: git -C \"${SL_REPO}\" pull"
  fi
elif [ -f "${REPO_DIR}/scripts/update.sh" ]; then
  bash "${REPO_DIR}/scripts/update.sh"
else
  echo "claude-carbon updater not found at ${REPO_DIR}/scripts/update.sh"
  echo "Re-run the installer to update:"
  echo "  curl -fsSL https://raw.githubusercontent.com/gwittebolle/claude-carbon/main/install.sh | bash"
fi
```

From gwittebolle/claude-carbon, MIT.

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
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from gwittebolle

Cite this page

carbon-update skill. Agent Mart. https://agentmart.dev/skills/gwittebolle-carbon-update (last updated 2026-10-24)