EDITH Agency/Блог/Задачник для команды

Как собрать задачник для команды за две недели: один промт и 9 шагов

Собрать доску задач — не задача про ИИ. Код пишется за вечер. Не пишется другое: из чего состоит ваша работа, кто хозяин задачи и что происходит, когда срок прошёл. Поэтому здесь вы не заполняете анкету — вы отдаёте один промт, и вопросы задаёт Клод, а потом он же собирает готовую доску под ваш бизнес.

1 промт до рабочей доски 6 промта на всё остальное 7 граблей, на которых мы уже полежали работает и на одного

Один промт, который спросит и соберёт

Опрос зашит внутрь промта. Вы вставляете один текст, отвечаете на десяток вопросов про свою работу — и получаете доску со своими колонками, своими людьми и своими запретами, а не универсальную. Сборка, самопроверка и инструкция «как пользоваться» для команды — в том же промте.

  • Заведите пустую папку под проект и откройте её в Claude Code — так делали мы. Не хотите ничего ставить — тот же промт работает в чате на claude.ai, только файлы придётся скачивать руками.
  • Вставьте промт целиком и отвечайте своими словами. На размытые ответы он переспросит — это и есть работа.
  • Если работаете один — так и скажите в первом же ответе, он уберёт роли и права.
  • Он покажет ТЗ на десять строк и спросит «собираю?». Прочитайте: это последний момент, когда переделать бесплатно.
  • На выходе — файл доски, файл «как пользоваться» и его отчёт по девяти проверкам. Сразу попросите сделать первый коммит: с этого момента у вас есть «верни как было».
Промт · опрос, сборка, проверка
Собери мне доску задач под мою работу. Работаешь в три этапа и НЕ ПЕРЕХОДИШЬ
к следующему, пока не закончил предыдущий: сначала интервью, потом сборка, потом проверка.

═══════════════════════════════════════
ЭТАП 1. ИНТЕРВЬЮ. Сначала спроси, потом собирай
═══════════════════════════════════════

Правила интервью:
- Задавай по ОДНОМУ вопросу за раз и жди ответа. Не показывай список вопросов целиком.
- Если мой ответ размытый («ну, задачи разные») — переспроси конкретнее и предложи
  два-три варианта на выбор, чтобы мне было от чего оттолкнуться.
- Спорь со мной, если я прошу то, что развалит систему: например «пусть срок будет
  необязательным» или «исполнителем поставим отдел».
- Всего 10–12 вопросов, не больше. Это разговор, а не форма.
- Если я скажу, что работаю один, — не отговаривай и не предлагай «пригласить команду».
  Просто убери роли, права и согласования внутри, всё остальное оставь как есть.

Что нужно выяснить:
1. Чем я (или моя команда) занимаюсь и что должно перестать происходить — одной фразой.
2. Кто пользуется каждый день, поимённо, и кто что видит.
3. Что у нас считается задачей, а что нет.
4. Откуда задачи приходят: встречи, чаты, заявки, регламент, поручения.
5. Из каких этапов состоит работа — это будущие колонки.
6. Кого мы ждём снаружи и на каком этапе: клиент, поставщик, подрядчик, госорган.
7. Что нужно знать о задаче кроме срока и исполнителя: точка, клиент, сумма, объект.
8. Что я готов запретить — не подсветить, а именно запретить.
9. Как у нас считается «вовремя».
10. Три вопроса, на которые обязан отвечать экран статистики.
11. Что мы точно НЕ делаем в этой системе.

Когда закончишь — покажи короткое ТЗ на десять строк: чем занимаемся · боль одной фразой ·
люди и права · что считается задачей · колонки с типами · поля карточки · запреты ·
правило «вовремя» · три вопроса статистики · чего не делаем. Если по какому-то пункту
я ответил размыто — не пиши «уточнить позже», а предложи конкретный вариант и спроси,
годится ли он. Если работаешь с моими файлами — сохрани ТЗ рядом отдельным файлом.

Покажи ТЗ и спроси одной строкой: «Собираю?» Дождись ответа. Код до этого не пиши.

═══════════════════════════════════════
ЭТАП 2. СБОРКА. Один файл, который открывается двойным кликом
═══════════════════════════════════════

Собери доску по этому ТЗ — один самодостаточный HTML-файл: без сборки, без внешних
библиотек, без обращений в сеть. Данные храни в localStorage браузера.

Ниже — то, что должно быть в любой такой доске, даже если в ТЗ об этом не сказано.
Это не пожелания, а то, на чём такие доски обычно ломаются.

## Главное правило

Доска нужна не чтобы видеть задачи — их и так видно. Она нужна, чтобы у каждой задачи
был хозяин и срок, а у просрочки — фамилия. Если какая-то твоя идея этому не служит —
не добавляй её.

## Колонки

Колонка задаётся ТИПОМ, а не цветом: `backlog` (идеи и заявки, срок не обязателен,
в просрочку не попадают), `work` (наша работа), `approval` (ждём решения снаружи),
`done` (закрыто). Тип храни в данных, а не в названии: название поменяют завтра, тип — нет.
Из типа считается просрочка, загрузка и вся статистика.

## Правила, которые нельзя обойти

1. В колонках `work` и `approval` задача НЕ СОХРАНЯЕТСЯ без срока и исполнителя.
   Это запрет, а не подсказка. В `backlog` — можно без всего.
2. Просрочка считается по дате ЗАКРЫТИЯ, а не по дате последней правки. Иначе задача,
   которую сегодня переименовали, станет просроченной задним числом.
3. Задача в `approval` не считается просрочкой исполнителя — он свою часть сделал.
   Показывай отдельной строкой: «ждёт N дней».
4. Если задача проходит через проверку или согласование, «вовремя» считается по дате,
   когда исполнитель СДАЛ её на проверку, а не когда её наконец закрыли. Задержка
   проверяющего — отдельная строка «висит на проверке N дней», и она на проверяющем.
   Иначе люди получают красное за чужую занятость и перестают верить цифрам.
4. Запрет нельзя обойти перетаскиванием — это первый способ, которым его обходят.

