# Contributing to Catenary

Thank you for your interest in contributing to Catenary! This project aims to bridge the gap between AI agents and professional development tools.

## How to Contribute

1.  **Fork** the repository on GitHub.
2.  **Clone** your fork locally.
3.  **Create a branch** for your feature or bug fix.
4.  **Implement** your changes.
5.  **Test** your changes using `cargo test`.
6.  **Lint** your code using `cargo clippy` and `cargo fmt`.
7.  **Submit a Pull Request** to the `main` branch.

## Code Style

- We follow standard Rust idioms and conventions.
- Ensure all code is formatted with `rustfmt`.
- Ensure no warnings are generated by `clippy`.
- Add documentation comments for public APIs.

## Testing

Catenary uses a mix of unit tests and integration tests.
- **Unit Tests:** Located in the same file as the code (e.g., `src/lib.rs`).
- **Integration Tests:** Located in `tests/`. These spawn real LSP servers (like `rust-analyzer` or `bash-language-server`). Ensure you have the necessary tools installed if you are modifying relevant tests.

## Licensing and Copyright

**Catenary is dual-licensed.**

By contributing to Catenary, you agree that your contributions will be licensed under its **GNU General Public License v3.0 (or later)**.

Additionally, by submitting a Pull Request, you grant **Mark Wells Dev** a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute your contributions and such derivative works under the project's licenses (including the Commercial License).

This ensures the project can remain sustainable and legally sound while staying open source.
