Thank you for your interest in contributing to Argus! This document provides guidelines and information for contributors.
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
- Check existing Issues to avoid duplicates
- Create a new issue with:
- Clear, descriptive title
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Python version)
- Relevant logs or error messages
- Open an issue with the
enhancementlabel - Describe the feature and its use case
- Explain why it would benefit the project
# Fork and clone the repository
git clone git@github.com:YOUR_USERNAME/Argus.git
cd Argus
# Create a virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
# or: venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Install in development mode
pip install -e .-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes following code style guidelines
-
Write/update tests:
pytest tests/ -v
-
Commit with clear messages:
git commit -m "feat: add new protocol plugin for PostgreSQL" -
Push and create a Pull Request
We follow Conventional Commits:
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style (formatting, semicolons, etc.)refactor:Code refactoringtest:Adding/updating testschore:Maintenance tasks
- Follow PEP 8 guidelines
- Use type hints where appropriate
- Add docstrings to functions and classes (JSDoc3 style)
- Comment the "why", not the "what"
- Keep functions focused and small
def scan_host(
host: str,
ports: List[int],
timeout: float = 5.0
) -> HostInfo:
"""
Scan a single host for open ports.
Args:
host: Target IP address or hostname
ports: List of ports to scan
timeout: Connection timeout in seconds
Returns:
HostInfo object containing scan results
Raises:
ValueError: If host is invalid
"""
# Implementation hereTo add support for a new protocol:
- Create a new file in
argus/plugins/ - Inherit from
BasePlugin - Implement
test_credential()method - Add default credentials
- Register in
argus/plugins/__init__.py - Add tests in
tests/test_plugins.py
See existing plugins (SSH, HTTP, Redis) for reference.
- Keep PRs focused on a single feature/fix
- Update documentation if needed
- Ensure tests pass
- Respond to code review feedback promptly
Open an issue or contact: fev.dev@proton.me
Thank you for contributing to Argus! 👁️