Botica: recetas, alquimia y artilugios
Recipes and standards for projects: deterministic rules, templates, and design decisions.
Documentation: https://collectiveai-team.github.io/botica/
Source Code: https://github.com/collectiveai-team/botica
Botica is a linter and a set of recipes for the repositories of a team.
botica lintruns rules over the files of a project: the built-in catalog, and the rules that the project writes in.botica/rules/. Each rule checks a written standard. It never calls a model or the network, and it runs as a command, a hook of prek, a job of CI and a language server.botica recipe installsets up a repository of some kind: the selection of rules inbotica.toml, the hooks of prek, the workflows of GitHub Actions, the agent skills and the lines of.gitignore. It adds what is missing, and a file that exists is not replaced.- Judgment rules cover what no deterministic check can express. Botica exports them to
AGENTS.mdand to the rubric of abide, the judge, and filters what the judge reports with the same configuration and comments.
Most rules read Python, TypeScript and JavaScript, a few read Go and Rust, and the rest read the files of any project: their names, their size, the layout of the folders, the commit messages.
Install
Botica is one binary, published on PyPI as the wheel botica. It runs without Python.
uvx botica lint # run it once, without installing
uv tool install botica # or keep it installed
From a checkout: cargo build --release -p botica-cli, and the binary is target/release/botica.
Use
botica lint # the active rules over the current directory
botica lint --diff origin/main # only the findings on the lines that a branch adds
botica rules --all # every rule, whether it is active, and why
botica explain no-utils # what a rule asks, and how it is configured here
botica lint exits with 1 when a finding is an error and with 2 when the run fails. A
configuration is botica.toml, or [tool.botica] in pyproject.toml:
select = ["file-size-guard", "no-utils", "log-no-print"]
[rules.file-size-guard]
warn = 500
max = 900
A comment silences one finding, with its reason:
print(report) # noqa: BTLOG002 -- the output of the command
The guide has every command and key, the baseline of known findings, the editor (Neovim, Helix, Emacs) and the hooks and CI.
Set up a repository
From the root of the repository, with uv and npx on the PATH:
uvx botica recipe install base base-python agent-claude-code ci-python repo-public
| Recipe | What it adds |
|---|---|
base |
any repository: the rules about any file, the skills, .gitignore, the hooks of prek, the workflow of abide, the sections of AGENTS.md |
base-python |
a Python project: the rules about Python code and pyproject.toml, the Python hooks and the dev tools |
agent-claude-code, agent-codex, agent-opencode |
the configuration and the skills of an agent |
ci, ci-python, ci-node, ci-go |
the workflows of GitHub Actions for commits and for an ecosystem |
repo-public, repo-private |
the workflows that fit the visibility of the repository |
ci-publish, ci-docker, ci-dependency-review, ci-automerge-public, ci-automerge-private, secrets-varlock |
one workflow or tool each |
botica recipe list prints them with their steps, and botica recipe check says how the
repository differs from them. A file that exists is left as it is and reported pending. Commit
skills-lock.json afterwards: npx skills experimental_install restores .agents/skills/ from
it. Recipes describes each step, and
a project adds its own recipes in recipes/.
Extend
A project writes its rules in .botica/rules/<catalog>/, and botica rules new writes the folder
of one:
botica rules new structure/no-eval --kind ast-grep --language python --catalog .botica/rules/acme
botica rules conform .botica/rules/acme # the rule over its fixtures
- A pattern rule is a YAML pattern over the syntax tree of a file.
- An extension is a program that answers the protocol of botica over stdin and stdout. The
SDKs are Python (
botica.sdk, in the wheel), Node, Go and Rust. - An external rule is enforced by another tool, and botica checks that its configuration is there.
- A judgment rule is a question for abide, calibrated with
botica rules test --judge abide.
Extend has a first rule, its fixtures, the protocol and the SDKs.
This repository
| Folder | What it holds |
|---|---|
crates/ |
the Rust workspace of botica |
catalog/ |
what the binary embeds: the built-in rules, the topics of botica refs, the recipes |
standards/ |
the text of each standard, standards/<set>/<number>-<slug>.md; the CES are the standards of Collective |
sdk/ |
the SDKs of the extension protocol |
skills/ |
the agent skills that the recipe base installs |
website/ |
the site: the manual, the standards, the rules and the references |
distribution/ |
the mirror botica-pre-commit for prek |
docs/adr/ |
the design decisions |
A change to a standard is a pull request with the file of the standard and the folders of its
rules; the steps are in
Propose or change a standard.
docs/develop.md has the commands to build and test botica, and
docs/botica-release.md the release.
The skills of this repository
The recipe base installs them with npx skills add collectiveai-team/botica, beside the
skills of Matt Pocock that its [[skills]] step pins to a tag. The skills are under skills/, and
the [[skills]] steps of catalog/recipes/base.toml list the ones it installs.
npx skills add and skills update overwrite the installed copies in place, so local edits go
in this repository's skills/, not in .agents/skills.
License
MIT, in LICENSE.
Metadata
Release files for botica 0.14.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| botica-0.14.2-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| botica-0.14.2-py3-none-musllinux_1_2_x86_64.whl | Python 3 | none | Linux musl 1.2+ x86-64 | Details |
| botica-0.14.2-py3-none-musllinux_1_2_aarch64.whl | Python 3 | none | Linux musl 1.2+ ARM64 | Details |
| botica-0.14.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| botica-0.14.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| botica-0.14.2-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| botica-0.14.2-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 28.4 MB
Release files / botica-0.14.2-py3-none-win_amd64.whl
| Download URL | botica-0.14.2-py3-none-win_amd64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4483e408bf3619330c7a49f1f256ca307b252f77dfc5e0a5a134c2dcb3e22f23
|
|
BLAKE2b-256 checksum How to use checksums |
28051d1d22cdac616f238ade6b46b69d089f98986ccdc564bf1893d7a9d40cd5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 21, 2026.
Transparency logRelease files / botica-0.14.2-py3-none-musllinux_1_2_x86_64.whl
| Download URL | botica-0.14.2-py3-none-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | Linux musl 1.2+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
604a13d440765b4f0ca43943a9363d97ae6e7a1d6b48d2f37dd37e77c782181f
|
|
BLAKE2b-256 checksum How to use checksums |
57e504fd596c5b9d6958fdcc4a9a298b35336b171fe3aca118b6875fc314d9ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 21, 2026.
Transparency logRelease files / botica-0.14.2-py3-none-musllinux_1_2_aarch64.whl
| Download URL | botica-0.14.2-py3-none-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | Linux musl 1.2+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
12586dbe6ce6ae91e3f1bc5095d8224a90c8fb81ac79f4ffdca3b01d47c6ded3
|
|
BLAKE2b-256 checksum How to use checksums |
4c2c9397c19ddce3c9a6540e93a553c47bce957a593bcbcdb55e4744bd7a55e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 21, 2026.
Transparency logRelease files / botica-0.14.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | botica-0.14.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.2 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
87f9de23fe065cf626309e217b059dfbdb10cc5cff25844586e6fbdb271fc5b4
|
|
BLAKE2b-256 checksum How to use checksums |
cc0e994e742e88b872a8ef8620828a4f3aeb9e4daab0004f861e885f5c71e99b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 21, 2026.
Transparency logRelease files / botica-0.14.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | botica-0.14.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
9d63724cd51b091a14d9edc8b8838af67eaa1f30e53e55fb061ec7e7f91be2b0
|
|
BLAKE2b-256 checksum How to use checksums |
e6435cf2d18169b2b9ee4ea81c552b92ce43e1228f38558db44742e6ff2caeca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 21, 2026.
Transparency logRelease files / botica-0.14.2-py3-none-macosx_11_0_arm64.whl
| Download URL | botica-0.14.2-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
45f4c39e3bb451ec9326691fcd7f6e4c392c0ed41e2c5b18b295c762915ba9d7
|
|
BLAKE2b-256 checksum How to use checksums |
168cace37e0498f570c00c3820b7c0534911310c086221d972e4f7a3c321a640
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 21, 2026.
Transparency logRelease files / botica-0.14.2-py3-none-macosx_10_12_x86_64.whl
| Download URL | botica-0.14.2-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 4.1 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
6aaffc7db47c7c28a54e26b3d735cd4e3e59940e9738c5f986794520bf8a7b1c
|
|
BLAKE2b-256 checksum How to use checksums |
96f805a7f157af4bf4e14cd90eb3bd10a4e9cc34fc3cced9d6f447cd482eea05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 21, 2026.
Transparency logSecurity for botica 0.14.2
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 7 files in this release have been uploaded with provenance metadata.
Attestation for botica-0.14.2-py3-none-win_amd64.whl
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 Oct 21, 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.