원클릭으로
week-close
Протокол закрытия недели (Week Close). Ретро 7 дней + carry-over в новую неделю + платформенные шаги (бэкап, dirty repos).
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Протокол закрытия недели (Week Close). Ретро 7 дней + carry-over в новую неделю + платформенные шаги (бэкап, dirty repos).
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Протокол открытия дня (Day Open). Собирает вчерашние коммиты, issues, заметки, календарь, бота QA, Scout, мир — формирует DayPlan и compact dashboard.
Протокол закрытия дня (Day Close). Алиас для /run-protocol close day — симметрия с /day-open.
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.
| name | week-close |
| description | Протокол закрытия недели (Week Close). Ретро 7 дней + carry-over в новую неделю + платформенные шаги (бэкап, dirty repos). |
| argument-hint | |
| version | 1.2.0 |
| layer | L1 |
| status | active |
| triggers | {"slash":["/week-close"],"phrases":[]} |
| routing | {"executor":"sonnet","deterministic":false} |
| agents | single |
| interaction | multi-step |
| gates_required | [] |
| gates_enforced | [] |
| gates_rationale | операционный скилл; WP Gate применим только при создании нового РП, не для операционных вызовов |
Роль: R1 Стратег. Бюджет: ~30 мин. Принцип: SKILL.md = L1 платформенный файл. Пользователь не редактирует напрямую — только через
extensions/. Стиль текста: ретро недели и новый WeekPlan читает пилот → весь текст синтезировать в базе разговорного стиля (S0 база + S1 автор, источник DP.SC.050): русский, без машинных меток, главная мысль первой, код РП и путь не подлежащее.
Протокол закрытия недели (Week Close). Ретро 7 дней + carry-over в новую неделю + платформенные шаги (бэкап, dirty repos).
Week Close = протокол. Исполнять ТОЛЬКО пошагово через TodoWrite. Шаг 0 — ПЕРВОЕ действие: создать список задач прямо сейчас (до любых других действий). Каждый шаг алгоритма → отдельная задача (pending → in_progress → completed).
Загрузить: bash .claude/scripts/load-extensions.sh week-close before. Exit 0 → Read каждый файл из вывода (alphabetic) → выполнить как первые шаги. Exit 1 → пропустить. Поддерживает extensions/week-close.before.md И extensions/week-close.before.<suffix>.md.
Предзаготовка (WP-484 Ф4a, если есть). Проверить DS-my-strategy/archive/WeekClose-facts-{YYYY-MM-DD}.md ({YYYY-MM-DD} = понедельник закрывающейся недели). Файл найден → прочитать generated_at из frontmatter. Свежий = generated_at не раньше конца недели (воскресенье того же периода — неделя завершилась → факты полные; прогон в середине недели, например ручной тест, даёт частичный срез — не финальный). Свежий → читать из него §1 (коммиты, календарь), §5b (pending-фазы), §6 (полнота переноса), §7a (здоровье бэкапов), §7d (Memory Validate), semantic-check реестра, счётчик [no-registry-touch] и §9 (данные R-вопросника, шаг 6b) вместо живого сбора ниже (тот же скрипт scripts/week-close-scaffold.sh --as-of YYYY-MM-DD можно прогнать заранее вручную, если ещё не запускался автоматически). Файла нет, или generated_at раньше конца недели → выполнять шаги ниже вручную, как раньше (никогда не блокировать Week Close частичной предзаготовкой — тот же принцип «нет данных → явный шаг, не тихая подмена»).
Коммиты:
for repo in $(ls {{WORKSPACE_DIR}}/); do
if [ -d {{WORKSPACE_DIR}}/$repo/.git ]; then
commits=$(git -C {{WORKSPACE_DIR}}/$repo log --since="last monday 00:00" --until="today 00:00" --oneline --no-merges 2>/dev/null)
[ -n "$commits" ] && echo "=== $repo ===" && echo "$commits"
fi
done
Календарь недели:
bash {{WORKSPACE_DIR}}/scripts/server-calendar.sh --week $(date -v-mon +%Y-%m-%d 2>/dev/null || date -d "last monday" +%Y-%m-%d)
Сверить запланированные встречи/задачи с фактом: что состоялось, что перенеслось, что отменилось. Для задач с отчётами (🔧 backup stress-test и т.п.) — проверить наличие артефакта.
Сопоставить коммиты и календарь с РП в WeekPlan → определить статусы (done/partial/not started).
Условный шаг: если запущен через
strategist.sh week-review(Пн 00:00 launchd) — алгоритм идёт через{{IWE_TEMPLATE}}/roles/strategist/prompts/week-review.md. В интерактивном режиме/week-close(вечер Вс) — выполнять следующие шаги вручную.
3a. Закрытые РП: что сделано, ключевые артефакты, мультипликатор за неделю. 3b. Частичные: % выполнения, что осталось, перенос в W+1. 3c. Не стартовавшие: причина, перенос или закрытие. 3d. Заблокированные: блокер, ETA снятия.
Незавершённые РП с pending/in_progress статусами → перенести в новый WeekPlan W{N+1} (создаст session-prep автоматически в Пн 04:00 либо вручную).
Зачем: carry-over §5 работает на уровне РП (status: in_progress → перенос). Pending фазы внутри Ф-таблиц context-файлов могут потеряться: если родительский РП в
in_progress— pending-фаза не выделяется автоматически; если родительский ушёл вdone— фаза теряется вместе с context-файлом.
bash ${IWE_SCRIPTS}/pending-phases-sweep.sh
Скрипт обходит все {{WORKSPACE_DIR}}/{{GOVERNANCE_REPO}}/inbox/WP-*.md со status: in_progress (или без явного status), извлекает строки Ф-таблицы со статусом ⏳ pending / pending, выводит сводку формата:
WP-NNN: pending-фазы (M):
Фx — <описание фазы>
Фy — <описание фазы>
Для каждой pending-фазы решить: (a) делать на этой неделе → добавить в W{N+1} как явный пункт; (b) переоценить (блокер? устарела?); (c) оставить как есть (если ожидание внешнего события — записать ожидаемый триггер).
Если скрипта нет — fallback: grep -l "status: in_progress" {{WORKSPACE_DIR}}/{{GOVERNANCE_REPO}}/inbox/WP-*.md → для каждого grep -E "⏳.*pending|Ф[0-9]+.*pending".
inbox/fleeting-notes.md за неделю → маршрутизировать невыключенные.lessons_*.md (если есть).bash {{IWE_SCRIPTS}}/check-wp-transfer-completeness.sh --all {{IWE_ROOT}} по inbox/WP-N/ — выводит results_not_captured-флаги (проставленные при закрытии без заполненного results_in) и файлы в подпапках без учёта в основном контекст-файле. Для каждого warning — пилот решает: (a) действительно нужен перенос знания, найти куда; (b) файл технический/устарел, можно оставить; (c) results_in заполнить постфактум. Не блокирует Close.Регламент:
memory/lpf-hypothesis-log.md. Журнал:{{GOVERNANCE_REPO}}/current/hypotheses-log.md.
hypotheses-log.md — отфильтровать записи со статусом «на сверке» И датой сверки ≤ сегодня. Записи со статусом «черновик» (не подтверждённые пилотом Note-Review) — пропустить, они не в цикле сверки.domain_event, инфраструктурные логи, факты из ретро §3-4 этого протокола).Сверка H-NNN). Исходную запись не редактировать.memory/r-questionnaire.md, [[gate]])WP-484 Ф4c. Раньше существовал только в чек-листе внизу файла (не в нумерованном алгоритме) — реальный Close его пропускал, пока
check-trace-satisfactionне блокировал финализацию постфактум на шаге 12. Теперь явный шаг здесь.
Данные предзаготовлены §9 предзаготовки Ф4a (week-close-scaffold.sh), если файл фактов свежий — иначе прогнать behaviour-report.sh --period YYYY-MM и прочитать PACK-agent-rules/incident-journal.md вручную.
3 вопроса (полный текст, критерии и антипаттерны → memory/r-questionnaire.md):
Ответы → раздел «R-ответы» в WeekReport. «Нечего ответить» — валидный ответ (3 недели подряд → вопрос кандидат на удаление, решение пилота).
bash .claude/hooks/rule-engine.sh mark-gate week-close-g3 (WP-484 Ф4d — трассировка по ходу, не постфактум на шаге 12).
WP-484 Ф4d. Гейт "Архивация done-WP" уже проверяется на шаге 12 (
check-trace-satisfaction), но раньше не имел собственного явного шага здесь —archive-done-wp.shвызывается по одному WP за раз из Day Close сразу при закрытии; Week Close нужна sweep-проверка: не остался ли done-WP вinbox/, пропущенный предыдущими Close.
for d in {{WORKSPACE_DIR}}/{{GOVERNANCE_REPO}}/inbox/WP-*/; do
n=$(basename "$d"); f="$d/$n.md"
[ -f "$f" ] && grep -q "^status: done" "$f" && echo "$f"
done
Шаблон намеренно узкий — только канонический
WP-N/WP-N.md(конвенция WP-434), не любой файл внутри папки. Более широкийWP-*/WP-*.mdложно матчит суб-файлы (handoff-заметки, транскрипты занятий), у которыхstatus: doneотносится к суб-артефакту, не к самому РП — проверено живьём при написании этого шага (WP-484 Ф4d): широкий шаблон дал 6 ложных совпадений из 7, только 1 реальный (WP-486/WP-486.md, done и не заархивирован).
Найден файл → архивировать: bash {{IWE_SCRIPTS}}/archive-done-wp.sh <WP_NUM>. Пусто — нечего архивировать, gate удовлетворён без действия.
bash .claude/hooks/rule-engine.sh mark-gate week-close-g4
Обязательный шаг перед бэкапом. Запускает
iwe-backup-check.sh(WP-317 supplement).
bash ${IWE_SCRIPTS}/iwe-backup-check.sh
Если вернул ❌ (exit 2) — устранить критичные gaps ДО бэкапа (устаревший бэкап >14 дней, нет iCloud).
Если вернул ⚠️ (exit 1) — зафиксировать warnings в WeekReport, продолжить.
Если ✅ (exit 0) — бэкап в норме.
Условный шаг: только macOS с iCloud Drive. Запускать ТОЛЬКО если 7a не вернул ❌.
${IWE_SCRIPTS}/backup-icloud.sh
Архив всех файлов IWE (без .git, node_modules, .venv) → iCloud Drive. Хранит 4 последних архива.
${IWE_SCRIPTS}/check-dirty-repos.sh
Если есть грязные репо → закоммитить и запушить ДО завершения Week Close.
bash .claude/hooks/rule-engine.sh mark-gate week-close-g1 (покрывает 7a+7c — WP-484 Ф4d).
bash ${IWE_SCRIPTS}/memory-bleed.sh
Нарушения (HOT-лимит, orphans, superseded_by без ссылки) → исправить до коммита Week Close. Кандидаты на понижение горизонта → информативно, пользователь решает при следующем Month Close.
bash .claude/hooks/rule-engine.sh mark-gate week-close-g2 (WP-484 Ф4d).
Проверка здоровья статической нагрузки контекста. Флаги — информативно, пользователь решает.
echo "=== distinctions.md ===" && wc -l {{WORKSPACE_DIR}}/.claude/rules/distinctions.md
echo "=== MEMORY.md ===" && wc -l {{MEMORY_DIR}}/MEMORY.md
echo "=== memory/ файлы (mtime >14д) ===" && find {{MEMORY_DIR}} -name "*.md" -mtime +14 -not -name "MEMORY.md" -not -path "*/archive/*" | sort
| Метрика | Порог | Действие |
|---|---|---|
| distinctions.md строк | > 80 | Drift-флаг: нарушено правило DP.KR.001 §6 (1-3 строки на различение). Зафиксировать в Week Report, добавить задачу в техдолг. |
| MEMORY.md строк | > 200 | Флаг превышения лимита. Предложить архивацию старых feedback в archive/. |
| memory/*.md без обращения > 14д | > 5 файлов | Предложить понизить horizon: warm (пользователь решает при Month Close). |
WP-337: L2-memory = always-on, но требует периодической проверки.
echo "=== Hindsight container ===" && docker ps --format "table {{.Names}}\t{{.Status}}" | grep iwe-hindsight || echo "❌ Container not running"
echo "=== Hindsight log (last 20) ===" && cat ~/.iwe/hindsight.log 2>/dev/null | tail -20 || echo "❌ No log file"
Проверки:
iwe-hindsight → статус Up (если Down → bash ~/IWE/FMT-exocortex-template/exocortex/hindsight/start.sh)FAIL за неделю. Если есть FAIL → docker logs iwe-hindsight → диагностика (OpenAI key? network? disk?)docker exec iwe-hindsight ls -lh /data/hindsight.db — если >100MB → флаг ротацииRECALL_SKILLS (созданные за неделю)?Split (WP-297 ОПТ-5): факты недели живут в
WeekReport W{N}, не в WeekPlan. WeekPlan — только намерения.
WeekReport W{N} YYYY-MM-DD.md (если нет — создай при следующем session-prep, см. CLAUDE.md §9 правило split).roles/strategist/prompts/week-review.md).Dissatisfactions.md / Strategy.md.bash .claude/hooks/rule-engine.sh mark-gate week-close-g5 (WP-484 Ф4d).
Загрузить: bash .claude/scripts/load-extensions.sh week-close after. Exit 0 → Read каждый файл из вывода (alphabetic) → выполнить. Exit 1 → пропустить. Поддерживает extensions/week-close.after.md И extensions/week-close.after.<suffix>.md.
Спросить пользователя: «Оцени качество недели 1-5:
1 = механически (шёл по инерции, голова не работала)
2 = поверхностно (что было, что сделано — без анализа паттернов)
3 = норма (осознанно, видишь паттерны, без прорывов)
4 = хорошо (конкретные решения, что-то понято по-новому)
5 = прорывная (изменилось понимание системы, ключевые решения)»
Ответ N → включить q:N в commit message следующего шага.
Если пользователь пропускает → commit без q:.
Защита от гонки параллельных сессий (WP-484 Ф4b). Week Close — долгая (~30 мин) ручная сессия; за это время параллельные агентские сессии (Kimi/другие) гарантированно продолжают коммитить в тот же репозиторий (найдено 19.07: финальный коммит пришлось перезапускать 3 раза вручную).
week-close-commit-guard.shоборачивает commit+push тем же принципом, чтоgit-dirty-guard.shуже даёт открытию дня:pull --rebase --autostashперед стейджингом, retry (до 3 попыток) при отклонённом push, коммитит и пушит ТОЛЬКО переданный pathspec — независимо от того, что успело прилететь на origin между попытками.
cd {{WORKSPACE_DIR}}/{{GOVERNANCE_REPO}}
git status --short
# НЕ git add -A/git add ./git add -u — AGENTS.md CRITICAL (может захватить работу других агентов)
# Файлы, изменённые в шагах 1-10 (в массив для pathspec):
WC_FILES=(<каждый файл явным путём: WeekPlan, WeekReport, WP-REGISTRY, inbox/WP-*.md и т.д.>)
bash {{IWE_SCRIPTS}}/week-close-commit-guard.sh "$(pwd)" "week-close: W{N} итоги q:{score}" "${WC_FILES[@]}"
Exit 0 — закоммичено и запушено (возможно после retry). Exit 1 — нечего коммитить (уже сделано на предыдущей попытке этого же шага). Exit 2 — реальный конфликт после исчерпанных попыток или ошибка окружения → разобраться вручную (git status, git log --oneline -5), не игнорировать.
Перед запуском R23 — bash .claude/hooks/rule-engine.sh check-trace-satisfaction --protocol memory/protocol-close.md --section "Week Close" (WP-481 Ф5.1: 5 гейтов, размеченных в protocol-close.md §Week Close — Бэкап, Memory Validate, R-вопросник, Архивация done-WP, Обновить WeekPlan). С WP-484 Ф4d каждый mark-gate week-close-gN вызывается по ходу своего шага (6c, 7c/7a, 7d, 6b, 8 выше) — эта проверка теперь читает уже расставленные по ходу маркеры, а не собирает их одним блоком постфактум. Verdict block → вернуться на незакрытый gate, потом R23. JSON вердикта приложить к вводу R23.
Запустить sub-agent Haiku в роли R23 Верификатор (context isolation). Передать: чеклист, итоги недели, список обновлённых файлов, JSON вердикта trace-satisfaction.
pending-phases-sweep.sh или fallback grep) — решения зафиксированыdocs/Backlog.md обойдён в следующую Strategy Session (либо триггеры активированы, либо явно «B-NNN живёт без триггеров»).after.md выполнены (если есть)find ~/IWE/${IWE_GOVERNANCE_REPO:-DS-strategy}/sessions -type f -name "peer-prompt.md" \
| awk -F/ '{d=$(NF-1); match(d,/^[0-9]{4}-[0-9]{2}-[0-9]{2}/); print substr(d,RSTART,RLENGTH) " " $0}' \
| awk '$1 >= "2026-06-09" {print $2}' \
| xargs -I{} sh -c 'grep -q "Открытие (WP Gate)" "{}" || echo "WP-GATE-MISS: {}"'
# Пропуски фиксировать в inbox/bugs/bug-YYYY-MM-DD-wp-gate-miss.md или «нет пропусков»
Все ✅ → «Неделя закрыта.» Иначе — указать что осталось.