2684095e2f
Co-authored-by: claude <claude@jpaul.io> Co-committed-by: claude <claude@jpaul.io>
36 lines
1.7 KiB
Markdown
36 lines
1.7 KiB
Markdown
<!--
|
|
The agent's INPUT for Module 25. This is a well-formed issue in the Module 9 format: title,
|
|
context, acceptance criteria, scope. It is deliberately a good candidate for an agent — well-
|
|
scoped, concrete, and it mirrors a pattern already in the codebase (the existing `done` command).
|
|
|
|
The orchestrator (agent_runner.py) reads this file and pairs it with your committed AI config
|
|
(Module 5) to build the agent's brief. Edit it and you change what the agent attempts.
|
|
-->
|
|
|
|
# Add a `delete <index>` command to the CLI
|
|
|
|
**Type:** feature · **Priority:** p2 · **Labels:** `cli`, `ready`, `agent`
|
|
|
|
## Context
|
|
|
|
`tasks-app` can `add`, `list`, and mark a task `done`, but there's no way to remove a task. Once a
|
|
task is added by mistake it stays forever. The `done` command already takes an index and mutates the
|
|
list through a method on `TaskList`, so a `delete` command should follow the exact same shape — this
|
|
is a patterned change, not a design problem.
|
|
|
|
## Acceptance criteria
|
|
|
|
- `python cli.py delete <index>` removes the task at that 0-based index and saves the list.
|
|
- After deleting, the remaining tasks keep their relative order.
|
|
- `delete` with an out-of-range or non-integer index prints a clear error (e.g.
|
|
`no task at index 99`) and exits non-zero, instead of dumping a traceback.
|
|
- The logic lives on `TaskList` (a `remove(index)` method or equivalent), mirroring how `complete`
|
|
works — `cli.py` only parses arguments and calls it.
|
|
- A test covers: a successful delete removes the right task, and an out-of-range delete is handled.
|
|
|
|
## Out of scope
|
|
|
|
- Changing how tasks are stored or numbered.
|
|
- Bulk delete, undo, or a confirmation prompt.
|
|
- Reworking the existing `add` / `list` / `done` commands.
|