Installs into .claude/skills of the current project.
Are you the author of Checkpoint?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/andrewcigan-checkpoint)
---
name: checkpoint
description: Управляемый чекпоинт состояния в файлы посреди работы — вместо авто-сжатия («рулетки»). Перезаписывает Current State, синхронизирует статусы, ротирует завершённое в архив, прогоняет cold-start self-test. Триггеры — "/checkpoint", "чекпоинт", "зафиксируй состояние", "разгрузи контекст", "сохрани прогресс".
when_to_use: На естественной границе (конец фичи / конец волны / перед долгим субагентом / когда контекст потяжелел) ДО того как движок сам решит сжать контекст. НЕ закрывает сессию (для этого /end-session) — фиксирует состояние в файлы и позволяет продолжить работу с разгруженным контекстом.
---
# /checkpoint
Управляемое сжатие вместо рулетки. Курс владельца (c8): авто-сжатие контекста — **крайняя мера у самого лимита**, не рабочий инструмент. Anthropic/Manus подтверждают: держи горячий контекст малым, состояние — в файлах под своим управлением, тогда порог сжатия почти не достигается.
`/checkpoint` — это «сохранить игру» на естественной границе: всё важное уезжает в файлы, после чего контекст можно смело сжимать или начинать сессию заново без потери нити.
> **Чем отличается от `/end-session`:** checkpoint НЕ закрывает сессию и НЕ включает closing-mode. Ты продолжаешь работать сразу после него. `/end-session` — это «на сегодня всё» (финальный коммит + restart-helper + выход).
## Порядок (сначала руками — в файлы, потом скрипт)
### Шаг 1: Перезапиши Current State в SESSION.md (c6 overwrite, НЕ append)
Блок `## Current State` — это снимок «здесь и сейчас», его перезаписывают целиком, не копят:
- **Last Updated** — дата-время этой сессии (не шаблон `YYYY-MM-DD`).
- **Active Feature** — реальная фича из feature_list.json (или «нет активной» на границе волны; шаблон `[feat-XXX …]` не оставлять).
- **What's Next** — конкретный следующий шаг (не «[Следующее действие]»).
История/завершённое сюда НЕ дублируется (это раздувает горячий контекст — L4-F1). Завершённое уходит в архив (Шаг 4).
### Шаг 2: Синхронизируй feature_list.json — статусы + evidence
- Проставь фактические `state` фичам этой сессии.
- Для `passing`/`done` — впиши `evidence` (что и как проверено). Без evidence фича не архивируется (c10).
- **Бизнес-правку требования** (изменили описание/скоуп/инвариант по ходу) фиксируй ТОЛЬКО писателем истории плагина — он запишет откуда/когда/факт замены в провенанс-лог (иначе git pre-commit заблокирует коммит, L3-F4). Скрипт лежит в плагине, не в проекте; формат события — в начале скрипта:
`printf '%s' '<событие JSON>' | bash "${CLAUDE_PLUGIN_ROOT}/scripts/record-change.sh" --project "$(pwd)"`
### Шаг 3: Дозапиши журнал/решения
Значимые решения сессии → `docs/decisions/` или `SESSION.md` → Decisions Made. Грабли → `error-journal.md`.
### Шаг 4: Запусти скрипт (ротация + cold-start gate)
```bash
bash "${CLAUDE_PLUGIN_ROOT}/scripts/checkpoint.sh"
```
(берёт `pwd` как проект). Скрипт:
- чинит провенанс, если голова отстала от лога после обрыва (`record-change --recover`); стабы архива сверяет с телом в архиве и не переписывает, записи без головы истории и стабы без тела в архиве не трогает — «без головы истории N» и «стабов без тела в архиве N» в выводе не ошибка, а счёт записей, которые сверять не с чем (тело в архиве проверит сторож коммитов);
- ротирует завершённое (done/superseded/rejected с evidence) в `feature_list.archive.json` по ссылке — горячий контекст худеет;
- **COLD-START GATE (block):** если SESSION.md шаблонный/не обновлён или провенанс некогерентен → `/checkpoint` НЕ завершается, скрипт перечисляет незафиксированное. Допиши в файлы и повтори.
### Шаг 5: Cold-start self-test (сверь по ФАЙЛАМ, не по памяти)
Скрипт напечатает 5 вопросов. Ответь на каждый **из файлов репозитория**, не из контекста:
1. Что за продукт? 2. Активная фича + verification? 3. Последние 3 решения? 4. Что дальше? 5. Что не делать?
**Если хоть один ответ живёт только в контексте — допиши его в файл ДО разгрузки.** Это и есть механизация правила 4 «план только через файлы»: чат между сессиями не передаётся, свежая сессия увидит ровно то, что в файлах.
### Шаг 6: Коммит (опционально, но желательно)
Зафиксированное состояние стоит закоммитить — тогда чекпоинт переживёт что угодно. Если правил провенанс — коммить как обычно (git pre-commit проверит когерентность).
## Финальное сообщение пользователю
Коротко: что зафиксировано, что дальше, приглашение продолжить. Пример:
```
Чекпоинт сделан. Состояние в файлах: SESSION.md обновлён, feat-042 → passing (evidence записан),
2 завершённые фичи ушли в архив. Cold-start self-test — все 5 вопросов восстановимы из репозитория.
Контекст можно разгружать. Продолжаю со следующего шага: <next>. Или скажи /end-session, если на сегодня всё.
```
## Когда применять
- Конец фичи или волны (естественная граница).
- Перед запуском тяжёлого субагента (освободить главный контекст).
- Контекст потяжелел / получил нудж «сделай /checkpoint» (L4-F5) — ДО авто-порога сжатия.
## Когда НЕ применять
- Закрываешь сессию совсем → `/end-session` (он включает checkpoint-логику + выход).
- Середина фичи без verify → сначала доведи до проверяемой точки.
## Anti-patterns
- ❌ Дописывать завершённые фичи телом в SESSION.md/CLAUDE.md (раздувает горячий контекст — L4-F1 warn). Завершённое → архив по ссылке.
- ❌ Проходить cold-start self-test «по памяти» — вопрос в том, есть ли ответ В ФАЙЛАХ.
- ❌ Править бизнес-поле требования мимо `record-change.sh` (потеря провенанса → git pre-commit block).
- ❌ Полагаться на PreCompact-слепок как на память — он страховка (insurance-tier, L4-F3), не основной носитель.
## Связано
- `scripts/checkpoint.sh` — механическая часть + cold-start gate.
- `rules/context-tiers.md` — трёхуровневая модель контекста (L4-F1).
- `skills/end-session/SKILL.md` — полное закрытие сессии (checkpoint + выход).
- `v8-provenance-and-context.md` §5 — дизайн анти-сжатия.