Любой отказ формулируй по-человечески: «Нельзя закрыть, минуя утверждение клиента»,
а не «ошибка валидации поля».

## Что должно работать

- Перетаскивание карточек. Если перенос запрещён правилом — карточка возвращается
  на место и появляется объяснение.
- Перенос НЕ ТОЛЬКО перетаскиванием: на самой карточке кнопка «перенести в…».
  Проверено на живой сборке — без неё доска бесполезна с телефона и с трекпада,
  а именно с телефона её открывают чаще всего.
- Таймер прямо на карточке: старт/стоп, время идёт в факт. Таймер, идущий дольше
  4 часов или заведённый в предыдущий день, помечается забытым и НЕ считается работой.
- Фильтры: по исполнителю, по просрочке, по метке, по моим дополнительным полям.
  Поиск по заголовку и описанию.
- История изменений у карточки: кто, что, когда, старое значение и новое.
- Отмена последнего действия (Ctrl+Z) для перемещения, создания, удаления и архива.
- Корзина: удалённое не пропадает, его можно вернуть.
- Счётчик переносов срока: задача, у которой срок двигали три раза и больше, выглядит иначе.

## Экран статистики

Отвечает на три вопроса из ТЗ. Плюс базовое: закрыто вовремя и с опозданием (в штуках
и процентах); среднее опоздание в днях; загрузка по ФАКТИЧЕСКИ отработанным часам из
таймера, а не по сумме оценок; сколько задач закрыто без срока (их «вовремя» неизмеримо —
так и напиши); сколько создано и закрыто в один день (признак, что работа идёт мимо доски).

Каждая цифра кликается и открывает свой список. Цифра, в которую нельзя провалиться,
не вызывает доверия. Если данных нет — пиши «пусто» и подсказывай первое действие,
а не рисуй шеренгу нулей.

## Как это выглядит

Спокойно и плотно, как рабочий инструмент, а не как лендинг. Тёмная и светлая темы — обе
проработанные, переключатель плюс уважение к системной настройке. Просрочка — единственное
красное пятно на экране. Приглушённый текст проходит контраст 4.5:1 в обеих темах.
Клавиатура: `N` — новая задача, `/` — поиск, `Esc` — закрыть окно, Tab не уводит фокус
из открытого окна.

## Демо-данные

15–20 задач по моим людям и моим колонкам: большая часть закрыта, несколько в работе,
ровно одна просроченная, одна ждёт снаружи неделю, на одной идёт таймер, на одной таймер
забыт со вчера. Систему должно быть видно, а паники быть не должно.

## Чего делать НЕ надо

Не добавляй регистрацию и облачную синхронизацию. Не рисуй графики ради графиков.
Не делай анимаций длиннее 300 мс. Не пиши «задача успешно создана» — просто создай её.

Сделай сразу целиком, одним файлом. Если требования противоречат друг другу — выбери
то, что лучше служит правилу «у каждой задачи хозяин и срок», и напиши одной строкой,
что выбрал и почему.

═══════════════════════════════════════
ЭТАП 3. ПРОВЕРКА И ИНСТРУКЦИЯ. Не отдавай непроверенное
═══════════════════════════════════════

Пройди по списку сам и по каждому пункту ответь одной строкой: работает или нет —
и покажи, в каком месте кода это сделано. Не пиши «должно работать»: если не уверен,
так и напиши.

1. Создать задачу в рабочей колонке без срока и без исполнителя — не должна сохраниться, и должно быть понятно, чего не хватает.
2. Перетащить задачу из работы сразу в «Готово» мимо согласования — должна вернуться и объяснить человеческой фразой.
3. Задача с вчерашним сроком, закрытая сегодня, попадает в «с опозданием».
4. Переименовать давно закрытую вовремя задачу — она НЕ должна стать просроченной.
5. Задача в колонке ожидания не висит просрочкой на исполнителе.
6. Таймер, запущенный вчера, помечен забытым и не попал в отработанные часы.
7. Удалённая задача возвращается из корзины; Ctrl+Z отменяет последнее действие.
8. Любая цифра в статистике открывает список именно этих задач.
9. Карточку можно перенести в другую колонку без перетаскивания — кнопкой на самой карточке. Проверьте на телефоне или в узком окне.

Что не работает — почини сразу, не переписывая файл целиком.

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

В самом конце — одной строкой: что из ТЗ ты не сделал и почему.

Проверено на живом прогоне. Мы прогнали этот промт в чистой сессии от лица владельца сети кофеен: одиннадцать вопросов по одному, шесть раз поспорил по делу, собрал файл — и все девять проверок из третьего этапа прошли руками, а не только в его отчёте.

Почему это не задача про ИИ

Инструмент не решает, что считать задачей. Он не решает, чья просрочка, когда клиент молчит неделю, и должен ли менеджер заводить карточку на звонок. Это управленческие договорённости — ИИ примет их как данность и соберёт ровно то, что вы описали. Час, потраченный на разговор о своём деле, экономит неделю переделок.

  • Признак, что пора: вопрос «а что там с…» вы задаёте чаще раза в день, и ответ каждый раз приходится искать в переписке.
  • Признак, что рано: вы строите систему для людей, которые пока не согласились ею пользоваться. Сначала договорённость, потом файл.
  • Чего система не чинит: нежелание делать работу. Она делает видимым, кто и что не сделал, — а это разговор, который всё равно ведёт человек.

Откуда это. Всё, что дальше, — не теория. Так устроена операционка нашего агентства: доска задач, агент-операционный директор в телеграме и дашборд по клиентам. Собиралась она в Claude Code, папкой с файлами, а не перепиской. Сроки в шагах — сколько это заняло у нас. Грабли — настоящие, все до одной случились.

Если вы работаете один

Половина тех, кому это нужно, работает в одиночку: фриланс, консультирование, своё небольшое дело. Ядро остаётся тем же — хозяин, срок, ожидание снаружи, дата закрытия. Уходит только то, что существует ради нескольких людей. Скажите об этом в первом же ответе на интервью, и промт соберёт систему без ролей и согласований.

Оставить обязательно

  • Срок и хозяинХозяин — вы, и всё равно поле обязательное: оно заставляет решить, делаете вы это сами или делегируете. Срок обязателен всегда — без него нет просрочки, а значит нет и системы.
  • Колонка ожиданияВы ждёте снаружи не меньше, чем команда: клиент, подрядчик, банк, налоговая, поставщик. Это не ваша просрочка, и видеть их отдельно — половина пользы.
  • Просрочка от даты закрытияТот же расчёт, что и у команды. Иначе вчерашняя правка заголовка сделает старую задачу просроченной задним числом.
  • Повторяющиеся задачиУ одного человека это главная утечка: отчёты, оплаты, продления, налоги. Пока это помнит голова — это не система, а тревожность.
  • ТаймерБез часов вы не узнаете, сколько стоит ваш час и какой клиент съедает неделю за деньги двух дней. Для соло это часто важнее самой доски.

Смело убрать

  • Роли и праваВы один — делить нечего. Вход по паролю нужен только когда доска уедет в интернет.
  • Статистика по людямСреднее опоздание по сотрудникам превращается в одну строку про вас. Оставьте «сколько закрыто вовремя» и «где копится».
  • Согласование внутриКолонка утверждения нужна только под внешнее ожидание, не под себя.
  • Эскалация «выше»Некому. Вместо неё — жёсткое правило: три переноса срока подряд означают, что задача сформулирована неправильно, и её надо переписать, а не двигать.

Сроки для соло короче: вечер на доску, ещё вечер на бота, который пишет вам самим. База и выкладка нужны не сразу — пока вы работаете с одного компьютера, файл в браузере честно справляется. Они понадобятся в тот день, когда захочется открыть доску с телефона.

Что зашито в промт и почему

Девять решений промт принимает за вас — не потому что так красивее, а потому что каждое из них мы сначала сделали неправильно. Если будете менять промт под себя, меняйте что угодно, кроме этого: на этом держатся все цифры.

1

Типы колонок

У колонки есть тип — бэклог, работа, ожидание снаружи, закрыто, — и он хранится в данных, а не в названии.

Название колонки поменяют завтра, тип — нет. Из типа считается всё остальное: что считать просрочкой, чью загрузку мерить, что показывать в статистике. Это единственное решение, которое нельзя отложить.

2

Запрет, а не напоминание

В рабочих колонках задача не сохраняется без срока и исполнителя. В бэклоге — можно без всего.

Мягкий вариант — подсветить красным и разрешить сохранить — проверен: поле остаётся пустым у половины задач. Запрет работает с первого дня и не требует ни дисциплины, ни разговоров.

3

Просрочка от даты закрытия

Сравниваем срок с датой закрытия, а не с датой последней правки строки.

У нас так набежало 168 «просрочек», настоящих оказалось 60: любая правка заголовка делала старую задачу просроченной задним числом. Это самая частая ошибка в таких досках, и её почти никто не замечает.

4

Ожидание снаружи — не ваша просрочка

Задача в колонке ожидания не висит долгом на исполнителе; вместо этого пишем «ждёт 9 дней».

68% всех наших «просрочек» оказались ожиданием клиента или продюсера. Люди годами получали чужие долги и перестали верить цифрам вообще, включая настоящие. Это уже разговор с клиентом, а не с сотрудником.

5

Забытый таймер не считается работой

Таймер, идущий дольше рабочего дня или заведённый вчера, помечается забытым — и не останавливается сам.

Автоматическая остановка врёт в обе стороны: либо запишет часы, которых не было, либо сотрёт настоящие. Пусть человек решит сам, а система не делает вид, что знает.

6

Статус вычисляется, а не ставится

«Сейчас работает над…» берётся из запущенного таймера и записанных часов, руками его поставить нельзя.

Ручной статус протухает в тот же день, когда человек забыл нажать. У нас такой жил полтора месяца, и его читали агенты, уверенно отвечая неправду. Нажать нельзя забыть, если нажимать не надо.

7

Каждая цифра проваливается в список

Любое число в статистике кликается и открывает именно те задачи, из которых оно сложилось.

По цифре, в которую нельзя провалиться, решения не принимают — ей просто не верят. Заодно это единственный способ поймать, что цифра посчитана неправильно.

8

«Вовремя» — по дате сдачи, а не закрытия

Если задача идёт через проверку, срок сравнивается с моментом, когда исполнитель сдал её, а не когда руководитель наконец нажал «Готово». Задержка проверяющего висит отдельной строкой на нём.

Иначе человек получает красное за чужую занятость. Это всплыло на живом прогоне промта: сдал десятого в срок, посмотрели четырнадцатого — и по наивному расчёту виноват исполнитель. Месяц такой статистики, и цифрам перестают верить все.

9

Пусто выглядит как пусто

Нет данных — так и написано, плюс подсказка первого действия. Никаких нулей вместо цифр.

«Постов 0 · Охват 0 · Просмотры 0» над надписью «пока пусто» — четыре числа, которые ничего не сообщают, но выглядят как отчёт.

Шесть мест, где утекают задачи

Шесть дыр, через которые задачи уходят и из команды, и у одного человека. Почти наверняка у вас работают две-три. Начинать надо с той, из которой льётся сильнее.

Договорились на встрече — не стало задачей

Созвон закончился, все кивнули, никто не записал.

Договорённость, не ставшая задачей в тот же день, не выполняется почти никогда. Самая большая дыра из всех: её не видно нигде, потому что задачи не существовало.

Чем закрывается: Правило «встреча не закончена, пока поручения не заведены». Дальше — расшифровка звонка и кнопка «завести задачу» напротив каждой договорённости.

Просьба в рабочем чате — утонула

«Поправьте, пожалуйста, цену на баннере» между двумя мемами.

Клиент считает, что попросил. Вы считаете, что не просили. Оба правы и оба недовольны.

Чем закрывается: Просьба из чата живёт до конца дня: либо стала задачей, либо на неё ответили отказом. Позже — система сама находит такие просьбы и приносит их с цитатой.

Задача есть, хозяина нет

Исполнитель — «команда», «отдел», «мы». У соло — «когда-нибудь».

