Thank you for your interest in contributing to Argus! This guide will help you get started.
# Clone the repository
git clone https://github.com/cortexc0de/argus-lite.git
cd argus-lite
# Create virtual environment
python3.10 -m venv .venv
source .venv/bin/activate
# Install in development mode
pip install -e ".[dev]"
# Verify tests pass
pytest tests/ -qArgus follows a layered architecture:
CLI (cli.py) → Core (orchestrator/agent/skills) → Modules (recon/analysis) → Tools (external binaries)
Key principles:
- TDD — write tests first, then implementation
- SDD — models define the data contract before code
- ADD — architecture decisions documented before implementation
- Python 3.10+ type hints on all public functions
- Pydantic v2 for all data models
async/awaitfor I/O-bound operations- No
shell=Truein subprocess calls (security requirement) Field(default_factory=list)for mutable defaults in Pydantic models
We use pytest with a TDD workflow:
# Run all tests
pytest tests/ -q
# Run specific module
pytest tests/test_skills.py -v
# Run with coverage
pytest tests/ --cov=argus_lite --cov-report=term-missing
# Coverage must stay above 70%
pytest tests/ --cov=argus_lite --cov-fail-under=70- Create test file in
tests/matchingtest_<module>.py - Write failing tests first (RED)
- Implement the minimum code to pass (GREEN)
- Refactor while keeping tests green (REFACTOR)
class TestMyFeature:
def test_basic_case(self):
result = my_function("input")
assert result.success
def test_edge_case(self):
result = my_function("")
assert not result.successYou can extend Argus with custom skills defined as markdown files. See docs/skills/custom-skills.md for the full guide.
Quick example — create ~/.argus-lite/skills/check_wp.md:
---
name: check_wordpress
description: WordPress-specific security checks
tools: [nuclei, httpx]
---
1. Probe /wp-admin and /wp-login.php
2. Run nuclei with wordpress tags
3. Check xmlrpc.php exposure- Fork the repository and create a feature branch from
master - Write tests for your changes
- Implement the feature/fix
- Run the full test suite — all tests must pass
- Commit with a descriptive message following conventional commits:
feat: add new skill for Xfix: correct severity mapping in nucleidocs: update installation guidetest: add tests for bulk scanner edge cases
- Open a PR against
masterwith:- Clear description of what and why
- Link to related issue (if any)
- Test plan
- Use GitHub Issues
- Include: Argus version, Python version, OS, full error output
- For security vulnerabilities, see SECURITY.md
By contributing, you agree that your contributions will be licensed under the MIT License.