$npx -y skills add kv0906/pm-kit --skill updateCheck for and apply PM-Kit framework updates from GitHub releases. Reads local VERSION, queries latest release, shows changelog, and runs update script.
| 1 | # /update — Framework Updates |
| 2 | |
| 3 | Check for new PM-Kit releases and safely apply framework updates without touching your notes or config. |
| 4 | |
| 5 | ## Usage |
| 6 | |
| 7 | ``` |
| 8 | /update # Check + apply if available |
| 9 | /update --check # Check only, no download |
| 10 | /update --dry-run # Preview what would change without applying |
| 11 | ``` |
| 12 | |
| 13 | ## What This Skill Does |
| 14 | |
| 15 | ### 1. Check Current Version |
| 16 | |
| 17 | Read the local `VERSION` file to determine the installed version. |
| 18 | |
| 19 | ```bash |
| 20 | cat VERSION |
| 21 | ``` |
| 22 | |
| 23 | If `VERSION` doesn't exist, tell the user to run `./scripts/setup.sh` first. |
| 24 | |
| 25 | ### 2. Check Latest Release |
| 26 | |
| 27 | Query the GitHub API for the latest release: |
| 28 | |
| 29 | ```bash |
| 30 | # Detect repo from git remote, fallback to kv0906/pm-kit |
| 31 | REPO_SLUG="kv0906/pm-kit" |
| 32 | REMOTE_URL="$(git remote get-url origin 2>/dev/null || true)" |
| 33 | if [ -n "$REMOTE_URL" ]; then |
| 34 | REPO_SLUG="$(echo "$REMOTE_URL" | sed -E 's#.*[:/]([^/]+/[^/.]+)(\.git)?$#\1#')" |
| 35 | fi |
| 36 | |
| 37 | curl -sS "https://api.github.com/repos/${REPO_SLUG}/releases/latest" |
| 38 | ``` |
| 39 | |
| 40 | ### 3. Compare Versions |
| 41 | |
| 42 | - If local version matches latest: report "You're on the latest version (vX.Y.Z)" |
| 43 | - If update available: show the version diff and changelog excerpt |
| 44 | |
| 45 | ### 4. Apply Update (if user confirms) |
| 46 | |
| 47 | Run the update script, passing through any flags the user provided: |
| 48 | |
| 49 | ```bash |
| 50 | # If user ran /update --check: |
| 51 | ./scripts/update.sh --check |
| 52 | |
| 53 | # If user ran /update --dry-run: |
| 54 | ./scripts/update.sh --dry-run |
| 55 | |
| 56 | # If user ran /update (no flags): |
| 57 | ./scripts/update.sh |
| 58 | ``` |
| 59 | |
| 60 | The script will: |
| 61 | - Back up current framework files to `_archive/_updates/{date}/` |
| 62 | - Download and extract the latest release |
| 63 | - Overwrite framework files (skills, templates, scripts, docs) |
| 64 | - Skip hybrid files (`_core/config.yaml`, `.gitignore`) — shows diff instead |
| 65 | - Never touch user content (notes, meetings, etc.) |
| 66 | - Update the `VERSION` file |
| 67 | |
| 68 | ### 5. Post-Update Summary |
| 69 | |
| 70 | After the script completes, summarize: |
| 71 | - Files updated and files skipped |
| 72 | - Backup location |
| 73 | - Any hybrid files that need manual merge |
| 74 | - Remind user to run `/push` to commit changes |
| 75 | |
| 76 | ## What Gets Updated vs Preserved |
| 77 | |
| 78 | | Category | Examples | Action | |
| 79 | |----------|----------|--------| |
| 80 | | **Framework** | `CLAUDE.md`, `_templates/*`, `.claude/**`, `scripts/*`, `handbook/*` | Overwrite (backed up first) | |
| 81 | | **Hybrid** | `_core/config.yaml`, `.gitignore` | Diff shown, user merges | |
| 82 | | **User content** | `00-inbox/`, `daily/`, `decisions/`, `blockers/`, `meetings/` | Never touched | |