| name | wrap-up |
| description | Завершение сессии health-os: session log, active-context, checkpoint, MEMORY.md, Goals/health-goals.md, очистка breadcrumb и коммит. Закрывает сессию целиком — не для сохранения отдельного файла или анализа.
Триггеры: «заверши сессию», «сохрани сессию», «wrap up», «закончили», «закрываем сессию»
|
Wrap-up — завершение сессии
Профиль. До чтения и записи определи активный профиль по
.claude/shared/profile-resolution.md. Короткий путь Data/X в этом файле
означает Data/profiles/<активный>/X — буквально по нему писать нельзя.
Перед записью назови, в чей профиль она идёт.
Назначение
Сохранить контекст сессии в MEMORY.md, сделать коммит. Без push (нет remote).
Workflow
1. Собрать итоги сессии
Механизм — не по памяти, а по состоянию репозитория:
git status --short
git diff --stat HEAD
По этому выводу определить:
- Какие файлы изменились (
git status --short) и насколько (git diff --stat HEAD)
- Какие направления затронуты — по путям изменённых файлов (
Data/labs/ → анализы, Data/doctors/ → визиты и т.д.)
- Какие решения приняты — из хода сессии
- Что осталось открытым
2. Создать session log
Создать файл Cache/sessions/YYYY-MM-DD_HH-MM.md:
# Сессия YYYY-MM-DD HH:MM
- **Длительность:** ~X мин
- **Направления:** [затронутые KR/направления]
## Что сделано
- [действие 1]
- [действие 2]
## Изменённые файлы
- [список ключевых файлов]
## Решения
- [решение 1 — почему]
## Открытые вопросы
- [что осталось нерешённым]
3. Обновить active-context
Перезаписать Cache/active-context.md:
# Active Context — Health-OS
## Последняя сессия
- **Дата:** YYYY-MM-DD
- **Что сделано:** [краткий список]
- **Изменённые файлы:** [список]
### Предыдущие сессии
- [предыдущие 2–3 сессии — одной строкой каждая]
## Текущие задачи
| # | Задача | Статус | Контекст |
|---|--------|--------|----------|
| 1 | [задача] | in_progress/waiting/next | [контекст] |
## Текущий фокус
- [на чём сейчас сосредоточена работа]
## Ожидания к следующей сессии
- [что должно произойти до следующего входа]
## Следующие шаги
- [конкретные действия на следующую сессию]
## Блокеры
- [что мешает прогрессу, если есть]
4. Обновить checkpoint
Обновить Cache/checkpoint.yml:
- Если многошаговая задача завершена →
active: false, обнулить поля
- Если задача не завершена → оставить
active: true, обновить current_step, context, last_updated
- Если не было многошаговой задачи → не трогать
5. Обновить MEMORY.md
Обновить следующие секции (БЕЗ «Последняя сессия» — она в active-context):
«Активные треды» — обновить если изменились:
- Добавить новые направления
- Обновить статусы
- Убрать завершённые
«Открытые вопросы» — обновить:
- Добавить новые
- Убрать решённые
«Ближайшие действия» — обновить:
- Что нужно сделать в следующей сессии
- Ожидаемые визиты, анализы
6. Обновить Goals/health-goals.md
Пересгенерировать локальный файл целей из живых данных:
Goals/health-goals.md — обновить из:
Data/goals/YYYY.json (v2) → все KR из directions[] (число направлений читать из файла, не задавать константой), фазы, milestones чекбоксы, расходы
Генерировать полностью, не патчить.
7. Очистить breadcrumb
Удаляется только breadcrumb текущей сессии. Массовая чистка запрещена: в .claude/hooks/pending-sessions/ лежат следы других сессий, в том числе работающих параллельно прямо сейчас, и они — единственный вход для /recover-sessions.
Если session_id текущей сессии известен:
- Удалить
.claude/hooks/pending-sessions/{session_id}.json
- Удалить
.claude/hooks/session-start-{session_id}.tmp, если он существует. Отсутствие файла — норма, не ошибка
Если session_id неизвестен:
Чистка чужих breadcrumbs — зона ответственности /recover-sessions, а не этого скилла.
8. Проверка целостности перед коммитом
python3 .claude/scripts/check-integrity.py
Коммитить сломанные данные хуже, чем не коммитить: дефект фиксируется в истории и переживает сессию.
- Всё пройдено — идти дальше молча
- Есть проблемы — показать их и спросить, чинить сейчас или коммитить как есть. Решение за пользователем: часть расхождений возникает в середине незавершённой работы и это нормально
- Скрипт недоступен — отметить одной строкой и продолжить
9. Коммит
Сначала проверить, есть ли что коммитить:
git status --porcelain
Если вывод пуст — изменений нет. Коммит не делать (git commit завершится ошибкой «nothing to commit»), в подтверждении написать «Коммит: не требуется — изменений нет». Это не ошибка сессии.
Если вывод непуст:
git add -A
git commit -m "[тип]: краткое описание"
Типы: feat, docs, fix, refactor
НЕ делать push — проект только локальный.
10. Подтверждение
✅ Сессия завершена
- Session log: Cache/sessions/YYYY-MM-DD_HH-MM.md
- Active context обновлён
- Checkpoint: [деактивирован / обновлён (задача X, шаг Y/Z) / не было]
- MEMORY.md обновлён
- Goals/health-goals.md обновлён
- Breadcrumb: [очищен / не очищен — session_id неизвестен, см. /recover-sessions]
- Коммит: [hash] — [message] / не требуется — изменений нет
- Изменено файлов: N
Каждая строка отражает фактический результат шага. Не писать «очищен», если шаг 7 ушёл в ветку «неизвестен», и не писать про коммит, если его не было.
Правила
- Медданные не покидают каталог проекта — запись PHI куда-либо вовне запрещена. Наружу, если это вообще нужно, идут только агрегаты: количества, статусы, метрики. Никаких названий препаратов, диагнозов, аллергенов, ФИО и дат рождения
- Только свой breadcrumb — удаление чужих или удаление по дате запрещено при любых обстоятельствах
- Скилл закрывает сессию целиком — если пользователь просит сохранить конкретный файл, анализ или заметку, это не
/wrap-up. Запускать только на явное завершение сессии
- Порядок шагов зафиксирован в CLAUDE.md и менять его нельзя: лог → active-context → checkpoint → MEMORY → Goals → breadcrumb → проверка целостности → коммит
Критерий завершения: session log создан; Cache/active-context.md содержит все шесть обязательных секций из .claude/rules/active-context.md; Cache/checkpoint.yml приведён в соответствие фактическому состоянию задачи; MEMORY.md и Goals/health-goals.md обновлены; breadcrumb либо удалён по известному session_id, либо явно оставлен с сообщением пользователю; коммит сделан либо честно помечен как не требующийся; отчёт шага 10 отражает реальные результаты каждого шага.