> ## Documentation Index
> Fetch the complete documentation index at: https://nono.sh/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Contributing

> Contributing to nono - testing, debugging, and development workflows

This section covers development topics for contributors and maintainers of nono.

## Topics

<CardGroup cols={2}>
  <Card title="Testing" icon="vial" href="/cli/development/testing">
    Integration test suites, running tests locally, and CI pipeline
  </Card>
</CardGroup>

## Quick Start for Contributors

1. **Clone the repository**
   ```bash theme={null}
   git clone https://github.com/always-further/nono.git
   cd nono
   ```

2. **Build the project**
   ```bash theme={null}
   cargo build --release
   ```

3. **Run the test suite**
   ```bash theme={null}
   ./tests/run_integration_tests.sh
   ```

4. **Check formatting and lints**
   ```bash theme={null}
   cargo fmt -- --check
   cargo clippy -- -D warnings -D clippy::unwrap_used
   ```

## Development Environment

### Prerequisites

* Rust (stable toolchain)
* Platform-specific dependencies:
  * **Linux**: `libdbus-1-dev`, `pkg-config`
  * **macOS**: `dbus`, `pkg-config` (via Homebrew)

### Building

```bash theme={null}
# Debug build
cargo build

# Release build (used for integration tests)
cargo build --release

# Run with verbose logging
RUST_LOG=debug cargo run -- run --allow-cwd -- echo "test"
```

## Code Standards

* **Error Handling**: Use `NonoError` for all errors; propagate with `?`
* **Unwrap Policy**: Never use `.unwrap()` or `.expect()` - enforced by clippy
* **Unsafe Code**: Restricted to FFI; must include `// SAFETY:` documentation
* **Path Security**: All paths must be validated and canonicalized

See [CLAUDE.md](https://github.com/always-further/nono/blob/main/CLAUDE.md) for complete coding standards.
