diff --git a/commands/gsd/update.md b/commands/gsd/update.md
new file mode 100644
index 000000000..0564d1f37
--- /dev/null
+++ b/commands/gsd/update.md
@@ -0,0 +1,159 @@
+---
+name: gsd:update
+description: Update GSD to latest version with changelog display
+---
+
+
+Check for GSD updates, install if available, and display what changed.
+
+Provides a better update experience than raw `npx get-shit-done-cc` by showing version diff and changelog entries.
+
+
+
+
+
+Read installed version:
+
+```bash
+cat ~/.claude/get-shit-done/VERSION 2>/dev/null
+```
+
+**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).
+
+
+
+Check npm for latest version:
+
+```bash
+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.
+
+
+
+Compare installed vs latest:
+
+**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.
+
+
+
+Run the update:
+
+```bash
+npx get-shit-done-cc --global
+```
+
+Capture output. If install fails, show error and STOP.
+
+
+
+Fetch changelog from GitHub:
+
+Use WebFetch tool with:
+- URL: `https://raw.githubusercontent.com/glittercowboy/get-shit-done/main/CHANGELOG.md`
+- Prompt: "Extract all version entries with their dates and changes. Return the raw markdown for each version section."
+
+**If fetch fails:**
+Fall back to local:
+```bash
+cat ~/.claude/get-shit-done/CHANGELOG.md 2>/dev/null
+```
+
+
+
+From the changelog, extract entries between:
+- **From:** installed version (exclusive)
+- **To:** latest version (inclusive)
+
+Parse each `## [X.Y.Z]` section and collect all versions in the range.
+
+
+
+Format beautiful output:
+
+```
+╔═══════════════════════════════════════════════════════════╗
+║ GSD Updated: v1.5.10 → v1.5.15 ║
+╚═══════════════════════════════════════════════════════════╝
+
+✨ What's New
+────────────────────────────────────────────────────────────
+
+## [1.5.15] - 2026-01-20
+
+### Added
+- Feature X
+- Feature Y
+
+## [1.5.14] - 2026-01-18
+
+### Fixed
+- Bug in feature A
+
+────────────────────────────────────────────────────────────
+
+⚠️ Restart Claude Code to pick up the new commands.
+
+[View full changelog](https://github.com/glittercowboy/get-shit-done/blob/main/CHANGELOG.md)
+```
+
+**Key elements:**
+- Box header with version transition
+- All changelog entries in the range
+- **BREAKING:** changes surfaced prominently
+- Restart reminder (critical for picking up new commands)
+- Link to full changelog
+
+
+
+
+
+- [ ] Installed version read correctly
+- [ ] Latest version checked via npm
+- [ ] Update skipped if already current
+- [ ] Update executed successfully
+- [ ] Changelog fetched (remote or local fallback)
+- [ ] Changes between versions displayed
+- [ ] Restart reminder shown
+