iiuniversitet.ruЦентр обучения нейросетямОткрыть каталог

Учёт задач в Google Calendar

Записывает каждую рабочую сессию Claude в Google Calendar отдельным событием: длительность, краткий отчёт, ссылки и использованные инструменты.

СкиллРазработано в iiuniversitetClaudeНаш материалЗагрузить архив в ClaudeПроверка не требуется
Скачать архив
Что делает
Записывает каждую рабочую сессию Claude в Google Calendar отдельным событием: длительность, краткий отчёт, ссылки и использованные инструменты.
Когда брать
Когда хотите видеть в календаре, над чем и сколько вы работали вместе с ИИ, и разбирать неделю по событиям.
Когда не брать
Если Google Calendar не подключён к Claude, скилл работать не будет.
Пример запроса
Залогируй эту сессию в календарь и покажи, что я делал на прошлой неделе.
Нужно подключить
подключённый Google Calendar

Как включить

  1. Скачайте архив.
  2. В Claude откройте Настройки → Capabilities → Skills → Upload skill и выберите архив.
  3. Включите скилл переключателем.
Для терминала

Распакуйте архив и положите папку task-calendar-logger в ~/.claude/skills/. Файл SKILL.md должен лежать внутри этой папки.

Текст

---
name: task-calendar-logger
description: >
  Универсальный трекер задач: каждую сессию работы (и автоматическую по расписанию,
  и обычный диалог с пользователем) логирует в Google Calendar отдельным событием
  с длительностью, кратким отчётом, ссылками на артефакты и списком использованных
  инструментов. Автоматические задачи помечаются 🤖 + красный (Tomato), ручные
  диалоги — 💬 + зелёный (Basil). Календарь выбирается один раз при первом запуске
  и запоминается на будущее. ВСЕГДА запускай этот скилл в начале любой сессии,
  где предстоит реальная работа (создание файлов, многошаговые задачи, вызовы
  MCP), и обязательно возвращайся к нему в конце — перед финальным ответом
  пользователю. Также используй когда пользователь говорит «залогируй сессию»,
  «занеси в календарь», «запиши что мы делали», «обнови событие», «покажи что я
  делал на прошлой неделе».
compatibility: "Google Calendar MCP (list_calendars, create_event, update_event)"
---

Универсальный трекер задач в Google Calendar

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

Требования: подключённый Google Calendar MCP с тулзами list_calendars, create_event, update_event.

Логика: три шага — настройка (один раз навсегда), создание события в начале сессии, обновление события в конце. Между ними — обычная работа.


Шаг 0 (один раз навсегда): настроить календарь

Перед первым реальным использованием — определи, в какой календарь писать.

Если ID календаря уже сохранён

Проверь CLAUDE.md пользователя или memory на наличие записи вида:

task-calendar-logger: calendarId = <...>, timeZone = <...>

Если есть — используй её и переходи к Шагу 1.

Если ID не сохранён — спросить и запомнить

  1. Вызови list_calendars().
  2. Покажи пользователю варианты через AskUserQuestion: первые 3-4 наиболее вероятных кандидата (primary, календари с названиями типа "Work", "Cowork", "Tasks") как варианты выбора + опция "Other" для ввода точного summary.
  3. После выбора — возьми id и timeZone соответствующего календаря.
  4. **Сохрани в CLAUDE.md** пользователя строкой: `` task-calendar-logger: calendarId = <id>, timeZone = <iana-zone> ` Если CLAUDE.md` нет — создай его в корне пользовательской папки или в memory.

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


Шаг 1: В начале сессии — создать событие

Делай это сразу после того, как уточнил детали задачи (через AskUserQuestion), но до реальной работы.

1.1 Определи тип сессии: AUTO или MANUAL

ПризнакТипЭмодзиcolorId
Первое сообщение — это запуск scheduled task (формальный промпт без приветствия, упоминание имени задачи/скилла, фразы вроде "ежедневный запуск", "по расписанию", или системный hint о запуске задачи)AUTO🤖11 (Tomato — красный)
Первое сообщение написал живой пользователь (разговорный тон, "сделай мне", "помоги с", вопросы)MANUAL💬10 (Basil — зелёный)

Если непонятно — считай MANUAL.

1.2 Сгенерируй заголовок

3–7 слов, как пункт в TODO. Не копируй первое сообщение пользователя дословно — переформулируй сжато.

Финальный заголовок: <ЭМОДЗИ> <Суть задачи>.

Примеры:

  • 🤖 Дайджест AI-новостей за неделю (auto)
  • 💬 План запуска курса (manual)
  • 🤖 Обработка кейса в Slides (auto, scheduled)
  • 💬 Презентация про нейропродюсера (manual)

1.3 Засеки время

Через bash: TZ=<timeZone из Шага 0> date +"%Y-%m-%dT%H:%M:%S".

startTime = это значение. endTime черновое = start + 30 минут (в Шаге 3 обновим на фактическое).

1.4 Создай событие

create_event(
  calendarId  = <ID из Шага 0>,
  summary     = "<ЭМОДЗИ> <Суть задачи>",
  startTime   = "<ISO 8601>",
  endTime     = "<ISO 8601 + 30 минут>",
  timeZone    = "<из Шага 0>",
  colorId     = "11" если AUTO, "10" если MANUAL,
  description = "<префикс по шаблону ниже>"
)

Шаблон описания для Шага 1:

<🤖 Запущено по расписанию | 💬 Ручная задача>
Статус: в процессе…

📝 Исходный запрос:
«<первое сообщение целиком, до 800 символов>»

**Сохрани eventId** — он нужен в Шаге 3.

