Welcome to the Anoma Specs repository! This project uses Material for MkDocs for documentation and is designed for easy contribution and local development.
- Latest Specs: https://specs.anoma.net/latest/
Make sure you have the following tools installed:
-
uv (Python package/dependency manager)
- macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh - Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- Or via Homebrew:
brew install uv
- macOS/Linux:
-
graphviz (for local documentation deployment)
-
juvix (for typechecking and specs development)
curl --proto '=https' --tlsv1.2 -sSfL https://get.juvix.org | sh
-
just (a simple command runner, replacement for Make)
- Install via your package manager.
Choose one of the following:
- With uv:
uv sync
- With just:
just sync
- With pip:
pip install -r requirements.txt
You can use either just or uv run for most tasks. Below are the most common commands:
| Task | Command | Command (just) |
|---|---|---|
| Synchronize dependencies | uv sync |
just sync |
| Run all pre-commit checks | uv run pre-commit -- run --all-files |
just check |
| Typecheck the code | juvix typecheck docs/everything.juvix.md |
just juvix-check |
-
Install pre-commit hooks (for specs writers only):
uv run pre-commit -- install --install-hooks
or
just install-hooks
-
Install development tools:
uv tool install pre-commit uv tool install commitizen
or
just install-tools
| Task | Command | Command (just) |
|---|---|---|
| Build documentation | uv run mkdocs build --config-file mkdocs.yml |
just build |
| Serve documentation locally | uv run mkdocs serve --config-file mkdocs.yml |
just serve |
| Task | Command | Command (just) |
|---|---|---|
| Commit using commitizen | uv run cz commit |
just commit |
| Commit skipping hooks | git commit --no-verify -m "<msg>" |
just commit-skip |
| Amend commit (skip hooks) | git commit --amend --no-verify |
just commit-amend |
| Amend using commitizen | uv run cz commit --amend |
just cz-amend |
If you have installed the pre-commit hooks (which is recommended), but need to
make a commit or push changes without running the hooks (for example, when
working on a branch or PR), you can use the --no-verify flag as shown in the
table above. The Commitizen is a tool to help you write better commit messages.
- Install:
uv syncorpip install -r requirements.txt - Build:
just buildoruv run mkdocs build - Serve Locally:
just serveoruv run mkdocs serve
If you use Nix: