valory-xyz/open-autonomy/bump-versions
Claude Code and agent skill by valory-xyz/open-autonomy
- community
Checking that the SKILL.md file is still in the repository.
Bump `open-autonomy` and `open-aea` (and their plugins / upstream-pin tags) to the latest released versions across any Valory downstream repo. Reads HISTORY.md + upgrading.md for both frameworks, applies code changes to dev packages only for OA/OAEA breaking changes, bumps version pins everywhere, then syncs third-party hashes from all upstream repos.
Install
npx vskill@latest install valory-xyz/open-autonomy/bump-versionsSKILL.md
Bump open-autonomy + open-aea (and upstream pins) in any downstream repo
End-to-end procedure for bumping a Valory downstream repo (mech, mech-interact, mech-client, mech-server, mech-predict, mech-agents-fun, trader, optimus, market-creator, market-resolver, meme-ooorr, kv-store, funds-manager, genai, etc.) to the latest released open-autonomy and open-aea. Repo-agnostic — keys off [project] dependencies and [tool.tomte] upstream_pins in pyproject.toml, not a hardcoded repo list.
The two frameworks that drive code changes are open-autonomy (OA) and open-aea (OAEA). Everything else listed in [tool.tomte] upstream_pins (e.g. valory-xyz/mech-interact, valory-xyz/genai, valory-xyz/mech) is bumped tag + third-party-hash only — never apply code rewrites for those.
The procedure assumes the modern uv + tox + PEP 621 `[project]` layout the downstream fleet now uses. Repos still on Poetry need the equivalent edits applied to [tool.poetry.dependencies] / poetry.lock — the phase structure is unchanged.
Phase 0 — Establish ground truth
Run these in parallel before doing anything else:
Record into working memory:
| Field | Source | |
|---|---|---|
CUR_OA | open-autonomy[*]==X.Y.Z in pyproject.toml | |
CUR_OAEA | open-aea==X.Y.Z or open-aea-ledger-ethereum==X.Y.Z | |
UPSTREAM_PINS | [tool.tomte] upstream_pins list — sync-only repos with their current tags | |
HAS_DEV_PACKAGES | packages.json's "dev" map (list of in-repo packages) | |
IS_FRAMEWORK_REPO | true only for OA / OAEA themselves; for downstreams this is always false |
Phase 1 — Resolve target versions
If the user passed oa= / oaea=, use those. Otherwise hit GitHub's "latest release" endpoint — it returns whatever release is currently marked Latest in the UI, which (unlike gh release list | first) doesn't get fooled by an out-of-order backport release published after a newer one:
Set NEW_OA (e.g. 0.21.20) and NEW_OAEA (e.g. 2.2.3). If they equal the current pins, stop: prose-only guidance silently sails past a no-op run and produces a "touched lockfile / re-formatted packages.json" PR for zero version change. Gate the rest of the skill on a real diff:
1.1 Resolve plugin coupling
Plugin versions are not independent — they track one framework or the other:
| Package | Tracks | Notes | |
|---|---|---|---|
open-autonomy[*] (any extras) | OA | [cli], [all], etc. all share the framework version | |
open-aea-test-autonomy | OA | Lives in the open-autonomy monorepo at plugins/aea-test-autonomy/ | |
open-aea-helpers | OA | Lives in the open-autonomy monorepo at plugins/aea-helpers/ | |
open-aea | OAEA | The core framework | |
open-aea-ledger-ethereum / -cosmos / -solana / -fetchai | OAEA | plugins/aea-ledger-* | |
open-aea-ledger-ethereum-hwi | OAEA | optional [hwi] extra in OA since 0.21.18 | |
open-aea-cli-ipfs | OAEA | plugins/aea-cli-ipfs | |
open-aea-cli-benchmark | OAEA | plugins/aea-cli-benchmark | |
open-aea-ci-helpers / open-aea-dev-helpers | OAEA | plugins/aea-{ci,dev}-helpers |
Verify the OA-side plugins are published for the target OA version (PyPI sometimes lags by a few minutes after a release):
1.2 Verify OA at NEW_OA pins OAEA at NEW_OAEA
The bump only makes sense if the new OA itself pins the new OAEA. Pull OA's own pyproject.toml at v$NEW_OA and read the open-aea line(s) — OA still ships Poetry-style ([tool.poetry.dependencies]), so the pin shape is e.g. open-aea = {version = "==2.2.3", extras = ["all"]}. Materialize the fetch first so a network/auth failure is distinguishable from an empty grep result (the latter would be the trust-OA's-pin branch):
If OA v$NEW_OA pins a different OAEA version than the user asked for, trust OA's pin and override NEW_OAEA. A printed pin line that's only inspected by eye will scroll past in a Claude-driven run — extract, compare, and override programmatically so the mismatch can't reach Phase 3+:
A mismatch left in place would fail tox -e check-dependencies and autonomy packages sync hundreds of lines later, with a stack trace that doesn't name Phase 1.2 as the root cause.
1.3 Resolve upstream-repo tags (sync-only repos)
For each entry in [tool.tomte] upstream_pins, find the release tag that itself pins open-autonomy==$NEW_OA and open-aea==$NEW_OAEA:
Transitive upstream consistency: if trader is in upstream_pins AND mech-interact is in upstream_pins, the trader tag you pick must itself pin the same mech-interact version you picked. Otherwise autonomy packages sync will surface conflicting CIDs. Walk the dependency chain.
Release lag fallback: if an upstream has merged the OA/OAEA bump but not cut a release yet, you can pin to a commit SHA in pyproject.toml's [tool.uv.sources]:
Flag this to the user and update upstream_pins once the tag drops.
Phase 2 — Read upgrade docs and identify breaking changes
This is the only phase that drives code changes. Surface the diff between CUR_* and NEW_* for both frameworks, then apply the changes scoped to packages.json's dev map.
2.1 Fetch HISTORY + upgrading from upstream HEAD
HISTORY.md is authoritative — docs/upgrading.md is the user-facing distilled version. Read both: HISTORY for the full change set, upgrading for the call-to-action. Stage them in a fresh mktemp -d so parallel runs (or multiple users on a shared host) don't clobber one another.
Critical: each gh api … > file chain can fail silently — the redirect succeeds even if gh api errors, leaving a zero-byte file. Phase 2.2 then reads nothing, finds no breaking changes, and reports "no action required" — operator applies pin bumps without the code rewrites upgrading.md actually demanded. Guard every fetch:
Read only the sections between `CUR_OA` and `NEW_OA` in OA's docs, and between CUR_OAEA and NEW_OAEA in OAEA's docs. Both files are reverse-chronological — top of file is newest.
2.2 Classify each change
For every change between the two versions, tag it as one of:
| Class | Action | |
|---|---|---|
| Pin-only (security floor, transitive bound) | Already covered by Phase 3 pin bumps; no code change | |
YAML-only (new field in aea-config.yaml, connection.yaml, etc.) | Apply to dev YAMLs in Phase 3.4 | |
| API change (import path moved, signature changed, removed) | Apply to .py files in packages.json dev map only — see Phase 4 | |
| CI/tooling (workflow runner pin, action version) | Apply in Phase 3.3 | |
Removed feature (e.g. tomte check-spelling, deprecated module) | Remove the corresponding usage in this repo | |
| No-op for downstream (e.g. "PyPI metadata fix") | Skip |
Discipline: the upgrading.md sections are explicit about which changes downstream consumers must apply. Don't infer; if a section doesn't call for a change, don't make one. Conversely, every "Action required" / "Concrete upgrade steps" / "Breaking" callout is non-optional.
2.3 Where code changes apply (and where they don't)
Apply API/import rewrites only to files under paths in packages.json's "dev" map. Concretely:
Third-party packages (the "third_party" map) are never edited by hand — they get refreshed by autonomy packages sync --source in Phase 5.
Non-package code (top-level scripts/, tests/, app entrypoints) is also fair game for OA/OAEA API rewrites — only the packages/ tree is partitioned dev-vs-third-party.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingclaude-skills/bump-versions/SKILL.md
Popularity
- Repository stars
- 122
- Repository forks
- 47
- 7-day trend score
- 24
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/valory-xyz/open-autonomy/bump-versions)