Commit Graph
281 Commits
Author SHA1 Message Date
ddadmin af8632274b docs(skills): добавлены TDD по выбору и линза запахов Фаулера
- Зачем:
  - Исполнитель и ревьюер получают полезные приемы по месту применения.
- Что:
  - Добавлена условная ссылка на /tdd по имени скилла в поручении исполнителю.
  - Из code-review Мэтта Покока перенесены названия запахов как подсказки для суждения.
  - Подключена линза сопровождаемости с учетом правил проекта и соразмерности изменений.
- Проверка:
  - Сверены двенадцать названий запахов с исходным скиллом.
  - Проверены 61 относительная ссылка, 11 якорей и git diff --check.
2026-09-06 10:59:20 -04:00
ddadmin 79617075d9 fix(skills): закреплена передача границ делегирования исполнителю
- Зачем:
  - Необязательный переход к шаблонам позволял пропустить границы вложенного делегирования.
- Что:
  - Добавлен явный переход к мандату Sol и Terra при поручении реализации.
  - Убраны повтор про пользу агента и дублирующее пояснение ссылки на роли.
- Проверка:
  - Сверены накопленные изменения скилла после основного рефакторинга.
  - Проверены 60 относительных ссылок, 10 якорей, YAML и git diff --check.
2026-09-06 10:49:19 -04:00
ddadmin 42d2f3000b docs(skills): добавлен ориентир для выбора ревью постановки
- Зачем:
  - Существенное сомнение в постановке напоминает координатору о независимом взгляде.
- Что:
  - Добавлен ситуативный выбор ревью с конкретным вопросом и ограниченной областью.
- Проверка:
  - Проверена необязательность обзора и пройден git diff --check.
2026-09-06 10:45:48 -04:00
ddadmin 192f3d0aad docs(skills): уточнена работа с группой связанных тикетов
- Зачем:
  - Область применения приема ограничена переданной группой тикетов.
- Что:
  - Добавлен выбор готовых тикетов по существующим зависимостям.
  - Указана проверенная и доступная зависимому исполнителю работа предшественника.
- Проверка:
  - Проверены формулировка границ и git diff --check.
2026-09-06 10:41:10 -04:00
ddadmin 51f65b2471 docs(skills): отделена роль координатора от модели
- Зачем:
  - Скилл поддерживает выбранную пользователем модель координатора, включая Sol.
- Что:
  - Вступление и описание интерфейса адресованы ответственному координатору.
  - Sol и Terra указаны как обычные исполнители с выбором глубины по сложности.
  - Приведены в соответствие роли, шаблон поручения и текущие вопросы журнала.
- Проверка:
  - Проверены YAML, явное включение скилла, 60 относительных ссылок и якоря.
  - Пройден git diff --check; сверены полномочия координатора и исполнителя.
2026-09-06 10:20:33 -04:00
ddadmin 884bf13a12 docs(skills): обновлен журнал опыта и добавлена архивация
- Зачем:
  - Устаревшие наблюдения отделены от вопросов текущей редакции без потери истории.
- Что:
  - Июльский lessons.md дословно сохранен в архиве.
  - Рабочий журнал обновлен под Astra и дополнен условиями переноса старых периодов.
  - Добавлен условный переход к эмпирике из итогового разбора координатора.
- Проверка:
  - Подтверждено побайтовое сохранение прежнего файла в архиве.
  - Проверены 60 относительных ссылок, 9 якорей и git diff --check.
2026-09-06 10:09:08 -04:00
ddadmin c417da847d docs(skills): уточнены отчеты координатора и условия остановки
- Зачем:
  - Партнер видит ход автономной работы и может вовремя вмешаться.
- Что:
  - Добавлены периодические сводки о состоянии и отклонениях.
  - Уточнена остановка зависимой работы для решений за пределами полномочий.
  - Добавлен итоговый разбор пользы делегирования и затрат с разделением измерений и оценок.
- Проверка:
  - Проверены согласованность с правилами триажа и git diff --check.
2026-09-06 10:03:01 -04:00
ddadmin dfebd22d1a docs(skills): разрешена помощь Luna в независимом ревью
- Зачем:
  - Ревьюер может передать ограниченную механику и объемный вывод помощнику.
- Что:
  - В мандат добавлено делегирование Luna с сохранением границ и независимости.
  - Оценка доказательств, находки и итоговый отчет оставлены ревьюеру.
- Проверка:
  - Проверены итоговый мандат и git diff --check.
2026-09-06 09:56:20 -04:00
ddadmin 6aee9715cf docs(skills): уточнено делегирование в поручении исполнителю
- Зачем:
  - Исполнитель получает границы самостоятельного делегирования вместе с задачей.
- Что:
  - Добавлен блок для Sol с вспомогательной работой Luna и ответственностью за запись.
  - Дополнительный исполнитель уровня Sol и переразбиение задачи отнесены к координатору.
  - Уточнен запас контекста на реализацию, проверки и исправления.
- Проверка:
  - Проверены размещение блока и git diff --check.
2026-09-06 09:55:10 -04:00
ddadmin 781a2e2195 docs(skills): добавлено переиспользование контекста субагентов
- Зачем:
  - Сохранено полезное понимание области при переходе к соседней задаче.
- Что:
  - Добавлен выбор существующего агента с обновлением цели и границ.
  - Указаны основания для свежего контекста, включая независимость проверки.
- Проверка:
  - Проверены итоговый абзац и git diff --check.
2026-09-06 09:48:38 -04:00
ddadmin 3a72ce906f refactor(skills): переработан плейбук координации Codex
- Зачем:
  - Актуализирована координация под Astra с сохранением замысла и бюджета контекста.
- Что:
  - Разделены роли Astra, Sol и Luna; выбор приемов оставлен координатору.
  - Сохранены независимое ревью, триаж и проверка соразмерности исправлений.
  - Обновлены нативные механики и необязательная линия Claude CLI.
- Проверка:
  - Проверены Markdown-ссылки, YAML и git diff --check; описано ограничение валидатора.
  - Пройден поведенческий сценарий с тремя тестами и независимое ревью Claude.
  - Перепроверены находки и фактическое продолжение фоновой сессии Claude.
2026-09-06 09:38:57 -04:00
ddadmin 65c802f8fc docs(skills): согласована переработка плейбука Codex
- Зачем:
  - сохранить замысел самостоятельного скилла для Astra-координатора.
- Что:
  - описаны роли, защита контекста и выбор приёмов по задаче.
  - сохранены отдельный триаж и защита от несходящегося ревью.
- Проверка:
  - выполнен горячий обзор против обсуждения и действующего договора триажа.
  - проверены локальные ссылки и git diff --cached --check.
2026-09-06 08:48:58 -04:00
ddadmin 77a535ae0a docs(codex-subagent-playbook): добавлено напоминание о --permission-mode auto
- Зачем:
  - запуск Claude без полного доступа ломает дальнейший процесс ревью и делает работу субагентов бессмысленной.
- Что:
  - в раздел «Запуск Claude-субагентов» добавлено предупреждение о режиме доступа.
- Проверка:
  - git diff agents/.agents/skills/codex-subagent-playbook/SKILL.md.
2026-08-28 16:56:27 -04:00
ddadmin eddaad66a3 docs(claude-subagent-playbook): добавлена колонка literacy в матрицу моделей
- Зачем:
  - при выборе модели для письменных задач нужна оценка качества текста на русском языке.
- Что:
  - в легенду model-matrix.md добавлено определение literacy.
  - в таблицу добавлена колонка literacy с оценками моделей.
- Проверка:
  - git diff agents/.agents/skills/claude-subagent-playbook/references/model-matrix.md.
2026-08-28 05:24:28 -04:00
ddadminandClaude Fable 5 3780ae0293 feat(skills): линия уместности начата shape-проходом до чтения диффа
- Зачем:
  - на прогоне #158 (clickstream v2) три линии ревью дали ноль находок
    на реальной ошибке формы: агрегация ключевого зерна в Python,
    57 567 ключей через границу ClickHouse -> Airflow. Линза из одних
    запахов читает исполнение и не видит решений, а ревью от диффа
    принимает раскладку исполнителя как оглавление.
- Что:
  - в line-taste.md добавлен блок Shape: набросок ожидаемой формы из
    одной постановки до открытия диффа, список недиктованных решений,
    вердикт каждому; набросок и список предъявляются как checks run
    даже при нуле находок.
  - правило оценки распространено на shape-находки; указатели в
    prompt-templates.md называют линзу формой и вкусом.
  - в lessons.md записана эмпирика прогона #158.
- Проверка:
  - вычитка diff линзой writing-for-agents; боевая — следующий прогон
    конвейера: shape-артефакты видны в отчете линии уместности.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-27 15:47:41 -04:00
ddadminandClaude Fable 5 586f02c30b fix(skills): согласие на передачу кода Claude запрашивается до старта
- Зачем:
  - эгресс-политика Codex требует явного разрешения владельца на отправку
    diff внешнему сервису; на прогоне вопрос пришёл в середине ревью, а
    запасные Codex-ревьюеры молча потеряли разнообразие семейств.
- Что:
  - в запуске Claude-субагентов: разрешение на передачу кода запрашивать
    до начала реализации, одним вопросом на весь прогон.
  - в режимах ревью разведены причины недоступности внешней линии:
    техническая — работать доступными, согласийная — сначала спросить
    владельца, замена односемейными теряет основание линии дефектов.
- Проверка:
  - вычитка diff; боевая — следующий прогон конвейера: вопрос о передаче
    кода до реализации, ревью-линии без ручного вмешательства.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-26 17:05:26 -04:00
ddadminandClaude Fable 5 bbacd74c3e fix(skills): уточнён приоритет Codex-специфики над картой ролей базового
- Зачем:
  - на прогоне #156 правило «при расхождении побеждает базовый» снесло
    назначение Fable на вкусовую линию — Codex переключился на craftsman/Opus
    по карте ролей базового плейбука, потребовалось ручное вмешательство.
- Что:
  - приоритет базового ограничен общими механиками конвейера; запуск Claude
    и назначение моделей линиям действуют как записаны в этом файле.
  - у выбора Fable на вкусовую линию названо «почему»: базовый держит Fable
    для оркестрации только на стороне Claude, со стороны Codex она свободна.
- Проверка:
  - вычитка diff; боевая — следующий прогон конвейера без ручной правки
    выбора моделей.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-26 16:09:25 -04:00
ddadminandClaude Fable 5 07a17357f6 docs(skills): codex-subagent-playbook опёрт на базовый плейбук Claude
- Зачем:
  - скилл был заброшен, и Codex тихо подтягивал механики claude-subagent-playbook;
    рабочий промт конвейера #154 вручную докручивал недостающее.
- Что:
  - добавлен раздел «Базовый плейбук»: механики конвейера читаются из
    claude-subagent-playbook, при расхождении побеждает базовый.
  - добавлен раздел «Запуск Claude-субагентов»: permission-mode, свежая сессия
    и resume ревью-линий, --bg с наблюдением, выбор craftsman/deep-reasoner.
  - в приёмку добавлен проход на вычитание после триажа находок.
  - из описания скилла убрано устаревшее «(spawn_agent, TOML-роли)».
- Проверка:
  - вычитка diff; боевая проверка — прогон следующего тикета витрин
    промтом $codex-subagent-playbook.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-26 15:21:40 -04:00
Dmitriy DementievandClaude f7e3f0e889 docs(readme): убраны эмодзи и машинная типографика
- Зачем:
  - README писался моделью, и в нем остались знаки, которых нет на
    клавиатуре: их некому было подставить, потому что markdown правят
    в редакторе кода, а не в Word с автозаменой.
  - декоративные эмодзи в заголовках в русском тексте вне переписки
    не ставят вовсе, это самый однозначный след генерации.
- Что:
  - сняты эмодзи с шести заголовков и из комментария в блоке кода.
  - 21 длинное тире заменено на дефис, 3 пары елочек на прямые кавычки,
    7 стрелок на ->, буква "е" приведена к авторскому стилю в 14 словах.
  - в разделе "Дизайн-решения" отглагольные существительные развернуты
    в глаголы: "форсирование и изменение может сломать" стало
    "если форсировать и менять, можно сломать".
- Проверка:
  - якорных ссылок на заголовки ни внутри README, ни снаружи нет,
    переименование ничего не ломает.
  - блоки кода не тронуты: ни одно тире не попало внутрь фенсов,
    10 фенсов и 62 строки таблиц на месте.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-21 11:18:28 +03:00
Dmitriy DementievandClaude 31f7fddcde fix(skills): ai-text-lint, калибровка типографики и границы правки
- Зачем:
  - калибровка была неверной в обе стороны: скилл снимал находку в
    статье, считая, что текст прошел через редактор с автозаменой, и
    одновременно ловил букву «ё», которая маркером не является вовсе.
  - в режиме правки не было запрета доводить текст до идеала, поэтому
    вычитка делала его ровнее и машиннее исходника.
- Что:
  - линза Клавиатура переписана вокруг простой причины: этих знаков нет
    на клавиатуре. Главным тестом стало не наличие тире, а равномерность:
    умный редактор подставляет неровно, модель безупречно везде.
  - markdown отделен от статьи в Word: подставлять знаки там нечему,
    поэтому тире и елочки в .md машинные сразу.
  - «ё» выведена из маркеров как личная стилистика; вместо нее записано
    предпочтение владельца скилла ее не писать, с исключениями на
    смыслоразличение и имена.
  - эмодзи вне переписки подняты до безусловного маркера и вместе с
    тире в markdown вынесены в блок «везде, среда роли не играет».
  - в Решетку добавлен третий слой, ровность правильности; в границы
    правки добавлены «не вычищать до блеска» и запрет добавлять ошибки.
- Проверка:
  - прогон скилла на секции «Дизайн-решения» из README.md, который и
    вскрыл обе ошибки калибровки.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-21 11:15:38 +03:00
Dmitriy DementievandClaude 12a8d419ec refactor(skills): ai-text-lint переписан как оптика из пяти линз
- Зачем:
  - каталог из 29 паттернов писался, когда модели были слабее; сейчас
    потребители скилла — Opus 5 и GPT 5.6 Sol, которые знают эти правила
    по умолчанию, и 578 строк платили контекстом за no-op.
  - каталог закрыт: он стареет вместе со slop'ом и провоцирует checklist
    theater вместо суждения.
- Что:
  - references/patterns.md удалён, 29 ID сведены к пяти линзам:
    Клавиатура, Голос, Решётка, Вода, Ассистент; скилл ужался с 661
    строки до 145.
  - severity 29x3 сжата в профили трёх сред: красные ячейки
    группируются по среде, а не по паттерну, плюс «не X, а Y» везде.
  - основным режимом стала правка, отчёт вынесен во вторую ветку;
    Голос не правится молча и предъявляется первым, потому что требует
    мнения, случая и цифр автора, которых у скилла нет.
  - каталожную проверку заменил гейт человеческого дубля, плотность
    переведена из гейта в интерпретацию вердикта.
- Проверка:
  - слепой прогон новой версии на трёх входах: AI-проза для статьи,
    AI-сообщение в мессенджер, живое человеческое сообщение.
  - на человеческом тексте ноль ложных находок; десять дефектов
    инструкции, найденных прогоном, исправлены до коммита.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-21 10:55:57 +03:00
Dmitriy DementievandClaude 061a8d062b feat(skills): ai-text-lint ловит потерю голоса и делает самоаудит
- Зачем:
  - линтер умел только вычитать маркеры, а текст без авторского голоса
    палится не хуже текста с em dash'ами: после чистки оставался
    безлико правильный результат.
  - у прогона не было критерия завершения, поэтому проверка сводилась
    к тому, что бросилось в глаза.
- Что:
  - T03 развёрнут в три срабатывания (перечисление без вывода, безличные
    конструкции, абстрактная оценка) с требованием назвать, что конкретно
    добавить, вместо совета «добавить позицию автора».
  - добавлен шаг самоаудита поверх закрытого каталога: находки X01, X02
    с тестом «нельзя записать ни под один ID» и разрешением нулевого
    результата.
  - Шаг 2 получил критерий «каждый паттерн применён к тексту», quick scan
    сведён к паттернам с механической детекцией.
  - S04 стал единственным владельцем однородности ритма; удалены дубль
    T03b, неоперационализируемый T03e, шаг «Ответить на вопросы» и девять
    перефразировок одной ветки в description.
- Проверка:
  - тестов на скиллы в репозитории нет, прогон ручной: вызвать скилл
    на абзаце AI-прозы и на коротком сообщении в мессенджер.
  - git show --stat HEAD: SKILL.md и references/patterns.md.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-21 10:35:34 +03:00
