Update Elixir project dependencies including breaking changes. Use when the user asks to update dependencies in an Elixir project, upgrade packages, run mix hex.outdated, handle dependency version bumps and breaking changes, or asks to update mix.exs dependencies.
This skill is intentionally written as a no-skip checklist. Agents must follow it exactly.
mix.exs version constraint is NOT truly blocked. It must be moved into the update batch by changing the constraint.mix compile --warnings-as-errors (must pass for both dev and test environments)mix format --check-formattedmix testRun:
mix hex.outdatedSeparate dependencies into two groups initially:
Latest > Current and status shows "Update possible"Then, for each dependency in Update not possible, you MUST determine whether it is blocked by:
mix.exs constraint (fixable), orDo this classification with:
mix hex.outdated depRe-classify Update not possible dependencies into:
mix.exsThe batch list is:
For each dependency dep in the batch list:
current_version and latest_version from mix hex.outdated.mix hex.package diff dep current_version..latest_versionmix.exs and update each dependency's version constraint to allow its latest_version (prefer pinning to the shown latest if feasible).mix.exs constraint.mix deps.get once to update the lock file for all dependencies.Run in order:
mix compile --warnings-as-errors (dev environment)MIX_ENV=test mix compile --warnings-as-errors (test environment)mix format --check-formattedmix testIf any step fails: STOP, fix the cause, then re-run from the failing step onward until all steps are green.
For any dependency classified as Transitively blocked (truly blocked):
Run:
mix hex.outdated (confirm expected updates/blocks)Then output a short report:
dep: current → latest (breaking: yes/no, notes if yes)dep: blocked by blocker (constraint summary)mix compile --warnings-as-errors (dev): pass/failMIX_ENV=test mix compile --warnings-as-errors (test): pass/failmix check: pass/failmix test: pass/fail