ワンクリックで
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 или «нет пропусков»
Все ✅ → «Неделя закрыта.» Иначе — указать что осталось.