У задачи без фамилии и даты нет ни срока, ни разговора. Она просто существует.

Чем закрывается: Запрет на сохранение без исполнителя и срока. Не напоминание — запрет. У нас таких задач ноль, потому что их физически нельзя создать.

Ждём снаружи — числится нашей просрочкой

Человек сделал свою часть неделю назад, а в отчёте у него красное.

У нас 68% всех «просрочек» оказались ожиданием клиента или продюсера. Люди годами получали чужие долги — и перестали верить цифрам вообще, включая настоящие.

Чем закрывается: Отдельный тип колонки. Такая задача не просрочка исполнителя, а строка «ждёт клиента 9 дней» — и это разговор с клиентом, а не с сотрудником.

Сделано, но не отмечено

Работа сделана вчера, карточка висит в работе.

Цифры врут вниз, руководитель дёргает по сделанному, доверие падает с двух сторон.

Чем закрывается: Агент вечером спрашивает, и первая кнопка — «уже сделал». Нажатие двигает карточку, заходить в систему не нужно.

Повторяющееся живёт в голове

Отчёт первого числа, аренда, продление домена, проверка чек-листа на точках.

Пока это помнит один человек, это не процесс, а зависимость от человека. У соло — единственный источник по-настоящему дорогих провалов.

Чем закрывается: Повторяющиеся задачи создаются сами по расписанию, с исполнителем и сроком. Не напоминание в календаре, а задача, попадающая в общую просрочку.

Шесть конфигураций под разный бизнес

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

Один человек: фриланс, консультант, ИПтоже нормально

Колонки
Идеи (backlog) · Сегодня (work) · Ждём клиента / подрядчика (approval) · Сделано (done)
Свои поля
клиент, счёт, «работа или своё»
Главный запрет
Задача не сохраняется без срока. Три переноса подряд — задачу переписать, а не двигать.
Главная цифра
Сколько часов ушло на каждого клиента и что висит на чужой стороне.

Агентство, студия, продакшннаш случай

Колонки
Идея (backlog) · Задачи недели (work) · Сегодня (work) · У клиента (approval) · Готово (done)
Свои поля
клиент, площадка, ссылка на макет
Главный запрет
Нельзя закрыть, минуя «У клиента»: утверждение — часть работы, а не формальность.
Главная цифра
Успеваем ли по обещаниям каждому клиенту и сколько часов съел каждый проект.

Сеть точек: кофейни, магазины, салонычастый случай

Колонки
Идеи (backlog) · Сегодня по точкам (work) · Ждём поставщика (approval) · Сделано (done)
Свои поля
точка, смена, фото-подтверждение
Главный запрет
Нельзя закрыть задачу по точке без фото или отметки управляющего.
Главная цифра
Какие точки раз за разом не выполняют чек-лист и что зависло на поставщике.

Стройка, ремонт, монтаж, производство

Колонки
Смета (backlog) · В работе (work) · Ждём материал / подрядчика (approval) · Принято (done)
Свои поля
объект, этап, подрядчик, сумма
Главный запрет
Нельзя перевести в «Принято» без отметки приёмки — иначе спор через месяц не разрешить.
Главная цифра
Где стоим из-за материалов, а где из-за людей: это разные болезни с разным лечением.

Услуги с записью: клиника, сервис, салон

Колонки
Заявки (backlog) · Записан (work) · Ждём клиента (approval) · Закрыто (done)
Свои поля
клиент, канал заявки, обещанное время ответа
Главный запрет
Заявка не может лежать без ответственного дольше обещанного времени ответа.
Главная цифра
Сколько заявок ответили в срок и на каком шаге теряем людей.

Отдел продаж

Колонки
Новые (backlog) · В работе (work) · Ждём решения клиента (approval) · Закрыто (done)
Свои поля
клиент, сумма, следующий шаг
Главный запрет
Сделка не сохраняется без следующего шага с датой. Сделка без следующего шага — потерянная.
Главная цифра
Сколько сделок без следующего шага и у кого они копятся.

Сборка по шагам: от доски до дашборда

Первый шаг даёт работающую доску целиком — он выше. Остальные восемь добавляются потом и по одному: база, адрес в интернете, часы, агент, дашборд. Порядок важен: собранный не в том порядке задачник считает красивые цифры ни из чего.

1

Проверить руками1 час

Он уже проверил себя сам — и всё равно проверьте. ИИ ошибается тихо и уверенно: все наши грабли были именно такими, ничего не падало и всё выглядело рабочим.

  • Пройдите девять проверок ниже на своём экране, а не в его ответе.
  • Расхождение между его отчётом и вашей проверкой — самое ценное, что вы сегодня увидите. Разберитесь в нём до того, как строить дальше.
  • Не принимайте «должно работать» и «я исправил» — спрашивайте, в каком месте это сделано.
  1. Создать задачу в рабочей колонке без срока и без исполнителя — не должна сохраниться, и должно быть понятно, чего не хватает.
  2. Перетащить задачу из работы сразу в «Готово» мимо согласования — должна вернуться и объяснить человеческой фразой.
  3. Задача с вчерашним сроком, закрытая сегодня, попадает в «с опозданием».
  4. Переименовать давно закрытую вовремя задачу — она НЕ должна стать просроченной.
  5. Задача в колонке ожидания не висит просрочкой на исполнителе.
  6. Таймер, запущенный вчера, помечен забытым и не попал в отработанные часы.
  7. Удалённая задача возвращается из корзины; Ctrl+Z отменяет последнее действие.
  8. Любая цифра в статистике открывает список именно этих задач.
  9. Карточку можно перенести в другую колонку без перетаскивания — кнопкой на самой карточке. Проверьте на телефоне или в узком окне.
Готово, если
  • Все девять проверок проходят у вас на экране.
  • Вы знаете, что из ТЗ он не сделал.
Не делайте так

Уверенный тон ничего не значит. Из семи наших граблей шесть выглядели как работающая система.

2

Правки словамипо ходу дела

