aegis/: Typer CLI source; entrypointaegis.__main__:app.aegis/templates/: Cookiecutter templates consumed by CLI generators.tests/: Pytest suite, includes CLI and template regression checks.docs/+mkdocs.yml: MkDocs content and configuration.Makefile,pyproject.toml: central automation and tooling settings.
uv sync --all-extrasormake install: provision dev + docs dependencies with uv.make lint: run ruff lint; usemake fix/make formatfor autofix.make typecheck: strict mypy pass.make test: pytest all suites;make cli-testfor smoke CLI invocation.make check: aggregate lint, typecheck, tests;make docs-servefor live docs.
- Python 3.11, strict typing; prefer precise annotations.
- Formatting via ruff; 88 char line length, double quotes, spaces for indent.
- Imports sorted by ruff-isort; maintain logical sections (stdlib, third-party, local).
- Naming: functions/modules snake_case, classes CapWords, constants SCREAMING_SNAKE_CASE.
- Tests live under
tests/; name filestest_*.pyand follow pytest fixtures. - Use pytest markers
slow/integrationto segment longer suites. - Template changes require
make test-template; quick loopuv run pytest -q -m "not slow". - Maintain coverage of generated projects when updating
aegis/templates/.
- Commit messages follow Conventional Commits, e.g.,
feat(cli): add stack scaffold. - Before pushing, run
make checkand attach relevant CLI/doc output in PRs. - PR descriptions should state rationale, link issues, and note template impacts or migration steps.
- Install pre-commit hooks (
pre-commit install) to enforce lint/type gates locally.
- Never commit secrets; keep
.envout of VCS and update.env.example. - Review dependencies with
uv run pip-auditwhen bumping packages. - Leverage
make redis-*targets for local container helpers without polluting system services.