Claude tasks first impressions
Claude 2.1.19 introduced a new Task system to replace the Todo related tools. Todo’s were how Claude tracked work that needed to happen to accomplish some larger plan.
The post from Anthropic explains the motivations in detail but in summary:
- Tasks can have dependencies
- Tasks run in their own contexts
- Multiple sessions can work on a task list by setting a
CLAUDE_CODE_TASK_LIST_IDparameter
The new Task system addresses a lot of the problems that folks (including myself) had been hand rolling orchestrators to support, but now baked into the agent harness.
Initial Thoughts
The task system is a definite win over previous approaches I’ve tried:
- The task list is visible in the TUI, which is handy to see progress
- Explicit dependency blockers help to prioritize the work
- The separate context work the way you want them to with Ralph style loops, but with the existing nice UX of Claude code.
The main issue I have with tasks is getting a good plan that produces a reasonable task list. By default, Claude doesn’t always prioritize the things I would expect e.g. creating tests was deep in the task list below several features where the tests would have been really helpful. Fortunately, this is pretty easy to fix. Some prompts on my preferences and priorities got me to a working result.
I also like that Tasks are implemented via Tools, which means you can run hooks against them. The task list is also editable by Claude, again you just have to prompt it to use a tool.
Right now I am thinking a Task as (basically) PR scoped items of work. I prompt Claude to create a commit for each task as it completes, and that it should run tests before stopping. It doesn’t always do this, so as always CI is the backstop. But in general I can take a feature and turn into commits that can be stacked for review.