Здесь теряют больше всего времени. «Переделай, что-то не то» стоит вам целого нового файла, в котором сломано другое.

  • Одна правка за раз, с оговоркой «остальное не трогай».
  • Цитируйте дословно то, что видите на экране, вместо «не работает».
  • После каждой правки — номер версии на экране. Иначе не понять, ту ли версию вы смотрите.
  • Коммит после каждой рабочей версии. Сломалось — «верни как было в прошлом коммите», и это работает всегда.
  • Если после трёх попыток не чинится — начните новый разговор. В папке уже лежат и ТЗ, и файл, пересказывать ничего не надо; длинная переписка тащит за собой все прошлые ошибки.
Промт 2 · две рабочие формулы
Сломалось вот что: [дословно то, что вижу на экране].
Найди причину и почини только её — остальное не трогай. Сначала скажи, в чём была
причина, одной фразой, потом дай исправленный кусок.

— — —

Добавь одно: [что именно]. Больше ничего не меняй.
Подними номер версии в углу экрана и в трёх строках скажи, что изменилось.
Готово, если
  • Вы правите по одной вещи и всегда знаете, что именно изменилось.
3

Обкатка на своих задачах2–3 дня

Доска проверяется не демо-данными, а прошлой неделей. Именно здесь выясняется, что не хватает колонки или что запрет обходят.

  • Разложите руками задачи прошлой недели. Не ложится — не хватает колонки или типа.
  • Проверьте, что «ждём снаружи» отделено от «делаем мы». Смешивать дорого: у нас 68% просрочек оказались чужими.
  • Попробуйте обойти свой запрет. Через перетаскивание, через редактирование, через закрытие карточки на полпути.
  • Внесите правки в ТЗ, а не только в файл: дальше из него будет собираться база.
Готово, если
  • Система отвечает на вопрос «чья это просрочка» без участия человека.
  • Обойти запрет не получилось.
Не делайте так

Соблазн сделать запрет «мягким»: подсветить красным и оставить возможность сохранить. Проверено — так поле остаётся пустым у половины задач.

4

База и права2–3 дня

Пока данные в браузере, они живут на одном компьютере: с телефона не открыть, у второго человека своя копия. Переносим — теперь, когда понятно, что храним.

  • Заведите проект в Supabase: это Postgres плюс готовый вход по почте, свой сервер не нужен.
  • ВКЛЮЧИТЕ RLS на каждой таблице. Без этого любой, у кого есть публичный ключ, читает всю базу. Это не настройка «на потом», а единственная защита.
  • Два ключа: публичный живёт в html-файле — так и задумано, он бесполезен без политик. Секретный (service_role) не попадает во фронт никогда: он ходит мимо всех политик.
  • Схему держите миграциями — файлами в репозитории. Иначе через полгода никто не поднимет такую же базу.
  • Соло это тоже касается, но проще: политика «вижу только своё» — одна строка.
Промт 3 · база, права, миграции
Помоги перенести эту доску из localStorage в базу Supabase. Работай пошагово
и жди меня: после каждого куска говори, что именно вставить и куда, и дожидайся «готово».

Сначала спроси: заведён ли у меня проект, как называются мои поля из ТЗ и кто должен
видеть чужие задачи.

Потом дай по одному куску за раз:

1. SQL-миграцию: таблицы под мои поля; ВКЛЮЧЁННЫЙ RLS на каждой таблице; политики —
   кто читает, кто меняет, кто удаляет; мягкое удаление в корзину триггером; таблицу
   журнала изменений (кто, что, когда, старое и новое значение).
2. Правила из ТЗ (нет срока — нет задачи, нельзя мимо согласования) продублируй
   в базе, а не только в интерфейсе: проверка в браузере обходится любым внешним запросом.
3. То, что мне делать из браузера нельзя, но нужно, — оформи функцией в базе
   (security definer) и явно раздай право на её вызов, отозвав у всех остальных.
4. Изменения в html: вход по почте, чтение и запись через публичный ключ.
5. Отдельно объясни, как проверить, что RLS действительно работает: покажи запрос,
   который должен вернуть пустоту у человека без доступа.

Важно: секретный ключ (service_role) в браузер не попадает никогда, и присылать его
в чат мне не предлагай. Работаем только с публичным ключом.
Готово, если
  • Человек без доступа не видит данных, даже если знает адрес запроса.
  • Удалённую задачу можно вернуть.
  • Базу можно развернуть заново из файлов репозитория.
Не делайте так

Правила из шага 4 продублируйте в базе. Проверка только в интерфейсе обходится вкладкой, ссылкой и любым внешним запросом. Интерфейс — удобство, а не защита.

5

Выкладка: адрес вместо файлаполдня

Пока система — файл на чьём-то ноутбуке, ей не пользуются: у одного старая версия, у другого не открывается, с телефона никак.

  • Репозиторий на GitHub. Заодно появится история: что менялось и когда.
  • Подключите его к Vercel — дальше каждый push сам становится выкладкой, сборка не нужна.
  • Свой домен; сертификат выпустится сам.
  • Ветку можно выложить отдельным адресом и показать клиенту, не трогая рабочую версию.
  • Запомните раздел: фронт выкладывается через push, а миграции базы и серверные функции — отдельно. Они не едут вместе. Мне это стоило восьми правок, лежавших в репозитории, пока я говорил «выкачено».
Промт 4 · GitHub и Vercel
Проведи меня по выкладке — по одному шагу за раз, дожидаясь моего «готово»
после каждого:

1. Репозиторий на GitHub: что в него класть и, главное, чего класть нельзя.
   Объясни, почему удалить файл с ключом уже не поможет.
2. Импорт репозитория в Vercel, чтобы каждый push в основную ветку сам становился
   выкладкой. Сборка мне не нужна — это статика.
3. Свой домен и сертификат.
4. Номер версии на экране, который меняется при каждой выкладке — иначе я никогда
   не буду знать, ту ли версию видит человек, у которого «не работает».
5. Отдельно: что из моей системы НЕ выкладывается вместе с фронтом (миграции базы
   и серверные функции) и какой командой это выкладывать.
Готово, если
  • Система открывается по адресу с телефона.
  • Номер версии виден на экране и меняется после выкладки.
Не делайте так

