Thank you for your interest in contributing to HunterX. This document outlines the process for contributing code, documentation, and other improvements.
All contributions are welcome — whether fixing a typo, adding a skill, writing tests, or implementing a new provider.
HunterX is released under the Apache 2.0 license. All contributors must agree to the Developer Certificate of Origin (DCO). Every commit must include a Signed-off-by line.
- Fork the repository on GitHub.
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/HunterX.git
- Add the upstream remote:
git remote add upstream https://github.com/nullc0d30/HunterX.git
- Create a branch for your work (see Branch Naming).
- Make your changes.
- Run tests locally before pushing.
pip install -r requirements.txtInstall pre-commit hooks to automatically check code style:
pre-commit installPre-commit hooks run Ruff and other checks on every commit.
- Linter: Ruff
- Line length: 120 characters
- Target Python: 3.11+
- Type hints: Required for all function signatures and public methods.
Run the linter before committing:
ruff check .All contributions must maintain or increase the test pass rate. There are currently 623 tests in the test suite.
Run tests:
pytest tests/ -vNo regressions are allowed. If your change fixes a bug, add a test that reproduces the bug and verify it passes.
- Ensure your branch is up to date with
main. - Open a pull request against the
mainbranch. - Use the pull request template — fill in all sections.
- Link the issue your PR addresses (if applicable).
- Add a changelog entry in
CHANGELOG.mdunder the appropriate section. - Ensure all commits include a DCO sign-off (
Signed-off-by:). - Ensure all CI checks pass (lint, test, build).
A maintainer will review your PR. You may be asked to make changes before it is merged.
Use Conventional Commits format:
<type>: <short description>
<optional body>
Types:
| Type | Usage |
|---|---|
feat: |
A new feature |
fix: |
A bug fix |
docs: |
Documentation changes |
test: |
Adding or updating tests |
refactor: |
Code refactoring |
chore: |
Maintenance, tooling, CI |
Example:
feat: add AWS S3 bucket enumeration skill
Use descriptive branch names with a type prefix:
feat/description— new featuresfix/description— bug fixesdocs/description— documentation changes
Examples: feat/s3-enumeration, fix/ollama-timeout, docs/api-reference
Reviewers will check for:
- Correctness: Does the code do what it claims?
- Security: Are there any injection vectors or unsafe patterns?
- Style: Does it follow Ruff conventions and type hints?
- Tests: Are there sufficient tests covering the change?
- Documentation: Are public APIs and behaviors documented?
- Performance: Is the approach efficient for the expected workloads?
Be prepared to iterate. All reviews are conducted respectfully and constructively.
Every commit must include a Signed-off-by line in the commit message, certifying that you have the right to submit the code under the project's license.
To sign off a commit:
git commit -s -m "feat: add S3 bucket enumeration skill"This adds:
Signed-off-by: Your Name <your.email@example.com>
For more information, see developercertificate.org.