release-versioning
GitHub说明 xberg 版本同步与发布流程。以 Cargo.toml 为唯一真相源,通过 task version:sync 自动同步至绑定文件和集成包,确保核心与集成锁步发布。
Trigger Scenarios
Install
npx skills add xberg-io/xberg --skill release-versioning -g -y
SKILL.md
Frontmatter
{
"name": "release-versioning",
"description": "How xberg versions are synced and released — Cargo.toml is the single source of truth, `task version:sync` propagates it to alef-managed binding manifests AND the integrations under integrations\/, which are versioned and published in lockstep with core (including -rc.N). Load before bumping a version, editing the version-sync task, or touching an integration's version\/xberg dependency."
}
Release & Versioning
Single source of truth
The root Cargo.toml [workspace.package] version is the one authoritative version (including any
-rc.N pre-release suffix). Everything else is derived from it — never hand-edit
a version in a package manifest.
task version:sync runs three steps
task version:sync (alias task versions:sync) runs, in order
(.task/tools/version-sync.yml):
alef sync-versions— the alef-managed binding manifests (their own version = core version). Targets are listed inalef.toml[workspace.sync] extra_paths(packages/python, packages/ruby, crates/xberg-node, packages/go, cli-proxy, …).python3 scripts/sync_integration_versions.py— the integrations underintegrations/, the Helm chart, andplugin/.ai-rulez/config.toml[plugin].version. These are NOT alef-managed, so alef never touches them.ai-rulez generate --plugin— regenerates the per-runtime coding-agent plugin bundles underplugin/from the just-synced config.
Bump/set helpers chain both automatically:
task version:bump:major|minor|patch, task version:set -- <version>.
task version:check prints the Cargo version and runs sync_integration_versions.py --check,
failing on integration drift. It does not dry-run alef sync-versions.
Integrations are lockstep with core
The integration packages under integrations/ are versioned and published together
with core across four target families:
- Python → PyPI: langchain, llama-index (readers + node-parser), crewai, txtai, surrealdb.
- Java → Maven Central: spring-ai (
io.xberg:spring-ai-xberg). - npm → npm: n8n-nodes-xberg, langchain-xberg, llamaindex-xberg (
@xberg-io/*). - Helm → chart:
charts/xberg/Chart.yaml(version,appVersion, the ArtifactHub image tag and prerelease flag) pluscharts/xberg/README.md's--version.
scripts/sync_integration_versions.py sets, for each manifest:
- the package's own
version— PEP 440 form for pyproject (1.0.0-rc.32→1.0.0rc32), native form for the Maven pom and npmpackage.json(1.0.0-rc.32, also valid semver); - the
xbergdependency pin, so an integration always requires the core it ships with:- pyproject: a floor
xberg>=<core>(PEP 440 form). Naming the rc is deliberate — a barexberg>=1.0.0excludes all1.0.0rcNpre-releases per PEP 440. - pom:
<xberg.version>(native form). - npm
package.json: an exact@xberg-io/xbergpin (native/semver form), matching the package's own version.
- pyproject: a floor
To add a new integration: add its manifest to VERSION_TARGETS (own version) and, if it
depends on xberg, XBERG_DEP_MANIFESTS in scripts/sync_integration_versions.py
(npm package.json manifests are collected in NPM_MANIFESTS, which feeds both lists).
The llama-index dev aggregator (integrations/python/llama-index/pyproject.toml, version
0.0.0, unpublished) is dep-only — not a version target.
Do
- Bump via
task version:bump:*/task version:set, then commit the synced manifests together with the Cargo.toml change (atomic). - Run
task version:checkin CI to guarantee integration manifests never drift from core.
Don't
- Don't hand-edit a package/manifest version or an integration's
xbergpin — run the sync. - Don't add integration manifests to
alef.toml[workspace.sync]— alef would clobber their independent-but-derived layout; the dedicated script owns them.
Version History
-
d8e4815
Current 2026-08-28 18:31
新增 ai-rulez generate --plugin 步骤以重新生成插件 bundle;修复 integration drift 检查逻辑(移除 dry-run);明确 PEP 440 版本格式转换及依赖锁定策略。
- 531e0f7 2026-08-20 07:47


