Updating Dependencies
SkillDev toolsResolve failed Renovate or Dependabot dependency update PRs by fixing version constraints, API breaking changes, and verifying build/test/format compliance. Use when a dependency bump PR fails CI, Cargo cannot select versions, or a crate update requires code migration.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Updating Dependencies skill
What this skill tells your AI
The instructions your AI receives, as published by ogkevin/cadmus in .agents/skills/dependency-updater/SKILL.md and read by ahel’s review.
Resolve failed dependency update PRs from Renovate or Dependabot by diagnosing version constraints and API breaks, then verifying with the project skills.
Core mission
- Diagnose — Understand what Renovate/Dependabot bumped and why it failed
- Reproduce — Recreate the failure locally
- Resolve — Fix version constraints and API changes methodically
- Verify — Follow the AGENTS.md testing sequence
Workflow
Phase 1: Analysis
-
Read the PR description to understand:
- Which package was updated (e.g.
rand_core 0.9.3 -> 0.10.0) - The changelog/release notes for breaking changes
- Any artifact update errors from Renovate
- Which package was updated (e.g.
-
Check CI logs for:
- Version constraint conflicts (
failed to select a version for the requirement) - Compilation errors (API changes, removed types/traits/methods)
- Test failures
- Version constraint conflicts (
-
Examine the commit diff to see exactly what changed in
Cargo.toml
Phase 2: Reproduce locally
Confirm you are on the PR branch, then:
cargo update
cargo xtask test --features emulator
If cargo update fails with version constraints, note which packages conflict
before changing manifests.
Phase 3: Resolve version constraints
When you see errors like:
error: failed to select a version for the requirement `rand_core = "^0.9.0"`
candidate versions found which didn't match: 0.10.0
required by package `rand_xoshiro v0.7.0`
Resolution strategy:
-
Identify the dependency chain:
rand_xoshirorequiresrand_core ^0.9.0 -
Check if dependent packages have updates: Look for versions compatible with the new requirement
-
Update related dependencies together:
cargo search rand_xoshiro -
Edit
Cargo.toml(and workspace deps in the root manifest when applicable) so related packages move to compatible versions together
Phase 4: Resolve API breaking changes
After constraints resolve, build/test to surface API changes:
cargo xtask test --features emulator
To understand new APIs:
cargo doc -p <crate_name>
Docs land under target/doc/{crate_name}/. Prefer the crate's CHANGELOG or
migration guide when one exists.
Phase 5: Fix compilation errors
For each error:
- Read the compiler message carefully — it usually suggests the fix
- Check the crate's migration guide if available
- Make minimal changes — do not refactor unrelated code
Phase 6: Verification
After Cargo.toml or dependency-related code changes, complete every step in
AGENTS.md Testing:
- Formatting —
fmtskill - Lint —
clippy-diff-reportorbuild-cadmus-nativeskill - Tests —
build-cadmus-nativeskill (--features emulator; a device feature is required) - Kobo ARM build —
build-koboskill (required)
Commit message format
chore(deps): resolve {package} {old_version} -> {new_version} update
- Update {related_package} to {version} for compatibility
- Migrate from {old_api} to {new_api}
- {other changes}
Resolves version constraint conflict with {explanation}
Known Renovate bugs
Cargo workspace packages with +metadata version strings
Affects: Packages that use build metadata in their version (e.g.
toml@1.1.0+spec-1.1.0), when those packages are declared in multiple
Cargo.toml files within the same workspace.
Symptom: Renovate runs
cargo update --manifest-path <crate>/Cargo.toml --package pkg@old+meta --precise new
once per manifest file. The first run succeeds and rewrites Cargo.lock. The
second run then fails:
error: package ID specification `pkg@old+meta` did not match any packages
because old+meta no longer exists after the first run.
See: https://github.com/renovatebot/renovate/discussions/42208
Fix: Run cargo update from the workspace root, targeting the new
version already written into Cargo.lock by the first run:
cargo update -p pkg@<new-version>+<meta> --precise <new-version>
Also bump the minimum version constraint in every affected Cargo.toml to the
new version so the intent is explicit, e.g.:
toml = "1.1.2"
Important guidelines
- Never downgrade security updates — find forward-compatible solutions
- Update related packages together — do not leave partial updates
- Preserve existing functionality — API changes should not change behavior
- Document non-obvious migrations in commit messages or PR text (not inline code comments)
- Test thoroughly — run the full AGENTS.md verification sequence
- Keep changes minimal — only modify what the update requires
Signals
- GitHub stars
- 46
- Forks
- 9
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
dependency-updater-ogkevin- Source
- github.com/ogkevin/cadmus