Contributing
Your interest in contributing to this project is appreciated. Below is a series of instructions that will hopefully remain up to date because this tool should help manage that. However, if you notice that the steps seem out of date or misaligned with current practices in the repo, an update to this document could be a high-value first or second contribution to the project.
Note that the project’s own spec drift is self-managed, so please get acquainted with the tool and make sure your contributions stay in sync.
Development Setup
Install Rust (stable toolchain). Install pre-commit for pre-commit hooks.
Temporarily (until biome supports markdown), install prettier.
Setup clippy and rustfmt via:
rustup component add rustfmt clippy
Then setup the repo:
git clone https://github.com/davidroeca/NotarAI.git
cd NotarAI
cargo build
cargo install biome
cargo install --path .
pre-commit install
The last step installs the notarai binary to ~/.cargo/bin so the Claude
Code hook (notarai hook validate) resolves correctly. Re-run it whenever you
want the installed binary to reflect your latest local changes.
Making Changes
- Create a branch from
main - Make your changes
- Run
cargo buildto verify compilation - Run
cargo testto run the test suite - Run
cargo fmt --checkto verify formatting - Run
cargo clippy -- -D warningsto check for lint issues - Use the
/notarai-reconcileClaude Code command to check for spec drift - Open a pull request
Code Style
- Rust 2024 edition
cargo fmtfor Rust formattingcargo clippyfor Rust lintsbiome format --checkfor non-Rust file formatting (JSON, JS/TS, CSS, etc.)prettier --checkfor Markdown formatting (temporary until biome#3718 is resolved)- Functional style preferred over excessive use of structs with methods
- Core library lives in
src/core/(notsrc/lib/due to Rust’s reserved module name)
Project Structure
See CLAUDE.md in the repository root for a detailed layout and architectural
constraints.
Good First Contributions
These changes will drive broader adoption but are not yet a priority:
- Support other coding agents (e.g. Codex, Aider, Cline, OpenHands, Goose, opencode)
- Find/create new issues and reference them here
License
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.