with one click
day-close
// Протокол закрытия дня (Day Close). Алиас для /run-protocol close day — симметрия с /day-open.
// Протокол закрытия дня (Day Close). Алиас для /run-protocol close day — симметрия с /day-open.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | day-close |
| description | Протокол закрытия дня (Day Close). Алиас для /run-protocol close day — симметрия с /day-open. |
| argument-hint | |
| version | 1.0.0 |
Роль: R1 Стратег. Бюджет: ~10 мин. Принцип: SKILL.md = L1 платформенный файл. Пользователь не редактирует напрямую — только через
extensions/.
Day Close = протокол. Исполнять ТОЛЬКО пошагово через TodoWrite. Шаг 0 — ПЕРВОЕ действие: создать список задач прямо сейчас (до любых других действий). Каждый шаг алгоритма → отдельная задача (pending → in_progress → completed). Переход к следующему — ТОЛЬКО после отметки текущего. Шаг невозможен → blocked (не пропускать молча).
Загрузить: bash .claude/scripts/load-extensions.sh day-close before. Exit 0 → Read каждый файл из вывода (alphabetic) → выполнить как первые шаги. Exit 1 → пропустить. Поддерживает extensions/day-close.before.md И extensions/day-close.before.<suffix>.md.
for repo in $(ls {{HOME_DIR}}/IWE/); do
if [ -d {{HOME_DIR}}/IWE/$repo/.git ]; then
commits=$(git -C {{HOME_DIR}}/IWE/$repo log --since="today 00:00" --oneline --no-merges 2>/dev/null \
| grep -vE "^(docs|chore|ci|style|perf|test)(\\(|:| )" \
| grep -vE "memory/|\.claude/rules/|template-sync|backup|reindex" \
|| true)
[ -n "$commits" ] && echo "=== $repo ===" && echo "$commits"
fi
done
Сопоставить коммиты с таблицей «На сегодня» из DayPlan → определить статусы.
2a. Обновить WeekPlan (DS-my-strategy/current/Plan W{N}...): статусы РП. Grep по номеру РП — обновить ВСЕ упоминания.
2b. Обновить DayPlan DS-my-strategy/current/DayPlan YYYY-MM-DD.md: статусы ВСЕХ строк (РП + ad-hoc). Done → зачеркнуть.
2c. Обновить DS-my-strategy/docs/WP-REGISTRY.md: статусы + даты.
2d. Обновить DS-my-strategy/inbox/open-sessions.log: удалить строки закрытых сессий.
2e. Governance-синхронизация: новые репо/сервисы за день? → REPOSITORY-REGISTRY, navigation.md, MAP.002.
EXTENSION POINT (day-close checks): bash .claude/scripts/load-extensions.sh day-close checks — exit 0 → Read каждый файл из вывода (alphabetic) → выполнить. Exit 1 → пропустить. Поддерживает extensions/day-close.checks.md И extensions/day-close.checks.<suffix>.md.
git mv current/DayPlan $(date +%Y-%m-%d).md archive/day-plans/. Если есть DayPlan'ы прошлых дней в current/ (накопленный мусор) — заархивировать их тоже одной командой.mv inbox/WP-{N}-*.md → archive/wp-contexts/MEMORY.md хранит ТОЛЬКО активные РП (in_progress + pending). Done = удалить. Архивация DayPlan ОБЯЗАТЕЛЬНА: следующий Day Open читает carry-over из
archive/day-plans/DayPlan {вчера}.mdи предполагает, чтоcurrent/чистый.
Страховочная сетка — ловит то, что не обновили в Quick Close сессий за день.
grep -nE "→ ждёт|ждёт|dep:|блокер|blocked:|остановлен|ждёт согласования" \
{{HOME_DIR}}/.claude/projects/*/memory/MEMORY.md 2>/dev/null
Для каждого найденного паттерна:
ls DS-my-strategy/inbox/WP-{N}-*.md (если заархивирован — archive/wp-contexts/)DONE, РЕШЕНО, ✅, починил, закрыт, снят) рядом с тем же именем/системой → обновить MEMORY.md, анонс: «Memory drift: [факт] устарел → обновлён»Анонс при 0 изменениях: «Drift-scan: проверено N паттернов, устаревших фактов не найдено»
Ловит раздутие индекс-файлов (MEMORY.md, WP-REGISTRY.md, MAPSTRATEGIC.md, *-registry.md, *-index.md, *-catalog.md). Правило: feedback_memory_index_discipline.md — шапки и колонки индексов = hook-строки, не дамп контекста.
python3 {{HOME_DIR}}/IWE/DS-my-strategy/scripts/check-index-health.py
Для каждого FAIL/WARN в отчёте:
*-changelog.md); в индексе — hook + ссылка.<!-- index-health: skip-cells --> или <!-- index-health: skip --> с обоснованием в комментарии.Анонс при 0 WARN/FAIL: «Index-health: N файлов OK, M skip». При наличии — перечислить FAIL/WARN с кратким действием.
lessons_*.md)? → удалить из MEMORY.md"$IWE_SCRIPTS/day-close.sh"
Скрипт выполняет: Linear sync, downstream sync (update.sh), backup (memory/ + CLAUDE.md).
Условный шаг: если
params.yaml → multiplier_enabled: false→ пропустить.
Алгоритм:
wakatime --today)N.Nxа) Обзор: таблица «что сделано» (РП × статус)
б) Что нового узнал: captures в Pack, различения, инсайты.
в) Похвала: что получилось, что было непросто но сделано.
г) Не забыто?
${IWE_SCRIPTS}/check-dirty-repos.sh (сканирует ВСЕ репо, включая вложенные DS-IT-systems/, DS-MCP/). Если есть грязные → закоммитить и запушить ДО продолжения.bash .claude/scripts/load-extensions.sh day-close checks — exit 0 → Read каждый файл из вывода (alphabetic) → выполнить. Exit 1 → пропустить. Поддерживает extensions/day-close.checks.md И extensions/day-close.checks.<suffix>.md.д) Видео за день: если video.enabled: true → проверить новые видео.
е) Draft-list: Pack обогащён → предложить черновик?
ж) Задел на завтра:
Пользователь читает черновик → корректирует → одобряет.
9a. Дописать секцию «Итоги дня» в DayPlan (шаблон — см. memory/templates-dayplan.md § Шаблон итогов дня).
Валидация «Завтра начать с» (ADR-207): поле не пустое + каждый pending РП упомянут + каждый содержит конкретный next action (не «продолжить работу»).
9b. Дописать сводку итогов в WeekReport (split, ОПТ-5 WP-297):
DS-my-strategy/current/WeekReport W{N} YYYY-MM-DD.md (дата = первый день недели)<details><summary><b>Итоги {день} {дата}</b></summary>...</details>Postcondition 9b (машинная проверка — НЕ пропускать):
TODAY=$(date +%Y-%m-%d)
DAY_NUM=$(date +%-d)
# Сначала проверь WeekReport (split ОПТ-5), fallback на WeekPlan
( grep -rl "Итоги.*${DAY_NUM}" ~/IWE/DS-my-strategy/current/WeekReport\ W*.md 2>/dev/null \
|| grep -rl "Итоги.*${DAY_NUM}" ~/IWE/DS-my-strategy/current/WeekPlan\ W*.md 2>/dev/null ) \
| grep -q . && echo "9b OK" || echo "9b FAIL: итоги не найдены ни в WeekReport, ни в WeekPlan"
Результат 9b FAIL → шаг НЕ помечать completed, вернуться к записи.
python3 $HOME/IWE/.claude/scripts/rule-classifier.py
Запускается после коммита. Обогащает журнал ~/logs/rule-engine/YYYY-MM-DD.jsonl → YYYY-MM-DD-classified.jsonl. Exit код игнорировать (launchd тоже запускает раз в час — идемпотентно). Не ждать завершения если >60 сек (kill).
Запустить sub-agent Haiku в роли R23 Верификатор (context isolation). Передать: (1) чеклист Day Close, (2) черновик итогов, (3) список обновлённых файлов. По ❌ — исправить до показа пользователю.
EXTENSION POINT (day-close checks): bash .claude/scripts/load-extensions.sh day-close checks — exit 0 → Read каждый файл из вывода (alphabetic) → выполнить. Exit 1 → пропустить. Поддерживает extensions/day-close.checks.md И extensions/day-close.checks.<suffix>.md.
check-index-health.py — все FAIL/WARN разобраны или помечены skipupdate.sh выполненarchive/day-plans/ (старые DayPlan'ы в current/ тоже)mv inbox/ → archive/wp-contexts/day-close.sh выполненpython3 ~/IWE/.claude/scripts/fp-stats.py --date $(date +%Y-%m-%d) → если есть ⚠️ REVISE (FP > 20%) — записать в «Завтра начать с» правило + FP%. Флоу ревизии: ~/IWE/PACK-agent-rules/revision-flow.md.<details>, обратная хронология) (postcondition 9b: grep подтверждён)Все ✅ → «День закрыт.» Иначе — указать что осталось.