بنقرة واحدة
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 за сегодня совпадает — при расхождении просто пометить «данные тайминга за сегодня не заслуживают доверия», не чинить постфактумВсе ✅ (кроме тайминга шагов — этот пункт информативный, не блокирует) → «День закрыт.» Иначе — указать что осталось.