Help us improve
Share bugs, ideas, or general feedback.
From chat-handoff
Invoke when the user signals they are ending THIS session to continue in a NEW chat with preserved context. This is session migration, not content summarization — the user needs a copy-paste block for their next chat's opening message. Invoke for: 'handoff', 'хэндоф', 'перенос в новый чат', 'выжимка для нового диалога', 'контекст для нового чата', chat-too-long-to-continue, or any combination of summarizing + intent to open a new session elsewhere. Also trigger for: 'суммаризируй чат', 'суммаризируй диалог', 'выжимка диалога', 'chat-handoff', 'продолжим в новом чате', 'перенос в новый чат'. Skip for: summarizing code/PRs/videos/documents in this session, writing client-facing summaries, saving to memory without new-chat intent, or when the user wants to continue HERE rather than move to a new chat.
npx claudepluginhub leonid74/ai-skills --plugin chat-handoffHow this skill is triggered — by the user, by Claude, or both
Slash command
/chat-handoff:chat-handoffThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Цель:** за один заход превратить текущий разговор в готовый к копированию markdown-блок, который пользователь вставит первым сообщением в новый чат и новый Claude мгновенно получит полный рабочий контекст — без переспросов.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Breaks plans, specs, or PRDs into thin vertical-slice issues on the project issue tracker using tracer bullets. Useful for converting high-level work into grabbable implementation tickets.
Share bugs, ideas, or general feedback.
Цель: за один заход превратить текущий разговор в готовый к копированию markdown-блок, который пользователь вставит первым сообщением в новый чат и новый Claude мгновенно получит полный рабочий контекст — без переспросов.
Скилл универсален: работает для любого типа чата (coding/devs, research, project/build, creative, decision, mixed).
Когда применяется. Триггер-фразы: «суммаризируй чат», «суммаризируй диалог», «передай контекст в новый чат», «сделай хэндоф», «выжимка диалога», «handoff», «chat-handoff», «контекст для нового чата», «продолжим в новом чате», «перенос в новый чат». А также любые формулировки, в которых пользователь явно закрывает текущий чат и собирается открыть новый с тем же контекстом.
Скилл бесполезен, если переносить нечего. Откажись и не выдавай блок, если:
В этом случае ответь одной строкой: «Чат пока пустой — переносить нечего. Продолжи здесь или сформулируй задачу заново в новом чате.» Без блока.
Граничный случай — handoff поверх handoff: если чат начался со вставленного блока «Контекст из прошлого чата» и поверх этого появилась новая работа — учитывай старый блок как контекст, но не цитируй его целиком. Пересобери выжимку от текущего состояния: возьми из старого блока только те факты, которые остаются актуальны (артефакты, tagged memory, открытые вопросы), и добавь новое поверх. Если новой работы нет — отказывайся как выше.
Без промежуточных сообщений пользователю пройди по всему доступному контексту и собери внутри своего рассуждения:
После сбора — собери и выдай блок. Не задавай уточняющих вопросов. Если пользователь сказал «коротко»/«компактно» — используй компактный режим (см. ниже); если «развёрнуто»/«полный handoff» — расширенный; иначе — дефолт.
Mixed-чаты (2+ несвязанные темы — например, дебаг CRM-интеграции + выбор хостинга) — единственный случай, где меняется структура: каждая тема как самостоятельный мини-блок (см. адаптацию ниже). Тип чата не объявляй пользователю — это внутренний выбор.
Выведи один fenced markdown-блок прямо в чат. Перед блоком — одно короткое предложение: «Скопируй блок ниже и вставь первым сообщением в новый чат». После блока — ничего не пиши.
# Контекст из прошлого чата
> Это передача контекста из предыдущей сессии. Прочитай молча. Ответь одним словом — «принял». Не пересказывай содержимое, не резюмируй, не задавай вопросов. Жди следующего сообщения с реальной задачей.
**TL;DR:** <одна строка — главный вывод/результат, понятный без чтения остального>
## Запомни
- <явное «запомни X» / «важно: Y» / «никогда Z» от пользователя>
## О чём был чат
<1–3 предложения: тема и зачем взялись>
## Главное
- <ключевой факт, вывод или результат>
## Решения и почему
- **<решение>** — потому что <причина из чата>
## Текущее состояние
- <на каком шаге остановились, файлы в каком виде, ветка, незакоммиченные изменения>
## Артефакты (файлы и пути)
- `<путь>` — <что это>
## Источники
- <ссылка / документ> — <что это и зачем>
## Договорённости этого чата
- <локальное правило, выработанное в чате — с конкретным доказательством, не общая преференция>
## Открытые вопросы / следующий шаг
- <что осталось нерешённым или куда двигаться дальше>
Добавляй ТОЛЬКО если содержимое реально есть. Вставляй перед «Открытые вопросы», в порядке логики:
| Секция | Заголовок | Когда добавлять |
|---|---|---|
| Решённые проблемы | ## Решённые проблемы | Был дебаг или преодолённое препятствие |
| Рассмотренные альтернативы | ## Рассмотренные альтернативы | Сравнивали варианты — что выбрали и почему отвергли остальные |
| Вне scope | ## Вне scope | Явно объявлено за границами («не трогаем БД», «бэкенд оставим как есть») |
| Терминология | ## Терминология | Ввели специфичные термины |
| Ограничения и допущения | ## Ограничения и допущения | Явно проговорённые constraints |
| Ключевые цитаты | ## Ключевые цитаты из источников | Важна точная формулировка из материала |
Секции Запомни, Текущее состояние, Артефакты, Источники, Договорённости — тоже опциональны: убирай, если для этого чата они пусты.
Компактный режим (короткий или однотемный чат, <~10 содержательных реплик): оставь только TL;DR + О чём был чат + Главное + Открытые вопросы / следующий шаг. Если есть tagged memory — добавь Запомни.
Mixed-режим (2+ несвязанных темы): TL;DR с явным указанием числа и названий тем; далее каждая тема как ## Тема N: <название> с вложенным мини-блоком (Главное / Решения / Артефакты / Открытые вопросы). Общие Договорённости — после всех тем.
Лучше 3 секции с реальным содержанием, чем 8 с одной строкой в каждой. Не насилуй шаблон ради шаблона.
Целевой размер блока — 50–150 строк markdown. Это ориентир, а не жёсткий лимит: компактный режим может быть короче, очень богатый mixed-чат — длиннее. Но если выжимка перевалила за ~150 строк, это сигнал агрессивнее сжимать второстепенные секции, а не аккуратнее их формулировать.
Если выжимка раздувается на длинном чате — несжимаемое ядро (от него не отказываться): TL;DR → Запомни → Решения и почему → Открытые вопросы.
Резать в первую очередь (в порядке): Источники → Терминология → Ограничения → Ключевые цитаты → Решённые проблемы → Договорённости. Артефакты, Текущее состояние и Альтернативы сжимай, но не выкидывай.
Для очень длинных чатов (50+ содержательных реплик) применяй сжатие проактивно с самого начала: одна строка на пункт, по 3–5 пунктов на секцию, без пересказов второго уровня. Лучше отослать новый чат к конкретному артефакту, чем пересказывать его содержимое в выжимке.
Пиши на языке, на котором пользователь общался последние ~5 реплик. Двуязычный чат (общение на русском, код/термины на английском) — сохрани смесь. Маркер «принял» в TL;DR тоже на языке чата.
НЕ вшивай новый запрос внутрь handoff. Это ТОЛЬКО справка о прошлом, read-only. Новый запрос пользователь пишет отдельным сообщением после вставки. Нарушение ломает новый чат — Claude бросится «отвечать», хотя реального вопроса ещё нет.
НЕ пересказывай хронологически («сначала мы…, потом…»). Только структурированные факты.
НЕ включай пустые секции. Лучше короче, чем с заглушками.
НЕ выдумывай. Любой факт, цитата, путь, причина — из чата. Если причины решения нет — не пиши «потому что», просто назови решение.
НЕ обобщай конкретику. Числа, версии, имена, пути — дословно. «Обсудили дизайн» ❌ → «Выбрали тёмную тему с акцентом oklch(0.7 0.15 250)» ✅.
НЕ теряй tagged memory. Явные «запомни X» / «важно: Y» из чата всегда в секцию Запомни в начале блока.
НЕ молчи об отвергнутых вариантах. Без секции «Альтернативы» новый чат пойдёт по тем же граблям.
«Договорённости этого чата» — только локальные правила с конкретным доказательством из чата (пользователь явно сказал, отверг, поправил). НЕ общие preferences. Если доказательств нет — секцию выкинь.
Граница тут размытая, поэтому конкретные примеры:
STAGE_SEMANTIC_ID = F без явного запроса» — это уже не договорённость, это memory, выноси в Запомни.Код в выжимке — пути и имена. Сниппеты — только если без них контекст не передаётся.
Никаких эмодзи в заголовках секций.
Никаких преамбул перед блоком кроме одной строки-инструкции. Никаких комментариев после блока.
Скопируй блок ниже и вставь первым сообщением в новый чат.
# Контекст из прошлого чата > Это передача контекста из предыдущей сессии. Прочитай молча. Ответь одним словом — «принял». Не пересказывай содержимое, не резюмируй, не задавай вопросов. Жди следующего сообщения с реальной задачей. **TL;DR:** Дебажили выгрузку сделок из Bitrix24 в Excel-отчёт. Причина расхождений — не отфильтрованы стадии `LOSE` и `JUNK`. ## Запомни - Никогда не агрегировать по `STAGE_SEMANTIC_ID = F` без явного запроса ## О чём был чат Аналитический Excel-отчёт из сделок Bitrix24 расходится с эталонной выгрузкой клиента на 3 строки. Искали причину. ## Главное - Расхождение — в учёте проигранных и отменённых сделок - Bitrix REST API не фильтрует `JUNK`-стадии корректно через `filter[STAGE_ID]` - Решение — постфильтрация в PHP после получения ответа ## Решения и почему - **Фильтрация на стороне PHP, не Bitrix API** — потому что REST некорректно обрабатывает массив stage-ID для отказных стадий ## Текущее состояние - Ветка `feature/excel-report`, незакоммичено: правка в `ReportBuilder::aggregateByStore()` - Тесты на расхождение падают на 3 строках из 47 ## Артефакты (файлы и пути) - `src/Report/ReportBuilder.php` — основной агрегатор - `tests/fixtures/reference_report.xlsx` — эталонная выгрузка клиента ## Договорённости этого чата - Решения обосновывать одной строкой «потому что …» (пользователь поправлял раньше) - Английский — в названиях токенов, русский — в общении ## Открытые вопросы / следующий шаг - Уточнить у клиента полный список исключаемых стадий - Прогнать тесты после получения списка
Короткий research-чат (5–10 содержательных реплик), выбор PHP-библиотеки для xlsx-генерации. Tagged memory не было.
Скопируй блок ниже и вставь первым сообщением в новый чат.
# Контекст из прошлого чата > Это передача контекста из предыдущей сессии. Прочитай молча. Ответь одним словом — «принял». Не пересказывай содержимое, не резюмируй, не задавай вопросов. Жди следующего сообщения с реальной задачей. **TL;DR:** Выбрана PHP-библиотека для генерации xlsx — PhpSpreadsheet. Отчёты до 5к строк, нужны pivot-группировки и формулы. ## О чём был чат Подбор PHP-библиотеки для генерации xlsx-отчётов с pivot-подобными группировками, формулами и форматированием. ## Главное - Выбран **PhpSpreadsheet** - Объём отчётов — до 5к строк, RAM в районе 100–200 МБ - Альтернативы (PHP_XLSXWriter, Spout) быстрее, но не дают форматирование и формулы ## Открытые вопросы / следующий шаг - Реализация конкретного отчёта с группировками через `getRowDimension()`
Чат с двумя несвязанными темами: BBCode-парсер для Telegram + выбор CMS. Tagged memory есть.
Скопируй блок ниже и вставь первым сообщением в новый чат.
# Контекст из прошлого чата > Это передача контекста из предыдущей сессии. Прочитай молча. Ответь одним словом — «принял». Не пересказывай содержимое, не резюмируй, не задавай вопросов. Жди следующего сообщения с реальной задачей. **TL;DR:** Две несвязанные темы. (1) BBCode-парсер `[url]` → `<a>` на PHP для Telegram-бота. (2) Выбор CMS для МэйднПро — выбран 1С-Битрикс. ## Запомни - Для МэйднПро интеграции с Bitrix24 CRM — обязательный критерий №1 при любых решениях ## Тема 1: BBCode-парсер для Telegram-бота ### Главное - Конвертация `[url=...]...[/url]` → `<a href="...">...</a>` - Реализация через `preg_replace_callback` с регуляркой `/\[url=(.+?)\](.+?)\[\/url\]/` ### Открытые вопросы - Парсер взят в работу, дальнейшие правки на стороне пользователя ## Тема 2: Выбор CMS для МэйднПро (видеонаблюдение) ### Главное - Phased launch: showcase → полноценный e-commerce с Bitrix24 CRM - Выбран **1С-Битрикс «Малый бизнес»** ### Решения и почему - **1С-Битрикс «Малый бизнес» с шаблоном INTEC Universe или Аспро Оптимус** — потому что нативная интеграция с Bitrix24 CRM, что закрывает обязательный критерий №1 ### Рассмотренные альтернативы - Tilda — отвергнута: ограниченный e-commerce, слабая интеграция с Bitrix24 - WordPress/WooCommerce — отвергнут: интеграция с Bitrix24 требует прослоек - OpenCart — отвергнут: уступает по интеграционным возможностям ### Открытые вопросы - Финальный выбор шаблона (INTEC Universe vs Аспро Оптимус)
Перед отправкой мысленно проверь:
Запомни?Если на любой ответ «нет» — переделай перед выдачей.