원클릭으로
day-close
Протокол закрытия дня (Day Close). Алиас для /run-protocol close day — симметрия с /day-open.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Протокол закрытия дня (Day Close). Алиас для /run-protocol close day — симметрия с /day-open.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Протокол открытия дня (Day Open). Собирает вчерашние коммиты, issues, заметки, календарь, бота QA, Scout, мир — формирует DayPlan и compact dashboard.
Peer-сессия DP.SC.154 где Kimi = писатель, Claude = напарник. Запускается простой фразой. Включает ОРЗ Opening и Closing, turn-loop, эскалации, Decision Gate (зафиксировать vs реализовать → ревью → проверить → задеплоить), отложенную финализацию и верификацию.
Протокол закрытия месяца (Month Close). Стадия 7 каскада ВДВ v9 (PD.METHOD.008). Запускается в первый Пн месяца, до Strategy Session.
Create a new Pack — guided flow through SPF: choose domain, name Pack, scaffold structure, fill roadmap.
Многотуровый диалог писателя (Claude) с напарником (Kimi) по задаче пилота (DP.SC.154). Ведёт turn-loop, обнаруживает CONSENSUS/ESCALATE, после консенсуса — Decision Gate (зафиксировать vs реализовать → ревью → проверить → задеплоить), синтезирует report.md через Agent tool.
Протокол закрытия недели (Week Close). Ретро 7 дней + carry-over в новую неделю + платформенные шаги (бэкап, dirty repos).
| name | day-close |
| description | Протокол закрытия дня (Day Close). Алиас для /run-protocol close day — симметрия с /day-open. |
| argument-hint | |
| version | 1.0.0 |
| layer | L1 |
| status | active |
| triggers | {"slash":["/day-close"],"phrases":[]} |
| routing | {"executor":"haiku","deterministic":false} |
| agents | single |
| interaction | multi-step |
| gates_required | [] |
| gates_enforced | [] |
| gates_rationale | операционный скилл; WP Gate применим только при создании нового РП, не для операционных вызовов |
Роль: R1 Стратег. Бюджет: ~10 мин. Принцип: SKILL.md = L1 платформенный файл. Пользователь не редактирует напрямую — только через
extensions/.
Протокол закрытия дня (Day Close). Алиас для /run-protocol close day — симметрия с /day-open.
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.
Day Close — кросс-РП инфраструктурная операция. Открыть упрощённую housekeeping-сессию, чтобы session-guard не блокировал коммит файлов, к которым нет привязки к открытому РП (например, backup exocortex/ или архивация DayPlan).
bash ~/IWE/scripts/day-close-step-log.sh start 0.5
bash ~/IWE/scripts/session-guard.sh open --housekeeping day-close --agent claude-code
bash ~/IWE/scripts/day-close-step-log.sh end 0.5
Закрыть её — только после п. 10 (после git push). Если сессия прервалась, TTL 30 мин переименует семафор в .stale при следующем запуске.
Инцидент 17.07: сервер (tsekh-1) и пилот вручную закрыли один день независимо, разъезд обнаружился только на commit+push. Применяется одинаково к обоим путям закрытия — серверный
run_claude day-close(диспетчерscheduler.sh) заходит в этот же SKILL.md, отдельно патчитьscheduler.shне нужно.
bash ~/IWE/scripts/day-close-step-log.sh start 0.6
bash {{HOME_DIR}}/IWE/scripts/day-close-lock.sh acquire
bash ~/IWE/scripts/day-close-step-log.sh end 0.6
day-close-start: YYYY-MM-DD), продолжать к шагу 1.day-close:) — остановиться немедленно, закрыть housekeeping-семафор (bash ~/IWE/scripts/session-guard.sh close --housekeeping day-close --agent claude-code), сообщить пилоту «день уже закрыт», не выполнять шаги 1-10 повторно.day-close-start: от другого агента/хоста) — остановиться, закрыть housekeeping-семафор (та же команда), сообщить пилоту кем и когда, предложить подождать или проверить вручную.acquire пойдёт в рамках той же сессии.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 → определить статусы.
Context-budget (WP-450 Ф3): bash "$IWE_WORKSPACE/DS-my-strategy/scripts/verify-context-budget.sh" | tail -5 → записать в ORZ-файл сессии строку: hot-каркас: ~N ток | M1 ≤20K: PASS/FAIL | M2 ≤12K: PASS/FAIL. FAIL не блокирует закрытие — информативно.
2a. bash ~/IWE/scripts/day-close-step-log.sh start 2a — Обновить WeekPlan (DS-my-strategy/current/Plan W{N}...): статусы РП. Grep по номеру РП — обновить ВСЕ упоминания. bash ~/IWE/scripts/day-close-step-log.sh end 2a [[gate]]
2b. bash ~/IWE/scripts/day-close-step-log.sh start 2b — Обновить DayPlan DS-my-strategy/current/DayPlan YYYY-MM-DD.md: статусы ВСЕХ строк (РП + ad-hoc). Done → зачеркнуть. bash ~/IWE/scripts/day-close-step-log.sh end 2b [[gate]]
2c. bash ~/IWE/scripts/day-close-step-log.sh start 2c — Обновить DS-my-strategy/docs/WP-REGISTRY.md: статусы + даты + done-форматирование. Done-РП → зачеркнуть номер, приоритет, название, репо, бюджет (~~...~~); снять bold с названия; эмодзи ✅ НЕ зачёркивать (см. .claude/rules/formatting.md §Таблицы с РП). Тильду внутри ячеек заменить (~6.5h → 6.5h). bash ~/IWE/scripts/day-close-step-log.sh end 2c [[gate]]
2d. bash ~/IWE/scripts/day-close-step-log.sh start 2d — Обновить DS-my-strategy/inbox/open-sessions.log: удалить строки закрытых сессий. bash ~/IWE/scripts/day-close-step-log.sh end 2d [[gate]]
2e. Governance-синхронизация: новые репо/сервисы за день? → REPOSITORY-REGISTRY, navigation.md, MAP.002. [[narrative]]
2f. WeekReport — ФАКТЫ ДНЯ (новый шаг, ОПТ-5): [[narrative]] Если Week Open завершена (есть WeekReport W{N}.md):
DS-my-strategy/current/WeekReport W{N} YYYY-MM-DD.md<details><summary><b>Итоги {День} {Дата}</b></summary> перед Итоги Пн-Вс (в обратном порядке дат: сегодня → старше)strategy_day → план живёт в WeekPlan) в WeekReport НЕ копировать. Позиция в обратной хронологии: если Пн — ставить в конец (самый старый день недели).2g. WP Context Freshness (БЛОКИРУЮЩЕЕ). [[gate]] bash ~/IWE/scripts/day-close-step-log.sh start 2g. 2a-2c обновляют трекеры (WeekPlan/DayPlan/REGISTRY) — статус-строку, не сам контекст-файл РП. Для каждого РП, тронутого хотя бы одной сессией сегодня (grep "$(date +%Y-%m-%d)" sessions/00-index.md + одиночные Quick Close сессии за день): открыть inbox/WP-N/WP-N.md точечно (grep по номеру/дате сегодняшней сессии → Read с offset вокруг найденной строки, не весь файл целиком — для зонтичных РП полное перечитывание дорого, WP-484 peer-session 2026-07-18-13 находка), свериться с §4/§6 отчётов всех сегодняшних сессий по этому РП — суб-пункты, которые сессия закрыла или нашла уже закрытыми, должны быть отмечены done в контекст-файле, а не только в статус-строке трекера. Несколько сессий трогали один зонтичный РП за день → одно согласованное состояние на конец дня, не разрозненные пере-перезаписи. Source: 2026-07-09-17-close-actualization-gap. bash ~/IWE/scripts/day-close-step-log.sh end 2g
bash ~/IWE/scripts/day-close-step-log.sh start 3
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/чистый.
bash ~/IWE/scripts/day-close-step-log.sh end 3
bash ~/IWE/scripts/day-close-step-log.sh start 4b
Страховочная сетка — ловит то, что не обновили в 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 паттернов, устаревших фактов не найдено»
bash ~/IWE/scripts/day-close-step-log.sh end 4b
bash ~/IWE/scripts/day-close-step-log.sh start 4v
Ловит раздутие индекс-файлов (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 с кратким действием.
bash ~/IWE/scripts/day-close-step-log.sh end 4v
bash ~/IWE/scripts/day-close-step-log.sh start 4-lessons
lessons_*.md)? → удалить из MEMORY.mdbash ~/IWE/scripts/day-close-step-log.sh end 4-lessons
bash ~/IWE/scripts/day-close-step-log.sh start 5
"$IWE_SCRIPTS/day-close.sh"
bash ~/IWE/scripts/day-close-step-log.sh end 5
Скрипт выполняет: Linear sync, downstream sync (update.sh), backup (memory/ + CLAUDE.md + AGENTS.md).
bash ~/IWE/scripts/day-close-step-log.sh start 6
Условный шаг: если
params.yaml → multiplier_enabled: false→ пропустить.
Алгоритм:
~/.wakatime/wakatime-cli --today (CLI не в PATH, бинарник в ~/.wakatime/)SELECT payload->>'human_readable', payload->>'total_seconds' FROM learning.public.domain_event WHERE event_type='coding_time' AND account_id='{DT_USER_ID}' AND external_id='wakatime:{DT_USER_ID}:{YYYY-MM-DD}'payload->>'human_readable' (напр. «9 hrs»); total_seconds для мультипликатора<governance-repo>/sessions/00-index.md, отфильтровать строки за сегодня (grep "$(date +%Y-%m-%d)"), составить полный список peer-сессий с числом ходов. Без этого расчёт занижен ×2. Число ходов — не пересчитывать вручную: turns_count уже посчитан в meta.yaml каждой сессии (grep turns_count sessions/2026-MM/DD/2026-MM-DD-*/meta.yaml) — брать оттуда (WP-484 peer-session 2026-07-18-13).N.Nxlessons_multiplier_peer_sessions_uncounted.md.bash ~/IWE/scripts/day-close-step-log.sh end 6
а) Обзор: таблица «что сделано» (РП × статус)
б) Что нового узнал: captures в Pack, различения, инсайты.
в) Похвала: что получилось, что было непросто но сделано.
г) Не забыто?
${IWE_SCRIPTS}/check-dirty-repos.sh (сканирует ВСЕ репо, включая вложенные DS-IT-systems/, DS-MCP/). Если есть грязные → закоммитить и запушить ДО продолжения. [[gate]]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./slot за сегодня? Если у пользователя есть бот-аккаунт — спросить «Сколько часов саморазвития сегодня?», предложить кнопки 0/0.5/1/2/3/4 или свой ввод. После ответа: подсказать команду /slot N в @aist_pilot_me или @aist_me_bot (handler пишет slot_logged event с source='self_report_daily'). bh.inv обновится при следующем прогоне Аттестатора (04:35 МСК).д) Видео за день: если video.enabled: true → проверить новые видео. [[narrative]]
е) Draft-list: Pack обогащён → предложить черновик? [[narrative]]
ж) Задел на завтра: [[narrative]]
з) Утренние приоритеты (current/priorities.yaml): [[gate]]
{{HOME_DIR}}/IWE/DS-my-strategy/current/priorities.yaml:
# Утренние приоритеты на сегодня — обновлять вечером или утром
# Порядок = убывающий приоритет (первый = самый важный)
# Пустой список = fallback на вчерашний перенос в Day Open
last_updated: "YYYY-MM-DD"
today:
- WP-NNN
- WP-MMM
где last_updated = завтрашняя дата (date -v+1d +%Y-%m-%d 2>/dev/null || date -d "tomorrow" +%Y-%m-%d).Пользователь читает черновик → корректирует → одобряет.
bash ~/IWE/scripts/day-close-step-log.sh start 9a
9a. [[gate]] Дописать секцию «Итоги дня» в DayPlan (шаблон — см. memory/templates-dayplan.md § Шаблон итогов дня).
Валидация «Завтра начать с» (ADR-207): поле не пустое + каждый pending РП упомянут + каждый содержит конкретный next action (не «продолжить работу»).
Postcondition 9a (машинная проверка — НЕ пропускать):
TODAY=$(date +%Y-%m-%d)
grep -l "Итоги дня" ~/IWE/DS-my-strategy/archive/day-plans/DayPlan\ ${TODAY}.md 2>/dev/null \
| xargs grep -l "${TODAY}" 2>/dev/null \
| grep -q . && echo "9a OK" || echo "9a FAIL: итоги не найдены в DayPlan ${TODAY}"
Результат 9a FAIL → шаг НЕ помечать completed, вернуться к записи.
bash ~/IWE/scripts/day-close-step-log.sh end 9a
bash ~/IWE/scripts/day-close-step-log.sh start 9b
9b. [[gate]] Дописать сводку итогов в WeekReport (split, ОПТ-5 WP-297):
DS-my-strategy/current/WeekReport W{N} YYYY-MM-DD.md (дата = первый день недели)<details><summary><b>Итоги {день} {дата}</b></summary>...</details></details> последнего W18-summary, а не в конец файла.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, вернуться к записи.
bash ~/IWE/scripts/day-close-step-log.sh end 9b
bash ~/IWE/scripts/day-close-step-log.sh start 10
cd {{HOME_DIR}}/IWE/DS-my-strategy
git status --short
# НЕ git add -A/git add ./git add -u — AGENTS.md CRITICAL (может захватить работу других агентов)
# Стейджить ТОЛЬКО файлы, изменённые в шагах 2-9 (в массив для pathspec):
DC_FILES=(<каждый файл явным путём: WeekPlan, WeekReport, WP-REGISTRY, archive/day-plans/*, inbox/WP-*.md и т.д.>)
# Если на шаге 7.з обновлялись утренние приоритеты:
DC_FILES+=({{HOME_DIR}}/IWE/DS-my-strategy/current/priorities.yaml)
git add "${DC_FILES[@]}"
git diff --cached --name-only # проверить scope — только day-close файлы
# pathspec после `--`: commit ТОЛЬКО свои файлы, не подметаем чужой индекс
git commit -m "day-close: $(TZ=UTC date +%Y-%m-%d)" -- "${DC_FILES[@]}"
git push
# Закрыть housekeeping-сессию Day Close (открыта в п. 0.5)
bash ~/IWE/scripts/session-guard.sh close --housekeeping day-close --agent claude-code
bash ~/IWE/scripts/day-close-step-log.sh end 10
python3 $HOME/IWE/.claude/scripts/rule-classifier.py
Запускается после коммита. Обогащает журнал ~/logs/rule-engine/YYYY-MM-DD.jsonl → YYYY-MM-DD-classified.jsonl. Exit код игнорировать (launchd тоже запускает раз в час — идемпотентно). Не ждать завершения если >60 сек (kill).
bash ~/IWE/scripts/day-close-step-log.sh start 11
Перед запуском R23 — bash .claude/hooks/rule-engine.sh check-trace-satisfaction --protocol .claude/skills/day-close/SKILL.md (WP-481 Ф5.1: удовлетворённость набора gate протокола, не линейность; narrative-пропуски не блокируют). Без --protocol дефолт — memory/protocol-close.md, который содержит гейты Quick Close/Week Close/Exit Protocol, а не Day Close — блок гарантирован на посторонних гейтах. Шаги 0-10 выше размечены [[gate]]/[[narrative]] (WP-481 Ф5.1) — каждый [[gate]] выведен из соответствующей строки «Чеклист Day Close» ниже, не придуман заново. Verdict block → вернуться на незакрытый gate, потом R23.
Проверка целостности тайминга шагов (WP-484 peer-session 2026-07-18-13). day-close-step-log.sh пишет метки в TZ=UTC — дата в проверке ниже ОБЯЗАНА браться тем же поясом (иначе возле полуночи по местному времени пилота проверка ложно найдёт «0 аномалий», просто заглянув не в ту календарную дату — сама метрика тогда врёт молча, ровно то, против чего она построена): grep "$(TZ=UTC date +%Y-%m-%d)" ~/logs/day-close-integrity.log — есть ли аномалии за сегодня (неизвестный step_id, дубль start, end без start, немонотонность)? И grep -c "$(TZ=UTC date +%Y-%m-%d).*start" ~/logs/day-close-steps.log vs grep -c "$(TZ=UTC date +%Y-%m-%d).*end" ~/logs/day-close-steps.log — совпадает число start/end? Не блокирует закрытие дня — только доверие к метрике за сегодня (см. чеклист ниже).
Запустить sub-agent Haiku в роли R23 Верификатор (context isolation).
Передать: (1) чеклист Day Close, (2) черновик итогов, (3) список обновлённых файлов, (4) результат шага 2g (по каждому РП: контекст-файл поправлен или расхождений не было), (5) JSON вердикта trace-satisfaction, (6) результат проверки целостности тайминга шагов (аномалии из day-close-integrity.log + баланс start/end).
По ❌ — исправить до показа пользователю. Исключение: ❌ только по пункту «тайминг шагов» (последний чеклист-пункт ниже) — не исправлять постфактум (дописывать правдоподобный timestamp запрещено, это и есть тихая подмена данных), просто показать пилоту предупреждение «данные тайминга за сегодня не заслуживают доверия» и продолжить закрытие дня.
bash ~/IWE/scripts/day-close-step-log.sh end 11
day-close-lock.sh acquire вернул 0, день не был закрыт/не закрывался параллельно (финальный коммит day-close: YYYY-MM-DD на шаге 10 сам служит завершающей меткой — отдельного снятия лока не требуется)check-index-health.py — все FAIL/WARN разобраны или помечены skipinbox/WP-N/WP-N.md сверен с §4/§6 сегодняшних отчётов, суб-пункты done отмечены в контекст-файле (не только в трекерах)update.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.current/priorities.yaml обновлён на завтра (или пилот явно пропустил шаг)<details>, обратная хронология) (postcondition 9b: grep подтверждён)day-close-integrity.log за сегодня пуст (нет аномалий) И число start/end в day-close-steps.log за сегодня совпадает — при расхождении просто пометить «данные тайминга за сегодня не заслуживают доверия», не чинить постфактумВсе ✅ (кроме тайминга шагов — этот пункт информативный, не блокирует) → «День закрыт.» Иначе — указать что осталось.