# Contributing to ProGit Plugin SDK
Thank you for your interest in contributing! This SDK is Apache 2.0 licensed to maximize compatibility and encourage ecosystem growth.
## Development Setup
```bash
# Clone the repository
git clone https://git.sovereign-society.org/ProGit/progit-plugin-sdk
cd progit-plugin-sdk
# Build
cargo build
# Run tests
cargo test
# Run examples
cargo run --example lua_hello_world
# Format code
cargo fmt
# Lint
cargo clippy
```
## Code Style
- **SPDX Headers**: All source files must include:
```rust
```
- **Formatting**: Use `cargo fmt` (rustfmt)
- **Linting**: Pass `cargo clippy` with no warnings
- **Documentation**: Public APIs must have doc comments
## Project Structure
```
progit-plugin-sdk/
├── src/
│ ├── lib.rs # Main entry point
│ ├── traits.rs # Plugin trait definitions
│ ├── lua/ # Lua runtime
│ │ └── mod.rs
│ └── wasm/ # WASM runtime
│ └── mod.rs
├── examples/ # Example plugins
├── tests/ # Integration tests
└── docs/ # Additional documentation
```
## Adding New Features
1. **New Hook Types**: Add to `PluginHook` enum in `src/traits.rs`
2. **New Plugin Runtimes**: Create new module in `src/`
3. **Examples**: Add to `examples/` directory
## Testing
- Unit tests: `cargo test`
- Integration tests: `cargo test --test '*'`
- Example tests: `cargo run --example <name>`
## Pull Request Process
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Add tests
5. Run `cargo fmt` and `cargo clippy`
6. Commit with clear messages
7. Push to your fork
8. Open a Pull Request
## License
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.
---
**Questions?** Open an issue or reach out to Markus Maiwald.