Не кладите секретные ключи в html и в репозиторий. Всё, что уехало в git, считайте опубликованным навсегда: удаление файла не убирает его из истории.

6

Учёт времени1–2 дня

Единственное, что человек обязан нажимать. Всё остальное система должна вычислять сама. Без часов не посчитать ни загрузку, ни маржу, ни цену своего часа.

  • Таймер прямо на карточке, в двух сантиметрах от работы. Отдельная система учёта времени не заполняется никогда.
  • План и факт по задаче — чтобы видеть, что оценивали вдвое оптимистичнее.
  • Забытый таймер помечайте, но не останавливайте автоматически.
  • Статус человека вычисляйте из фактов, а не из кнопки «я работаю».
Промт 5 · таймер и часы
Добавь учёт времени: таймер прямо на карточке, план и факт по задаче,
недельный итог часов по проектам. Забытый таймер (идёт дольше рабочего дня или заведён
в предыдущий день) помечай и НЕ считай работой — но и не останавливай сам: я либо запишу
человеку часы, которых он не работал, либо сотру те, что работал. Статус «сейчас работает
над…» вычисляй из запущенного таймера и записанных часов, руками его ставить нельзя.
Готово, если
  • Видно, сколько часов ушло на каждый проект за неделю.
  • Никто не ставит свой статус руками.
Не делайте так

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

7

Агент, который додавливает3–5 дней

Доска показывает просрочку, но смотреть на неё никто не обязан. Агент замечает и пишет — сам, вовремя, конкретному человеку. Ради этого всё остальное и собиралось.

  • Бот в мессенджере, где вы УЖЕ сидите. Новый канал не заводите: туда не придут.
  • Логика — в серверной функции (в Supabase это Edge Functions). Токен и ключи в секретах проекта, не в коде.
  • Расписание — планировщиком на стороне базы.
  • Первой кнопкой — «уже сделал». Нажатие двигает карточку.
  • Защита от повторов: одно событие — одно сообщение. Мы получали брони дважды, пока не завели отметку об отправке.
  • Соло-версия: тот же бот пишет вам самим. Утром список, вечером «что не сделал». Работает лучше, чем кажется.
Промт 6 · агент в телеграме
Сделаем агента, который сам пишет людям в телеграм. Спроси сначала, что у меня
уже есть — бот, база, кто получатели, — и дальше веди по шагам, дожидаясь моего «готово»
после каждого. Объясняй как человеку, который телеграм-ботов раньше не делал.

1. Бот у @BotFather: продиктуй, какие команды вводить, и скажи, куда положить токен,
   чтобы он не попал в репозиторий. Токен в чат присылать не проси.
2. Приём сообщений: серверная функция плюс вебхук, с секретным словом, которое функция
   проверяет в каждом запросе. Объясни, зачем эта проверка нужна.
3. ПРИВЯЗКА ЛЮДЕЙ — не пропусти этот шаг. Бот не может написать первым: пока человек
   сам не нажал «Старт», для телеграма его не существует. Сделай так, чтобы человек
   отправил боту /start со своим кодом, а функция связала его chat_id с сотрудником
   в базе. Покажи, как выдать коды и как проверить, у кого привязка не сделана.
4. Рассылка: утром — задачи со сроком сегодня, вечером — что осталось. Каждому только
   его задачи. Часовой пояс задай явно и дай сначала проверить на одном человеке.
5. Кнопки под сообщением: «уже сделал» первой, «перенести на завтра» с записью переноса,
   «это не моя» с возвратом постановщику. Нажатие ДВИГАЕТ карточку в базе. Если после
   ответа всё равно надо зайти в систему — ботом перестанут пользоваться на второй неделе.
   При нажатии проверяй, в каком состоянии задача СЕЙЧАС: вчерашнюю кнопку нажмут
   послезавтра.
6. Новая задача из сообщения боту: человек пишет текст — бот спрашивает исполнителя
   и срок и заводит карточку.
7. Защита от повторов: отпечаток события и отметка об отправке, проверка ДО отправки.
8. Обработка отказов: если человек заблокировал бота, рассылка не должна вставать —
   отмечай это в системе и иди дальше по списку.
9. Эскалация: молчание после трёх напоминаний — сообщение руководителю.
10. ГОЛОСОВЫЕ СООБЩЕНИЯ. Человек за стойкой или за рулём не печатает — он скажет.
    Принимай голосовое: скачай файл по file_id, распознай речь, дальше работай с текстом
    так же, как с набранным. Обязательно: перед тем как завести задачу, покажи, что
    расслышал, и спроси подтверждение кнопкой — распознавание ошибается именно на именах,
    точках и числах. В разбор передавай список моих людей и колонок, чтобы модель выбирала
    из них, а не угадывала написание. Длинное голосовое считай планёркой: собери из него
    СПИСОК задач с галочками, что заводим. Саму запись после распознавания удаляй.
Готово, если
  • Задачу можно закрыть, не открывая систему.
  • Одно событие даёт ровно одно сообщение.
Не делайте так

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

8

Дашборд — последним2–3 дня

Считается из накопленного. Раньше трёх-четырёх недель реальной работы строить нечего.

  • Возьмите три вопроса из ТЗ. Только их.
  • Каждая цифра открывает свой список: по цифре, в которую нельзя провалиться, решения не принимают.
  • Рядом с выводом — охват данных. Дашборд, молча считающий по неполным данным, опаснее его отсутствия.
  • Складывайте в базе, а не в браузере.
Промт 7 · дашборд
Сделай экран статистики. Три вопроса, на которые он обязан отвечать, — из ТЗ.

Требования: каждая цифра кликается и открывает список именно этих задач; рядом с каждой
цифрой видно, по какой доле данных она посчитана («часы проставлены на 71%»); все суммы
считаются в базе, а не в браузере — интерфейс базы отдаёт ограниченное число строк,
и молча сложить видимую часть нельзя; если тянешь строки — всегда задавай сортировку;
ни одного графика без числа рядом; пустой экран показывает «пусто» и первое действие,
а не шеренгу нулей.
Готово, если
  • На вопрос «почему такая цифра» можно ответить, ткнув в неё.
  • Видно, по какой доле данных посчитана каждая цифра.
Не делайте так

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

Телеграм-бот и голосовые команды

Доска показывает просрочку, но смотреть на неё никто не обязан — бот приходит сам. Технически он делается за вечер, и почти весь затык не в коде, а в одном шаге: бот не может написать человеку первым, пока тот сам не нажал «Старт».

Пять шагов подключения

1

Завести бота

В телеграме напишите @BotFather, команда /newbot, придумайте имя и адрес. В ответ придёт токен — длинная строка через двоеточие.

Токен — это пароль от бота: у кого он есть, тот пишет от вашего имени. В код и в репозиторий его не кладут никогда.

2

Спрятать токен

Положите токен в секреты проекта (в Supabase — секреты Edge Functions). Код читает его оттуда по имени.

Всё, что уехало в git, считайте опубликованным навсегда: удалить файл потом мало, он остаётся в истории.

3

Дать боту адрес

Серверная функция получает сообщения по вебхуку: вы один раз говорите телеграму, на какой адрес слать. При этом задаётся секретное слово, и функция проверяет его в каждом запросе.

Без проверки любой, кто узнает адрес функции, сможет прислать ей поддельное «нажатие кнопки» от имени вашего сотрудника.

4

Привязать людей

Человек открывает бота и отправляет /start со своим кодом (или просто /start, если вы дали каждому свою ссылку). Функция запоминает его chat_id и связывает с сотрудником в базе.

Это тот шаг, который забывают. Бот не может написать первым: пока человек сам не нажал «Старт», для телеграма его не существует — и никакие напоминания не уйдут.

5

Включить расписание

Планировщик на стороне базы будит функцию утром и вечером. Часовой пояс задайте явно и проверьте на одном человеке, прежде чем включать всем.

Первая же рассылка в шесть утра стоит вам доверия команды сильнее, чем любая ошибка в цифрах.

Что он умеет

  • Утренний список — Каждому — только его задачи со сроком сегодня. Не общий список на всех: чужие задачи в своём сообщении люди перестают читать на третий день.
  • Вечерний вопрос — «Что из этого осталось?» — и кнопки. Это единственный момент, когда карточки двигаются без захода в систему.
  • Кнопка «уже сделал» — Первая по счёту. Чаще всего работа сделана, а карточка не двинута — и цифры врут вниз, а руководитель дёргает по сделанному.
  • Кнопка «перенести на завтра» — С записью переноса. Три переноса подряд — задача сформулирована неправильно, и это видно в системе, а не только в ощущениях.
  • Кнопка «это не моя» — Возвращает задачу постановщику вместо молчания. Молчание все читают как согласие, а это чаще всего несогласие.
  • Новая задача прямо из чата — Человек пишет боту текст — бот спрашивает исполнителя и срок и заводит карточку. Так закрывается утечка «сказал в чате, никто не записал».
  • Эскалация — Молчание после трёх напоминаний — сообщение руководителю. Напоминание без последствий перестают читать через неделю.

Голосом, а не текстом

Текстом задачу заводят те, кто сидит за компьютером; голосом — все остальные, а это как раз те люди, чьи задачи теряются чаще всего.

Зачем вообще голос

Человек за стойкой, за рулём или на объекте не печатает. Он скажет — и не заведёт, потому что «потом с компьютера». Потом не бывает.

Самая большая утечка любой системы — ввод. Голосовое сообщение снимает её целиком: сказал сразу после планёрки — задачи уже в доске.

Как это устроено

Телеграм присылает голосовое обычным файлом. Функция скачивает его по file_id, отправляет в распознавание речи, получает текст — и дальше работает с ним точно так же, как с набранным вручную.

Отдельной «голосовой логики» не появляется: распознавание — это просто ещё один способ получить тот же текст, который человек мог бы напечатать.

Всегда показывать, что расслышал

Прежде чем заводить задачу — сообщение с кнопками: «Завожу: “заказать стаканы 300 мл” на Аслана, срок пятница. Верно?»

Распознавание ошибается ровно на том, что здесь важнее всего — на именах, названиях точек и числах. Молча заведённая задача с чужим исполнителем хуже, чем не заведённая.

Подсказывать список своих

В разбор передавайте список людей, точек и колонок: модель должна ВЫБИРАТЬ из них, а не угадывать написание.

Иначе «на Аслана» станет «Асланом» в тексте задачи, а исполнитель останется пустым — и запрет из шага 3 не даст такую задачу сохранить.

Длинное голосовое — это планёрка

Две минуты речи — не одна задача. Из такого сообщения бот должен собрать СПИСОК задач и показать его галочками: что заводим, а что нет.

Именно так закрывается «договорились на встрече — не стало задачей»: наговорили итоги планёрки, отметили галочками, всё разошлось по людям и точкам.

Что делать с самой записью

Проще не хранить: распознали, показали текст, аудио удалили. Если храните — скажите людям об этом прямо.

Голос сотрудника — это данные о человеке, а не просто файл. Тихо копить их у себя на сервере не стоит ни в одной стране.

Грабли именно бота

Одно событие — два сообщения

Как надо: Заведите отпечаток события и отметку об отправке, проверяйте её ДО отправки. У нас брони уезжали дважды именно поэтому.

Кнопки живут вечно

Как надо: Человек нажмёт вчерашнюю кнопку послезавтра. При нажатии проверяйте, в каком состоянии задача сейчас, а не в каком была при отправке.

Бот в группе слышит не всё

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

Человек заблокировал бота

Как надо: Телеграм ответит ошибкой, и рассылка может встать на этом месте. Обрабатывайте отказ по каждому получателю отдельно и показывайте в системе, у кого бот отключён.

Токен утёк

Как надо: Отзывается у @BotFather одной командой — токен меняется, старый перестаёт работать. Сделайте это сразу, как только он попал в переписку или в код.

Внедрение: где умирает большинство систем

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

Объявите как снятие лишнего, а не как контроль

«Чтобы вам не прилетало в десять вечера “а где?”» — правда и работает. «Чтобы я видел, кто чем занят» — тоже правда, но после неё заводить задачи перестают, а работают мимо доски.

