tobihagemann/turbo-update-dependencies
Upgrade project dependencies with breaking change research for major version updates. Use when the user asks to \"update dependencies\", \"upgrade packages\", \"upgrade dependencies\", \"update deps\", \"upgrade deps\", \"update npm deps\", \"update Swift packages\", \"cargo update\", \"go get updates\", \"bundle update\", or \"pip upgrade\".
npx skills add https://github.com/tobihagemann/turbo --skill update-dependencies
Upgrade project dependencies, researching breaking changes for major version updates.
Optional filter: $ARGUMENTS (e.g., react, Alamofire, serde tokio)
Run the $review-dependencies skill to detect package managers and discover available updates. If no updates are available, stop.
Present a summary showing:
Use request_user_input for upgrade strategy (Codex request_user_input allows up to 3 options per question, so the four strategies are split across two questions):
Question 1 — Header: "Approach"
Options:
If the user picks Major handling, ask a follow-up:
Question 2 — Header: "Major handling"
Options:
For each package with a major version update:
Identify all major versions between current and target. For example:
react: 17.0.2 → 19.0.0 → research v18 AND v19 breaking changesAlamofire: 4.9.1 → 6.0.0 → research v5 AND v6 breaking changesSearch for migration documentation:
Web search: "[package-name] v[X] migration guide"
Web search: "[package-name] v[X] breaking changes"
Common sources: GitHub releases page, official docs, changelog files.
Identify: API changes (renamed/removed functions), configuration changes, peer/transitive dependency requirements, behavioral changes, deprecated features now removed.
Use rg to find usage of deprecated or changed APIs. Document which files are affected and what changes are needed.
For each major update, present:
Use request_user_input to confirm (Codex request_user_input allows up to 3 options per question, so the four actions are split across two questions):
Question 1 — Header: "Decision"
Options:
If the user picks Other action, ask a follow-up:
Question 2 — Header: "Other action"
Options:
If "Show details" selected, display full migration research, then ask again.
First upgrade minor and patch only using the package manager's semver-respecting update command, then run tests. If tests fail, stop before proceeding with major upgrades.
Update the manifest file (version constraint) and run the install/resolve command. For package managers with a dedicated upgrade command, use it. For others (Swift PM, Maven, Gradle), edit the manifest directly.
Some ecosystems provide automated migration tools:
| Ecosystem | Migration tools |
|---|---|
| React | npx react-codemod [transform] |
| Next.js | npx @next/codemod [transform] |
| Jest | npx jest-codemods |
| Angular | npx ng update |
| Rust | cargo fix for edition migrations |
| Python | pyupgrade, python-modernize |
For changes requiring manual intervention:
apply_patchIf configuration format changed, read current config, transform to new format, write updated config.
Some packages pin their version outside the manifest, beyond the package manager's reach, so a green local run hides the drift. For every upgraded package (major, minor, or patch), search CI and container configs for the old version string with rg "<old-version>" .github Dockerfile* docker-compose* .devcontainer and bump it in lockstep:
@playwright/test version.Dockerfile, .devcontainer/, and docker-compose.yml.actions/setup-node node-version, setup-python, toolchain files).Run the project's test, build, and lint commands. Detect which commands are available from the project's config files and scripts. Use project-level task runners when present (Makefile, Taskfile, justfile, npm scripts, etc.).
Summarize: packages upgraded (count), breaking changes addressed (count), files modified (count), test results, remaining manual tasks.
If any migrations could not be automated:
If the discovery tool is not installed, $review-dependencies will note it. Fall back to manual version checking via web search.
If web search/fetch fails: retry with alternative search terms, provide manual research links, proceed with caution warning that migration research may be incomplete.
If official migration docs are not found: check the package's repository for issues and discussions, note as "migration research incomplete — proceed with caution."
Take tobihagemann/turbo-update-dependencies from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.