googlarz/vibe-coder-kit/vibe-upgrade
Claude Code and agent skill by googlarz/vibe-coder-kit
- community
Checking that the SKILL.md file is still in the repository.
Update outdated or vulnerable packages one at a time, with a checkpoint before each one and a quick test after.
Install
npx vskill@latest install googlarz/vibe-coder-kit/vibe-upgradeSKILL.md
vibe-upgrade
Overview
Upgrading packages is not glamorous. It's also one of those things that's easy to put off until it's a problem. The right way to do it is one package at a time — not everything at once.
Running npm update or pip install --upgrade on everything simultaneously is how you break your app in ways that take hours to untangle. We're not doing that.
Step 1: Detect the ecosystem
Don't ask. Look for:
package.json→ Node.js / npmrequirements.txtorpyproject.toml→ PythonGemfile→ Ruby (note: usebundle outdatedandbundle update [gem])go.mod→ Go (note: usego get -u [package])
Step 2: Run the audit
Node.js:
Python:
If pip-audit is available: pip-audit (gives vulnerability info like npm audit does).
Read the output and translate it. Don't dump raw output at the user. Say:
"You have [N] packages with known security issues and [M] that are out of date. Here's what actually matters."
Then give them a short, plain-English summary — not the full table. Focus on:
- Severity (critical and high vulnerabilities go first)
- Age (packages that are multiple major versions behind)
- Skip: packages where the only available upgrade is a major version bump that's likely to break things — flag those separately
Step 3: Pick one package to do first
Don't give a list. Pick one and explain why.
Priority order:
- Any package with a critical or high severity vulnerability — name the vulnerability in plain English if npm audit describes it ("this one has a known security issue where someone could inject malicious code through the logger")
- Packages far behind (e.g. 3+ minor versions, or a year+ since last update)
- Dev tools (linters, test runners, TypeScript) — generally safe to upgrade
- Skip for now: major version upgrades for core packages (React, Next.js, Django, Rails) — these often need careful migration and deserve their own session
Say:
"Let's start with [package name] — it [reason in one sentence: has a security issue / is two years out of date / is a small upgrade with low risk]. The others can wait."
Step 4: Checkpoint first
Before touching anything, I'll run:
Tell the user:
"Saved. If this breaks anything, I'll put it back — just tell me to undo the upgrade."
(I'll run git reset --hard HEAD~1 to move the code back one step, undoing the upgrade.)
Step 5: Upgrade the one package
I'll run the upgrade command — you don't need to type anything. Just use the app after and confirm it still works.
Node.js — minor/patch upgrade (same major version):
If the project uses yarn (yarn.lock present): yarn upgrade [package]@latest If the project uses pnpm (pnpm-lock.yaml present): pnpm update [package]
Node.js — major version upgrade:
Don't use @latest for major bumps — it can silently jump to a version that breaks your app. Install the specific version you've decided on. Use npm outdated to see current vs wanted vs latest before deciding which version to target.
Python:
Go:
go mod tidy updates go.sum to match — always run it after go get.
Ruby:
Don't run bundle update without a gem name — that updates everything at once, which is what we're avoiding. Bundler handles the lockfile (Gemfile.lock) automatically — no separate lockfile update step needed.
Step 6: Verify
Don't assume it worked. Ask the user to check:
"Can you start the app and check [the specific feature most likely to be affected by this package]?"
Wait for them to confirm. If the package is a utility (lodash, date-fns, a logger) and there's no obvious UI feature to test: "Can you start the app and make sure it loads without errors?"
Step 7: Commit or revert
If it works:
I'll commit the upgrade:
Node.js:
Python — update the lockfile before committing:
pip install --upgrade does not automatically update requirements.txt — this step is required, not optional.
Go:
Ruby:
Then: "That worked. Ready to do the next one?"
Wait for their answer. Don't auto-continue.
If it breaks:
Don't try to fix the breakage now. Before reverting: confirm with the user — "This will remove the upgrade commit and go back to before the upgrade. Are you sure?" Run only if they confirm.
Alternative if you prefer not to rewrite history:git revert HEADcreates a new commit that undoes the upgrade without removing anything from git history. Either approach works — reset is cleaner on a fresh upgrade branch, revert is safer if you've already pushed.
Tell the user:
"That upgrade breaks something, so I've put it back the way it was. I'll make a note of it and we'll skip it for now."
Write to .vibe/debt.md:
Then: "Want to try the next one?"
How far to go
After each successful upgrade, ask: "Ready for the next one?"
Stop when:
- The user says stop
- All critical/high severity vulnerabilities are resolved
- You've done 3–5 upgrades in one session (more than that and it gets hard to track what broke what)
At natural stopping points, say:
"We've handled [N] packages today — the most important ones. The remaining [M] are lower priority and can wait for another session."
A word on major version upgrades
If the audit shows a package needs a major version bump (like React 17 → 18, or Next.js 13 → 14, or Django 3 → 4), don't do it as part of this session. Say:
"[Package] needs a major version upgrade — that's the kind of change that can break a lot of things and needs its own careful session. I'll note it but we'll skip it for now."
Write to .vibe/debt.md:
Major upgrades deserve their own plan, not a quick npm install.
Verification checklist
- [ ] One package at a time — did not upgrade multiple packages in a single step
- [ ] Checkpoint commit exists before each upgrade
- [ ] Tests or manual verification ran after each upgrade
- [ ] Successful upgrades committed with a clear message
- [ ] Failed upgrades reverted with
git reset --hardbefore moving on - [ ] Failed upgrades written to .vibe/debt.md
- [ ] Python: requirements.txt updated with
pip freeze > requirements.txtafter upgrade - [ ] Major version bumps deferred and written to
.vibe/debt.md
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/vibe-upgrade/SKILL.md
Popularity
- Repository stars
- 1
- 7-day trend score
- 3
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/googlarz/vibe-coder-kit/vibe-upgrade)