ddadmin cb600bcaa8 feat(chatgpt): добавлен отдельный запуск через прокси
- Зачем:
  - приложение должно явно работать через прокси и сохранять настройку после обновлений.
- Что:
  - добавлены отдельный ярлык ChatGPT Proxy и запускатель на основе proxy-client.
  - исключено смешение прямого и проксированного режимов существующего процесса.
  - установка, документация и автоматические проверки дополнены новым Stow-пакетом.
- Проверка:
  - bash tests/test_chatgpt_proxy_launcher.sh.
  - bash tests/test_proxy_launchers.sh.
  - bash tests/test_install.sh.
2026-08-17 01:09:59 +03:00
Dmitriy DementievandClaude Opus 5 039cf29b95 docs(proxy): запись в TODO исправлена — тест синхронности уже есть
- Зачем:
  - предыдущая запись предлагала написать тест сверки копий NO_PROXY, хотя
    tests/test_proxy_env_sync.py делает ровно это с момента появления копий.
- Что:
  - запись переписана: дублирование под охраной, но на Windows проверка
    падает с ModuleNotFoundError: fcntl, потому что грузит proxy-client
    через runpy.
  - задача заменена на «дать тесту читать константу без исполнения модуля».
  - сохранён нерешённый вопрос про замещение no_proxy_extra: эта ветка не
    покрыта тестом вообще.
- Проверка:
  - python tests/test_proxy_env_sync.py -v — 1 ok, 1 ERROR (fcntl), то есть
    поведение, описанное в записи.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 17:48:24 +03:00
Dmitriy DementievandClaude Opus 5 89cdda99ec docs(proxy): помечено, что no_proxy_extra замещает список по умолчанию
- Зачем:
  - машинный конфиг, собранный копированием примера, молча выкидывает
    из обхода .concept-software.ru и Gitea, а обрыв всплывает как TLS-ошибка.
- Что:
  - в README уточнено, что no_proxy_extra замещает DEFAULT_NO_PROXY_EXTRA
    целиком, а не дополняет его.
  - предупреждение продублировано в обоих примерах конфига, рядом с полем.
  - в TODO.md записано дублирование списка в пяти windows-файлах и
    отсутствие теста синхронности с источником.
- Проверка:
  - bash tests/test_proxy_launchers.sh — 8 проверок пройдено.
  - configparser читает оба примера, значение no_proxy_extra не изменилось.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 17:41:23 +03:00
Dmitry Dementiev 744c4d5fa3 chore(skills): обновлён gitignore для новых скиллов
- Зачем:
  - новые скиллы не должны отображаться как неотслеживаемые файлы.
- Что:
  - в agents/.agents/skills/.gitignore добавлены to-questionnaire/, wait-what/, wizard/, writing-for-agents/.
- Проверка:
  - git status --short больше не показывает эти директории как untracked.
2026-08-08 19:17:47 +03:00
Dmitry Dementiev 094ace145d fix(skills): исправлен frontmatter brainstorm-with-docs
- Зачем:
  - Zed не мог распарсить YAML frontmatter скилла из-за двоеточий внутри строк.
- Что:
  - значение description обёрнуто в двойные кавычки.
  - значение allowed-tools обёрнуто в двойные кавычки.
- Проверка:
  - python3 -c "import yaml, re; yaml.safe_load(re.match('^---\\n(.*?)\\n---\\n', open('agents/.agents/skills/brainstorm-with-docs/SKILL.md').read(), re.DOTALL).group(1))"
2026-08-08 19:04:30 +03:00
Dmitry Dementiev a2ba8a3dc5 docs(skills): добавлено описание cold review в brainstorm-with-docs
- Зачем:
  - расширить методологию ревью артефактов после мозгового штурма.
- Что:
  - добавлен абзац о cold review и порядке работы с его находками в SKILL.md.
- Проверка:
  - git show HEAD:agents/.agents/skills/brainstorm-with-docs/SKILL.md | grep -A 5 'cold review'
