Thanks for your interest in contributing. chachaml is built for the long haul — please read this guide before opening a PR.
You need:
bb test # kaocha
bb test-watch # kaocha watch mode
bb lint # clj-kondo, fails on warnings
bb fmt # apply cljfmt
bb fmt-check # check only
bb coverage # cloverage with 85% line gate
bb lein-test # run tests under Leiningen
bb ci # everything CI runs, locally
If you don't use Babashka, the equivalent clojure -M:… aliases are in
deps.edn.
Kaocha supports focus by namespace, var, or :focus metadata:
clojure -M:test --focus chachaml.store.sqlite-test
clojure -M:test --focus chachaml.store.sqlite-test/round-trip
A PR is mergeable when all of these are true:
chachaml.schema.bb lint reports zero issues.bb fmt-check reports no drift.bb coverage passes (≥ 85% line; form/branch tracked in target/coverage/index.html).clojure -M:test and lein test pass.CHANGELOG.md entry under ## [Unreleased].doc/adr/.CI enforces 1–7 (docstrings via clj-kondo :missing-docstring, the rest
via the listed tools). The reviewer enforces ADRs and judgment calls.
!.^:private or live in a *.impl
namespace.clojure.core/read-string on untrusted input — only
clojure.edn/read-string.chachaml.context/*default-store* is the only one).CLAUDE.md.def at the top level for mutable state — use defonce or
delay.(:key m) chains.Architectural decisions live in doc/adr/NNNN-short-title.md using the
Nygard format.
ADRs are append-only: a superseded ADR remains, with a reference to the
ADR that superseded it.
Add an ADR when you:
.github/PULL_REQUEST_TEMPLATE.md).Use the issue templates under .github/ISSUE_TEMPLATE/. For bugs,
include a minimal repro. For features, link to a use case.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |