Back to Skills

integrate-todo-list

MUST be used whenever adding a task/todo list feature to a Flows app with Atlas chat. Do NOT manually create todo state management or tool definitions — this skill handles the full module (context, provider, tool, hooks, UI components) and all integration wiring. Prerequisite: integrate-atlas-chat must already be set up. Triggers: todo list, task list, task tracking, TodoWrite, todo panel, task panel, progress tracking, add todos, add tasks.

5stars1forksUpdated 6/27/2026

Security Assessment

Safe(100/100)
Security Score100/100

About integrate-todo-list

Adds a structured task-tracking feature to a Cognite Flows app that already uses Atlas chat. The agent gains a TodoWrite tool to create and update a task list as it works through multi-step queries, giving the user real-time visibility into what the agent is doing and why. The integration delivers a full src/todo/ module (context, provider, tool factory, hooks, and UI components) plus the wiring needed to surface tasks in the chat view, rather than requiring custom todo state management.

It assumes the integrate-atlas-chat skill is already complete, so useAtlasChat is wired, src/atlas-agent/ contains the vendored sources, and @sinclair/typebox is installed. The module files are copied from the skill's code directory into src/todo/ with matching filenames and all use relative imports. They include types.ts (TodoItem and TodoList types), TodoContext.tsx (context plus TodoProvider), useTodoList.ts, todoWriteTool.ts (a createTodoWriteTool factory producing an AtlasTool with CDF task-decomposition guidance), useTodoWriteTool.ts, TodoPanel.tsx, TodoItemRow.tsx, and TodoToolResultCard.tsx. @tabler/icons-react is required and installed if missing.

Wiring proceeds in defined steps: wrap the app in TodoProvider, then in the file that calls useAtlasChat pull todos and setTodos from useTodoList, build the tool with useTodoWriteTool, and pass it in the tools array. A getAppContext callback reads the current todos through a ref and injects the list into each prompt so the agent knows where it left off; a reset handler clears the list. TodoPanel renders above the chat input (returning null when empty, so it is safe to always render), and tool-call rendering branches on the TodoWrite name to show TodoToolResultCard. After wiring, the app's type-check (typically pnpm tsc --noEmit) and any tests are run. The result is a task panel that appears during multi-step work, updates status from pending to in_progress to completed in real time, and clears automatically when done.

FAQ

What must be in place before adding the todo list?

The integrate-atlas-chat skill must already be complete: useAtlasChat must be wired (typically from ./atlas-agent/react), src/atlas-agent/ must contain the vendored atlas-agent sources, and @sinclair/typebox must be installed per that skill.

What files make up the todo module?

Eight files copied into src/todo/: types.ts, TodoContext.tsx, useTodoList.ts, todoWriteTool.ts, useTodoWriteTool.ts, TodoPanel.tsx, TodoItemRow.tsx, and TodoToolResultCard.tsx. They cover types, context and provider, hooks, the TodoWrite tool factory, and the UI cards and rows.

How does the agent know the current task list across turns?

A getAppContext callback reads the todos through a ref and returns a formatted list of items with their status, which is passed to useAtlasChat. This injects the current todo list into each prompt so the agent knows where it left off.

Do I need to handle the empty state when rendering the panel?

No. TodoPanel returns null when the list is empty, so it is safe to always render it above the chat input field.

Does this skill require any extra npm packages?

It requires @tabler/icons-react, which is used by the UI components for animated status icons. If it is not already installed, the skill installs it with the app's package manager.

All Files

9 files
SKILL.md5.4 KB
View
code/TodoPanel.tsx1.6 KB
View
code/types.ts0.2 KB
View
code/TodoItemRow.tsx1.2 KB
View
code/todoWriteTool.ts19.2 KB
View
code/useTodoWriteTool.ts0.6 KB
View
code/TodoContext.tsx0.6 KB
View
code/TodoToolResultCard.tsx1.2 KB
View
code/useTodoList.ts0.2 KB
View

Install integrate-todo-list

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill