ragpicker
Generate a self-contained, filesystem-based agentskills.io
skill that wraps a haiku-rag-built LanceDB
RAG database.
Unlike haiku-rag create-skill (which emits a haiku-skills entrypoint package
consumed by haiku-rag's own pydantic-ai agent), the skill produced here is driven by
an external agent (e.g. Claude Code) that invokes a script. The generated skill
provides a PEP 723 wrapper, scripts/haiku_rag.py, exposing search and cite
subcommands implemented over the haiku-rag Python client — there is no haiku-rag cite CLI subcommand to shell out to.
Generate a skill
uv run ragpicker \
--config path/to/haiku.rag.yaml \
--db path/to/handbook.lancedb \
--output ./skills \
[--haiku-rag-version 0.48.1 | --version-from-project path/to/stack]
- The skill is named from the database directory stem:
handbook.lancedb→handbook-haiku-rag. - The template under
src/ragpicker/template/[dbname]-haiku-rag/(bundled as package data) is copied with[dbname]substituted by the stem (in path names and text-file contents). - Both the
.lancedbdatabase and thehaiku.rag.yamlconfig are embedded under the skill'sassets/.
Version pinning
The wrapper pins an exact haiku-rag-slim version so the embedded database and the
runtime always agree. (Only haiku-rag-slim is supported — the full haiku-rag build's
dependency weight is prohibitive for a self-contained skill.)
- Default — sniff: the version is read from the database itself (the version that
last wrote it, stored in its
settingstable) and pinned as-is. No migration is needed because the database already matches. - Minimum version: the wrapper's
search/citerely on APIs whose surface is not guaranteed below0.48.1, so generation refuses to pin anything older. A database below that floor must be force-migrated up (see below). --haiku-rag-version X— force:Xis pinned in the wrapper and the embedded copy of the database is migrated up toX(viauv tool run --from haiku-rag-slim==X haiku-rag migrate). The original database is left untouched. Downgrades are rejected (haiku-rag migrations only move forward).--version-from-project PATH— discover + force: read the effectivehaiku-rag-slimversion from a target project (e.g. a Soliplex stack) and force it the same way. Looks first in the project's.venv(the installed version), then falls back to resolving the project's dependencies withuv tree --package haiku-rag-slim --depth 0. Either path findshaiku-rag-slimeven though it is a transitive dependency ofsoliplex(not named directly inpyproject.toml). Mutually exclusive with--haiku-rag-version.
Forcing requires uv on PATH and network access to fetch the requested version; most
migrations are schema-only, but some may need model access.
Using a generated skill
cd handbook-haiku-rag
uv run scripts/haiku_rag.py search "<query>" [--limit N] [--filter "<SQL>"]
uv run scripts/haiku_rag.py cite <chunk_id> [<chunk_id> ...]
uv resolves the wrapper's pinned haiku-rag dependency on first use. The wrapper
opens the bundled database read-only, so the embedded database and the pinned
version always agree by construction (the generator either sniffs or migrates to match).
Embedding hosts (e.g. Soliplex)
There are two execution models, with different requirements:
- Standalone (
uv run) — the model above.uvhonors the wrapper's PEP 723 pin, so the runtime always matches the embedded database. - Embedding host (
sys.executable) — a host such as Soliplex runs the skill script with its own Python interpreter, notuv(e.g.haiku.skillsusesSCRIPT_RUNNERS[".py"] = (sys.executable,)). The wrapper's pin is then ignored: the host's installedhaiku-ragopens the database. The embedded database must match that version, not the wrapper's pin.
So when targeting such a host, generate with --haiku-rag-version <the backend's haiku-rag version> so the embedded database is migrated to match the interpreter that
will open it. On a version mismatch the wrapper now exits non-zero with an actionable
haiku-rag version mismatch message (instead of failing silently and returning nothing
to the agent).
Develop
uv run --with pytest --with pylance --with packaging pytest tests/
Metadata
Release files for ragpicker 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ragpicker-0.1.1.tar.gz | 187.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ragpicker-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 203.2 kB
Release files / ragpicker-0.1.1.tar.gz
| Download URL | ragpicker-0.1.1.tar.gz |
|---|---|
| Size | 187.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2e881c4e2c22c79afa7ad5f44ddb742e4584b8cf7fdd8f7aafc8203846c6878d
|
|
BLAKE2b-256 checksum How to use checksums |
3ef43963515cb49d020e9af753798ab79564b586a6ef631c44edc63f94793401
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 18, 2026.
Transparency logRelease files / ragpicker-0.1.1-py3-none-any.whl
| Download URL | ragpicker-0.1.1-py3-none-any.whl |
|---|---|
| Size | 15.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b25c7e5bf6f70b4d5972ba010d9235e09d0d0ac3f9378388ec26124956d53c39
|
|
BLAKE2b-256 checksum How to use checksums |
105a09426452fb7343794792cbf735f869c775be757fe42be298857fceda540b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 18, 2026.
Transparency logSecurity for ragpicker 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for ragpicker-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 18, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.