Thank you for your interest in contributing to reqstool! We welcome contributions of all kinds — bug reports, feature requests, documentation improvements, and code changes.
Please read and follow our Code of Conduct in all interactions.
Use the issue templates when opening a new issue:
- Bug report — unexpected behaviour or crashes
- Feature request — ideas for new functionality or improvements
- Other — anything else
Before submitting, search existing issues to avoid duplicates. For general questions and discussions, use GitHub Discussions.
- Fork the relevant repository and clone your fork locally.
- Create a branch from
mainwith a descriptive name:git checkout -b feat/my-feature - Make your changes and ensure existing tests pass.
- Commit following the Commit Messages conventions below, signing off each commit per the Developer Certificate of Origin.
- Push your branch and open a Pull Request against
main. - Fill in the PR template completely. Link any related issues.
All commits and PR titles must follow Conventional Commits. Our semantic-prs check enforces this automatically on every PR.
<type>(<scope>): <short description>
| Type | When to use |
|---|---|
feat |
New feature |
fix |
Bug fix |
refactor |
Code restructure without behaviour change |
chore |
Routine maintenance, tooling |
security |
Security fixes or improvements |
revert |
Reverts a previous commit |
| Scope | Area |
|---|---|
reqs |
Requirements tracking core logic |
docs |
Documentation |
tests |
Test infrastructure |
build |
Build tooling |
ci |
CI/CD pipelines |
conf |
Configuration |
api |
Public API surface |
core |
Core shared logic |
deps |
Dependency management |
release |
Release process |
github-actions |
GitHub Actions updates (used by Renovate) |
The canonical config lives at .github/semantic.yml.
feat(reqs): add support for YAML requirement files
fix(api): correct status code on empty result set
chore(deps): bump requests from 2.31 to 2.32
All contributions must be signed off with the Developer Certificate of Origin v1.1. This certifies that you wrote the contribution or have the right to submit it under the project's open-source licence.
To sign off, add a Signed-off-by trailer to every commit using the -s flag:
git commit -s -m "feat(reqs): add my feature"
This produces:
feat(reqs): add my feature
Signed-off-by: Your Name <you@example.com>
Your name and email must match your Git identity. If you have forgotten to sign off, you can amend recent commits:
git commit --amend --signoff
git rebase --signoff HEAD~N # sign N previous commits
See RELEASING.md for the dependency graph and release order across reqstool repositories.
- All PRs require at least one approving review from a maintainer before merge.
- Reviews are provided on a best-effort basis; please allow reasonable time for a response.
- Maintainers may request changes or ask clarifying questions before approving.
- Once approved and all checks pass, a maintainer will merge the PR using squash merge.