Приземлён блок дивергенции из ROADMAP по итогам второго живого теста
(wayfinder-карта #26 стенда): шаг 5 разделён на веер и конвергенцию,
ширина веера — по весу решения, развилки решаются по месту в интервью.
Триггер «развилка» в description; описание и правила подрезаны по ревью
writing-great-skills. Свидетельства и доводы — в ROADMAP.md.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Зачем.
Фидбек пользователя после дня работы старой редакции с Opus 5-координатором —
готовый список для следующего структурного захода, чтобы не потерялся.
Что.
Запись 2026-07-31 с четырьмя наблюдениями: повторное ревью отревьюенной
постановки и переоценка сложности (правила есть — не держат; кандидат:
перевернуть дефолт на opt-in), код Кодекса не для учеников (боевое
подтверждение оси вкуса), вызов скилла ради механики субагентов вне
конвейера (кандидат: отдельная лёгкая точка входа). Помечено открытым
вопросом следующего захода.
Проверка.
Правка журнала, прогонять нечего.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Зачем.
Отдельный осознанный заход, закрывающий открытые вопросы 2026-07-26 и
2026-07-31: две ручки выбора (модель, эффорт) были про силу, вкус ими не
выражался; константы линий дрейфовали через перепечатку; правила
координации прогона #18 жили только в журнале; у Agent-тула нет ручки
effort — карта была нереализуема разовым вызовом.
Что.
- Третья ось выбора — вкус: references/model-matrix.md (матрица Тео с
поправкой пользователя под gpt-5.6-sol/Opus 5); разрез по подзадачам
на этапе 1, сначала вкусовая часть.
- «Родословная» разведена на семейство (классы находок) и свежесть
(независимость); линия дефектов — по различию, уместности — по умению.
- Ступень эффорта выбирается выбором агента: определений столько,
сколько пар (модель, ступень) — deep-reasoner (high), craftsman
(medium, исполнение брифов: реализация/ревью/перепроверки; поглотил
adversarial-reviewer), fast-worker; карта с обоснованиями — SSOT в
claude-agents.md.
- Константы — файлами в prompts/: line-task/code/rev, self-review;
line-taste — вкусовая линза с 12 запахами Фаулера из /code-review.
- Правила #18 — в механизм: инкрементальная запись индекса, глубина
один и проверка среды в мандате, признак жизни / другой путь вердикта
замене / среда своими глазами в «Сбоях», стенд одной линии, stdin фона.
- lessons дистиллирован (586→533), handoff захода — в handoffs/.
Проверка.
Слепое ревью Опусом по writing-great-skills: CHANGES_REQUIRED
(7 MAJOR, 17 MINOR, 3 NIT) — все закрыты или отклонены с доводом в
lessons; ссылки пакета проверены скриптом, битых нет. Боевой прогон
новой структуры — следующим заходом (чек-лист в handoff).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Зачем.
Разговор о том, кому отдавать вкусовую линию ревью, упирался в ложный
выбор между независимостью и компетентностью. Причина — склейка: различие
семейств нужно для покрытия классов ошибок, свежая сессия для
независимости от рассуждений автора, а называлось это одним словом.
Что.
Заметка в открытый вопрос о рефакторинге: два основания назначения линий,
названная плата и указание решить при рефакторинге, переносить ли это в
этап 4 и эффорт-карту. В репозитории стенда решение уже принято.
Проверка.
Правка документации, прогонять нечего.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Зачем.
Прогон #18 показал, чего не хватает: обе наши ручки выбора (эффорт,
модель) про силу, вкус ими не выражается. Решения приняты, но структурные
правки скилла отложены — чтобы не потерялись, они записаны в открытый
вопрос, который читается при следующем заходе.
Что.
- Третья ось выбора: разрез по подзадачам на этапе планирования, вкусовое
Опусу, руки Кодексу, ось ревью переворачивается. С требованием спросить
у пользователя матрицу и примеры.
- Набор запахов Фаулера из /code-review Мэтта Покока — сильнее самодельных
примеров в блоке Taste; оттуда же правило не сливать находки двух осей.
- Разбор журнала Codex-ревьюера: восстановление стенда ловушкой без
проверки, самовольные subagent-ы вопреки правилу «глубина один».
Проверка.
Правка документации, прогонять нечего.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Зачем.
Запись о прогоне была без раздела «Цифры», которого требует конвенция
файла, и без урока, ради которого прогон и запомнился.
Что.
- Цифры прогона #18: находки по линиям, приёмка на чистых томах.
- Урок: проверка, зелёная из терминала, может виснуть навсегда под
фоновым запуском — приёмка оркестратора нашла то, чего не нашли обе
линии ревью.
Проверка.
Правка документации, прогонять нечего.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Зачем:
- решение 2026-07-23 «в линзу Клод-ревьюера — осмысленность кода» жило только в уроках и в памяти другого проекта, в заготовки промптов не попало: прогон #18 собрал старую линзу, и ревьюер не был обязан спрашивать, не дичь ли решение.
- общий вывод прогона: решение, записанное только в уроки, следующим прогоном не исполняется — ехать может лишь механизм, который подшивается в промпт.
- Что:
- prompt-templates.md: в заготовку line-task.md добавлен блок Taste — формально верное, но по сути неправильное считается находкой, три примера и правило оценки серьёзности по цене жизни с кодом; разрез по родословной переведён с цитаты фразы на именованный блок.
- SKILL.md: описание линии «по задаче» больше не расходится с заготовкой — названа уместность решения и дана отсылка за точными словами.
- lessons.md: две датированные записи (вкусовая линза; казусы координации прогона #18) и открытый вопрос о рефакторинге заготовок линий.
- Проверка:
- слепое ревью правок Опусом по критериям /writing-great-skills: CHANGES_REQUIRED, 5 MAJOR — сокращение списка примеров, ведущее слово, разрез блоком, устаревшая копия в SKILL.md; все замечания по своим правкам закрыты, структурные вынесены в открытый вопрос по решению пользователя.
- подтверждено ревью: расширение линзы не пустышка — прежний текст был целиком про соответствие постановке.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Зачем:
- боевой прогон 2026-07-30 (тикет #12 v2) закрыл открытый вопрос: расширенный доступ Codex не нужен, штатной связки достаточно.
- Что:
- codex-exec.md: пункт про блок классификатора начинается с проверки песочницы; в рецепт исполнителя добавлено «шире не бери»; снят кавеат «боем не обкатано» — сеть и docker-сокет работают при штатной связке on-request + auto_review.
- lessons.md: датированный урок 2026-07-30 с дополнением по итогам прогона.
- Проверка:
- чтение обновлённых разделов; факты — из JSONL-логов прогона тикета #12 (docker manifest inspect и make up завершились completed под workspace-write).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- нужна удобная работа с документами на большом Яндекс Диске из Linux.
- Что:
- собраны выводы о поведении rclone mount на больших хранилищах.
- добавлены команды установки, настройки, проверки и автозапуска в Ubuntu 26.04.
- описаны ограничения кэша, внешних изменений и рекурсивного обхода.
- Проверка:
- выполнена проверка `git diff --cached --check`.
- Зачем:
- копии списка в профилях разошлись: в PowerShell и VS Code не хватало
::1 и [::1], из-за чего один и тот же хост то шёл мимо прокси, то нет.
- Что:
- profile.ps1 и server-env-setup приведены к выдаче proxy-client.
- добавлен tests/test_proxy_env_sync.py — сверяет каждую копию с эталоном
DEFAULT_NO_PROXY_EXTRA и списки обхода Windows между собой.
- в файлах-копиях и README указан эталон и тест, который ловит расхождение.
- Проверка:
- python3 tests/test_proxy_env_sync.py (2 OK, на подложенном расхождении падает).
- python3 tests/test_proxy_client.py (54 OK), bash tests/test_proxy_launchers.sh (8 PASS).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- домашний Gitea стал рабочим репозиторием и трекером вместо
заблокированного GitHub, а через прокси соединение с ним рвётся на TLS.
- Что:
- в DEFAULT_NO_PROXY_EXTRA добавлены dementev.space и .dementev.space
(две формы, так как программы читают список по-разному).
- тот же домен внесён в копии списка: profile.ps1, запускалки
claude/codex, .codex/.env и server-env-setup для VS Code.
- Проверка:
- proxy-client env | grep -i no_proxy — домен виден в обеих переменных.
- python3 tests/test_proxy_client.py (54 OK), bash tests/test_proxy_launchers.sh (8 PASS).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- скилл писался под Opus 4.8; у Opus 5 усилия распределены иначе, high —
верхняя рабочая ступень, xhigh дефолтить смысла нет.
- Что:
- карта в SKILL.md сдвинута на ступень вниз (high — ревью постановок,
medium — слепое ревью и узкие перепроверки, default — механика),
нижняя граница ревью опущена с high до medium.
- добавлены оговорки: неравномерность сдвига, deep-reasoner остаётся на
high, механика едет на Sonnet и эффорт там не крутится.
- в lessons.md записано решение 2026-07-26, помечена как пересмотренная
запись 2026-07-21 и заведён открытый вопрос: чем координатор вообще
выставляет effort (у Agent-тула такого параметра нет).
- пункт про вспомогательных субагентов переписан активно: нет в репо —
предложить создать по заготовке и работать ими.
- Проверка:
- git diff HEAD~1 -- agents/.agents/skills/claude-subagent-playbook/;
сверить, что xhigh в SKILL.md больше не упоминается.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Зачем:
- конфликт с уже существующим конфигом приходилось разбирать руками:
stow печатал "All operations aborted" и откатывал все пакеты сразу.
- Что:
- backup_conflicting_kitty_files заменена на общую
backup_conflicting_stow_targets по списку AVAILABLE_PACKAGES.
- обход повторяет логику stow: отсутствующая цель и каталоги-симлинки
пропускаются вместе с поддеревом, поэтому свёрнутые пакеты
(~/.codex, ~/.vscode-server) не обходятся и не бэкапятся.
- в фикстуру тестов добавлен пакет wezterm, добавлены тесты на конфликт
в HOME и на неприкосновенность содержимого свёрнутого пакета.
- Проверка:
- bash tests/test_install.sh
- Зачем:
- при существующем ~/.config/kitty/kitty.conf stow печатал
"All operations aborted" и откатывал все пакеты, а install.sh падал
по pipefail, не дойдя до настройки claude, opencode и .bashrc.
- Что:
- добавлена backup_conflicting_kitty_files: неуправляемые файлы и чужие
симлинки в ~/.config/kitty уносятся в .bak с временной меткой перед stow.
- собственные симлинки пакета пропускаются, поэтому повторный запуск
install.sh не плодит бэкапы.
- добавлены тесты на существующий файл, чужой симлинк и повторный запуск.
- из таблицы пакетов README убран zed: он не в PACKAGES с ab4c7c7.
- Проверка:
- bash tests/test_install.sh
- Зачем:
- конфиг kitty не был под контролем версий, а свёрнутый stow-каталог
приводил бы к попаданию рантайм-файлов kitty в репозиторий.
- Что:
- добавлен пакет kitty с минимальным kitty.conf и current-theme.conf
вместо 112 КБ sample-конфига от старой версии.
- в install.sh kitty добавлен в PACKAGES, а ~/.config/kitty создаётся
заранее настоящим каталогом, чтобы stow линковал по файлам.
- тест folding переведён с невыпиленного zed на kitty, устаревшая
проверка ~/.config/zed в тесте миграции заменена на assert_not_exists.
- Проверка:
- bash tests/test_install.sh
- Зачем:
- statusLine Claude Code ссылался на скрипт, который install.sh не создавал.
- Что:
- новый statusline-command.sh (округление процентов, порог длины пути,
работа в Git Bash без jq) и его установка в ~/.claude через install.sh.
- Проверка:
- printf '%s' "$json" | bash claude/.claude/statusline-command.sh на тестовых JSON.
- Зачем:
- в таблице настроек Claude не было упоминания скрипта статусной строки,
хотя install.sh теперь копирует его в ~/.claude.
- Что:
- в строку про Claude добавлено «statusline-command.sh → копия из репозитория».
- Проверка:
- grep -n statusline README.md.
- Зачем:
- statusLine ссылался на ~/.claude/statusline-command.sh, которого install.sh
никогда не создавал, а сам скрипт не округлял проценты и резал путь по числу
сегментов вместо длины.
- Что:
- скрипт переписан: округление процентов до целых, порог длины пути в
переменной MAX_PATH_LEN (28), резервный разбор JSON без jq, USER/USERNAME и
HOSTNAME вместо hostname -s, нормализация обратных слэшей — для Git Bash.
- install.sh копирует statusline-command.sh в ~/.claude с правами 755.
- Проверка:
- printf '%s' "$json" | bash claude/.claude/statusline-command.sh на JSON с
дробными процентами, null в rate_limits и без блока rate_limits.
- Зачем:
- конфигурация zed больше не управляется через stow и хранится локально в ~/.config/zed.
- Что:
- убран zed из массива PACKAGES в install.sh.
- Проверка:
- запустить install.sh и убедиться, что симлинк ~/.config/zed не создаётся.
- Зачем:
- требуется единообразное окружение терминала на обеих ОС.
- Что:
- добавлен выбор локальной оболочки и меню запуска по платформе.
- настроены JetBrains Mono и XWayland для корректной рамки окна в GNOME.
- пакет WezTerm включён в установку через stow и описан в README.
- Проверка:
- wezterm show-keys, bash -n install.sh и stow --simulate --restow wezterm.
- Зачем:
- Codex app-server обходил прокси, а Claude удерживал окно Windows Terminal.
- Что:
- добавлен общий ~/.codex/.env и упрощён запуск Codex Desktop.
- ярлык Claude переведён на скрытый запуск через wscript.exe.
- документация приведена в соответствие с новой схемой.
- Проверка:
- соединения ChatGPT.exe и codex.exe направлены через 127.0.0.1:12334.
- проверены синтаксис PowerShell, состояние chezmoi и ярлык; Claude проверен вручную.
- Зачем:
- Claude Proxy не запускался при установке Claude из Microsoft Store.
- Что:
- сохранён прежний запуск обычного claude.exe.
- добавлена активация пакетного приложения по AUMID с параметрами прокси.
- генератор ярлыка получил поддержку значка из пакета Claude.
- Проверка:
- обе ветки запуска завершились с кодом 0.
- сетевой процесс Claude подключился к 127.0.0.1:12334.
- Зачем:
- обновлённое приложение запрещает прямой запуск ChatGPT.exe из WindowsApps.
- Что:
- запуск переведён на активацию пакета по AUMID.
- добавлены параметры Chromium для подключения к hproxy.local.
- описание ярлыка обновлено в README.
- Проверка:
- установленный скрипт завершился с кодом 0.
- сетевой процесс Codex подключился к 127.0.0.1:12334.
- Зачем:
- нужен отдельный запуск Claude Desktop через hproxy.local без системного прокси.
- Что:
- добавлен PowerShell-скрипт с переменными прокси и параметрами Electron.
- добавлено идемпотентное создание ярлыка Claude Proxy через chezmoi.
- описано правило полного закрытия уже запущенного Claude.
- Проверка:
- проверены PowerShell-синтаксис, аргументы запуска и WSLENV через подмену Start-Process.
- двумя прогонами с подменой COM проверена идемпотентность создания ярлыка.
- выполнены chezmoi managed и git diff --cached --check.
- Зачем:
- навык должен автоматически вызываться по описанию, а не только вручную.
- Что:
- удалена опция disable-model-invocation: true из frontmatter.
- Проверка:
- git diff — изменения только в SKILL.md.
- Зачем:
- привести игнор-список в соответствие с текущим набором навыков.
- Что:
- добавлен игнор для find-skills/.
- исправлены записи claude-team-review и adversarial-review (убраны лишние слеши).
- Проверка:
- git status — изменён только .gitignore.
- Зачем:
- раздел «Возможности хоста» обещает reasoning_effort в схеме
spawn_agent, а кавеат о его неприменении жил двумя разделами ниже —
координатор поверил бы в ручку, которой сейчас нет.
- Что:
- в пункт «Управляемая стоимость» добавлена ссылка на кавеат в
«Выборе уровня».
- Проверка:
- перечитка roles.md свежим взглядом после сверки близнецов.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- близнецы развивались порознь и разошлись: проверенные боем правила
клодовского плейбука отсутствовали в кодексовом, и наоборот; промах
скиллом 2026-07-22 показал цену дрейфа.
- Что:
- в кодексовый: одно ревью на версию артефакта, саморевью исполнителя и
сквозная проверка до внешних линий, «Партнёр в петле», цена тихой
ошибки как критерий уровня (заменой, класс задачи — иллюстрация),
проверка внешних фактов первоисточником, кавеат про неработающий
reasoning_effort субагентов;
- в клодовский: «Пределы параллельности» (обратная пара), карта
прогресса поглощена в «Пользователь в петле», автовызов моделью
(описание с триггерами вместо disable-model-invocation);
- lessons обоих: датированные записи сверки, урок 07-13 сжат до
указателя.
- Проверка:
- перечитка диффа свежим взглядом; следующий прогон конвейера — по
автовызванному claude-subagent-playbook.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- вчерашний патч 43a93cd лёг не в тот скилл: уроки клодовского
координатора попали в codex-subagent-playbook — близнец для
координатора на стороне Codex; там «канал codex exec» — бессмыслица,
а правила канала давно живут в claude-subagent-playbook/codex-exec.md.
- Что:
- codex-subagent-playbook: три файла возвращены к состоянию до 43a93cd;
во фронтматтер добавлен disable-model-invocation и адресное описание
против повторного промаха;
- claude-subagent-playbook: запись прогона issue #5 в lessons.md (чужой
скилл, плагин вместо CLI, два писателя, приёмочный сценарий);
в SKILL.md — владение деревом после остановки прежнего владельца и
проверка команд приёмки на живом объекте.
- Проверка:
- git diff 43a93cd^ по трём файлам codex-плейбука — только фронтматтер;
перечитка lessons.md на связность.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- боевой прогон 2026-07-22 (конвейер issue #5 в демо-стенде) прошёл
через плагин-обёртку Codex и воспроизвёл её известные баги; ресёрч
2026-07-07 давно рекомендовал прямой CLI, но в скилл не был поглощён.
- Что:
- roles.md: третий режим «Канал командной строки» — codex exec фоном
у координатора, resume треда, плагин только для интерактива;
- SKILL.md: передача владения только после остановки прежнего
владельца; проверка команд сценария на живом объекте до прогона;
- lessons.md: два датированных наблюдения 2026-07-22, вопрос №9
переориентирован на проверку CLI-канала боем.
- Проверка:
- перечитка трёх файлов на связность и отсутствие дублей;
следующий прогон конвейера — по CLI-каналу.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- правила для внешних плагинов теперь хранятся локально, в самой директории skills.
- Что:
- в корневом .gitignore правила claude-team-review/adversarial-review заменены на .skill-lock.json.
- в agents/.agents/skills/.gitignore добавлены claude-team-review/ и adversarial-review/.
- Проверка:
- git status не показывает untracked файлы skills-плагинов.
- Зачем:
- прокси больше не используется, настройки устарели.
- Что:
- закомментирован параметр proxy.
- удалён блок agent_servers с прокси-переменными для claude-acp, codex-acp и gemini.
- Проверка:
- Zed запускается без ошибок конфигурации.
- Зачем:
- документация должна отражать только действующие правила и планы.
- Что:
- из AGENTS.md удалены устаревшие разделы о Git и общих требованиях.
- из TODO.md удален прежний список задач.
- Проверка:
- git diff --cached --check.
- Зачем:
- нужно понять, подходит ли GitVerse для управления задачами проекта.
- Что:
- описаны Public API, совместимость с GitHub и GitLab и доступные операции.
- сохранены результаты живых проверок и отличие внутреннего API.
- добавлены безопасные команды повторной проверки и решение для dotfiles.
- Проверка:
- git diff --cached --check.
- Зачем:
- пакет должен устанавливаться безопасно без полного dotfiles и обязательного Stow.
- Что:
- в master влита feature-ветка с установщиком, тестами и цельной инструкцией.
- история проектирования сохранена, а рабочая зона .scratch удалена перед слиянием.
- Проверка:
- bash tests/test_proxy_client_install.sh.
- bash tests/test_install.sh.
- Зачем:
- README смешивал пакетный и корневой установщики и оставлял неполные шаги для отдельных сценариев.
- Что:
- выстроен цельный путь установки и настройки для standalone и полного dotfiles.
- дополнена подсказка --no-shell-setup и добавлена регрессионная проверка.
- закрыты критерии приёмки тикета и указана дата завершения.
- Проверка:
- bash tests/test_proxy_client_install.sh.
- bash tests/test_install.sh.
- Зачем:
- пакет должен устанавливаться отдельно от dotfiles без ручной раскладки и опасных замен.
- Что:
- добавлен безопасный установщик со Stow и прямыми симлинками.
- добавлены идемпотентная настройка Bash и защита машинных файлов.
- обновлены инструкция и полный набор интеграционных проверок.
- Проверка:
- env XDG_STATE_HOME=<временный каталог> bash tests/test_proxy_client_full.sh.
- Зачем:
- отдельный пакет должен устанавливаться без общего dotfiles и обязательного stow.
- Что:
- зафиксирована единая раскладка симлинков через stow или ln.
- отделены файлы пакета от машинного конфига и закрытого профиля.
- добавлены правила конфликтов, настройки Bash и проверки установки.
- Проверка:
- git diff --cached --check.
- Зачем:
- рабочие задачи и handoff не должны попадать в итоговое состояние master.
- Что:
- удалены временные материалы разработки proxy-client.
- добавлен .scratch/.gitkeep для сохранения пустого рабочего каталога.
- Проверка:
- git diff --cached --check.
- find .scratch -mindepth 1 -print.
- Зачем:
- свежая установка могла превратить ~/.local в ссылку на пакет и записать Xray в репозиторий.
- Что:
- перед Stow теперь гарантируются настоящие ~/.local/bin и ~/.config/proxy-client без раскрытия посторонних ссылок.
- добавлены регрессионные проверки свежего HOME и посторонней ссылки ~/.local.
- README перестроены вокруг установки, выбора режима и ежедневного использования.
- Проверка:
- bash tests/test_install.sh.
- bash tests/test_proxy_launchers.sh.
- bash -n install.sh tests/test_install.sh.
- git diff --cached --check.
- Зачем:
- нужны фактические результаты ручной приёмки на рабочем профиле.
- Что:
- подтверждены HTTP CONNECT и SOCKS5h на Ubuntu 26.04 с Xray 26.3.27.
- записаны результаты проверки H3 под повторной нагрузкой и после простоя.
- сохранён открытым вопрос проверки на других семействах Linux.
- Проверка:
- 240 последовательных запросов без ошибок, две загрузки по 10 МБ и повторные запросы после 45 секунд простоя.
- git diff --cached --check.
- Зачем:
- прежнее имя выпячивало Xray, хотя клиент поддерживает также внешний прокси, а два каталога конфигурации были неочевидны.
- Что:
- пакет, CLI, конфигурация, состояние, тесты и документация переименованы в proxy-client.
- машинный конфиг, профиль и два явных примера собраны в одном пользовательском каталоге.
- свежая установка защищена от сворачивания каталога конфигурации внутрь репозитория.
- Проверка:
- bash tests/test_proxy_client_full.sh.
- bash tests/test_install.sh.
- ручные start, status и xray run -test; незавершённая сетевая приёмка записана в handoff.
- Зачем:
- в origin/master опубликованы правила разбиения задач и ревью постановки.
- Что:
- объединены правила /to-tickets и шкала ревью с локальной картой effort.
- сохранены уроки headless-xray-proxy и yantar-dags.
- Проверка:
- выполнены трёхсторонняя сверка SKILL.md и git diff --cached --check.