Contributing
Development setup
Section titled “Development setup”python -m venv .venv && .venv/bin/pip install -e '.[dev]'.venv/bin/pytest # unit, CLI integration, hooks and security testspython benchmarks/run.py # retrieval quality and latency vs. benchmarks/results/python scripts/build_plugin.py # regenerate the Claude Code plugin bundlerepo-ai eval # repo-ai's own bundled task suite, offline and freerepo-ai eval measures repo-ai itself on its bundled suite. It does not evaluate the repository you run it in.
Some tests need a sandbox: seatbelt on macOS, bubblewrap on Linux (and unprivileged user namespaces), or Docker. Tests that need a missing backend are skipped.
Ground rules
Section titled “Ground rules”- Claims follow evidence. A new capability starts as experimental. “Stable” needs held-out or CI evidence for its main claim. Results that go against repo-ai are reported, not dropped.
- No network on default paths. New network use must be opt-in behind an explicit flag, and listed on Security & privacy.
- Repository text is data. Nothing read from a repository may be executed or treated as an instruction.
- Every security fix gets a regression test that fails on the code before the fix.
The documentation site
Section titled “The documentation site”The site lives in site/ (Astro and Starlight). Pages are Markdown under site/src/content/docs/.
cd sitenpm cinpm run dev # local preview with live reloadnpm run qa # build, internal link check, accessibility checkRelease facts the site renders (version, whether the package is on PyPI, whether the repository is public) live in
one file, site/src/config.ts. The CLI reference is generated from repo-ai --help.
Reporting security issues
Section titled “Reporting security issues”Report vulnerabilities privately to the repository owner, not in a public issue.