Contributing to Aegis
Thanks for your interest in contributing. Aegis is an early-stage project and every contribution matters.
Getting started
Run tests:
Run linter:
What to work on
Check open issues — especially those labeled good first issue.
Good entry points for new contributors:
- New warehouse adapter — copy
aegis/adapters/warehouse/duckdb.py, implement the same interface for Postgres, MySQL, etc. - New LLM adapter — copy
aegis/adapters/llm/anthropic.py, implementcomplete()for any OpenAI-compatible endpoint. - New rule type — add to
RuleTypeenum inschema.py, implement induckdb.py, add tests. - Industry pack — create a
aegis-packs/<domain>/rules/directory with domain-specific rule templates.
Pull request process
- Fork the repo and create a feature branch:
feat/<short-description> - Write tests for your change — all PRs must keep tests green
- Run
ruff check aegis tests— no lint errors - Open a PR referencing the issue it closes (
Closes #N) - Keep PRs focused — one issue per PR
Code style
- Python 3.11+, type hints throughout
- Ruff for formatting and linting (
line-length = 100) async/awaitfor all I/O — no blocking calls in the hot path- No comments explaining what the code does — only why when non-obvious
Community
Questions and discussion: open a GitHub Discussion.
Code of Conduct
Be respectful. We follow the Contributor Covenant.