Thank you for your interest in contributing to Soar! This document provides guidelines to help make the contribution process smooth and effective for everyone involved.
- Fork the repository on GitHub
- Clone your fork locally
git clone https://github.com/YOUR-USERNAME/soar.git
cd soar
- Add the upstream remote
git remote add upstream https://github.com/pkgforge/soar.git
-
Create a new branch for your feature or bugfix
-
Make your changes
-
Keep your branch updated with the main branch:
git pull upstream main --rebase
We follow the Conventional Commits specification for our commit messages. This leads to more readable messages that are easy to follow when looking through the project history.
Each commit message consists of a header, a body and a footer:
<type>(<scope>): <short summary>
<body>
<footer>
The header is mandatory and must conform to the following format (can be ignored if you expect the commits to be squashed):
-
type: Describes the kind of change:
feat
,fix
,docs
,style
,refactor
,perf
,test
,build
,ci
,chore
,revert
-
scope: Can be anything specifying the place of the commit change (e.g.,
cli
,repo
,package
) -
summary: Summary in present tense, not capitalized, no period at the end, under 72 characters
feat(cli): add search filtering by package type
fix(repo): resolve metadata caching issue
The metadata cache wasn't properly invalidated when repository
sources changed, leading to stale package information. This fix
ensures the cache is rebuilt whenever source files are modified.
Fixes #123
- Don't use AI-generated commit messages without review and editing
- Don't make vague commits like "bug fix" or "update"
- Ensure your code compiles before opening a PR
- Reference any relevant issues in your PR description
If you have work in progress that you want early feedback on, or if there are known blockers:
- Open the PR as a Draft
- Clearly mention in the description that it's a work in progress
- Describe the specific blockers or areas where you need help
- Convert to a regular PR once ready for final review
- Use meaningful variable and function names
- Document complex algorithms or non-obvious code decisions
- Avoid AI-generated comments - we prefer contextual comments over boilerplate generated by tools like Cursor or Copilot
Before submitting a PR:
- Ensure your code compiles with no warnings
- Optionally, run
cargo clippy
and address any lints - Format your code with
cargo fmt