diff --git a/README.md b/README.md
index 912278b2..75b2dd27 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,11 @@
+> [!WARNING]
+> **WORKAROUND FOR MISSING NPM UNTIL WE CAN PUBLISH AGAIN**
+> `npx get-shit-done-cc@latest` is currently unavailable. Install or update directly from source:
+> ```bash
+> git pull --rebase origin main && node scripts/build-hooks.js && node bin/install.js --claude --global
+> ```
+> See **[docs/manual-update.md](docs/manual-update.md)** for full instructions and all runtime flags.
+
# GET SHIT DONE
diff --git a/docs/manual-update.md b/docs/manual-update.md
new file mode 100644
index 00000000..d2bda994
--- /dev/null
+++ b/docs/manual-update.md
@@ -0,0 +1,62 @@
+# Manual Update (Non-npm Install)
+
+Use this procedure when `npx get-shit-done-cc@latest` is unavailable — e.g. during a publish outage or if you are working directly from the source repo.
+
+## Prerequisites
+
+- Node.js installed
+- This repo cloned locally (`git clone https://github.com/gsd-build/get-shit-done`)
+
+## Steps
+
+```bash
+# 1. Pull latest code
+git pull --rebase origin main
+
+# 2. Build the hooks dist (required — hooks/dist/ is generated, not checked in as source)
+node scripts/build-hooks.js
+
+# 3. Run the installer directly
+node bin/install.js --claude --global
+
+# 4. Clear the update cache so the statusline indicator resets
+rm -f ~/.cache/gsd/gsd-update-check.json
+```
+
+**Step 5 — Restart your runtime** to pick up the new commands and agents.
+
+## Runtime flags
+
+Replace `--claude` with the flag for your runtime:
+
+| Runtime | Flag |
+|---|---|
+| Claude Code | `--claude` |
+| Gemini CLI | `--gemini` |
+| OpenCode | `--opencode` |
+| Kilo | `--kilo` |
+| Codex | `--codex` |
+| Copilot | `--copilot` |
+| Cursor | `--cursor` |
+| Windsurf | `--windsurf` |
+| Augment | `--augment` |
+| All runtimes | `--all` |
+
+Use `--local` instead of `--global` for a project-scoped install.
+
+## What the installer replaces
+
+The installer performs a clean wipe-and-replace of GSD-managed directories only:
+
+- `~/.claude/get-shit-done/` — workflows, references, templates
+- `~/.claude/commands/gsd/` — slash commands
+- `~/.claude/agents/gsd-*.md` — GSD agents
+- `~/.claude/hooks/dist/` — compiled hooks
+
+**What is preserved:**
+- Custom agents not prefixed with `gsd-`
+- Custom commands outside `commands/gsd/`
+- Your `CLAUDE.md` files
+- Custom hooks
+
+Locally modified GSD files are automatically backed up to `gsd-local-patches/` before the install. Run `/gsd:reapply-patches` after updating to merge your modifications back in.