Build, distribute, and release¶
The engine (engine/) is a standard hatchling-backed Python package
(agentic-retrieval).
Build a wheel + sdist¶
cd engine && uv build
This produces engine/dist/agentic_retrieval-<version>-py3-none-any.whl and the
matching .tar.gz sdist (gitignored — build artifacts, not checked in).
Install the built wheel directly¶
uv pip install ./engine/dist/agentic_retrieval-*.whl
The wheel registers a retrieval console script
([project.scripts] in engine/pyproject.toml), so once the package is
published, uvx can run it without a local install or checkout:
uvx --from agentic-retrieval retrieval query "..." --root <path-to-project>
PyPI gate
Not yet available — this only resolves once agentic-retrieval is
published to PyPI; until then, use
uv run --project engine --extra all retrieval ... above.
Install from GitHub¶
Or install straight from GitHub, without building locally, using the
engine/ subdirectory of this monorepo:
uv pip install "agentic-retrieval @ git+https://github.com/josix/agentic-retrieval.git#subdirectory=engine"
With optional extras:
uv pip install "agentic-retrieval[all] @ git+https://github.com/josix/agentic-retrieval.git#subdirectory=engine"
Version bump checklist¶
The plugin and the engine are versioned in lockstep. Bump all four declaration
sites in a single commit — engine/tests/test_version.py fails CI if any
of them drift apart, or if docs/changelog.md has no section for the new
version.
.claude-plugin/plugin.json—version.claude-plugin/marketplace.json— theagentic-retrievalentry'sversionengine/pyproject.toml—[project] versionengine/retrieval/__init__.py—__version__(the only site with runtime consumers: it is written into each cache'smeta.jsonasengine_versionand shown byretrieval statsandretrieval --version)
Then:
- Regenerate the lockfile:
uv lock --directory engine. Never hand-editengine/uv.lock. - Rename
docs/changelog.md's## Unreleasedsection to## <version> — <YYYY-MM-DD>and open a fresh empty## Unreleasedabove it. - Tag and push:
git tag v<version> && git push origin v<version>— this is what triggers the release workflow below.
Release workflow¶
GitHub Release workflow: tagged pushes (v*) trigger
.github/workflows/release.yml, which runs uv build in engine/ and
attaches the resulting dist/*.whl + dist/*.tar.gz to the GitHub Release
— download those artifacts directly instead of building from source, if
you prefer. PyPI publishing is scaffolded in the same workflow but gated
off (if: false) until the package is ready to publish there.
Manual docs deploy¶
The docs site (built with MkDocs Material) is deployed manually to GitHub Pages — there is no automated deploy step yet:
uv run --project engine --group docs mkdocs gh-deploy -f mkdocs.yml
This builds the site and pushes it to the gh-pages branch of this
repository, publishing it at the site_url configured in mkdocs.yml.