Thank you for your interest in contributing to Abigail. This guide explains how to set up a development environment, submit changes, and follow our project conventions.
- Rust stable toolchain (managed via
rust-toolchain.toml) - Node.js 20+
- OS dependencies required by Tauri 2.0 (see platform-specific notes below)
Windows: Install NSIS for building installers (choco install nsis).
Ubuntu/Debian:
sudo apt-get install -y \
libwebkit2gtk-4.1-dev libappindicator3-dev \
libayatana-appindicator3-dev librsvg2-dev \
patchelf libssl-dev libgtk-3-devmacOS: Xcode Command Line Tools (xcode-select --install).
# Clone the repository
git clone https://github.com/jbcupps/abigail.git
cd abigail
# Build Rust workspace
cargo build
# Install frontend dependencies (one-time)
cd tauri-app/src-ui && npm install && cd ../..
# Launch with hot-reload
cargo tauri devFor Docker-based development, see documents/HOW_TO_RUN_LOCALLY.md.
mainis the protected default branch.- Create short-lived feature branches from
mainfor all work. - Branch naming:
feat/description,fix/description,chore/description.
- Create a feature branch from
main. - Make your changes with clear, focused commits.
- Ensure all checks pass locally before pushing.
- Open a pull request against
main.
We use Conventional Commits:
feat:-- new featurefix:-- bug fixchore:-- maintenance, dependency updatesdocs:-- documentation onlyrefactor:-- code change that neither fixes a bug nor adds a featuretest:-- adding or updating testsci:-- CI/CD changes
Example: feat: add skill event filtering by category
Rust:
- Format with
cargo fmt - Lint with
cargo clippy -- -D warnings - All public items should have doc comments
TypeScript/React (frontend):
- Use TypeScript for all new frontend code
- Follow existing patterns in
tauri-app/src-ui/src/
# Rust formatting
cargo fmt --all -- --check
# Rust linting (excludes abigail-app which needs Tauri)
cargo clippy --workspace --exclude abigail-app -- -D warnings
# Check abigail-app compiles
cargo check -p abigail-app
# Rust tests (excludes abigail-app)
cargo test --workspace --exclude abigail-app
# Frontend build
cd tauri-app/src-ui && npm run build
# Frontend tests with coverage
cd tauri-app/src-ui && npm run test:coverage- Fill out the PR template completely.
- Link related issues using
Closes #123orFixes #123. - Ensure CI passes (formatting, clippy, tests, frontend build, security audit).
- Request review from a code owner.
- Address review feedback with additional commits (do not force-push during review).
- A maintainer will merge once approved and CI is green.
- Code compiles without warnings (
cargo clippy --workspace --exclude abigail-app -- -D warnings) - Tests pass (
cargo test --workspace --exclude abigail-app) - Formatting is correct (
cargo fmt --all -- --check) - Tauri app compiles (
cargo check -p abigail-app) - Frontend builds (
cd tauri-app/src-ui && npm run build) - Documentation updated if needed
- No secrets or sensitive data in the diff
See CLAUDE.md for a detailed architecture reference, including crate responsibilities, the security boundary between capabilities and skills, and the Id/Ego routing model.
- Bugs: Use the bug report template
- Features: Use the feature request template
- Security: See SECURITY.md -- do NOT open public issues for vulnerabilities
By contributing, you agree that your contributions will be licensed under the MIT License.