{"id":"ce6de35e-1484-4ebf-8383-87dc6ebfbce9","shortId":"gQ9rg5","kind":"skill","title":"update-dependencies","tagline":"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 up","description":"# Update Dependencies\n\nUpgrade project dependencies, researching breaking changes for major version updates.\n\nOptional filter: `$ARGUMENTS` (e.g., `react`, `Alamofire`, `serde tokio`)\n\n## Phase 1: Review Dependencies\n\nRun the `/review-dependencies` skill to detect package managers and discover available updates. If no updates are available, stop.\n\n## Phase 2: User Strategy Selection\n\nPresent a summary showing:\n- Count and list of major updates (with current → target versions)\n- Count of minor updates\n- Count of patch updates\n\nUse AskUserQuestion for upgrade strategy:\n\n**Header**: \"Strategy\"\n**Options**:\n- **Cautious** — Upgrade minor/patch first, then major one-by-one with research\n- **All at once** — Research all major changes, then upgrade everything together\n- **Skip major** — Only upgrade minor and patch versions\n- **Interactive** — Ask for each major update individually\n\n## Phase 3: Research Breaking Changes\n\nFor **each package with a major version update**:\n\n### Step 1: Calculate Version Gap\n\nIdentify all major versions between current and target. For example:\n- `react: 17.0.2 → 19.0.0` → research v18 AND v19 breaking changes\n- `Alamofire: 4.9.1 → 6.0.0` → research v5 AND v6 breaking changes\n\n### Step 2: Research Each Major Version\n\nSearch for migration documentation:\n\n```\nWebSearch: \"[package-name] v[X] migration guide\"\nWebSearch: \"[package-name] v[X] breaking changes\"\n```\n\nCommon sources: GitHub releases page, official docs, changelog files.\n\n### Step 3: Extract Key Breaking Changes\n\nIdentify: API changes (renamed/removed functions), configuration changes, peer/transitive dependency requirements, behavioral changes, deprecated features now removed.\n\n### Step 4: Search Codebase for Affected Code\n\nUse Grep to find usage of deprecated or changed APIs. Document which files are affected and what changes are needed.\n\n## Phase 4: User Confirmation\n\nFor each major update, present:\n- Package name and version transition\n- Breaking changes found (summarized)\n- Files potentially affected (count and list)\n\nUse AskUserQuestion to confirm:\n\n**Header**: \"Confirm\"\n**Options**:\n- **Proceed** — Continue with upgrades and migrations\n- **Show details** — Display detailed breaking changes for review\n- **Skip package** — Exclude a specific package from upgrade\n- **Abort** — Cancel the upgrade process\n\nIf \"Show details\" selected, display full migration research, then ask again.\n\n## Phase 5: Execute Upgrades\n\n### Cautious Strategy\n\nFirst 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.\n\n### Major Version Upgrades\n\nUpdate 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.\n\n## Phase 6: Apply Migrations\n\n### Step 1: Run Codemods (if Available)\n\nSome ecosystems provide automated migration tools:\n\n| Ecosystem | Migration tools |\n|---|---|\n| React | `npx react-codemod [transform]` |\n| Next.js | `npx @next/codemod [transform]` |\n| Jest | `npx jest-codemods` |\n| Angular | `npx ng update` |\n| Rust | `cargo fix` for edition migrations |\n| Python | `pyupgrade`, `python-modernize` |\n\n### Step 2: Manual Code Changes\n\nFor changes requiring manual intervention:\n1. Read the affected file\n2. Apply the necessary transformation using Edit\n3. Show the user what changed\n\n### Step 3: Update Configuration Files\n\nIf configuration format changed, read current config, transform to new format, write updated config.\n\n## Phase 7: Verification\n\nRun 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.).\n\n### Report Results\n\nSummarize: packages upgraded (count), breaking changes addressed (count), files modified (count), test results, remaining manual tasks.\n\n### Recommend Next Steps\n\nIf any migrations could not be automated:\n- List specific changes the user needs to review\n- Highlight deprecated patterns that need attention\n- Note any runtime behavior changes to watch for\n\n## Error Handling\n\n### Discovery Tool Not Available\n\nIf the discovery tool is not installed, `/review-dependencies` will note it. Fall back to manual version checking via WebSearch.\n\n### Network Errors During Research\n\nIf WebSearch/WebFetch fails: retry with alternative search terms, provide manual research links, proceed with caution warning that migration research may be incomplete.\n\n### Test Failures After Upgrade\n\n- Stop the upgrade process\n- Suggest rollback: restore manifest and lockfile from git, then reinstall\n- Identify which package likely caused the failure\n\n### Migration Research Incomplete\n\nIf official migration docs are not found: check the package's repository for issues and discussions, note as \"migration research incomplete — proceed with caution.\"","tags":["update","dependencies","turbo","tobihagemann","agent-skills","claude-code","claude-skills","developer-tools","skills"],"capabilities":["skill","source-tobihagemann","skill-update-dependencies","topic-agent-skills","topic-claude-code","topic-claude-skills","topic-developer-tools","topic-skills"],"categories":["turbo"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/tobihagemann/turbo/update-dependencies","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add tobihagemann/turbo","source_repo":"https://github.com/tobihagemann/turbo","install_from":"skills.sh"}},"qualityScore":"0.590","qualityRationale":"deterministic score 0.59 from registry signals: · indexed on github topic:agent-skills · 280 github stars · SKILL.md body (5,015 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:54:13.081Z","embedding":null,"createdAt":"2026-04-18T22:04:14.263Z","updatedAt":"2026-04-22T00:54:13.081Z","lastSeenAt":"2026-04-22T00:54:13.081Z","tsv":"'/review-dependencies':68,622 '1':63,171,429,483 '17.0.2':186 '19.0.0':187 '2':85,204,474,488 '3':158,239,495,502 '4':261,288 '4.9.1':195 '5':357 '6':425 '6.0.0':196 '7':521 'abort':340 'address':567 'affect':265,281,307,486 'alamofir':59,194 'altern':643 'angular':458 'api':245,276 'appli':426,489 'argument':56 'ask':19,151,354 'askuserquest':112,312 'attent':600 'autom':437,586 'avail':76,82,433,536,614 'back':627 'behavior':254,604 'break':8,48,160,192,201,227,242,301,328,565 'build':528 'calcul':172 'cancel':341 'cargo':37,463 'caus':682 'caution':652,711 'cautious':119,360 'chang':9,49,137,161,193,202,228,243,246,250,255,275,284,302,329,477,479,500,509,566,589,605 'changelog':236 'check':631,695 'code':266,476 'codebas':263 'codemod':431,447,457 'command':377,403,411,531,534 'common':229 'config':512,519,541 'configur':249,504,507 'confirm':290,314,316 'constraint':398 'continu':319 'could':583 'count':93,103,107,308,564,568,571 'current':100,180,511 'dedic':409 'dep':28,30,33 'depend':3,6,22,26,43,46,65,252 'deprec':256,273,596 'detail':325,327,347 'detect':71,532 'direct':423 'discov':75 'discoveri':611,617 'discuss':703 'display':326,349 'doc':235,691 'document':212,277 'e.g':57 'ecosystem':435,440 'edit':420,466,494 'error':609,635 'etc':558 'everyth':140 'exampl':184 'exclud':334 'execut':358 'extract':240 'fail':383,640 'failur':661,684 'fall':626 'featur':257 'file':237,279,305,396,487,505,542,569 'filter':55 'find':270 'first':122,362 'fix':464 'format':508,516 'found':303,694 'full':350 'function':248 'gap':174 'get':40 'git':675 'github':231 'go':39 'gradl':419 'grep':268 'guid':220 'handl':610 'header':116,315 'highlight':595 'identifi':175,244,678 'incomplet':659,687,708 'individu':156 'instal':621 'install/resolve':402 'interact':150 'intervent':482 'issu':701 'jest':453,456 'jest-codemod':455 'justfil':555 'key':241 'level':548 'like':681 'link':649 'lint':530 'list':95,310,587 'lockfil':673 'major':12,51,97,124,136,143,154,167,177,207,293,388,390 'makefil':553 'manag':73,371,406 'manifest':395,422,671 'manual':475,481,575,629,647 'maven':418 'may':657 'migrat':211,219,323,351,427,438,441,467,582,655,685,690,706 'minor':105,146,364 'minor/patch':121 'modern':472 'modifi':570 'name':216,224,297 'necessari':491 'need':286,592,599 'network':634 'new':515 'next':578 'next.js':449 'next/codemod':451 'ng':460 'note':601,624,704 'npm':32,556 'npx':444,450,454,459 'offici':234,689 'one':126,128 'one-by-on':125 'option':54,118,317 'other':415 'packag':24,36,72,164,215,223,296,333,337,370,405,562,680,697 'package-nam':214,222 'page':233 'patch':109,148,366 'pattern':597 'peer/transitive':251 'phase':62,84,157,287,356,424,520 'pm':417 'potenti':306 'present':89,295,552 'proceed':318,386,650,709 'process':344,667 'project':5,45,525,539,547 'project-level':546 'provid':436,646 'python':468,471 'python-modern':470 'pyupgrad':469 'react':58,185,443,446 'react-codemod':445 'read':484,510 'recommend':577 'reinstal':677 'releas':232 'remain':574 'remov':259 'renamed/removed':247 'report':559 'repositori':699 'requir':253,480 'research':10,47,130,134,159,188,197,205,352,637,648,656,686,707 'respect':375 'restor':670 'result':560,573 'retri':641 'review':64,331,594 'rollback':669 'run':66,379,400,430,523 'runner':550 'runtim':603 'rust':462 'script':544,557 'search':209,262,644 'select':88,348 'semver':374 'semver-respect':373 'serd':60 'show':92,324,346,496 'skill':69 'skill-update-dependencies' 'skip':142,332 'sourc':230 'source-tobihagemann' 'specif':336,588 'step':170,203,238,260,428,473,501,579 'stop':83,384,664 'strategi':87,115,117,361 'suggest':668 'summar':304,561 'summari':91 'swift':35,416 'target':101,182 'task':549,576 'taskfil':554 'term':645 'test':380,382,527,572,660 'togeth':141 'tokio':61 'tool':439,442,612,618 'topic-agent-skills' 'topic-claude-code' 'topic-claude-skills' 'topic-developer-tools' 'topic-skills' 'transform':448,452,492,513 'transit':300 'updat':2,14,21,27,31,34,38,42,53,77,80,98,106,110,155,169,294,376,393,461,503,518 'update-depend':1 'upgrad':4,23,25,29,44,114,120,139,145,321,339,343,359,363,389,392,410,563,663,666 'usag':271 'use':15,111,267,311,368,412,493,545 'user':18,86,289,498,591 'v':217,225 'v18':189 'v19':191 'v5':198 'v6':200 'verif':522 'version':13,52,102,149,168,173,178,208,299,391,397,630 'via':632 'warn':653 'watch':607 'websearch':213,221,633 'websearch/webfetch':639 'write':517 'x':218,226","prices":[{"id":"b621dba1-d262-4bc0-a699-876cb4b67ea6","listingId":"ce6de35e-1484-4ebf-8383-87dc6ebfbce9","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"tobihagemann","category":"turbo","install_from":"skills.sh"},"createdAt":"2026-04-18T22:04:14.263Z"}],"sources":[{"listingId":"ce6de35e-1484-4ebf-8383-87dc6ebfbce9","source":"github","sourceId":"tobihagemann/turbo/update-dependencies","sourceUrl":"https://github.com/tobihagemann/turbo/tree/main/skills/update-dependencies","isPrimary":false,"firstSeenAt":"2026-04-18T22:04:14.263Z","lastSeenAt":"2026-04-22T00:54:13.081Z"}],"details":{"listingId":"ce6de35e-1484-4ebf-8383-87dc6ebfbce9","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"tobihagemann","slug":"update-dependencies","github":{"repo":"tobihagemann/turbo","stars":280,"topics":["agent-skills","claude-code","claude-skills","developer-tools","skills"],"license":"mit","html_url":"https://github.com/tobihagemann/turbo","pushed_at":"2026-04-21T12:22:12Z","description":"A composable dev process for Claude Code, packaged as modular skills.","skill_md_sha":"9953fd9091cb2017de60e77e8fc065a3f6865c44","skill_md_path":"skills/update-dependencies/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/tobihagemann/turbo/tree/main/skills/update-dependencies"},"layout":"multi","source":"github","category":"turbo","frontmatter":{"name":"update-dependencies","description":"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\"."},"skills_sh_url":"https://skills.sh/tobihagemann/turbo/update-dependencies"},"updatedAt":"2026-04-22T00:54:13.081Z"}}