К основному содержанию
скилл CX Codex

integrate-todo-list — скилл для Claude Code: панель задач агента

Добавляет в приложение инструмент TodoWrite и панель, где видно, как агент Atlas выполняет многошаговую работу.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add cognitedata/builder-skills --skill integrate-todo-list -a claude-code
Открыть на GitHub

Что делает integrate-todo-list

Скилл ставит в проект модуль src/todo/ из восьми файлов: типы TodoItem и TodoList, React-контекст с TodoProvider, хук useTodoList, фабрику createTodoWriteTool, хук useTodoWriteTool, а также TodoPanel, TodoItemRow и TodoToolResultCard. Все файлы используют относительные импорты, поэтому править их после копирования не нужно.

Дальше скилл проходит по шагам: читает package.json, src/App.tsx и файл с вызовом useAtlasChat, оборачивает дерево компонентов в TodoProvider, подключает инструмент к useAtlasChat через tools: [todoWriteTool] и getAppContext, а затем рендерит панель над полем ввода. Список задач попадает в каждый запрос через getAppContext, поэтому агент видит, на чём остановился. TodoPanel возвращает null при пустом списке, так что рендерить его можно всегда.

Этот скилл рассчитан только на приложения, где уже есть useAtlasChat, каталог src/atlas-agent/ и @sinclair/typebox из integrate-atlas-chat. Если приложение использует боковую панель Atlas / EOS, нужен другой скилл — integrate-fusion-agent. Ещё понадобится @tabler/icons-react: скилл проверяет его наличие в package.json и предлагает поставить через пакетный менеджер проекта, если пакета нет. Проверка в конце — команда типов проекта, обычно pnpm tsc --noEmit.

Какие задачи решает

  • показать в интерфейсе, какие задачи агент уже выполнил и какие ещё в работе
  • подключить инструмент TodoWrite к существующему useAtlasChat
  • добавить панель прогресса над полем ввода в чате
  • отрисовать компактную карточку результата вызова инструмента в списке шагов
  • передавать текущий список задач агенту в каждом запросе

Примеры запросов агенту

  • добавь панель задач в чат через скилл integrate-todo-list
  • подключи TodoWrite к useAtlasChat и покажи TodoPanel над полем ввода
  • сделай карточку TodoToolResultCard для шагов с инструментом TodoWrite

Как установить integrate-todo-list

1Через Skills CLI (Vercel)

npx skills add cognitedata/builder-skills --skill integrate-todo-list -a claude-code

2Вручную: положить файлы

~/.claude/skills/integrate-todo-list/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/integrate-todo-list/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора12

setup-python-tools Ставит клиентское выполнение Python-инструментов через Pyodide в приложение с уже готовым useAtlasChat. Нужен, когда агент отдаёт код инструмента, а считать он должен в браузере. CX Codex +1 1 900установок dm-limits-and-best-practices Справочный скилл про лимиты CDF Data Modeling: конкурентность и 429, пагинация, батчи, QueuedTaskRunner. Пригодится, когда код сыпет ошибками на нагрузке. CX Codex +1 1 900установок security Проходит по приложению Flows шаг за шагом: находит утечки секретов, опасный DOM, дыры в авторизации — и сразу правит их. CX Codex +1 1 900установок integrate-atlas-chat Скилл для встраивания чата Atlas прямо в интерфейс приложения Cognite. Нужен, когда сайдбар Fusion/EOS недоступен. CX Codex +1 1 900установок reveal-3d Встраивает интерактивный 3D-вьюер Cognite Reveal в приложение Flows: CAD-модели, облака точек, панорамы 360° и сцены CDF. CX Codex +1 1 900установок dependencies-audit Скилл находит уязвимости, устаревшие и заброшенные пакеты, проблемы с лицензиями и чинит их, а не просто составляет отчёт. CX Codex +1 1 900установок test-coverage Скилл находит пробелы в покрытии тестами приложения на Flows и закрывает их: настраивает инструменты, пишет недостающие тесты, правит код ради тестируемости. CX Codex +1 1 900установок integrate-fusion-agent Скилл подключает боковую панель Atlas/EOS в приложение Flows/Fusion через @cognite/app-sdk вместо встроенного чата. CX Codex +1 1 700установок

