# Instructions for AI agents working on tasks-app A tiny command-line task tracker. The point of this project is to be small enough to read in a minute but real enough to have more than one file. Keep it that way; don't grow it into a product. ## Project layout - `tasks.py`: core logic (`Task`, `TaskList`). New behavior that isn't about the command line goes here. - `cli.py`: the command-line front end. Argument parsing and printing only; it calls into `tasks.py`. Reads and writes `tasks.json`. - `tasks.json`: generated state. See "Don't touch" below. ## Build and test commands - Run the app: `python3 cli.py ` (e.g. `python3 cli.py list`). - Run the tests: `python3 -m unittest` - Do not claim a change works until you have actually run it. If tests exist, they must pass first. ## Coding standards - Python 3.10+ . Standard library only; no third-party packages without being asked. - Type-hint public functions and methods. Match the existing dataclass style in `tasks.py`. - Handle bad input gracefully (e.g. a non-numeric index) rather than letting a raw traceback escape. ## Don't touch - **Never edit `tasks.json` by hand.** It is generated by the app; hand-editing it corrupts state. Read it if you need to, but change it only by running the CLI. - Don't reformat or rewrite files you aren't actively changing. Keep diffs small and focused. ## House style - Keep functions small and single-purpose. Prefer clarity over cleverness. - Match the surrounding code's style; don't introduce a new pattern for something the project already does one way. - When you add a command, wire it into `cli.py`'s dispatch and update the usage string.