Bump outdated Hex deps — inventory, snapshot changelogs, update, fix breaks, split reviewable PRs (patches bundled, majors solo). Use to upgrade/bump Elixir dependencies or when versions fall behind. NOT for deps.get failures (phx-investigate).
npx skills add https://github.com/oliver-kriska/claude-elixir-phoenix --skill phx-deps-update
Inventory → update → fix breaks → grouped PRs. This is the only MUTATING
deps skill: it edits mix.exs, mix.lock, and source. Security scanning
stays in phx-deps-audit; the vet ledger stays in phx-deps-vet.
phx-deps-update # inventory + interactive scope pick
phx-deps-update --scope patch # bundle all patch bumps, one PR
phx-deps-update --pkg phoenix_live_view # one package (+ coupled group)
phx-deps-update --dry-run # inventory only, no changes
mix.exs edit —mix deps.update stays within requirements. Edit the constraint first;
add override: true only when mix hex.outdated <pkg> shows a
transitive consumer blocking. One major per PR
deps/<pkg>/CHANGELOG.md, then delta via mix hex.package diff. Never
update blind
phx-verify (compile --warnings-as-errors + test). "Compiles" ≠ "works"
Oban, telemetry families update in the SAME step/commit (see
references/coupled-groups.md)
mix.lock + mix.exs edits + (forPhoenix-family) assets/package-lock.json in ONE commit
phx-deps-audit — run it on the lock diffbefore any PR; don't reimplement audit rules
hex.outdated exit 1 is normal — it means "deps are outdated", notfailure. Capture with || true
Read mix.exs: deps list, umbrella (apps_path:), git/path deps, private
orgs (organization:/repo: in tuples), Phoenix/Ash presence. Create
scratch dir .claude/deps-update/{YYYY-MM-DD}/.
mix hex.outdated --all || true — parse the text table (no JSON exists;
see references/update-mechanics.md). Classify each
row patch/minor/major by semver delta; Update not possible = blocked
major (mix.exs constraint). Write inventory.md to scratch. Render
grouped table: Patch / Minor / Major / Blocked / Git-deps (manual).
--dry-run stops here.
Present groups with counts and risk. Default recommendation: "Patches (N)
— low risk, bundle into one PR". --scope/--pkg flags skip the prompt.
When ≥2 members of a coupled group are outdated, force them into one step
even under a narrower scope.
For each selected package, in coupled-group order:
deps/<pkg>/CHANGELOG.md → scratch/before/mix deps.update <pkg> [coupled...];major: edit mix.exs constraint (+ override: true if needed), then
mix deps.update <pkg>
git diff mix.lock → the REAL {pkg, old, new} set (hex.outdated sayswhat could change; the lock diff says what did)
mix hex.package diff <pkg> <old>..<new> — keep theCHANGELOG hunk. Empty → gh api repos/{o}/{r}/releases fallback →
compare-URL note (see references/changelog-sources.md)
scratch/{pkg}-{old}-{new}.mdassets/package.json exists →npm install --prefix assets, stage assets/package-lock.json with
the same commit
Run phx-verify. On failure → Phase 5; else Phase 6.
Read the changelog deltas for "breaking"/"removed"/"deprecated" + the
compile/test errors. Fix source (apply the sibling-file check). Re-verify.
Run phx-deps-audit on the working mix.lock diff (its Mode B default).
BLOCK findings → surface and offer phx-deps-vet <pkg> <ver> for
accepted risks. Never skip this before a PR.
Apply the splitting strategy (references/pr-strategy.md):
patches bundled, minors by area, majors solo, coupled groups always
together. PR bodies cite the changelog excerpt, the
https://diff.hex.pm/diff/<pkg>/<old>..<new> link, verification result,
and the deps-audit risk band. Stage lock + mix.exs + package-lock together.
phx-deps-update (mutating) → phx-deps-audit (security, Mode B)
│ │ BLOCK → phx-deps-vet (ledger)
└→ phx-verify (gate) → grouped commits / PRs
references/update-mechanics.md — hex.outdated parsing, update vs unlock+get, majors, lock-diffreferences/changelog-sources.md — hex.package diff, gh fallbacks, private orgsreferences/coupled-groups.md — must-move-together groups + edge casesreferences/pr-strategy.md — grouping rules, area buckets, PR template, scratch layoutIntegration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take oliver-kriska/phx-deps-update from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm.
Without those the skill loads but fails at the first command.