Create and manage a structured task list for tracking multi-step work. This helps you track progress, organize complex tasks, and demonstrate thoroughness to the user. It also helps the user understand the progress of your work.

## When to Use This Tool

Use this tool proactively in these scenarios:

1. **Complex multi-step tasks** — When a task requires 3 or more distinct steps or actions
2. **Non-trivial tasks** — Tasks requiring careful planning or multiple operations
3. **User provides multiple tasks** — When users provide a list of things to be done (numbered or comma-separated)
4. **After receiving new instructions** — Immediately capture user requirements as todos
5. **When you start working on a task** — Mark it as in_progress BEFORE beginning work
6. **After completing a task** — Mark it as completed and add any follow-up tasks discovered during implementation

## When NOT to Use This Tool

Skip using this tool when:
1. There is only a single, straightforward task
2. The task is trivial and tracking provides no benefit
3. The task can be completed in less than 3 trivial steps
4. The task is purely conversational or informational

NOTE: Do NOT use this tool if there is only one trivial task. Just do it directly.

## Examples of When to Use

<example>
User: I want to add a dark mode toggle to the application settings. Make sure you run the tests when done!
→ Create todo list:
  1. Create dark mode toggle component in Settings page
  2. Add dark mode state management (context/store)
  3. Implement theme styles for dark mode
  4. Update existing components to support theme switching
  5. Run tests and fix any failures

Reasoning: Multi-step feature requiring UI, state management, and styling changes. User explicitly asked for tests.
</example>

<example>
User: Help me rename the function getCwd to getCurrentWorkingDirectory across my project
→ First search to understand scope, then create todo list with one item per file that needs updating.

Reasoning: Multiple files affected, systematic tracking prevents missing any occurrence.
</example>

<example>
User: I need to implement user registration, product catalog, shopping cart, and checkout flow.
→ Create todo list breaking down each feature into specific tasks.

Reasoning: User provided multiple complex features in a list.
</example>

## Examples of When NOT to Use

<example>
User: How do I print "Hello World" in Python?
→ Just answer directly. No todo needed.

Reasoning: Single, trivial, informational task.
</example>

<example>
User: Fix the typo in the README
→ Just fix it directly. No todo needed.

Reasoning: Single straightforward task, no multi-step planning required.
</example>

<example>
User: Run npm install for me
→ Just run it. No todo needed.

Reasoning: Single command execution with immediate results.
</example>

## Task States and Management

Task states: pending, in_progress, completed

IMPORTANT — Task descriptions must have two forms:
- content: imperative form describing what needs to be done (e.g. "Run tests", "Fix authentication bug")
- activeForm: present continuous form shown during execution (e.g. "Running tests", "Fixing authentication bug")

Rules:
- Update task status in real-time as you work
- Mark tasks complete IMMEDIATELY after finishing (don't batch completions)
- Exactly ONE task must be in_progress at any time (not less, not more)
- Complete current tasks before starting new ones
- Remove tasks that are no longer relevant from the list entirely

## Task Completion Requirements

- ONLY mark a task as completed when you have FULLY accomplished it
- If you encounter errors, blockers, or cannot finish, keep the task as in_progress
- When blocked, create a new task describing what needs to be resolved
- Never mark a task as completed if:
  - Tests are failing
  - Implementation is partial
  - You encountered unresolved errors
  - You couldn't find necessary files or dependencies

## Task Breakdown Guidelines

- Create specific, actionable items
- Break complex tasks into smaller, manageable steps
- Use clear, descriptive task names
- Always provide both forms:
  - content: "Fix authentication bug"
  - activeForm: "Fixing authentication bug"

When in doubt, use this tool. Being proactive with task management demonstrates attentiveness and ensures you complete all requirements successfully.

## Parameters

- todos (required): array of task objects
  - content (required): task description in imperative form
  - status (required): "pending" | "in_progress" | "completed"
  - activeForm (required): present continuous form shown during execution