# Timesheets — Agent Guide ## Project overview A Python CLI tool that parses markdown pipe-delimited timesheet tables and exports them to CSV for import into Odoo (or similar tools). It also supports a human-readable summary view and can fetch notes directly from Joplin. ### Package layout ``` timesheets/ ├── pyproject.toml # package metadata, entry point, dev dependencies ├── AGENTS.md └── src/timesheets/ ├── cli.py # argument parsing, main() entry point ├── parser.py # markdown table parsing, aggregation, date filtering ├── projects.py # project_map.json loading and key resolution ├── output.py # CSV writing and summary printing ├── config.py # TOML config file loading and key extraction ├── joplin.py # Joplin API integration (notebook traversal, note fetching) └── utils.py # shared low-level helpers (duration parsing, formatting, etc.) ``` Tests live in `tests/`, one file per source module: ``` tests/ ├── test_utils.py ├── test_parser.py ├── test_projects.py ├── test_config.py ├── test_output.py └── test_joplin.py ``` --- ## Package manager — uv All dependency management and script execution is done via [`uv`](https://docs.astral.sh/uv/). Do **not** use `pip` or `python` directly. | Task | Command | |---|---| | Install / sync dependencies | `uv sync` | | Add a runtime dependency | `uv add ` | | Add a dev-only dependency | `uv add --dev ` | | Run the CLI | `uv run timesheets ` | | Run any Python script | `uv run python