$npx -y skills add PaulRBerg/agent-skills --skill bump-depsUse for dependency updates: bump npm/pnpm/yarn/bun packages, check outdated, or run taze.
| 1 | # Bump Dependencies |
| 2 | |
| 3 | Use Taze to build one structured update plan, apply compatible ranged updates, and make major-version decisions as a |
| 4 | batch. |
| 5 | |
| 6 | ## Workflow |
| 7 | |
| 8 | 1. Resolve the skill directory and save the helper plan from the target repository: |
| 9 | |
| 10 | ```sh |
| 11 | bash <skill-dir>/scripts/run-taze.sh --plan [--include package-a,package-b] > <taze-plan.json> |
| 12 | ``` |
| 13 | |
| 14 | The JSON plan classifies every discovered update as `apply`, `review-major`, `review`, or `skip-fixed`. The helper |
| 15 | detects monorepos, includes locked versions during scans, and mirrors Bun minimum-release-age settings. If the |
| 16 | repository uses package-manager age gates or Bun catalogs, read |
| 17 | [references/conditional-workflows.md](references/conditional-workflows.md) for that active branch only. |
| 18 | |
| 19 | 2. If `--dry-run` was requested, present the plan and counts, then stop without changing manifests or lockfiles. |
| 20 | |
| 21 | 3. Select every ranged minor/patch update marked `apply`. Never auto-approve a major package by name. Present all |
| 22 | `review-major` and unknown updates in one decision batch with current version, target version, package role when |
| 23 | discoverable, and relevant migration/release notes. Apply only the majors the user selects. |
| 24 | |
| 25 | 4. If nothing is selected, report the no-op and stop. If the root manifest uses Bun catalogs, preview the exact selected |
| 26 | catalog transitions from the accepted plan: |
| 27 | |
| 28 | ```sh |
| 29 | uv run <skill-dir>/scripts/update-bun-catalogs.py \ |
| 30 | --root <repo> --plan <taze-plan.json> --include package-a,package-b |
| 31 | ``` |
| 32 | |
| 33 | The preview is read-only. Missing catalog entries, conflicting plan rows, unsupported versions, or a catalog value |
| 34 | that no longer matches the plan fail before writes. The helper does not select upgrades. |
| 35 | |
| 36 | 5. Write all selected Taze updates in one command: |
| 37 | |
| 38 | ```sh |
| 39 | bash <skill-dir>/scripts/run-taze.sh --write --include package-a,package-b |
| 40 | ``` |
| 41 | |
| 42 | 6. For Bun catalogs, rerun `update-bun-catalogs.py` with the same plan and include set plus `--write`. It atomically |
| 43 | updates every matching default/named catalog occurrence and preserves each existing `^`, `~`, or empty prefix. Then |
| 44 | run `ni` so the repository's package manager updates its lockfile. |
| 45 | |
| 46 | 7. Inspect the manifest and lockfile diff. Run the narrowest package-manager or repository checks that exercise updated |
| 47 | dependencies, with extra attention to approved major migrations. Also run whatever lint command the repository |
| 48 | exposes (package script, task runner recipe, or equivalent) — dependency bumps can introduce new lint violations even |
| 49 | when tests and the build stay green (e.g. an updated linter or plugin adding rules, or a typing change surfacing |
| 50 | stricter checks). |
| 51 | |
| 52 | 8. Fix newly flagged lint errors, but judge each one before changing code: a bump can introduce a rule the user may not |
| 53 | want enabled at all, not just a violation to fix. If a new error's fix is unclear, or fixing it would fight the |
| 54 | rule's intent rather than follow it, stop with `### ⚠️ Dependency lint decision required`. Show the rule, affected |
| 55 | locations, likely effects, and the explicit `fix`, `suppress`, or `disable` choices in one table instead of guessing. |
| 56 | |
| 57 | ## User-Facing Output |
| 58 | |
| 59 | Present plans as `### 📦 Dependency plan` with counts and a compact table: |
| 60 | |
| 61 | | ID | Plan value | Decision | Package | Current → target | Type | Notes | |
| 62 | | --- | ---------- | -------- | ------- | ---------------- | ---- | ----- | |
| 63 | |
| 64 | Use the plan's exact `apply`, `review-major`, `review`, and `skip-fixed` values alongside plain-language decisions. |
| 65 | Assign stable IDs to rows needing a choice so the user can answer once. Use `### 🔎 Dry run — no files written` for a |
| 66 | preview and `### ✅ No selected updates` for a no-op. |
| 67 | |
| 68 | Finish applied work with `### 🏁 Dependencies updated`, a tree of changed manifests/lockfiles, `### 🧪 Verification`, |
| 69 | and `### ⚠️ Remaining review` only when non-empty. Keep helper JSON, package/version strings, commands, and diagnostics |
| 70 | exact and undecorated. |
| 71 | |
| 72 | ## Invariants |
| 73 | |
| 74 | - Fixed versions and non-semver protocols remain unchanged unless the user explicitly asks otherwise. |
| 75 | - Package arguments constrain both scan and write phases. |
| 76 | - The same maturity-period policy applies to scan and write. |
| 77 | - Bun catalog preview and write use the same accepted Taze plan and selected package set; stale plans never write. |
| 78 | - Do not infer compatibility from SemVer alone when repository evidence, peer ranges, or release notes indicate |
| 79 | otherwise. |
| 80 | |
| 81 | Completion requires a reviewed plan, one manifest write for the selected set, a regenerated lockfile, and validation |
| 82 | evidence; dry-run completion requires the structured plan and zero writes. |