Contributing
September 17, 2026 · View on GitHub
Setup
mise install
mise install fetches the pinned Erlang, Elixir, and gitleaks versions
from mise.toml.
Before every commit
mise run ci
mise run ci must pass — format check, mix compile --warnings-as-errors,
credo --strict, mix test --warnings-as-errors, and a gitleaks scan. Fix
any failure locally before committing; do not push past a red gate.
Running a single test file
mise exec -- mix test test/typesafe/client_test.exs
Add --max-cases 4 to reproduce the concurrency shape of a shared CI
runner rather than a full local core count.
Commits
Use Conventional Commits
(feat:, fix:, docs:, test:, chore:, ...). Do not add
Co-Authored-By or other attribution trailers.
Tests
This project practices test-driven development. New behavior needs a
failing test first; a bug fix needs a test that reproduces the bug before
the fix lands. No bang (!) functions in tests or library code — pattern
match {:ok, _} / {:error, _} instead.