$npx -y skills add TserenTserenov/FMT-exocortex-template --skill day-closeПротокол закрытия дня (Day Close). Алиас для /run-protocol close day — симметрия с /day-open.
| 1 | # Day Close (протокол закрытия дня) |
| 2 | |
| 3 | > **Роль:** R1 Стратег. **Бюджет:** ~10 мин. |
| 4 | > **Принцип:** SKILL.md = L1 платформенный файл. Пользователь не редактирует напрямую — только через `extensions/`. |
| 5 | |
| 6 | ## БЛОКИРУЮЩЕЕ: пошаговое исполнение |
| 7 | |
| 8 | Day Close = протокол. Исполнять ТОЛЬКО пошагово через TodoWrite. |
| 9 | **Шаг 0 — ПЕРВОЕ действие:** создать список задач прямо сейчас (до любых других действий). |
| 10 | Каждый шаг алгоритма → отдельная задача (pending → in_progress → completed). |
| 11 | Переход к следующему — ТОЛЬКО после отметки текущего. Шаг невозможен → blocked (не пропускать молча). |
| 12 | |
| 13 | ## Алгоритм |
| 14 | |
| 15 | ### 0. Extensions (before) |
| 16 | `bash .claude/scripts/load-extensions.sh day-close before` → exit 0: `Read` каждый файл из вывода (alphabetic) → выполнить как первые шаги. Поддерживает `extensions/day-close.before.md` И `extensions/day-close.before.<suffix>.md`. |
| 17 | |
| 18 | ### 0б. Дайджест — token discipline (issue #234) |
| 19 | `bash "$IWE_SCRIPTS/day-close-prepare.sh"` — один вызов вместо ~10 скан-запросов. Пронумерованные секции дайджеста ЗАМЕНЯЮТ скан-команды внутри шагов ниже (сами шаги исполняются — но берут данные из дайджеста, не перезапускают сканы): §1→шаг 1, §2→10b, §3→2d, §4→4б, §5→4в, §6→4, §7→6, §8→6 (prerequisite), §9-10→3, §11→2f. Реагировать только на flagged-пункты; drift-хит, который реально «ждёт X», — не drift. Скрипт отсутствует → legacy: inline-команды шагов. |
| 20 | **Субагентное исполнение (рекомендуется при большой сессии дня):** родитель выполняет только дайджест → диспетчеризацию → согласование (шаг 8) → верификацию; шаги 1-7 исполняет ОДИН general-purpose субагент (sonnet, context isolation) с дайджестом в промпте, шаги 9-10b — субагент-финализатор с `day-close-prepare.sh --verify` вместо inline-grep 9a/9b; шаг 11 (R23) диспетчеризует родитель — субагент не может звать субагентов. Fallback: Agent tool недоступен / субагент упал дважды → исполнять inline, всё равно с дайджестом. |
| 21 | <!-- Детали фаз: day-close-details.md § Шаг 0б --> |
| 22 | |
| 23 | > **Best practice:** запускать `/day-close` в свежей сессии, не хвостом рабочей — протоколу нужны файлы на диске, а не разговор за день. |
| 24 | |
| 25 | ### 1. Сбор данных |
| 26 | Запустить bash-скрипт сбора коммитов за день по всем git-репо в `{{HOME_DIR}}/IWE/`. Сопоставить с таблицей «На сегодня» из DayPlan → определить статусы. |
| 27 | <!-- Детали: day-close-details.md § Шаг 1 --> |
| 28 | |
| 29 | ### 2. Governance batch |
| 30 | **2a.** WeekPlan (`current/Plan W{N}...`): обновить статусы РП — grep по номеру РП, обновить ВСЕ упоминания. |
| 31 | **2b.** DayPlan `current/DayPlan YYYY-MM-DD.md`: статусы ВСЕХ строк (РП + ad-hoc). Done → зачеркнуть. |
| 32 | **2c.** `docs/WP-REGISTRY.md`: статусы + даты. |
| 33 | **2d.** `inbox/open-sessions.log`: удалить строки закрытых сессий. |
| 34 | **2e.** Новые репо/сервисы за день? → REPOSITORY-REGISTRY, navigation.md, MAP.002. |
| 35 | **2f.** WeekReport — если есть `WeekReport W{N}.md`: добавить `<details><summary><b>Итоги {День} {Дата}</b></summary>` **перед** предыдущими итогами (обратная хронология). |
| 36 | <!-- Детали 2f: day-close-details.md § Шаг 2f --> |
| 37 | |
| 38 | **EXTENSION POINT (checks):** `bash .claude/scripts/load-extensions.sh day-close checks` → exit 0: `Read` каждый файл → выполнить. |
| 39 | |
| 40 | ### 3. Архивация |
| 41 | - DayPlan сегодня → `git mv current/DayPlan $(date +%Y-%m-%d).md archive/day-plans/`. DayPlan'ы прошлых дней в `current/` (мусор) — заархивировать тоже. |
| 42 | - Done WP context files → `mv inbox/WP-{N}-*.md → archive/wp-contexts/` |
| 43 | - Done РП → удалить строку из MEMORY.md. MEMORY.md хранит ТОЛЬКО активные РП. |
| 44 | |
| 45 | ### 4б. Memory Drift Scan |
| 46 | Grep MEMORY.md на паттерны «ждёт/блокер/blocked/остановлен». Для каждого: найти WP-context, проверить статус, обновить устаревшее. Анонс при 0 изменениях: *«Drift-scan: N паттернов, устаревших нет»*. |
| 47 | <!-- Детали: day-close-details.md § Шаг 4б --> |
| 48 | |
| 49 | ### 4в. Index Health Check |
| 50 | `python3 ${IWE_TEMPLATE:-{{HOME_DIR}}/IWE/FMT-exocortex-template}/.claude/scripts/check-index-health.py` — для каждого FAIL/WARN: диагностика (дамп vs жанр) → перенести или пометить skip. |
| 51 | <!-- Детали: day-close-details.md § Шаг 4в --> |
| 52 | |
| 53 | ### 4. Lesson Hygiene |
| 54 | Просмотреть «Уроки» в MEMORY.md. Не применялся >1 нед и есть в `lessons_*.md` → удалить. Новый урок → строка в MEMORY.md + `lessons_*.md`. Цель: ≤8 уроков. |
| 55 | |
| 56 | ### 5. Автоматические шаги |
| 57 | `"$IWE_SCRIPTS/day-close.sh"` — Linear sync, downstream sync (update.sh), backup (memory/ + CLAUDE.md). |
| 58 | |
| 59 | ### 6. Мультипликатор IWE |
| 60 | > Условный шаг: если `params.yaml → multiplier_enabled: false` → пропустить. |
| 61 | |
| 62 | WakaTime CLI (`~/.wakatime/wakatime-cli --today`) или Neon-fallback → Бюджет ПО ФАКТУ / WakaTime = мультипликатор `N.Nx`. Prerequisite: прочитать `sessions/00-index.md` (grep сегодня) → список peer-сессий с числом ходов. Sanity check: <1.5x при ≥10 peer-сессий → пересчитать. |
| 63 | <!-- Детали: day-close-details.md § Шаг 6 --> |
| 64 | |
| 65 | ### 7. Черновик итогов (показать пол |