Перенесите только живое

Не тащите архив. Задачи текущей недели и то, что горит. Перенос трёх лет истории — верный способ утопить старт в бессмысленной работе.

Первые две недели ведёте вы

Не «команда сама разберётся». Кто-то один каждый день смотрит, что не завели, и заводит. Через две недели это привычка, до этого — нет. Если вы один, роль та же: две недели вы заводите задачу на всё, даже на мелочь.

Первый месяц не наказывайте по цифрам

Иначе люди научатся не заводить задачи, а не делать их вовремя. Цифры первого месяца — про качество данных, а не про людей.

Руководитель ставит задачи только через систему

Если владелец продолжает раздавать поручения голосом и в личку, система умрёт за месяц, и никакой агент этого не спасёт. Это главное условие, и оно не техническое.

Что мерить, чтобы понять, прижилось ли

Доля задач с исполнителем и сроком (у нас 100% — иначе их нельзя создать). Доля задач, закрытых прямо из мессенджера. Доля дней, где проставлены часы. Все три — про пользование, а не про дисциплину.

Грабли, на которых мы уже полежали

Каждая прожила в нашей системе от недели до полутора месяцев. Все — тихие: ничего не падало, всё выглядело работающим, а цифры были неверными. Поэтому в промте есть отдельный этап приёмки: ИИ ошибается уверенно.

Просрочка от даты последней правки

Задача, которую сегодня переименовали, становится просроченной задним числом. У нас так набежало 168 «просрочек» — настоящих оказалось 60.

Как надо: Считайте от даты ЗАКРЫТИЯ. Заведите отдельное поле, не полагайтесь на дату изменения строки.

Молчаливая обрезка выборки

Интерфейс базы отдал первую тысячу строк вместо всех, а код сложил их и выдал за итог. У нас бот так считал по 4% данных и на один и тот же вопрос отвечал по-разному — порядок строк не был задан.

Как надо: Складывайте в базе, а не в коде. Если тянете строки — всегда задавайте сортировку и проверяйте, не упёрлись ли в лимит.

Тихая поломка

Кнопка нажимается и не делает ничего: ни ошибки, ни реакции. У нас так «не существовало» удаление конкурента — идентификатор был текстовый, а код приводил его к числу и молча выходил.

Как надо: Любой выход по условию должен что-то сказать. И заведите журнал ошибок с первого дня: падение у человека уезжает в таблицу, а не в его консоль, где вы его никогда не увидите.

Статус, который ставят руками

«Работает над задачей» протухает в тот же день, когда человек забыл нажать. У нас такой статус жил полтора месяца, и его читали агенты, уверенно отвечая неправду.

Как надо: Вычисляйте статус из фактов — запущенный таймер, записанные часы. Нажимать нельзя забыть, если нажимать не надо.

Одно событие — два сообщения

Бронь уезжала в мессенджер дважды: обработчик срабатывал повторно, а отметки «уже отправлено» не было.

Как надо: У каждого уведомления должен быть отпечаток события и отметка об отправке. Повтор проверяйте до отправки, а не после.

Коммит не равен выкладке

Восемь готовых правок лежали в репозитории, пока я говорил «выкачено». Живым было только то, что деплоится отдельно.

Как надо: Знайте, что именно и по какому событию попадает на прод. Проверяйте номер версии на экране, а не факт коммита.

Пустой экран, полный нулей

«Постов 0 · Охват 0 · Просмотры 0» над надписью «пока пусто» — четыре цифры, которые ничего не говорят.

Как надо: Пусто должно выглядеть как пусто и подсказывать первое действие.

Сколько это стоит

Порядок величин на середину 2026 года — тарифы меняются, проверяйте актуальные. Начать можно на нуле и платить только тогда, когда системой уже пользуются. Версия для одного человека может остаться бесплатной навсегда.

ЧтоСколькоПримечание
КлодподпискаОсновная статья на старте. Claude Code входит в ту же подписку — отдельно платить за него не надо.
Доска на своём компьютере0Один html-файл. Соло-версия может остаться такой навсегда.
База и вход по почте0 → ~25 $/месБесплатного тарифа Supabase хватает начать; на нём проект засыпает при простое. Платный — когда системой уже пользуются.
Хостинг и домен0 → ~20 $/мес + доменУ Vercel бесплатный тариф рассчитан на некоммерческие проекты — компании берут платный. Домен отдельно, обычно 10–20 $ в год.
Бот в мессенджере0Телеграм-бот бесплатен. Платите только за место, где живёт его код.

Что добавлять потом

В таком порядке добавляли мы. Каждое имеет смысл только после того, как предыдущее прижилось: половина этих вещей бесполезна на доске, куда не заводят задачи.

  • Поручения со встреч — Расшифровка звонка превращается в список с кнопками «завести задачу». Самая большая утечка: договорённость, не ставшая задачей в тот же день, не выполняется никогда.
  • Чтение рабочих чатов — Система находит просьбы и замечания клиентов и приносит их с цитатой и кнопкой.
  • Повторяющиеся задачи — Отчёты, оплаты, чек-листы, продления — создаются сами, с исполнителем и сроком.
  • Статистика опозданий — По людям и по проектам. Разговор о дисциплине без цифр превращается в спор о характерах.
  • Цели клиентов — Не «сколько сделали», а «успеваем ли к сроку по тому, что обещали».
  • Доход на час по проекту — Чтобы решение «брать ли этого клиента» принималось не по тому, приятно ли с ним общаться.
Если собирать самому некогда

Соберём такую систему под ваш бизнес

Мы делаем это себе и клиентам: доска под ваш процесс, агент в мессенджере, который додавливает людей вместо вас, и дашборд, где каждая цифра открывает список. Обычно две-три недели от разговора до работающей системы. Напишите — обсудим, что у вас утекает, даже если делать будете сами.

ИК
Илья Комиссаров Основатель EDITH Agency — digital-партнёра для брендов Retail и HoReCa в ОАЭ. 200+ проектов, 3,5 млрд просмотров, TAG Award 2024. Эта статья написана по системе, которой агентство пользуется каждый день.