- Python 3.12+ and pip
- Git
- Optional system packages for extraction:
poppler-utils,tesseract-ocr
git clone https://github.com/zoharbabin/due-diligence-agents.git
cd due-diligence-agents
pip install -e ".[dev,pdf]"
pre-commit installThis installs the package in editable mode with all dev dependencies.
| Prefix | Purpose |
|---|---|
main |
Stable release branch |
feat/* |
Feature development (e.g., feat/issue-27-pipeline-optimization) |
fix/* |
Bug fixes |
make test # Unit + integration tests
make test-unit # Unit tests only (fast, no API calls)
pytest tests/e2e/ -x # End-to-end tests (requires API key, slow)Unit and integration tests require no API key. E2E tests require ANTHROPIC_API_KEY.
pytest tests/unit/ -x -q && mypy src/ --strict && ruff check src/ tests/ # Must pass before merge
ruff check src/ tests/ # Lint only
ruff format src/ tests/ # Auto-format code- Python 3.12+ with
from __future__ import annotations - Strict mypy -- all code must pass
mypy src/ --strict - ruff for linting and formatting
- 120 character line limit
- Pydantic v2 models with
Field(description=...)on every field - Async functions for pipeline steps
- Tests written before implementation (TDD)
Configuration lives in pyproject.toml under [tool.ruff], [tool.mypy], and [tool.pytest.ini_options].
- Use imperative mood: "Add extraction module", not "Added extraction module"
- Reference issue numbers where applicable: "Fix entity resolution cache miss (#42)"
- Keep the first line under 72 characters
- Add a blank line before any extended description
For documentation fixes, typo corrections, or small improvements that don't change runtime behavior:
- Fork the repo and make your change.
- Run
ruff check src/ tests/(no test suite needed for doc-only changes). - Open a PR with a one-line description.
Look for issues labeled good first issue for
beginner-friendly tasks.
- Branch from
main. - Write tests first, then implement.
- Ensure quality gates pass locally:
make verify(orpytest tests/unit/ -x -q && mypy src/ --strict && ruff check src/ tests/). - Add or update tests for any new functionality.
- Open a PR with a clear description of what changed and why.
- One approval required to merge.
- Read
CLAUDE.md— the Architecture Map, Design Rules, and Key Patterns are the fast orientation to the codebase, commands, and code style. - The code under
src/dd_agents/is authoritative for current behavior; each package's entry point is listed in the Architecture Map.
This project is structured for autonomous implementation by Claude Code:
CLAUDE.md— Project instructions loaded automatically at session start.claude/settings.json— Tool permissions and quality gate hooks.claude/agents/— Custom subagents (code-reviewer, test-runner)scripts/— Quality gate scripts (lint, test, type check, pre-commit gate)- Quality gate command —
pytest tests/unit/ -x -q && mypy src/ --strict && ruff check src/ tests/
To start autonomous implementation:
cd due-diligence-agents
pip install -e ".[dev,pdf]"
claude # Claude Code reads CLAUDE.md automaticallyThis project is licensed under Apache 2.0. No CLA is required -- by submitting a PR, you agree that your contributions are licensed under the same terms.