gsd:update

gsd:update is a command for Claude Code from Jamie-BitFlight/git-project-xray-mcp. It costs 14 tokens per session (1,190 once invoked), scanned B, original, from a forked repository, MIT.

A command for updating the Get Shit Done tool, a coding workflow tool, to its latest version. It checks whether the local or global installation is present, compares versions, and shows release notes.

In plain words
What is it for?
It is for checking and updating local or global Get Shit Done installations, including fresh installation when no version is recorded.
Why use it?
It avoids updating blindly by identifying the installed copy and showing what changed.

Command for Claude Code

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/jamie-bitflight/git-project-xray-mcp/update
Clone the repo
git clone --depth 1 https://github.com/Jamie-BitFlight/git-project-xray-mcp

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for gsd:update

README.md
[![agentmods](https://agentmods.dev/badge/commands/jamie-bitflight/git-project-xray-mcp/update.svg)](https://agentmods.dev/commands/jamie-bitflight/git-project-xray-mcp/update)
Your own site
<a href="https://agentmods.dev/commands/jamie-bitflight/git-project-xray-mcp/update"><img src="https://agentmods.dev/badge/commands/jamie-bitflight/git-project-xray-mcp/update.svg" alt="Measured on agentmods" height="20"></a>
Per session 14 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,190 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. Scan, not verified.
Origin fork From a forked repository.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00014 $0.01190
Opus 5 $0.00007 $0.00595
Sonnet 5 $0.00003 $0.00238
Haiku 4.5 $0.00001 $0.00119

Measured 4d ago against content hash c9b400daa55f, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade B, and why

gsd:update scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Reads agent configuration directoriesmediumAgent snooping

.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.

cat "./.claude/get-shit-done/VERSION"
.claude/commands/gsd/update.md · 201 lines

How it starts

The opening of the file, as written. The whole thing — 201 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Provides a better update experience than raw npx get-shit-done-cc by showing version diff and changelog entries.

# Check local first (takes priority)
if [ -f "./.claude/get-shit-done/VERSION" ]; then
  cat "./.claude/get-shit-done/VERSION"
  echo "LOCAL"
elif [ -f ./.claude/get-shit-done/VERSION ]; then
  cat ./.claude/get-shit-done/VERSION
  echo "GLOBAL"
else
  echo "UNKNOWN"
fi

Parse output:

  • If last line is "LOCAL": installed version is first line, use --local flag for update
  • If last line is "GLOBAL": installed version is first line, use --global flag for update
  • If "UNKNOWN": proceed to install step (treat as version 0.0.0)

If VERSION file missing:

## GSD Update

**Installed version:** Unknown

Your installation doesn't include version tracking.

Running fresh install...

Proceed to install step (treat as version 0.0.0 for comparison).

npm view get-shit-done-cc version 2>/dev/null

If npm check fails:

Couldn't check for updates (offline or npm unavailable).

To update manually: `npx get-shit-done-cc --global`

STOP here if npm unavailable.

If installed == latest:

## GSD Update

**Installed:** X.Y.Z
**Latest:** X.Y.Z

You're already on the latest version.

STOP here if already up to date.

If installed > latest:

## GSD Update

**Installed:** X.Y.Z
**Latest:** A.B.C

You're ahead of the latest release (development version?).

STOP here if ahead.

  1. Fetch changelog (same as fetch_changelog step)
  2. Extract entries between installed and latest versions
  3. Display preview and ask for confirmation:
## GSD Update Available

**Installed:** 1.5.10
**Latest:** 1.5.15

### What's New
────────────────────────────────────────────────────────────

## [1.5.15] - 2026-01-20

### Added
- Feature X

## [1.5.14] - 2026-01-18

### Fixed
- Bug fix Y

────────────────────────────────────────────────────────────

⚠️  **Note:** The installer performs a clean install of GSD folders:
- `commands/gsd/` will be wiped and replaced
- `get-shit-done/` will be wiped and replaced
- `agents/gsd-*` files will be replaced

(Paths are relative to your install location: `./.claude/` for global, `./.claude/` for local)

Your custom files in other locations are preserved:
- Custom commands not in `commands/gsd/` ✓
- Custom agents not prefixed with `gsd-` ✓
- Custom hooks ✓
- Your CLAUDE.md files ✓

If you've modified any GSD files directly, back them up first.

Use AskUserQuestion:

  • Question: "Proceed with update?"
  • Options:
    • "Yes, update now"
    • "No, cancel"

If user cancels: STOP here.

If LOCAL install:

npx get-shit-done-cc --local

If GLOBAL install (or unknown):

npx get-shit-done-cc --global

Capture output. If install fails, show error and STOP.

Clear the update cache so statusline indicator disappears:

If LOCAL install:

rm -f ./.claude/cache/gsd-update-check.json

If GLOBAL install:

rm -f ./.claude/cache/gsd-update-check.json
╔═══════════════════════════════════════════════════════════╗
║  GSD Updated: v1.5.10 → v1.5.15                           ║
╚═══════════════════════════════════════════════════════════╝

⚠️  Restart Claude Code to pick up the new commands.

[View full changelog](https://github.com/glittercowboy/get-shit-done/blob/main/CHANGELOG.md)

Read the full file on GitHub · 201 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 201 lines · 14 tokens per session scan B c9b400daa55f

Subscribe to this mod's changes

gsd:update is a command published in the GitHub repository Jamie-BitFlight/git-project-xray-mcp (0 stars, last pushed 6mo ago), licensed MIT. It adds 14 tokens to every session and 1,190 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). It comes from a forked repository.