Похожие

todo davila7 Ведёт задачи проекта в файле todos.md прямо из чата: добавить, закрыть, удалить, посмотреть список. Пригодится, когда не хочется уходить из Claude ради таск-трекера. 2 723установок thread-list assistant-ui Скилл для assistant-ui: добавляет боковую панель с несколькими диалогами, переключением, переименованием, архивацией и удалением. CX Codex +1 6 200установок experience-lwc-base-components-integrate forcedotcom Помогает выбрать подходящий Lightning Base Component под задачу интерфейса и подключить его в LWC без поломки SLDS. CX Codex +1 2 600установок service-digital-engagement-messaging-site-integrate forcedotcom Встраивает виджет Embedded Messaging в сайт Experience Cloud: правит JSON-бандл страницы, деплоит, публикует и проверяет гостевой доступ. CX Codex +1 2 400установок task-management официальный anthropics Ведёт список задач в локальном файле TASKS.md и показывает интерактивный дашборд. Пригодится, чтобы фиксировать дедлайны и поручения прямо во время диалога с агентом. CX Codex +1 7 200установок sumsub-integrate-dint-websdk sumsub Добавляет проверку устройств Sumsub в уже работающий WebSDK. Нужен для связывания устройства с заявителем и передачи меток риска. CX Codex +1 960установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Все скиллы по теме «Настройка агента: память, контекст, субагенты» →

Вопросы о integrate-todo-list

Как установить integrate-todo-list в Claude?

Выполните npx skills add cognitedata/builder-skills --skill integrate-todo-list -a claude-code. После этого файл скилла лежит в ~/.claude/skills/integrate-todo-list/SKILL.md.

Что делает integrate-todo-list?

Добавляет в приложение инструмент TodoWrite и панель задач, чтобы агент Atlas показывал прогресс многошаговой работы. Список обновляется по статусам pending, in_progress и completed.

Что нужно, чтобы скилл сработал?

В приложении уже должны быть useAtlasChat, каталог src/atlas-agent/ и @sinclair/typebox из скилла integrate-atlas-chat. Для боковой панели Atlas / EOS этот скилл не подходит — там нужен integrate-fusion-agent.

Исходный текст

SKILL.md · Apache-2.0
---
name: integrate-todo-list
description: "TodoWrite panel for an already-approved in-app useAtlasChat UI. New AI features use integrate-fusion-agent. Triggers: TodoWrite, todo panel — only when useAtlasChat already exists."
allowed-tools: Read, Glob, Grep, Edit, Write, Bash
---

# Integrate Todo List

Add a `TodoWrite` tool and panel so the in-app Atlas agent can show task progress.

Skip if the app uses the Atlas / EOS sidebar (`integrate-fusion-agent`). Prerequisite: `useAtlasChat` + `src/atlas-agent/` + `@sinclair/typebox` from `integrate-atlas-chat`.

---

## Step 1 — Read the app

Before writing anything, read:

- `package.json` — confirm `@tabler/icons-react` is installed; if not, install it with the app's package manager
- `src/App.tsx` — find where to add `TodoProvider`
- The file that calls `useAtlasChat` (likely `src/chat/useChatViewModel.ts` or `src/App.tsx`) — this is where the tool gets wired
- The chat view component that renders messages — this is where `TodoPanel` and `TodoToolResultCard` go

---

## Step 2 — Create the `src/todo/` module

Find the skill directory by running `find . -path "*/.agents/skills/integrate-todo-list/code" -type d` from the project root.

Read each file from `<skill-dir>/code/` and write it into `src/todo/` with the same filename:

