Thank you for your interest in contributing to PRX-SD! This document provides guidelines for contributing to the project.
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/prx-sd.git - Create a branch:
git checkout -b my-feature - Make your changes
- Push and open a Pull Request
See Building for development environment setup.
PRX-SD follows strict Rust coding standards:
- No
unwrap()/expect()in production code — UseResult/Optionpropagation.unwrapis only acceptable in test code. - No dead code — No unused variables, imports, or parameters.
cargo checkmust produce zero warnings. - No incomplete implementations — No
todo!(),unimplemented!(), or placeholder code. - Explicit error handling — Validate inputs at boundaries, propagate errors with
Result<T, E>. - Minimize allocations — Prefer
&stroverString,Cowoverclone,Arcover deep copy.
- Mutex: Use
parking_lot(sync) ortokio(async). Do not usestd::sync::Mutex. - SQL: Use parameterized queries only. Never concatenate SQL strings.
- Unsafe: Every
unsafeblock must have a// SAFETY:comment explaining why it is safe.
# Must pass with zero warnings
cargo check
# Format your code
cargo fmt
# Run clippy
cargo clippy -- -D warnings
# Run tests
cargo testLook for issues labeled good first issue on GitHub. These are typically:
- Documentation improvements
- Additional YARA rules
- Shell completion improvements
- Test coverage improvements
For larger features, please open an issue first to discuss the approach. This helps avoid duplicate work and ensures alignment with project goals.
To contribute detection signatures, submit them to the prx-sd-signatures repository:
- YARA rules go in
yara/builtin/ - Hash blocklists go in
hashes/sha256/
When filing a bug report, include:
- PRX-SD version (
sd info) - Operating system and version
- Steps to reproduce
- Expected vs actual behavior
- Relevant log output (
--log-level debug)
- Ensure your code passes
cargo check,cargo fmt,cargo clippy, andcargo test - Update documentation if your change affects user-facing behavior
- Add tests for new functionality
- Keep PRs focused — one feature or fix per PR
- Write clear commit messages describing why, not just what
- Be respectful and constructive in discussions
- Focus on technical merit
- Welcome newcomers and help them get started
By contributing, you agree that your contributions will be licensed under the same MIT OR Apache-2.0 dual license as the project.