Гейт перед /clear — read-only проверка «всё ли записано», вердикт из exit code скрипта, а не из реплики модели. Проверяет свежесть GSD-handoff в репозитории проекта, свежесть vault-файлов для Project Knowledge, состояние vault-репо, дерево проекта, запушенность, лог сессии, плюс validate.health как предупреждение. Два режима планки - mid (между этапами GSD, дефолт) и end (конец сессии). Use when user says "/mm gate", "/mm-gate", "можно чистить", "всё ли записано", "готов к clear", "проверь пе...
Scanned 8/31/2026
Install to Claude Code
npx -y skills add mworldorg/markdown-memory --skill mm-clear-gate --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Mm Clear Gate?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/mworldorg-mm-clear-gate)More formats (shields.io, HTML) on the badges page.
---
name: mm-clear-gate
version: 0.2.0
description: Гейт перед /clear — read-only проверка «всё ли записано», вердикт из exit code скрипта, а не из реплики модели. Проверяет свежесть GSD-handoff в репозитории проекта, свежесть vault-файлов для Project Knowledge, состояние vault-репо, дерево проекта, запушенность, лог сессии, плюс validate.health как предупреждение. Два режима планки - mid (между этапами GSD, дефолт) и end (конец сессии). Use when user says "/mm gate", "/mm-gate", "можно чистить", "всё ли записано", "готов к clear", "проверь перед clear", ЛИБО когда сам собираешься предложить /clear.
---
# mm-clear-gate — гейт перед `/clear`
Решает проблему: единственным подтверждением «всё сохранено» была фраза модели о сессии, память о которой `/clear` и стирает. Вердикт должен приходить **из скрипта с exit code**, а не из реплики.
**Вся логика — в скрипте.** Скилл его запускает, печатает вывод целиком и переводит exit code в одну строку. Ничего не пересчитывает и не пересказывает.
## Запуск
```bash
python <repo>/scripts/clear-gate.py --mode mid # дефолт: между этапами GSD
python <repo>/scripts/clear-gate.py --mode end # конец сессии
```
`<repo>` — корень mm-репозитория (`paths.skills_repo` из конфига). Проверяемый проект — текущий cwd; можно задать явно через `--project <путь>`.
Режим: `/mm gate` → `mid`, `/mm gate end` (или «конец сессии», «закругляемся») → `end`.
## Что делать с выводом
1. Напечатай вывод скрипта **целиком, дословно** — секции блокеров, предупреждений и пройденного. Не сокращай список файлов, не убирай подсказки-команды.
2. Добавь одну строку по exit code:
- `0` → `✅ Гейт пройден — можно /clear.`
- `1` → `⛔ Гейт не пройден — чистить нельзя, сначала закрой блокеры выше.`
3. При exit 1 **не предлагай `/clear`** и не утверждай, что всё записано. Блокеры перечислены — назови их и остановись.
4. Ничего не чини сам. Гейт read-only, исправления — отдельное решение оператора.
## Планка по режимам
| Проверка | mid | end |
|---|---|---|
| Свежесть **GSD-handoff** в репозитории проекта (`.planning/HANDOFF.json`, `.continue-here.md`) | блокер | блокер |
| Свежесть **vault-файлов** для Project Knowledge (`handoff.md`, `dashboard.md`) | предупреждение³ | блокер³ |
| Vault-репо: грязный или не запушен | блокер | блокер |
| Дерево проекта незакоммичено | предупреждение¹ | блокер |
| HEAD впереди origin | предупреждение | блокер |
| Лог сессии в `<vault>/sessions/` | не проверяется | блокер |
| Фаза Complete без passing-`VERIFICATION.md` | блокер² | блокер² |
| `validate.health` | предупреждение | предупреждение |
¹ становится блокером, если GSD-handoff устарел: незаписанное состояние плюс грязное дерево — это уже потеря.
² только фазы **текущего** milestone (берётся из `milestone:` в `STATE.md`). Архивные вехи не трогаем: чинить их поздно, а гейт, краснеющий на том, что никто не пойдёт исправлять, начинают пролистывать. Строки со статусом `Deferred`, `In Progress`, `Executed — verification partial` не проверяются — ловится ровно расхождение «ROADMAP говорит `Complete`, а `verification.status` даёт не `passed`».
Зачем: в `execute-phase` шаг `verify_phase_goal` стоит **перед** `update_roadmap` и guard'а не имеет, то есть при полном прогоне фаза физически не может стать Complete без отчёта. Но если планы гонять поштучно, а ROADMAP править отдельно, весь хвост workflow (верификация, learnings, todos) пропускается — так у Filtrator фаза 8 простояла Complete без единого `VERIFICATION.md`, и пять фаз из восьми оказались без отчётов. Сигнал у GSD был всегда (`verification.status`), но оставался advisory: его никто не читал. Здесь он становится вердиктом.
³ два разных места записи, и одно другое не заменяет. **GSD-handoff** — `.planning/*` в репозитории проекта, пишет `/gsd-pause-work`. **Vault-файлы** — `handoff.md` и `dashboard.md` в vault, пишет `/mm save`; именно они едут в Project Knowledge claude.ai. Срабатывает, если mtime любого из них старше даты последнего коммита в репозитории проекта. Отдельного порога у проверки нет: пятиминутный порог GSD-handoff переиспользуется лишь как допуск на дребезг (`/mm save` пишет файлы, коммит ложится следом) — планка это сам факт «старше коммита».
Планка по режимам — та же, что у лога сессии: между этапами GSD claude.ai vault не перечитывает, контекст восстанавливается из `.planning/`, поэтому в `mid` это предупреждение и на вердикт не влияет. Потерей устаревший vault становится на выходе из сессии — в `end` блокер.
Зачем: 2026-08-08 на RasilshikParser `/gsd-pause-work` обновил `.planning/HANDOFF.json`, и гейт дал `exit 0` — проверка свежести смотрела на GSD-handoff и была права, проверка vault смотрела на чистоту репо и тоже была права. Vault был чист, запушен и отставал по содержанию на 65 часов. Новый чат прочитал состояние трёхдневной давности и предложил уже сделанное. Ни одна из двух проверок не задавала вопрос «а описывают ли vault-файлы сегодняшнюю работу».
Почему так: `/clear` не трогает диск, поэтому между этапами GSD незакоммиченное и незапушенное ничего не теряют — блокировать их значит красить гейт в красный там, где всё в порядке, и приучать себя его пролистывать. Настоящий вопрос mid-режима — записано ли *состояние работы* (GSD-handoff) и доехало ли записанное (vault-репо). Vault-файлы для claude.ai между фазами не перечитываются, поэтому там они лишь предупреждение; спрашиваются в полную силу на выходе из сессии.
## Жёсткие правила
- **Read-only.** Только `git status` / `rev-list` / `log`, mtime файлов и `validate.health` без `--repair`. Никаких коммитов, пушей и правок.
- **`git fetch` не выполняется** — это сеть и мутация refs. Сравнение идёт с последним известным origin: `ahead` точен, `behind` может быть устаревшим (и потому лишь предупреждение).
- **Exit code определяют только блокеры.** Предупреждения на вердикт не влияют никогда.
- **7 forensic-проверок не дублируются** — на них есть ссылка в выводе, когда health не `healthy`.
## Edge cases
- **Проект не под GSD** — GSD-handoff и health помечаются `н/д`, не блокируют.
- **Vault не найден или не git-репо** — vault ищется по имени из `passport.md`, затем по `project_path`, объявленному в артефактах vault, затем по имени папки проекта. Найден, но не git-репо — **блокер** с подсказкой `/mm vault`: без git нет ни синхронизации с Knowledge, ни истории, ни восстановления. Определить не удалось (нет каталога Projects, путь объявляют несколько vault, связь проект↔vault не установлена) — `НЕ ПРОВЕРЕНО`, что считается за блокер. Паспорт называет проект, а папки такой нет — предупреждение `/mm vault`: здесь отсутствие установлено положительно. Проверка свежести vault-файлов во всех этих случаях пропускается (`н/д`) — про сам vault уже сказано выше, со своей подсказкой, а второй голос о том же завёл бы параллельную ветку блокеров.
- **GSD-handoff-файлов нет вовсе** — блокер: состояние работы нигде не записано.
- **`handoff.md` / `dashboard.md` нет в найденном vault** — отсутствующий файл пропускается, вердикт выносится по тем, что есть; если нет ни одного — проверка `н/д`. Отсутствие это не устаревание: сверять не с чем, дефект другой и чинится в другом месте, а блокер здесь краснел бы на vault'ах, заведённых до появления `dashboard.md`.
- **Нет upstream у ветки при наличии remote** — блокер: запушенность установить нельзя.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!