Если create_event упал — не блокируй основную работу. Сделай одну попытку, при ошибке зафиксируй мысленно и иди дальше. В Шаге 3 попробуешь снова с create_event сразу с фактическим временем.


Шаг 2: По ходу работы — собирай факты

Ничего не пишешь в чат — просто запоминай, что войдёт в финальное описание:

  • Файлы: какие создал/изменил (с абсолютными путями).
  • Скиллы: какие вызывал, по именам.
  • MCP-тулзы: какие коннекторы дёргал и примерно сколько раз (Notion, Google Calendar, Chrome, Gemini, …).
  • Внешние ссылки: Notion-страницы, Google Docs, опубликованные посты, созданные события.
  • Для research-задач: ключевые выводы в 2–3 предложениях.

Это контекст для Шага 3, а не для пользователя.


Шаг 3: В конце сессии — обновить событие

Делай это перед последним сообщением пользователю (перед present_files или финальным резюме).

3.1 Получи фактическое время окончания

TZ=<timeZone> date +"%Y-%m-%dT%H:%M:%S".

3.2 Собери описание

Шаблон (опускай секции, если в них пусто):

<🤖 Запущено по расписанию | 💬 Ручная задача>

📋 Что сделано:
• <буллет 1 — одно предложение>
• <буллет 2>
• <буллет 3>

📎 Артефакты:
• <название> — <абсолютный путь или URL>
• <название> — <URL>

🛠 Использованные скиллы:
• <skill-name-1>
• <skill-name-2>

🔌 MCP-инструменты:
• <коннектор> (≈<N> вызовов)

📝 Исходный запрос:
«<первое сообщение, до 800 символов>»

3.3 Обнови событие

update_event(
  calendarId  = <ID из Шага 0>,
  eventId     = <eventId из Шага 1>,
  endTime     = "<фактическое ISO 8601>",
  description = "<собранное описание>"
)

Заголовок (summary) обновляй только если scope задачи существенно поменялся в ходе работы. Иначе оставь как было.

3.4 Fallback: события из Шага 1 нет

Если в Шаге 1 create_event упал — здесь вызови create_event напрямую: startTime ≈ время начала сессии (прикинь по длине диалога), endTime = сейчас. colorId и эмодзи — по типу из Шага 1.


Поведение в особых случаях

Сессия длиннее 30 минут

Просто обнови endTime в Шаге 3 на фактический — Google Calendar нормально растянет событие.

Сессия короче 5 минут

Всё равно логируй. Лучше иметь много коротких записей, чем потерять данные.

Пользователь явно говорит «не логируй»

Не запускай скилл. Если уже создал событие в Шаге 1 — в Шаге 3 удали его через delete_event.

Несколько задач в одной сессии

Если пользователь в середине переключился на другую задачу — допиши новую тему в summary ("…+ <вторая тема>") и зафиксируй обе в Шаге 3.

Запуск идёт под другим аккаунтом / новым пользователем

Проверь, что calendarId из CLAUDE.md ещё работает (list_calendars его возвращает). Если нет — повтори Шаг 0.


Чеклист на каждую сессию

  • [ ] Шаг 0 один раз сделан: calendarId и timeZone сохранены в CLAUDE.md
  • [ ] Шаг 1: определён тип (AUTO/MANUAL), заголовок с эмодзи, событие создано с правильным colorId, eventId сохранён
  • [ ] Шаг 2: по ходу — мысленно собраны файлы / скиллы / MCP / ссылки
  • [ ] Шаг 3: перед финальным ответом — событие обновлено фактическим endTime и осмысленным описанием

Антипаттерны

  • ❌ **Создавать событие до AskUserQuestion.** Заголовок будет про задачу, которая через 30 секунд поменяется.
  • ❌ Логировать болтовню и тривиальные вопросы. «Что такое REST API», «привет» — пропускай. Условие: должна быть реальная работа (файлы, MCP, многошаговость).
  • ❌ Простыни в описании. Не копируй туда сырые ответы тулзов и куски кода. Описание — summary, не транскрипт.
  • ❌ **Забывать timeZone.** Без неё событие может уехать на ±несколько часов. Всегда передавай явно.
  • ❌ Путать AUTO и MANUAL. От этого зависит цвет и эмодзи — а вся будущая аналитика «сколько времени съели автозадачи vs ручные» строится на этом различии.
  • ❌ Спрашивать календарь каждую сессию. Шаг 0 — один раз, дальше читать из CLAUDE.md.

Справочник: тулзы Google Calendar MCP

**list_calendars()** — возвращает массив {id, summary, timeZone}. Нужен в Шаге 0.

**create_event** — обязательные: summary, startTime (ISO 8601), endTime (ISO 8601). Полезные: calendarId, timeZone, description, colorId.

**update_event** — обязательное: eventId. Опциональные, которые мы используем: calendarId, endTime, description, иногда summary.

**delete_event** — обязательное: eventId. Опциональное: calendarId. Нужно для случая «не логируй».

**Палитра colorId:**

IDЦветИспользуем для
1Lavender—
2Sage—
3Grape—
4Flamingo—
5Banana—
6Tangerine—
7Peacock—
8Graphite—
9Blueberry—
10Basil (зелёный)MANUAL (💬)
11Tomato (красный)AUTO (🤖)

Разработано в iiuniversitet — https://iiuniversitet.ru/?utm_source=bonus&utm_medium=skill&utm_campaign=katalog&utm_content=iiu-task-calendar-logger

Автор: iiuniversitet. Раздаточный скилл iiuniversitet «task-calendar-logger».