This repo uses uv for all tooling, and has strict safety and quality rules.
Follow this file plus CLAUDE.md (do not edit it).
- Never switch branches or create new branches without explicit user permission.
- Never run
git checkoutunless the user asks you to. - Never amend commits unless explicitly asked.
- Use
uv run <command>for all tooling; do not use pip/poetry/pipenv. - If modules are missing, run
uv sync(do notpip install).
Common commands:
uv run pytest -v
uv run pytest --cov --cov-report=term-missing
uv run pyright
uv run ruff format --check moneyflow/ tests/
uv run ruff check moneyflow/ tests/- Run
uv run pyright(pyright is in the uv environment). - Keep functions fully typed; avoid inline imports unless required for circular deps.
- TDD is required for new features/bug fixes.
- Coverage should not decrease; business logic targets >90%.
- Full suite before commits: tests, pyright, ruff format/check.
- All Python code lives under
moneyflow/. - Tests go in
tests/. - Avoid top-level
.pyfiles.
- Cache orchestration is extracted to
moneyflow/cache_orchestrator.py. - App integration lives in
moneyflow/app.py(usesCacheOrchestrator). - Core cache logic in
moneyflow/cache_manager.py. - Tests for orchestration:
tests/test_cache_orchestrator.py. - Tests for cache manager:
tests/test_cache.py.
- Prefer small, targeted changes.
- Use ASCII by default; avoid adding Unicode unless file already uses it.
- Keep comments focused on “why”, not “what”.
uv run pytest -v
uv run pyright
uv run ruff format --check moneyflow/ tests/
uv run ruff check moneyflow/ tests/If docs changed:
markdownlint --config .markdownlint.json README.md 'docs/**/*.md'
.github/scripts/check-arrow-lists.sh