Thanks for your interest in contributing to models! This guide will help you get started.
- Rust (stable) — install via rustup
- mise (optional, recommended) — task runner that wraps cargo commands
- Git
git clone https://github.com/arimxyer/models
cd models
cargo build
cargo runIf you have mise installed, mise run build and mise run run work as well.
Run these before every PR:
# With mise
mise run fmt && mise run clippy && mise run test
# Without mise
cargo fmt && cargo clippy -- -D warnings && cargo testAll three must pass. CI enforces the same checks on pull requests.
- Clippy runs with
-D warnings— all warnings are errors - No
eprintln!in TUI code — stderr output corrupts ratatui's alternate screen buffer. UseMessagevariants or status bar updates instead. (eprintln!is fine in CLI-only code paths.) - Enum-based message passing — the TUI uses an Elm-architecture pattern with a
Messageenum. No callbacks. - New
BenchmarkEntryfields must use#[serde(default)] - Commit
Cargo.lockalongsideCargo.tomlwhen changing dependencies or version
data/agents.json— curated catalog of AI coding agents. Contributions welcome! Adding a new agent here requires no Rust knowledge or build tools.data/benchmarks.json— auto-generated from the Artificial Analysis API every 30 minutes. Do not edit manually.
See Custom Agents for the agent entry format.
For detailed architecture documentation, key file locations, async patterns, and gotchas, see CLAUDE.md.
- Branch from
mainand keep changes focused - Reference related issues in your PR description
- CI runs format checking, clippy, and tests on every PR (doc-only changes are skipped)
When opening an issue, please include:
- Steps to reproduce the problem
- Expected vs actual behavior
- Your environment (OS, terminal, Rust version)
This project follows the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.