2026-08-08 19:00:49 +03:00
Dmitry DementievandClaude Opus 5 bc1ebf3bf5 docs(skills): у сообщения про stdin снова две причины
- Зачем:
  - после правки симптом `No prompt provided via stdin` висел только на
    сломанной среде; читатель в нормальной среде, закрывший вход по правилу
    фонового запуска, прогонит самотест, увидит «непусто» и останется без
    диагноза — этот отказ уже был, запись 2026-08-02 (#39).
- Что:
  - в хвост правила `< /dev/null` вернулась сцепка с сообщением:
    «закроешь — получишь то же сообщение».
- Проверка:
  - `grep -n 'No prompt provided' references/codex-exec.md` — симптом назван
    один раз, обе причины стоят рядом в одном пункте.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 19:16:44 +03:00
Dmitry DementievandClaude Opus 5 c3277b8837 docs(skills): предполёт закрывает и вход, соседний пункт не спорит с ним
- Зачем:
  - под предполётом стоял пункт «stdout/stderr — редиректами» без оговорки,
    и при беглом чтении побеждала ближайшая инструкция; вход ломается той же
    поломкой дескриптора, а правило звало подавать промпт редиректом из файла.
- Что:
  - пункт про промпт ведёт каналом (`cat prompt.md | codex exec … -`) —
    форма работает в любой среде; редирект из файла назван как симптом.
  - хвост про stdout/stderr отсылает к предполёту вместо голого редиректа.
  - самотест читается как «пусто/непусто», а не «18 байт»: номер версии
    подрастёт на знак, проверка от этого не зависит.
- Проверка:
  - `grep -n 'stdin\|редиректами' references/codex-exec.md` — противоречащих
    указаний в «Сквозных правилах» не осталось.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 19:11:16 +03:00
Dmitry DementievandClaude Opus 5 1b73419c1d docs(skills): предполёт в рецептах Кодекса, урок отдал форму сбора
- Зачем:
  - среда сама отвечает за пять секунд, теряет она унаследованный файловый
    дескриптор или нет, поэтому документ несёт проверку, а не ответ; форма
    сбора вывода за вечер менялась дважды и не должна жить в двух местах.
- Что:
  - в «Сквозные правила» codex-exec.md добавлен предполёт: самотест
    `codex --version > f; wc -c f`, ветка «ноль байт» с раздельными каналами
    и `set -o pipefail`, оговорка про `wait`.
  - предполётная проверка песочницы переехала туда же из пункта про AppArmor,
    три рецепта не тронуты — их POSIX-форма и код возврата остались честными.
  - урок 2026-08-06 отдал самотест и форму предполёту, оставил находки:
    дефект `2>&1 | cat`, съеденный каналом код возврата, ненужный `script`.
- Проверка:
  - `false | cat > f; echo $?` — 0, с `set -o pipefail` — 1.
  - `bash -c 'echo "{}"; echo err >&2' 2> >(cat > e) | cat > o` — потоки
    в разных файлах, `jq` по логу проходит.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 19:04:27 +03:00
Dmitry DementievandClaude Opus 5 5665b96641 docs(skills): урок 08-06 — среда названа по имени, потоки не сливаются
- Зачем:
  - «изнутри харнесса» читалось как «в любом агенте»: в Claude Code CLI
    2.1.223 на той же машине и версии всё штатно, и читатель пошёл бы
    чинить работающее. И советованный `2>&1 | cat` кладёт stderr в JSONL:
    `jq` спотыкается, а первой строкой вместо thread.started может встать
    предупреждение конфига.
- Что:
  - отказ назван свойством T3 Code, а не Bash Клода; читателю дан
    самотест `codex --version > f; wc -c f` вместо веры в ярлык.
  - форма сбора вывода заменена на раздельную: stderr через подстановку
    процесса, stdout каналом; добавлена оговорка про `wait`.
- Проверка:
  - раздельная форма прогнана целиком: лог 6 строк, `jq -r .type`
    проходит по всем, thread_id из первой строки, command_execution — 2,
    stderr отдельным файлом, отчёт -o на месте.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 18:49:49 +03:00
Dmitry DementievandClaude Opus 5 1538fdaf4e docs(skills): урок 08-06 переписан — вывод теряет харнесс, не версия
- Зачем:
  - первая редакция объявляла отказ свойством codex-cli 0.146.0. Чистые
    0.146.0 и 0.146.1 на этой же машине пишут в перенаправленный файл
    штатно, значит запись вела следующего читателя чинить рецепты от
    несуществующей поломки.
- Что:
  - запись 2026-08-06 переписана: ось не «терминал против всего», а файл
    против канала, и живёт она в харнессе, а не в версии; одна причина на
    обе прежние находки, обход — канал вместо псевдотерминала.
  - методическая часть усилена: среда — тоже параметр серии, и первый
    подозреваемый при расхождении с документацией инструмента.
  - ловушка недоверенного каталога сохранена.
- Проверка:
  - изнутри харнесса на 0.146.1: `codex --version > f` — 0 байт,
    `| cat > g` — 18; `exec --json … > log` — пусто, `2>&1 | cat > log` —
    7 строк с thread_id и двумя command_execution; без песочницы то же.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 18:41:40 +03:00
Dmitry DementievandClaude Opus 5 82bb9f5501 docs(skills): урок про молчащий Кодекс 0.146.0
- Зачем:
  - на 0.146.0 вызов Кодекса из Bash оркестратора теряет весь stdout, и
    три механизма рецептов слепнут молча: thread_id, сторож застоя и
    проверка отписки. Новый агент со скиллом на входе наткнётся на это
    в первом же прогоне.
- Что:
  - запись 2026-08-06 в lessons.md: отказ и его цена для конвейера,
    промпт только каналом (файл на входе даёт то же сообщение, что и
    закрытый stdin), два проверенных обхода — псевдотерминал и журнал
    прогона Кодекса с thread_id в имени.
  - там же назван кандидат в механизм: рецепты codex-exec.md держат
    правило stdin и приём проверки отписки в нерабочей редакции.
- Проверка:
  - четыре контрольных прогона codex-cli 0.146.0, различающихся одним
    параметром; обходы проверены до записи.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 18:20:52 +03:00
Dmitry Dementiev 28f9e6fdd9 docs(skills): урок про запрет-значение и подъём скретчпада
- Зачем:
  - три случая одной формы за месяц: правило стоит на месте, а
    рассуждение берёт себе исключение — отказ стоит описать до того, как
    он повторится в четвёртый раз.
- Что:
  - запись 2026-08-04 в lessons.md: песочница ревьюера и лечение
    значением, восстановление скретчпада из транскрипта сессии с ценой
    и границами приёма, диагноз владельца про краткость исполнителя.
  - третий открытый вопрос handoff'а закрыт решением владельца и заменён
    ссылкой на журнал.
- Проверка:
  - git log --oneline c18472e.. ; новых строк длиннее 80 символов нет.
2026-08-04 21:53:40 +03:00
Dmitry Dementiev 1fdbcd63df docs(skills): открытые находки холодного ревью — с номерами и доводом
- Зачем:
  - индексы находок жили в скретчпаде и умирают вместе с сессией; из
    прозы handoff'а нельзя было понять, какая находка закрыта, а какая
    ещё ждёт решения.
- Что:
  - FIT-5 убрана из списка оставленных: закрыта коммитом 10f55f3.
  - открытым проставлены номера и довод линии — TECH-3, FIT-4, FIT-11,
    FIT-12; вопросы владельцу помечены как FIT-3 и FIT-10.
  - счётчик коммитов заменён командой: HEAD с тех пор уехал.
- Проверка:
  - git log --oneline c18472e.. ; строк длиннее 80 символов в handoff нет.
2026-08-04 21:48:25 +03:00
Dmitry Dementiev 10f55f35f2 fix(skills): решение координатору идёт с вариантами и ценой
- Зачем:
  - находка FIT-5 холодного ревью: развилка, сжатая до открытого вопроса,
    не даёт принять решение — кода нет в контексте ни у координатора, ни у
    владельца, а исполнитель в этот момент единственный держит картину.
- Что:
  - NEEDS_DECISION в triage-header.md требует варианты и рекомендацию
    исполнителя, а не только формулировку вопроса.
  - требование «понятно без чтения кода» адресовано обеим меткам
    координатора сразу — вместе с OUT_OF_SCOPE.
  - раздел «Пользователь в петле» SKILL.md обязывает координатора нести
    решение владельцу тем же составом.
- Проверка:
  - первым боевым прогоном конвейера: у NEEDS_DECISION в отчёте
    исполнителя есть варианты, их цена и рекомендация.
2026-08-04 21:44:49 +03:00
Dmitry DementievandClaude Opus 5 345caa01ba docs(skills): handoff сессии холодного ревью плейбука
- Зачем:
  - индексы находок и промпты обеих слепых линий жили в скретчпаде
    сессии и её не переживут; открытые вопросы и неотработанные боем
    механики надо было вынести в долговечное место рядом с прежними
    handoff'ами скилла.
- Что:
  - добавлен handoffs/20260803-kholodnoe-revyu-skilla-i-pravki.md:
    устройство холодного ревью, три вопроса к владельцу, находки
    оставленные сознательно (с доводами), пять пунктов «не обкатано
    боем» и список подсказанных скиллов.
  - содержимое коммитов не дублируется — диапазон назван ссылкой
    c18472e..HEAD.
- Проверка:
  - строки ≤80 символов, объём сопоставим с соседними handoff'ами.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 00:22:43 +03:00
Dmitry DementievandClaude Opus 5 a794d240d7 fix(skills): три хвоста холодного ревью — эффорт, архив, висячий указатель
- Зачем:
  - в буллете про эффорт одна и та же ситуация предписывалась дважды:
    `high` за нетривиальную реализацию и тут же `medium` за неё же по
    отревьюированному тикету. При вчерашнем сжатии разрешение 07-21
    превратилось в правило равного ранга.
  - архив уроков оставался связан ссылкой прямо из живого этапа 3, хотя
    его шапка объявляет файл вне пути прогона: 549 строк устаревших
    правил в одном клике от исполняющего агента.
  - после разреза уроков в записи 07-31 осталось «запись выше» про
    вкусовую линзу — сама запись уехала в архив.
- Что:
  - разрешение 07-21 помечено исключением и вернуло слово «допустима».
  - ссылка на архив в SKILL.md заменена ссылкой-цитатой (запись
    2026-07-06); живых markdown-ссылок на архив вне уроков не осталось.
  - висячий указатель в lessons.md получил адрес: запись 2026-07-31 в
    архиве.
- Проверка:
  - grep по markdown-ссылкам архива: остались только шапка lessons.md и
    библиография codex-sandbox-apparmor.md; все ссылки скилла резолвятся.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 00:18:20 +03:00
Dmitry DementievandClaude Opus 5 f481831777 fix(skills): песочница ревьюера задана значением, а не запретом
- Зачем:
  - запрет «read-only ревьюеру не режь» стоял в двух местах и всё равно
    был нарушен при сборке команды для холодного ревью этой же сессии:
    отступление обосновали тем, что у ревью документа руки не нужны.
    Третья копия запрета делу не помогла бы — нужен не запрет, а
    отсутствие выбора.
- Что:
  - правило переписано значением: песочница ревьюера — workspace-write,
    как у исполнителя; линии различает свежесть треда и мандат, а не
    привилегия. Оговорка про руки ушла внутрь обоснования, и там же
    сказано, что ревью документа не исключение.
  - добавлена строка, что ветка та же для любого слепого ревью — кода,
    постановки, документа, самого скилла: рецепт копируют целиком, линзу
    задают файлом линии. Повод собирать команду руками снят.
- Проверка:
  - рецепт ветки ревьюера содержит -s workspace-write и штатную связку
    approval_policy/approvals_reviewer; прочитан целиком после правки.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 00:16:02 +03:00
Dmitry DementievandClaude Opus 5 78ee8bfa48 fix(skills): сторож зависшего треда развязан с веткой исполнителя
- Зачем:
  - сторож был зашит на task-result.md и task-stdout.jsonl, то есть на
    артефакты этапа 3. На ревью и на починке отчёт исполнителя уже лежит
    рядом, цикл не делал ни одного тика и выходил молча — страховка
    отсутствовала ровно там, где прогон длиннее всего.
  - отсутствующий лог был неотличим от неростущего: `|| echo 0` выдавал
    ноль два тика подряд, и неверный путь читался как застой.
- Что:
  - пара файлов вынесена в переменные REPORT и LOG первой строкой, с
    указанием подставлять их от страхуемой ветки.
  - отсутствие лога стало отдельным сигналом NOLOG (редирект создаёт лог
    сразу, так что через тик его не быть не может).
  - дописано, что выход из цикла снимает страховку: после STALLED сторож
    перезапускают руками.
  - поправлено описание ловушки bfs: он ругается в stderr, а пустым
    отдаёт только stdout — «молча» было неверно.
- Проверка:
  - симуляция четырёх исходов: штатное завершение, зависание, неверный
    путь к логу (NOLOG) и ветка ревью при лежащем рядом отчёте этапа 3 —
    последняя как раз и не работала до правки.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 00:14:23 +03:00
Dmitry DementievandClaude Opus 5 05336325db fix(skills): вердикт перепроверки о лечении получил ячейку в формате
- Зачем:
  - вчера в шапку перепроверки дописано требование судить лечение, а
    места под ответ в формате строки нет: перетянувшая правка, которая
    находку закрывает, не ложится ни в CLOSED, ни в NOT_CLOSED, ни в
    статусы отклонения. Обе линии холодного ревью нашли это независимо,
    и тот же долг записан в lessons.md:99-102 («статус вешается на
    находку, не на лечение; механизма по-прежнему нет»).
  - оговорка про «размен свойства на защиту от умысла» обобщила один
    случай на весь класс безопасности — защита от умысла и есть этот
    класс.
- Что:
  - в спецификацию строки добавлен второй вердикт для ID со статусом
    FIXED: PROPORTIONATE или OVERREACH с указанием, что вышло за
    находку; OVERREACH не переводит прогон в ISSUES_REMAIN.
  - оговорка про NOT_CLOSED вернулась к взвешиванию цены и получила
    границу: так закрываются инварианты своего кода, но не находки про
    доступ, данные и деньги.
  - OVERREACH выносится в финальную строку, а prompt-templates.md
    разрешает читать файл перепроверки и по нему — иначе сообщение
    наверх не дошло бы: файл читается только при ISSUES_REMAIN.
- Проверка:
  - FIXED сверен с вокабуляром triage-header.md; статусы перепроверки
    и условие чтения файла согласованы между тремя файлами.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 00:04:57 +03:00
Dmitry DementievandClaude Opus 5 5fa98d4d0b fix(skills): имена вердиктов переименованы на ось этапа, не линии
- Зачем:
  - вчерашнее переименование `review-<task|code>-*` встало на неверную
    ось: `task` и `code` — это две линии этапа 4 (уместность и дефекты),
    а не этапы. Межэтапная коллизия, ради которой всё делалось, осталась
    открытой: у ревью постановки имени вердикта не было вовсе.
  - сборка триажа при этом называла оба вердикта «линия code», хотя один
    из них — вердикт линии уместности.
- Что:
  - вердикты и параметрический блок этапа 4 — `review-impl-*`, этапа 2 —
    `review-spec-*`; общий блок снова один на обе линии этапа.
  - логи ревьюера тоже несут этап (`review-impl-stdout.jsonl`) — раньше
    этап 4 молча затирал лог этапа 2, единственное доказательство для
    проверки «вердикт без находок: работа или отписка».
  - в prompt-templates.md названы имена файлов этапа 2 и добавлено
    предупреждение, что `task` — линия уместности, а не постановка.
  - SKILL.md этапа 5 показывал `вердикт-A.md вердикт-B.md`; заменено на
    реальные имена, комментарий в рецепте ревьюера исправлен.
- Проверка:
  - grep по обменным именам: старых не осталось вне уроков, новые
    согласованы между SKILL.md, prompt-templates.md и codex-exec.md.
  - все markdown-ссылки скилла резолвятся.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 23:52:49 +03:00
Dmitry DementievandClaude Opus 5 abc00a06be refactor(skills): codex-exec переразобран, имена вердиктов по этапам
- Зачем:
  - рецепт Кодекса читают в момент сборки команды; пересказы, хеджи и
    копии уроков внутри него дают место для импровизации — прогон
    2026-07-30 взял `danger-full-access` «на всякий случай» при верном
    рецепте.
  - вердикты звались по семейству (`review-codex.md`), а Codex ревьюирует
    и постановку, и код в одном `$D` — упавший этап 4 оставлял файл этапа
    2, и триаж молча чинил по чужому вердикту.
- Что:
  - codex-exec.md: удалены копия урока про эффорт (экономика xray, казус
    `.dgst`), причинная механика bwrap, повтор про companion и битая
    ссылка «в уроках ниже»; три пересказа эскалации сведены в один;
    ветка ревьюера стала полноценным рецептом; правила одной ветки
    переехали в свои ветки.
  - codex-exec.md: сторож зависшего треда — признак жизни это рост
    stdout.jsonl, а не статус (урок 2026-07-07 в рецепт не доезжал).
  - prompt-templates.md: имена вердиктов и параметров несут этап —
    `review-<task|code>-<codex|claude>.md`, `review-<этап>-params.md`.
  - model-matrix.md: критерий «цена тихой ошибки этапа» стал единым
    источником, claude-agents.md и codex-exec.md на него ссылаются.
  - lessons-archive.md: датированное уточнение — ключи `resume` сверены
    на 0.145.0, `-m`/`-o`/`--json` доступны вопреки записи 2026-07-21.
- Проверка:
  - сверка 51 клаузы по инвентарю (scratchpad), 24 ключевые — grep'ом;
    все markdown-ссылки скилла резолвятся.
  - сторож прогнан на симуляции трёх исходов: штатное завершение,
    зависание на середине, смерть без отчёта.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 23:15:31 +03:00
Dmitry DementievandClaude Opus 5 f650451c5f feat(agents): репо-локальные субагенты плейбука взяты под git
- Зачем:
  - claude-subagent-playbook вызывает deep-reasoner, craftsman и
    fast-worker, но определений в репозитории не было; ступень эффорта
    задаётся только фронтматтером, без файла агент приедет на эффорте
    сессии.
- Что:
  - добавлены .claude/agents/{deep-reasoner,craftsman,fast-worker}.md
    дословно по заготовке references/claude-agents.md (opus/high,
    opus/medium, sonnet/default).
  - в .gitignore правило /.claude/ заменено на /.claude/* с исключением
    !/.claude/agents/ — остальное локальное по-прежнему вне git.
- Проверка:
  - git check-ignore -v .claude/agents/*.md — пусто;
    git check-ignore -v .claude/settings.local.json — правило срабатывает.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 22:15:06 +03:00
Dmitry Dementiev 8218a211b4 refactor(skills): claude-subagent-playbook — старые уроки вынесены в архив
- Зачем:
  - lessons.md вырос до 830 строк, и записи до рефакторинга 31 июля
    описывают другую редакцию скилла — прежнюю эффорт-карту, другой
    состав ролей, заготовку adversarial-reviewer, которой больше нет.
- Что:
  - записи с 2026-07-06 по «казусы координации» 2026-07-31 перенесены в
    references/lessons-archive.md без изменений; живой файл сократился с
    830 до 300 строк.
  - шапка lessons.md объясняет разрез и как двигать границу дальше;
    архив вне пути чтения прогона, ссылка на него только из lessons.md.
  - три указателя на переехавшие записи переведены на архив: казус
    форвардера в SKILL.md и codex-exec.md, sandbox-инцидент в
    codex-sandbox-apparmor.md.
- Проверка:
  - все markdown-ссылки скилла разрешаются в существующие файлы.
2026-08-03 22:08:08 +03:00
Dmitry Dementiev 9642910194 fix(skills): claude-subagent-playbook — правила запуска Кодекса по месту
- Зачем:
  - два отказа вызова из прогона #39 повторялись оттого, что правило
    лежало не там, где собирают команду: -s дописывали в resume по
    образцу exec, а < /dev/null закрывал вход у вызова, который сам
    получает промпт через stdin.
- Что:
  - в codex-exec рецепт resume снабжён строкой о том, что среда треда
    задана при создании, а перечень ручек хода уточнён по проверке на
    codex-cli 0.145.0.
  - к правилу «промпт через stdin» добавлено, что вход этого вызова
    должен оставаться открытым.
  - в SKILL.md этап 6 правило < /dev/null сужено условием «фоновой
    команде, которой нечего читать со входа».
  - в lessons исправлен неверный хвост записи #39 про смену песочницы
    ключом -c sandbox_mode.
- Проверка:
  - codex exec resume <любой-id> -s workspace-write → exit 2.
  - echo "say hi" | codex exec - < /dev/null → No prompt provided via stdin.
2026-08-03 21:48:29 +03:00
Dmitry Dementiev 36fc76ff90 feat(skills): claude-subagent-playbook — исполнитель не берёт ревью на веру
- Зачем:
  - после разворота ролей (реализация Опусом, ревью Кодексом) ревьюер
    продавливает исполнителя формальными решениями: за прогоны #39, #40 и
    #50 около 28 находок и ноль отклонений.
- Что:
  - в triage-header добавлен блок «ревью — свидетельство, а не приказ»:
    отклонение равноправно починке, маршрут ревьюера — предложение.
  - определение NEEDS_DECISION расширено случаем, когда выбор делает сама
    починка, независимо от объёма правки.
  - в recheck-header добавлен суд над лечением: перебор — тоже дефект, а
    NOT_CLOSED требует существующего закрывающего состояния и цены
    альтернативы.
  - в lessons закрыт долг четырёх прогонов и сведена очередь на механизм.
- Проверка:
  - следующий полный прогон плейбука: в триаже должны появиться
    отклонения или закрытия своим маршрутом с доводом.
2026-08-03 21:38:37 +03:00
Dmitry Dementiev c18472e360 docs(skills): claude-subagent-playbook — эмпирика #40 и #50
- Зачем:
  - две записи прогонов остались незакоммиченными; без них теряется фактура,
    ради которой журнал и ведётся, — и повторяющийся долг скилла нечем
    подтвердить.
- Что:
  - запись по #40: шапки соразмерности лечения сработали в третий раз;
    пересечение слепых линий — одно явление, описанное двумя способами.
  - запись по #50: сломанный прибор доезжает до коммита — ошибка измерения
    всплыла трижды на трёх уровнях, и ни разу её не поймал тот, кто мерил.
  - там же уточнение наблюдения владельца про дрейф Кодекса к букве и
    кандидат в механизм; долг с шапками отмечен четвёртым прогоном подряд.
- Проверка:
  - git show --stat; записи читаются как фактура для доработки скилла.
2026-08-02 23:02:32 +03:00
Dmitry DementievandClaude Opus 5 f758e1f802 docs(skills): claude-subagent-playbook — эмпирика #39: суд над лечением
Зачем: два прошлых прогона оставили долг — статус вешался на находку, а
лечение проезжало без суда. В прогоне #39 долг закрыт шапками триажа и
перепроверки, и это стоит помнить вместе с ценой: ручку пришлось собирать
руками в каталоге прогона.

Что: секция от 2026-08-02 про тикет #39 — как сработала ручка соразмерности
(трижды за прогон), почему «10 FIXED, 0 REJECTED» не доказательство, зачем
проверять единственный MAJOR своим зондом при тонком логе перепроверки, и два
отказа вызова Кодекса: закрытый stdin убивает промпт, а `codex exec resume`
не принимает `-s`.

Проверка: чтением; правка только в lessons.md, поведение скилла не менялось.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-02 15:52:29 +03:00