- Зачем:
- отображать в Claude Code текущий путь, ветку, модель и использование контекста/rate limits.
- Что:
- создан claude/.claude/statusline-command.sh с парсингом JSON и ANSI-форматированием.
- обновлён .gitignore для трекинга нового скрипта.
- Проверка:
- запуск скрипта в рабочей директории проекта: bash claude/.claude/statusline-command.sh.
- Зачем:
- необходимо подключить набор skills для расширения возможностей агента Opencode.
- Что:
- добавлена опция plugin с указанием репозитория superpowers в opencode.json.
- Проверка:
- cat opencode/.config/opencode/opencode.json.
- Зачем:
- локальные MCP/loopback-соединения уходили в SOCKS5 через hproxy.local из-за отсутствия IPv6 в NO_PROXY
- Python-приложения не видели прокси-переменные в lower-case
- Что:
- добавлены ::1 и [::1] в список NO_PROXY для IPv6 loopback
- добавлены lower-case переменные (http_proxy, https_proxy, all_proxy, no_proxy)
- функция proxy_off теперь сбрасывает все прокси-переменные
- Проверка:
- source ~/.bash_functions && proxy_on && echo $NO_PROXY && proxy_off
- Зачем:
- codex-review дублировал adversarial-review с менее проработанными промптами,
а Codex CLI регулярно путался и пытался вызывать сам себя.
- Что:
- удалён скилл codex-review (SKILL.md).
- из TODO.md убраны завершённые задачи, актуальные перефокусированы на adversarial-review.
- в settings.local.json паттерны codex-review-* расширены до codex-* для adversarial-review.
- Проверка:
- git diff HEAD~1 --stat.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- в Plan Mode ревью плана вызывало ~5 permission prompts (git, Write, rm),
хотя для плана git не нужен, а план уже является файлом.
- Что:
- добавлен fast path: явный `plan` или Plan Mode пропускают git-проверки
- base branch определяется лениво (только для code/code-vs-plan)
- resume упрощён через `2>/dev/null` (stderr → /dev/null, stdout = чистое ревью)
- cleanup пропускается в Plan Mode, best-effort вне его
- удалены deprecated permissions claude-diff-* из settings.local.json
- Проверка:
- `/codex-review plan` в Plan Mode — 0 permission prompts
- `/codex-review code` вне Plan Mode — работает как раньше
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- зафиксировать известные проблемы и план выделения скилла в отдельный репо.
- Что:
- добавлен TODO: resume переключает sandbox/reasoning (разобраться с плагином).
- добавлен TODO: pipe в определении base branch.
- добавлен TODO: отдельный репозиторий + статья на Хабр (высокий приоритет).
- Проверка:
- cat TODO.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- официальный плагин OpenAI может содержать идеи для улучшения скилла codex-review.
- Что:
- добавлен пункт TODO со ссылкой на openai/codex-plugin-cc.
- Проверка:
- cat TODO.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- Codex имеет доступ к репо в read-only sandbox и может сам читать diff — сбор в temp-файл избыточен.
- Что:
- шаг 1: автодетект дополнен проверкой branch-изменений (BASE_BRANCH...HEAD).
- шаг 2: добавлено определение base branch через origin/HEAD + fallback main/master.
- шаг 3: diff заменён на --name-only списки (unstaged+staged, branch как fallback).
- шаг 4: промпты передают список файлов и git-команды вместо <diff-path>.
- убраны temp-файлы claude-diff-*, preflight --shortstat, часть cleanup.
- TODO.md: задача отмечена как выполненная.
- Проверка:
- /codex-review code — одобрено Codex за 3 раунда, 0 permission prompts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- Codex и так имеет доступ к репо в read-only sandbox, сбор diff избыточен.
- Что:
- добавлен пункт TODO: передавать список файлов вместо diff.
- Проверка:
- cat TODO.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- планы должны жить в TODO.md, AGENTS.md ссылается на него.
- Что:
- перенесён план по codex-review из AGENTS.md в TODO.md.
- в AGENTS.md добавлена ссылка на TODO.md.
- Проверка:
- cat TODO.md, cat AGENTS.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- Codex-ревью выявило permission bypass через Bash(timeout *) и
сохраняющиеся safety prompts на $() и > в bash-командах.
- Что:
- permission сужен до Bash(timeout 600 codex exec *), rm-паттерны конкретизированы.
- REVIEW_ID использует $RANDOM для энтропии, resume пишет в файл вместо pipe.
- добавлен TODO в AGENTS.md: план замены bash-паттернов на нативные инструменты.
- Проверка:
- /codex-review при следующем использовании.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- скилл генерировал множество промежуточных bash-команд, каждая из которых
требовала ручного подтверждения пользователя.
- poll-loop (while/sleep) мог зависнуть навсегда при сбое Codex.
- Что:
- добавлены permissions для типовых команд скилла (timeout, rm/Write для /tmp).
- uuidgen заменён на date +%s (меньше промптов).
- codex exec обёрнут в timeout 600 (10 мин) вместо poll-loop.
- resume оставлен как primary, свежий exec — fallback.
- добавлен захват session ID в Шаг 4.
- Проверка:
- /codex-review при следующем использовании.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- Claude Code перезаписывает settings.json при каждом «always allow», что создавало
конфликт с managed-копией из dotfiles при повторном запуске install.sh.
- Что:
- settings.json удалён из репозитория, Claude Code владеет им полностью.
- создан settings.local.json (базовые permissions + statusLine), деплоится через симлинк.
- install.sh: копирование + шаблон заменены на ln -sf с бэкапом и guard для edge cases.
- check.sh: проверка обновлена под симлинк вместо «файл + chmod 444».
- тесты: старый тест копирования заменён на 4 новых (симлинк, бэкап, директория, stow-миграция).
- Проверка:
- bash tests/test_install.sh (15 тестов).
- bash agents/.agents/skills/dotfiles-check/check.sh.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- скилл работал только с планами; нужна поддержка ревью кода и автодетект режима.
- Что:
- добавлен автодетект режима: plan, code, code-vs-plan.
- три отдельных промпта для каждого режима ревью.
- модель обновлена на gpt-5.4, reasoning effort = high.
- исправлен сбор diff (условный, не перезаписывающий).
- инструкции переведены на русский, промпты к Codex оставлены на английском.
- добавлен вывод пути к файлу плана для открытия в IDE.
- явные правила парсинга аргументов (model:..., reasoning level, путь к файлу).
- Проверка:
- /codex-review в Claude Code.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- нужен инструмент для итеративного ревью планов реализации через OpenAI Codex CLI.
- Что:
- добавлен SKILL.md для скилла codex-review: цикл до 5 раундов, Claude отправляет план → Codex рецензирует → Claude правит → повторяет до VERDICT: APPROVED.
- Проверка:
- вызвать `/codex-review` во время или после plan mode.
- Зачем:
- порт 57458 попадал в динамический диапазон Hyper-V (49152–65535), что блокировало запуск контейнера на WSL2.
- Что:
- порт изменён с 57458 на 26745 в docker-compose.yml.
- обновлён SEARXNG_URL в конфиге MCP opencode.
- Проверка:
- docker compose up -d && curl -s -o /dev/null -w "%{http_code}" http://localhost:26745/
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- модели в opencode не имели доступа к поиску без платных API.
- Что:
- добавлен docker-compose для SearXNG (localhost:57458, без valkey).
- секрет подставляется из .env через generate-config.sh при старте.
- добавлен MCP-сервер searxng в конфиг opencode.
- env_file с fallback: .env.sample работает из коробки, .env опционален.
- Проверка:
- cd docker/searxng && docker compose up -d.
- curl http://localhost:57458/search?q=test&format=json.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- duckduckgo-mcp (npx) требует bun, которого нет в системе.
- Что:
- убран websearch из permissions (инструмент не существует в opencode).
- команда заменена на uvx duckduckgo-mcp-server (Python, работает без bun).
- Проверка:
- перезапустить opencode, убедиться что инструменты duckduckgo доступны.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- доступ к поиску в интернете для моделей без внешних MCP-серверов.
- Что:
- добавлен "websearch": "ask" в секцию permission.
- Проверка:
- открыть opencode, убедиться что websearch доступен как инструмент.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- существует два проекта opencode, ссылка устраняет путаницу.
- Что:
- название Opencode в таблице AI-инструментов обёрнуто в ссылку на anomalyco/opencode.
- Проверка:
- открыть README.md, убедиться что ссылка ведёт на правильный репозиторий.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- требуется обеспечение работы Claude, Codex и Gemini через корпоративный прокси.
- Что:
- добавлен глобальный параметр proxy.
- настроены переменные окружения для claude-acp, codex-acp и gemini.
- определены исключения для локальных адресов в NO_PROXY.
- Проверка:
- запуск Zed с проверкой подключения к AI агентам.
- Зачем:
- winget install не обновляет PATH текущей сессии; без перезапуска
chezmoi не находит pwsh и запускает скрипты через PS 5.1.
- Что:
- добавлен комментарий между установкой пакетов и chezmoi apply.
- Проверка:
- визуальная проверка README.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- chezmoi запускает скрипт через PS 5.1, где допустимы только
UTF8/Unicode/ASCII и т.д., но не utf8BOM (появился в PS 7).
- Что:
- заменено -Encoding utf8BOM на -Encoding UTF8 (в PS 5.1 пишет с BOM).
- Проверка:
- chezmoi -S "$HOME\dotfiles\chezmoi" apply (на Windows с PS 5.1)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- PS 5.1 читает UTF-8 без BOM как системную кодовую страницу;
байт 0x91 из «Бэкап» интерпретировался как кавычка, ломая парсер.
- Что:
- заменена кириллица в Write-Host/Write-Warning на английский текст
в run_20-configure-windows-terminal.ps1 и run_before_10-migrate-gitconfig.ps1.
- комментарии на русском оставлены (парсер их не обрабатывает).
- Проверка:
- chezmoi -S "$HOME\dotfiles\chezmoi" apply (на Windows)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- скрипт, написанный Codex, отличался по стилю от остального репозитория,
трудно читался из-за вложенных условий и отсутствия визуальной структуры.
- Что:
- добавлены секционные заголовки в стиле profile.ps1 (# ── Name ──────).
- извлечён ask_yes_no() — убрано дублирование промптов.
- WSL-логика вынесена в setup_wsl_hproxy() с flat early returns.
- миграция stow-симлинка вынесена в migrate_claude_stow_symlink().
- добавлены однострочные комментарии к хелперам и нетривиальным веткам.
- Проверка:
- bash tests/test_install.sh
- ./install.sh (идемпотентный повторный прогон)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- скилл ухудшал работу Codex при ревью, добавляя избыточный контекст.
- Что:
- удалены 5 файлов из agents/.agents/skills/differential-review/.
- через симлинки скилл автоматически пропал из Claude и Opencode.
- Проверка:
- grep -r differential-review agents/
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- код Codex работал, но был тяжёл для чтения и сопровождения: 4 naming-конвенции, скрытая мутация $script:changed, 298 строк WT-скрипта почти без комментариев.
- Что:
- profile.ps1: комментарии на русском перед каждой функцией, секционные разделители, wt-here → wt_here (единый snake_case), Get-PublicIp упрощён до Invoke-RestMethod, Chocolatey boilerplate обрезан.
- WT-скрипт: Set/Remove-Prop возвращают bool вместо мутации $script:changed, naming выровнен в PascalCase, хелперы переименованы (Get-Prop, Set-Prop, Test-IsPS7, Test-IsStockPS7), комментарии к каждому блоку логики, вывод на русском.
- Git-миграция: блок комментариев с описанием 4 сценариев, пояснение 3 вариантов ManagedStubs, naming выровнен, вывод на русском.
- Проверка:
- pwsh -NoProfile -Command "[System.Management.Automation.Language.Parser]::ParseFile(...)" — синтаксис всех трёх файлов OK.
- chezmoi -S "$HOME\dotfiles\chezmoi" apply --dry-run --verbose.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- README вырос органически и перестал соответствовать тому, как человек его читает: quick start был на строке 80, требования после инструкций, Windows-справочник внутри установки, прокси и секреты размазаны по 4 местам.
- Что:
- добавлен quick start наверху (3 команды для каждой платформы).
- содержимое сгруппировано по платформе: Linux/WSL (stow), Windows (chezmoi), AI-инструменты.
- прокси, секреты и Git baseline консолидированы в отдельные секции.
- добавлены секции «Справочник» (bash/pwsh функции, точки расширения) и «Дизайн-решения».
- удалены дубли и заглушки (Stow вручную, Zed placeholder, VS Code Server как отдельная секция).
- Проверка:
- визуальный просмотр README.md.
- git diff --check — нет trailing whitespace / CRLF.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- .gitattributes уже нормализует новые файлы; renormalize убрал
CRLF из slides/LICENSE.txt (pre-existing, 201 CR).
- __pycache__/*.pyc убран из tracking, добавлен в .gitignore.
- Удалены тестовые бэкапы ~/.gitconfig.pre-chezmoi.bak-*.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- нужно убрать line-ending noise в репозитории и сделать Windows-слой безопаснее для запуска без установленного pwsh.
- Что:
- добавлена `.gitattributes` с LF-базой для текста и CRLF-исключениями для `.bat` и `.cmd`.
- `README.md` нормализован в LF и quick start дополнен явной установкой PowerShell 7.
- `chezmoi`-скрипты переведены на guard, совместимый с PowerShell 5.1, а запись `settings.json` переведена на `utf8BOM`.
- Проверка:
- `git diff --check`.
- `powershell.exe -NoProfile -ExecutionPolicy Bypass -File chezmoi\\.chezmoiscripts\\run_before_10-migrate-gitconfig.ps1`.
- `powershell.exe -NoProfile -ExecutionPolicy Bypass -File chezmoi\\.chezmoiscripts\\run_20-configure-windows-terminal.ps1`.
- `chezmoi -S C:\\Users\\dmitry\\dotfiles\\chezmoi apply --dry-run --verbose`.
- Зачем:
- нужно перенести привычные proxy_on/proxy_off/myip из bash в pwsh и убрать устаревший codevpn.
- нужно сделать Windows Git baseline проще и предсказуемее, чтобы effective значения и проверки не путались.
- Что:
- в managed profile PowerShell 7 добавлены `proxy_on`, `proxy_off`, `myip` и удалён `codevpn`.
- Git baseline перенесён в `~/.gitconfig`, а `~/.gitconfig.local` оставлен только для локальных и персональных override-настроек.
- README уточнён: legacy-статус Windows PowerShell 5.1, новые helper-функции и корректная команда проверки Git-конфига.
- Проверка:
- `chezmoi -S "$HOME\dotfiles\chezmoi" apply --force`
- `pwsh -NoLogo -Command ''Get-Command proxy_on,proxy_off,myip,Reload-Profile,wt-here; Test-Path function:codevpn''`
- `git config --global --includes --list --show-origin`
- Зачем:
- нужно перенести стабильную Windows-конфигурацию в dotfiles без поломки существующего stow/install.sh workflow для Linux и WSL.
- нужно убрать типичные проблемы Git на Windows, включая line endings, из ручной настройки машины.
- Что:
- добавлен отдельный source dir `chezmoi/` с tiny stub для PowerShell 7 и managed profile в `~/.config/powershell`.
- добавлены идемпотентная настройка Windows Terminal и managed Git baseline с миграцией локальных настроек в `~/.gitconfig.local`.
- обновлён README: описан Windows workflow, helper-функции pwsh и состав Git baseline без персональных данных.
- Проверка:
- `chezmoi -S "$HOME\dotfiles\chezmoi" apply`
- `pwsh -NoLogo -Command ''$PSVersionTable.PSVersion.ToString(); chcp; [Console]::InputEncoding.WebName; [Console]::OutputEncoding.WebName''`
- `git config --global --includes --list --show-origin`
- Зачем:
- нужно было убрать падение install.sh на абсолютных WSL-симлинках и существующей runtime-директории opencode.
- Что:
- убран `--restow` из вызова stow, чтобы install не падал на ссылках `~/.aws` и `~/.azure`.
- настройка `~/.config/opencode` переведена на ручную установку с backup существующего `opencode.json` и сохранением runtime-файлов.
- в tests/test_install.sh добавлены сценарии для WSL-симлинков и существующей директории opencode.
- Проверка:
- bash -n install.sh
- bash -n tests/test_install.sh
- ./tests/test_install.sh
- Зачем:
- нужно было убрать баги install.sh и сделать регрессии воспроизводимыми.
- Что:
- исправлена установка через stow в HOME, миграция ~/.claude и копирование settings.json без разрушения рабочей директории.
- стабилизирована WSL-логика через проверки интерактивности и защиту от дублирования boot command.
- добавлен tests/test_install.sh с regression-сценариями для install.sh.
- Проверка:
- bash -n install.sh
- bash -n tests/test_install.sh
- ./tests/test_install.sh
- Зачем:
- stow tree-folding создавал симлинк ~/.claude → dotfiles/claude/.claude/,
из-за чего Claude Code модифицировал settings.json прямо в репозитории,
а рантайм-данные (sessions, credentials) попадали в каталог dotfiles.
- Что:
- claude убран из stow-пакетов, установка через ручную секцию в install.sh.
- settings.json копируется в ~/.claude/ (оригинал защищён chmod 444).
- добавлена автомиграция: симлинк → директория с переносом рантайм-данных.
- грязный settings.json в репо автоматически сбрасывается через git checkout.
- добавлен .stow-local-ignore для защиты от случайного stow claude.
- check.sh дополнен проверками: ~/.claude — директория, settings.json — копия.
- Проверка:
- bash install.sh (на машине с симлинком — мигрирует, иначе — идемпотентно).
- bash agents/.agents/skills/dotfiles-check/check.sh.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- статус git был засорен логами, базами данных, токенами и кэшами от локально работающих агентов (codex, gemini) и сервера VS Code, что затрудняло анализ реальных изменений.
- Что:
- в .gitignore добавлены правила для codex/.codex/, gemini/.gemini/ и vscode/.vscode-server/.
- добавлены исключения (!) для конфигурационных директорий и файлов (skills, policies, server-env-setup).
- Проверка:
- git status больше не показывает сотни неотслеживаемых локальных файлов.
- Зачем:
- навык не должен предлагаться AI-ассистентом автоматически при каждом изменении кода, так как это дорогостоящая и глубокая операция.
- Что:
- в описании (description) явно указано, что навык предназначен только для ручного вызова (Manual invocation only).
- обновлено поле description текстом "ONLY when explicitly requested by the user".
- Проверка:
- визуальная проверка agents/.agents/skills/differential-review/SKILL.md.
- Зачем:
- старая команда в wsl.conf дублировала записи в /etc/hosts при каждом ребуте.
- настройка hproxy.local не была задокументирована в репозитории.
- Что:
- создан идемпотентный скрипт scripts/setup-hproxy.sh (sed + append).
- в install.sh добавлен интерактивный вопрос о подключении скрипта в wsl.conf.
- в README.md добавлена документация по настройке hproxy.local (NAT и Mirror).
- Проверка:
- cat /etc/wsl.conf, wsl --shutdown, getent hosts hproxy.local.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>