
Update Deps
- 2 installs
- 11.4k repo stars
- Updated August 5, 2026
- assistant-ui/assistant-ui
update-deps is a skill that updates dependencies across the assistant-ui monorepo (pnpm, Python uv, and GitHub Actions) and regenerates lockfiles and changesets.
About
This skill updates every package's dependencies across the assistant-ui monorepo, covering pnpm workspaces, Python uv.lock files, and GitHub Actions pins. A developer runs it when bumping deps, refreshing lockfiles, or preparing a dependency-update PR before a release. It regenerates lockfiles and writes a patch changeset for each published package that changed.
- One workflow updates JS (pnpm/taze), Python (uv), and GitHub Actions deps
- Regenerates lockfiles and emits a chore: update dependencies changeset
- Re-pins Expo SDK packages via expo install --fix to avoid runtime crashes
Update Deps by the numbers
- 2 all-time installs (skills.sh)
- Ranked #1,138 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
update-deps capabilities & compatibility
- Capabilities
- dependency update · lockfile regeneration
- Works with
- github
- Use cases
- devops · ci cd
- Runs
- Runs locally
- Pricing
- Free
What update-deps says it does
Update every package's dependencies across the monorepo (packages, apps, examples, templates, `python/*`, and `.github/workflows/*`), regenerate lockfiles
`expo install --fix` re-pins them to the versions sanctioned by the current `expo` SDK. Do not skip this step
npx skills add https://github.com/assistant-ui/assistant-ui --skill update-depsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2 |
|---|---|
| repo stars | ★ 11.4k |
| Last updated | August 5, 2026 |
| Repository | assistant-ui/assistant-ui ↗ |
What it does
Bump, upgrade, and re-pin dependencies across a pnpm/uv/GitHub-Actions monorepo, then regenerate lockfiles and a changeset before a release.
Who is it for?
Maintainers doing a monorepo-wide dependency bump before a release
Skip if: Single-package apps without pnpm workspaces or changesets
When should I use this skill?
The user asks to bump, upgrade, or update dependencies, refresh lockfiles, or repin GitHub Actions
What you get
All package.json, lockfiles, and pinned Actions are updated with a correct patch changeset ready to commit.
- updated package.json files
- regenerated pnpm-lock.yaml and uv.lock
- chore: update dependencies changeset
By the numbers
- 4-step deps:update sequence
- 6 Python packages under python/
Files
update-deps
Update every package's dependencies across the monorepo (packages, apps, examples, templates, python/*, and .github/workflows/*), regenerate lockfiles, and create a chore: update dependencies changeset for the JS side.
JS / TS (pnpm workspaces)
Preview what would change without writing anything:
pnpm deps:checkRun the full update (writes package.json files, reinstalls, dedupes, generates the changeset):
pnpm deps:updateBoth are defined in the root package.json. deps:update performs, in order:
1. npx taze major -f -w -r — bump every dependency (incl. major) recursively. 2. cd examples/with-expo && npx expo install --fix — required: taze does not know about Expo's SDK compatibility matrix and will bump expo-* / react-native-* / react / react-dom to versions that crash at runtime. expo install --fix re-pins them to the versions sanctioned by the current expo SDK. Do not skip this step, and do not commit Expo-related bumps without it. 3. Wipe every node_modules and pnpm-lock.yaml, then pnpm install + pnpm dedupe. 4. bash scripts/generate-deps-changeset.sh — write a patch changeset for each published package whose package.json changed.
Expo notes
- If you bump the
expomajor inexamples/with-expo(e.g. SDK 55 → 56),expo install --fixwill rewrite the matchingreact,react-dom,react-native,react-native-*, andexpo-*versions. Eyeball the diff inexamples/with-expo/package.jsonto confirm everything snapped to the expected SDK line. - If you intentionally want to hold Expo back, run
pnpm deps:update, thengit checkout examples/with-expo/package.jsonand re-runpnpm install+ the changeset script manually.
Workflow
1. From a clean working tree on a feature branch, run pnpm deps:update. It takes several minutes (lockfile is regenerated from scratch). 2. git status to confirm the changeset file appeared under .changeset/ and that only package.json / pnpm-lock.yaml files changed. 3. Validate before committing:
pnpm build
pnpm lint
pnpm test4. If a package breaks on a major bump, pin that one dep back in the offending package.json and re-run pnpm install; the changeset script does not need to re-run. 5. Commit as chore: update dependencies and push.
Notes
- Do not hand-edit the generated changeset's bump levels —
generate-deps-changeset.shcorrectly emitspatchfor every published package whosepackage.jsonchanged and skips private packages (@assistant-ui/docs,@assistant-ui/shadcn-registry, etc.). PerAGENTS.md, dependency updates are always patch. - The script detects changes via
git diff HEAD, so run it with the package.json edits still unstaged (or staged — it checks both). Don't commit before it runs. pnpm-lock.yamlwill have a huge diff; that's expected since step 3 deletes it.- Node
>=24andpnpm@11.3.0are required (see rootpackage.jsonengines/packageManager).
Python (uv)
Python packages live under python/ and each has its own pyproject.toml + uv.lock. They are not touched by pnpm deps:update.
Packages:
python/assistant-streampython/assistant-ui-sync-server-apipython/assistant-transport-backendpython/assistant-transport-backend-langgraphpython/state-testpython/assistant-stream-hello-world(no lockfile — example)
For each package with a uv.lock, upgrade with:
cd python/<package>
uv lock --upgrade
uv sync
uv run pytest # if tests existOr in one pass from the repo root:
for d in python/*/uv.lock; do
(cd "$(dirname "$d")" && uv lock --upgrade && uv sync)
doneNotes:
- Python bumps do not require a changeset — Python packages are versioned manually in their
pyproject.tomland published via.github/workflows/pypi-publish.yaml, independent of the JS changesets pipeline. - Bumping a published Python package's own version (e.g.
assistant-stream) is a separate release decision;uv lock --upgradeonly touches transitive deps. - Commit Python and JS dep updates separately if the diff is large, or as one
chore: update dependenciescommit if both are clean.
GitHub Actions
Workflows under .github/workflows/*.{yml,yaml} use a mix of styles:
- SHA-pinned (preferred for security — supply-chain hardening):
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- Tag-pinned (still in some files):
uses: actions/checkout@v6
There is no Dependabot config (.github/dependabot.yml does not exist), so these don't update themselves. pnpm deps:update does not touch them either.
To refresh both styles in one shot, use `ratchet` (or pinact):
# pin any remaining tag refs to SHAs (one-time per file)
ratchet pin .github/workflows/*.yml .github/workflows/*.yaml
# bump every SHA-pinned action to the latest release SHA for its major
ratchet update .github/workflows/*.yml .github/workflows/*.yamlBoth leave the # v6-style comment intact so reviewers can read the human version. If ratchet isn't available, fall back to manually checking each uses: against the action's releases page and updating the SHA + comment together.
After updating, sanity-check on a branch by pushing and watching the affected workflows actually run (most are PR-triggered: code-quality, autofix, changeset, changeset-semver-check, expo, devtools-frame, registry). Release workflows (npm-publish, pypi-publish, traction) can't be tested without a release tag — eyeball those diffs extra carefully.
Notes:
- GH Actions updates do not need a changeset (they don't ship in any npm package).
- Commit as
chore: update github actions(or roll intochore: update dependenciesif landing alongside the JS/Python bumps). - If a major bump changes inputs/outputs, check the action's release notes —
ratchetwill happily move you fromv4tov6without warning about breaking changes.
Related skills
FAQ
Does it update Python dependencies too?
Yes, it upgrades each package under python/ with uv lock --upgrade and uv sync; those are not touched by pnpm deps:update.
Why run expo install --fix?
taze does not know Expo's SDK compatibility matrix and can bump expo-* and react-native packages to versions that crash at runtime, so expo install --fix repins them.