# Contributing to Cerebro

Thank you for your interest in contributing to **Cerebro**! We welcome contributions from the community to help make this semantic memory engine even better.

## How to Contribute

### 1. Reporting Bugs
- Use the [GitHub Issue Tracker](https://github.com/surajknanda10/cerebro/issues) specifically for bugs.
- Include details about your environment, the version of Cerebro you are using, and a reproducible example if possible.

### 2. Feature Requests
- Check the [BACKLOG.md](BACKLOG.md) to see if the feature is already planned.
- Open a "Feature Request" issue to discuss your proposal before implementation.

### 3. Pull Requests
1. **Fork the repository** and create your branch from `main`.
2. **Setup your environment**: Ensure you have the latest stable Rust toolchain installed.
3. **Run Tests**: Make sure all tests pass before submitting!
   ```bash
   cargo test
   ```
4. **Code Style**: We follow standard Rust formatting. Run `cargo fmt` before committing.
5. **Documentation**: If you're adding a new feature, please update `ARCHITECTURE.md` or `USER_GUIDE.md` as appropriate.
6. **Commit Messages**: Use descriptive commit messages (e.g., `feat: add support for X`, `fix: resolve issue with Y`).

## Code of Conduct
We are committed to providing a friendly, safe, and welcoming environment for everyone. Please be respectful and professional in all interactions.

## Technical Context
Before diving in, we highly recommend reading:
- **[ARCHITECTURE.md](ARCHITECTURE.md)**: To understand the trait-based modular design.
- **[USER_GUIDE.md](USER_GUIDE.md)**: To see how the library is intended to be used.

---
*Author: Suraj Kumar Nanda* | [Surajkumarnanda.com](https://Surajkumarnanda.com)
