Skip to content
Back to skills

Forge Update

ASecurity

Update Forge to the latest version and show what changed. Use on 'update forge', '/forge-update', 'is there a new forge', 'pull latest forge'.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
ai-agentsbashgit

Works with

  • claude code

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add AdamGarceau/forge --skill forge-update --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Forge Update?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Forge Update
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/adamgarceau-forge-update/badge)](https://www.skillsdirectory.com/skills/adamgarceau-forge-update)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: forge-update
description: "Update Forge to the latest version and show what changed. Use on 'update forge', '/forge-update', 'is there a new forge', 'pull latest forge'."
allowed-tools:
  - Read
  - Bash
  - AskUserQuestion
---

# /forge-update — pull the latest Forge, show what changed

Forge installs as a **symlink** from `~/.claude/skills/forge` to a cloned git repo (see `install.sh`), so updating is a `git pull` in that repo and the symlink picks it up next session. This command checks the version, shows the changelog for what's new, and fast-forwards — without clobbering local edits.

## Process

1. **Find the repo.**
   - `SKILL="$HOME/.claude/skills/forge"`.
   - If `SKILL` is a symlink: `REPO="$(cd "$SKILL" && pwd -P)"` (resolve to the real clone).
   - Else if `SKILL/.git` or `SKILL` is itself a git repo: `REPO="$SKILL"`.
   - Else: tell the user Forge wasn't installed via `install.sh` (no repo to pull) and stop, pointing them to `git pull` in wherever they cloned it.

2. **Fetch and compare.** In `REPO`:
   - `git fetch --quiet origin` (if this fails — offline / no remote — say so and stop gracefully).
   - Local version: `cat VERSION`. Upstream: `git show origin/main:VERSION`.
   - Commits behind: `git rev-list --count HEAD..origin/main`.

3. **If up to date** (behind = 0): print `✅ Forge is up to date (vX.Y.Z).` and stop.

4. **If behind, show what's new.** Print the current → new version, then the changelog entries newer than the local version: `git show origin/main:CHANGELOG.md` and display the sections above the installed version. Keep it to the `Added` / `Fixed` bullets, not the whole file.

5. **Confirm, then update.** Ask the user to confirm (AskUserQuestion or a printed `[Y/n]`). On yes:
   - If the working tree is clean: `git pull --ff-only origin main`.
   - If it **can't fast-forward or the tree is dirty** (the user customized their copy): do NOT force. Show `git status`, explain their copy diverged from upstream, and offer the options — `git stash` then pull then `git stash pop`, or review the diff first. Never overwrite local changes silently. (A future release will do a three-way reapply-merge like GSD's `--reapply`.)

6. **Confirm result.** Print the new version and note that a symlink install needs nothing further — Claude Code loads the updated skill next session. Remind them to restart the session to pick it up.

## Rules
- Read-only until the user confirms the pull. Never `git reset --hard` or force-overwrite.
- Offline, detached HEAD, or a non-`origin/main` setup → report the situation and stop; don't guess.
- This updates the public/distributed copy. Maintainers who keep a separate live copy sync that themselves.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…