| File | Purpose |
|------|---------|
| `types.ts` | `TodoItem` and `TodoList` types |
| `TodoContext.tsx` | React context + `TodoProvider` |
| `useTodoList.ts` | Hook to read/write the todo list |
| `todoWriteTool.ts` | `createTodoWriteTool` factory — `AtlasTool` with full CDF task-decomposition guidance |
| `useTodoWriteTool.ts` | Hook that memoizes the tool with current state access |
| `TodoPanel.tsx` | Card UI: progress bar + task rows |
| `TodoItemRow.tsx` | Single row with animated status icons |
| `TodoToolResultCard.tsx` | Compact summary card for tool call display |

All files use relative imports (`./types`, `./TodoContext`, etc.) — no changes needed.

---

## Step 3 — Wrap the app in `TodoProvider`

In `src/App.tsx` (or the root component), wrap the existing tree with `<TodoProvider>`:

```tsx
import { TodoProvider } from './todo/TodoContext'; // adjust path to match app conventions

function App() {
  return (
    <TodoProvider>
      {/* existing children */}
    </TodoProvider>
  );
}
```

---

## Step 4 — Wire the tool into `useAtlasChat`

In the file that calls `useAtlasChat`, add the following. Adjust import paths to match the app's conventions.

```ts
import { useRef, useCallback } from 'react';
import { useTodoList } from './todo/useTodoList';
import { useTodoWriteTool } from './todo/useTodoWriteTool';

// Inside the hook/component:
const { todos, setTodos } = useTodoList();
const todoWriteTool = useTodoWriteTool();

// Keep a ref so getAppContext always reads fresh state without re-creating the callback.
const todosRef = useRef(todos);
todosRef.current = todos;

const getAppContext = useCallback(() => {
  const t = todosRef.current;
  if (t.length === 0) return undefined;
  const lines = t.map((item, i) => `${i + 1}. [${item.status}] ${item.content}`);
  return `Current todo list:\n${lines.join('\n')}`;
}, []);

// Add to useAtlasChat options:
const { messages, send, isStreaming, progress, error, reset, abort } = useAtlasChat({
  client: isLoading ? null : sdk,
  agentExternalId: AGENT_EXTERNAL_ID,
  tools: [todoWriteTool],   // add alongside any existing tools
  getAppContext,
});

// In the reset handler, clear the todo list:
const handleReset = useCallback(() => {
  reset();
  setTodos([]);
}, [reset, setTodos]);

// Expose todos in the return value so the view can render TodoPanel:
return { ..., todos };
```

---

## Step 5 — Render `TodoPanel` in the chat view

In the component that renders the chat input area, add `<TodoPanel>` above the input field:

```tsx
import { TodoPanel } from './todo/TodoPanel'; // adjust path

// In the render:
<TodoPanel todos={todos} />
<YourChatInput ... />
```

`TodoPanel` returns `null` when the list is empty, so it's safe to always render it.

---

## Step 6 — Render `TodoToolResultCard` for tool call steps

In the component that renders per-message tool calls (typically a steps accordion or similar), branch on the tool name:

```tsx
import { TodoToolResultCard } from './todo/TodoToolResultCard'; // adjust path

{toolCalls.map((tc, i) =>
  tc.name === 'TodoWrite' ? (
    <TodoToolResultCard key={i} toolCall={tc} />
  ) : (
    <YourDefaultToolCallCard key={i} toolCall={tc} />
  )
)}
```

---

## Step 7 — Verify

Run the app's type-check command (typically `pnpm tsc --noEmit`) and confirm there are no errors.
If the project has tests, run them to confirm nothing regressed.

---

## Done

The agent can now use `TodoWrite` to create and track tasks. It will:
- Show a task panel as soon as it starts multi-step work
- Update task status in real-time (`pending` → `in_progress` → `completed`)
- Clear the list automatically when all tasks are done
- Inject the current task list into each prompt via `getAppContext` so it knows where it left off

© cognitedata · Apache-2.0 · cognitedata/builder-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой