Я дал AI-агенту канбан-борд, и он справился с проджект-менеджментом лучше моей команды

Я дал AI-агенту канбан-борд, и он справился с проджект-менеджментом лучше моей команды

Есть момент, знакомый каждому, кто работает с AI-агентами: сидишь в терминале, генерируешь код, а потом понимаешь — ничего не зафиксировано. Ни один тикет не обновлён, таймер не запущен, чат исчезает после закрытия сессии. А когда коллега спрашивает, что было сделано, приходится восстанавливать всё по памяти.

Сон, который всё изменил

После пяти часов работы я лег поспать. Проснувшись, вдруг понял: зачем я вообще посредник? Почему AI-агент не может сам управлять задачами на борде? У Mattermost Boards есть API, у Claude Code — поддержка MCP-тулзов. Оставалось только соединить их.

В тот же вечер я начал писать Skate.

Что такое Skate?

Skate — это CLI-инструмент и MCP-сервер на Go, который даёт AI-агентам прямой доступ к вашему канбану в Mattermost Boards. Агент может:

  • просматривать задачи,
  • выбирать их по приоритету,
  • обновлять статус,
  • запускать таймер,
  • писать код,
  • оставлять комментарии,
  • и закрывать задачу — без единого перехода в браузер.

Название Skate отражает суть: to skate through something — пролететь через задачи быстро и без усилий. Задачи, на которые раньше уходили часы, теперь закрываются за минуты.

Какую проблему я на самом деле решал

AI-агенты вроде Claude Code или Cursor отлично пишут код, но не знают, над чем работать. Они не обновляют тикеты, не трекают время, не участвуют в процессах команды.

Раньше я думал, что проблема — в памяти агента. Но теперь у моделей окна по миллиону токенов. Настоящее узкое место — память человека. Когда несколько агентов работают над проектом, нужно понимать, что происходило. Для этого нужна единая память команды.

Skate — это не про память агента. Это про память команды.

Как это работает

Skate — один статический бинарник на Go. Никаких баз данных, Docker или демонов. Он отправляет HTTP-запросы к Mattermost API по Bearer-токену.

Настройка занимает 30 секунд. После этого Claude Code получает девять инструментов: просмотр бордов и задач, обновление статусов, комментирование, управление таймером и другие.

Всё просто: если вы видите борд в браузере, Skate видит его в терминале. Вывод можно получить в виде таблицы, JSON или YAML — удобно и для людей, и для скриптов.

Перевод на лету

В команде задачи иногда пишут на родном языке. Для AI-агента это проблема: ему нужен английский. Поэтому я добавил опциональный перевод через любой OpenAI-совместимый API.

Skate анализирует текст: если он не на английском, запускается перевод. Агент видит английскую версию, а оригинал на борде остаётся нетронутым. Это особенно полезно в распределённых командах.

Как я создавал Skate с помощью AI

Я использовал сам воркфлоу, который Skate и обеспечивает. Создал задачи на борде, настроил инструмент и сказал Claude: take the next task by priority.

И он начал работать:

  1. Запускал skate tasks, чтобы увидеть список задач.
  2. Брал задачу с наивысшим приоритетом.
  3. Читал описание через skate task <ID>.
  4. Ставил статус In Progress.
  5. Запускал таймер.
  6. Писал код, фиксы, документацию.
  7. Оставлял комментарий с описанием изменений.
  8. Останавливал таймер.
  9. Менял статус на Completed.
  10. Спрашивал: next task?

Более 30 задач были закрыты так. Каждая — с таймстемпами, комментариями и трекингом времени. Когда я посмотрел на борд, было ясно: что, когда и сколько времени заняло.

В этом и весь смысл: не просто сделать работу, а знать, что было сделано.

Повторяющиеся задачи: перетащил, бросил, снова готово

Один паттерн появился сам собой — повторяющиеся задачи. Например, обновление README, тестов или документации. Вместо создания новой задачи каждый раз я просто перетаскиваю старую из Completed в Not Started.

Агент подхватывает её, читает описание и все предыдущие комментарии, понимает контекст и обновляет контент под текущее состояние. Никаких новых инструкций — просто двигаешь карточку и говоришь: next task.

Задача Update README была закрыта и переоткрыта шесть раз. Каждый раз агент дописывал новое, опираясь на прошлые правки. То же с тестами: он сам определяет, какой код появился, и пишет недостающие проверки.

Когда агент становится частью команды

Раньше, наткнувшись на баг или идею, приходилось переключаться в браузер, создавать тикет, возвращаться. Теперь достаточно сказать: создай задачу. Агент выполняет skate create, заполняет описание — и задача появляется на борде. Без переключений. Мысль из головы — на доску за секунды.

Ещё интереснее — технические планы. Для сложных задач агент сначала исследует код, оформляет план в markdown и прикладывает к тикету. Затем ставит статус Blocked и ждёт.

Коллеги видят план на борде, оставляют комментарии, спорят, предлагают альтернативы. Агент учитывает фидбэк, обновляет план — и только потом пишет код.

Подумайте: AI-агент предложил решение, человек его отревьюил — и всё это произошло на общей доске. Это уже не «разработчик и AI в терминале». Это команда, где один из участников — AI-агент.

Его работа теперь видна: статусы, время, комментарии, планы. Любой может понять, над чем он работал, сколько это заняло и почему приняты те или иные решения. Когда через полгода спросят: «Почему это сделано так?» — ответ будет в тикете.

Скилл-файл: один документ, который всем управляет

Весь воркфлоу — обновление статусов, трекинг времени, комментарии, планы — управляется одним файлом: SKILL.md. Он встроен в Skate и загружается при запуске skate setup. Агент читает его один раз и следует инструкциям до конца сессии.

И вот что удивляет: агент выполняет эти правила лучше любого человека.

Обновить статус. Запустить таймер. Остановить с комментарием. Приложить вывод. Упомянуть коллегу. Написать итог. Проверить связанные задачи. Прочитать историю. Люди забывают. Агент — нет.

Он делает это каждый раз. Не потому что мотивирован, а потому что просто выполняет инструкции. Без эго, без «сделаю потом».

В скилл-файле есть правило подписей: каждый коммент заканчивается строкой вроде -- claude-code (claude-opus-4-6). Это важно, когда на одном борде работают несколько агентов. Сразу видно, кто что сделал, с какой моделью и когда.

Когда три агента и два человека работают над проектом, борд становится единым источником правды. Не чат, не лог — а доска. Каждое решение, каждый статус, каждый план — видны и подписаны.

Скилл-файл — это 130 строк markdown. Никакого кода. Просто понятные инструкции. И они превращают универсальную модель в предсказуемого, надёжного тиммейта, который берёт на себя всю операционку.

Хотите иначе? Отредактируйте файл. Хотите отключить упоминания? Добавьте mentions: false. Хотите, чтобы всегда прикладывался план? Он и так прикладывается. Весь воркфлоу — декларативный, версионируемый, прозрачный.

Технические детали

  • Язык: Go. Один бинарник, кросс-компиляция для Linux/macOS/Windows.
  • MCP-транспорт: stdio. Агенты запускают Skate по требованию.
  • Конфиг: YAML с трёхуровневым мерджингом (глобальный → проект → env).
  • Зависимости: Cobra, OpenAI Go SDK, MCP Go SDK.
  • Кеширование: User ID резолвятся и кешируются в ~/.cache/skate/users.yaml.
  • Версия: задаётся через ldflags, общая для CLI, HTTP и MCP-сервера.

Проект — около 2000 строк кода. Делает одну вещь и делает её хорошо.

Про плагин Boards

Я использую кастомный форк плагина Boards с добавленным тайм-трекингом — возможностью стартовать и останавливать таймеры в задачах. Это ключевая фича для автоматического трекинга.

Skate работает с этим API. Если у вас ванильный Focalboard, таймеры недоступны — но всё остальное работает. Skate корректно обрабатывает отсутствие эндпоинтов: без крашей, без поломок.

Дальше Mattermost: Jira, Linear и все остальное

Подход не привязан к Mattermost. Другие проекты, вроде Vibe Kanban или Kanban Code, тоже решают проблему, но создают новый борд. Это значит — новый UI, новый воркфлоу, сопротивление команды.

Skate идёт иначе. Он не заменяет борд — он подключается к существующему. Команда продолжает работать как раньше. Агент просто появляется как ещё один участник.

Паттерн универсален:

  • Есть AI-агент.
  • Есть система управления проектами с API.
  • Нужен тонкий, stateless мост между ними.

Это и есть Skate. Сегодня — Mattermost. Завтра — Jira, Linear, GitHub Projects, Notion. У всех одинаковые объекты: задачи, статусы, комментарии. И одинаковые действия: list, create, update, comment, track time.

Мы движемся к миру, где у каждой PM-системы будет MCP-адаптер. AI-агенты будут обновлять тикеты так же естественно, как пишут код. Сейчас есть разрыв: агент делает работу, а человек вручную фиксирует результат. Его нужно закрыть.

Skate — мой proof of concept. Mattermost был стартовой точкой. Но идея — больше любого инструмента.

Для кого это

Skate полезен, если вы:

  • используете Mattermost Boards или Focalboard и работаете с AI-агентами — он убирает разрыв между бордом и терминалом;
  • ведёте учёт времени — таймеры запускаются и останавливаются автоматически;
  • соло-разработчик — можете просто сказать Claude: возьми следующую задачу — и он поймёт;
  • работаете с другой PM-системой — читайте код, заимствуйте паттерн.

Будущее AI-разработки — это не просто умные агенты. Это агенты, которые участвуют в тех же процессах, что и люди, с той же ответственностью и аудит-трейлом.

Попробовать

Skate — open source, один бинарник, бесплатно. Написан на Go, работает на кофеине и посленаповом озарении.

Репозиторий: github.com/mobydeck/skate.

Читать оригинал