codex/skills/update-dependencies/SKILL.md
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 skillsauth add tobihagemann/turbo update-dependenciesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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."
development
Apply a UX lens to a user-facing change: whether it serves the user's real goal and whether the path through it holds together, using the Understanding, Bridging, and Flowing contexts. Use when scoping, planning, or assessing any change that affects what a user sees or does. Loaded as a lens during planning and assessment.
development
Apply a UX lens to a user-facing change: whether it serves the user's real goal and whether the path through it holds together, using the Understanding, Bridging, and Flowing contexts. Use when scoping, planning, or assessing any change that affects what a user sees or does. Loaded as a lens during planning and assessment.
development
Assess project-wide structural technical debt: complexity hotspots, deprecated API usage, duplication clusters, and architecture rot. Ranks findings by impact and refactor effort into a report at .turbo/technical-debt.md. Use when the user asks to "assess technical debt", "find technical debt", "review technical debt", "what should we refactor", "find refactoring candidates", "where is the code rot", or "what's our worst code". Analysis-only — does not modify code.
development
Run a multi-agent review of code comments and markdown documentation for unnecessary content, then fix the issues. Covers what-restating comments, name-mirroring doc comments, status-update prose, and other documentation noise. Use when the user asks to "simplify docs", "simplify documentation", "clean up comments", "clean up docs", "review documentation", "strip unnecessary comments", "reduce doc noise", or "run simplify-docs".