- Зачем:
- нужно было убрать падение 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
- Зачем:
- старая команда в 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>
- Зачем:
- нужен воспроизводимый способ установки на новую машину и защита от перезаписи tracked-файлов ИИ-инструментами.
- Что:
- добавлен install.sh: stow всех пакетов, создание settings.local.json, chmod 444 на settings.json, автопатч .bashrc.
- claude/settings.json разделён на базовый (permissions, statusLine) и локальный (model, effortLevel в settings.local.json).
- добавлен .concept-software.ru в NO_PROXY в server-env-setup и bash_functions.
- README переработан: install.sh как рекомендуемый способ, документация двухуровневых настроек Claude, Developer Mode hint, расширенное описание VS Code прокси.
- Проверка:
- git clone + ./install.sh на чистой машине.
- Зачем:
- расширены возможности AI-ассистентов для работы с документами и презентациями
- Что:
- добавлен skill pdf для работы с PDF файлами
- добавлен skill doc для работы с Word документами
- добавлен skill slides для создания презентаций PowerPoint
- добавлен skill jupyter-notebook для работы с Jupyter ноутбуками
- добавлен skill spreadsheet для работы с таблицами (Excel/CSV)
- изменена модель Claude с sonnet на opus
- Проверка:
- проверка доступности skills в AI-ассистентах
- Зачем:
- предоставить ИИ-агентам контекст по структуре репозитория (Bash, Tmux, Vim, VS Code, AI skills) и принятым в нем стандартам.
- Что:
- создан файл `AGENTS.md` с описанием ключевых компонентов, способов развертывания (`stow`/`chezmoi`) и правил взаимодействия с Git.
- Проверка:
- файл успешно добавлен в репозиторий и доступен для чтения агентами.
- Зачем:
- позволить агенту выполнять базовые операции анализа репозитория без лишних подтверждений.
- Что:
- в `readonly-commands.toml` добавлены правила `allow` для `git status`, `git diff` и `git add`.
- Проверка:
- запуск `git status` не должен вызывать диалог подтверждения (если политики применены).
- Зачем:
- путь /home/dementev/ не работал на других машинах; модель была устаревшей.
- Что:
- команда statusline переведена на переносимый путь ~/.claude/statusline-command.sh.
- модель изменена с opus на sonnet.
- Проверка:
- stow claude && claude — статусбар должен отображаться корректно.
- Зачем:
- ускорение работы агента за счет уменьшения количества запросов на подтверждение безопасных операций.
- Что:
- в `readonly-commands.toml` добавлены разрешения для утилит: `getent`, `ip`, `which`, `command -v`, `stat`, `realpath`, `readlink`, `sort`, `uniq`, `wc`.
- разрешена автоматическая активация навыков (`activate_skill`).
- Проверка:
- выполнение команд из списка без появления диалога подтверждения.
- Зачем:
- обеспечить корректную работу расширений VS Code через прокси-сервер без ручной правки переменных окружения.
- Что:
- обновлен скрипт `server-env-setup`: добавлена проверка доступности `hproxy.local` через `getent`.
- реализован автоматический экспорт переменных `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` и `NO_PROXY` (в обоих регистрах).
- комментарии в скрипте переведены на русский язык.
- в политики Gemini (`readonly-commands.toml`) добавлены разрешения для команд `ls`, `echo` и `[`.
- Проверка:
- запуск `env | grep -i proxy` в терминале VS Code после перезагрузки окна.
- Зачем:
- улучшена читаемость конфигурации за счет логического упорядочивания полей.
- Что:
- поля model, statusLine и effortLevel перемещены в конец файла.
- удалены лишние пустые строки между элементами массива permissions.allow.
- Проверка:
- git diff HEAD~1 -- claude/.claude/settings.json.
- Зачем:
- Gemini CLI ожидает конфигурационные файлы политик в ~/.gemini/policies/.
- Что:
- файлы builtin-readonly.toml и readonly-commands.toml перенесены в новую директорию policies.
- Проверка:
- проверка структуры директорий ~/.gemini/policies/.
- Зачем:
- конфигурационный файл содержит лишние комментарии, которые можно удалить.
- Что:
- удалены комментарии с пояснениями в opencode.json.
- удалены лишние пустые строки для компактности.
- добавлен перевод строки в конце файла.
- Проверка:
- валидация JSON: cat opencode/.config/opencode/opencode.json | jq empty.
- Зачем:
- сделать текст более понятным и акцентировать внимание на поведении в Gemini.
- Что:
- переформулировано примечание для Gemini в описании способа B.
- Проверка:
- просмотр изменений через git diff.
- Зачем:
- необходим дополнительный уровень безопасности для предотвращения случайных изменений в репозитории
- Что:
- создан агент safe-plan для безопасного планирования (read-only)
- создан агент safe-build с защищенным доступом к shell
- установлен default_agent: "safe-plan"
- обновлены глобальные permissions: все операции требуют подтверждения, git push запрещен
- добавлен share: "manual"
- Проверка:
- проверка конфигурации через OpenCode UI
- Зачем:
- требуется передавать переменные из ~/.env.secrets в окружение VS Code Server в WSL.
- Что:
- добавлен stow-пакет vscode с файлом ~/.vscode-server/server-env-setup.
- реализована загрузка ~/.env.secrets через source в режиме fail-open с warning в stderr.
- обновлен README: раздел VS Code (WSL), установка через stow/вручную, reconnect и обработка конфликтов.
- Проверка:
- bash -n vscode/.vscode-server/server-env-setup.
- stow -nvt ~ vscode.
- запуск скрипта с валидным, отсутствующим и битым ~/.env.secrets в изолированном HOME.
- Зачем:
- runtime-файлы Claude Code (cache, credentials, history) попадали в Git через симлинк Stow.
- Что:
- создан файл claude/.claude/.gitignore с исключением всех файлов кроме skills и .gitignore.
- создан симлинк claude/.claude/skills → agents/.agents/skills.
- Проверка:
- git status показывает только claude/.claude/.gitignore как untracked.
- Зачем:
- необходимость корректной обработки amend-операций при коммитах.
- Что:
- добавлен шаг чтения текущего сообщения коммита перед amend.
- добавлен раздел "Специфические правила для Amend" с детальными инструкциями.
- добавлен пример 4 с логикой amend.
- Проверка:
- git log -1 --pretty=%B для проверки формата сообщения.
- Add .chezmoiroot to preserve stow structure
- Add .chezmoiignore to exclude Linux-only packages on Windows
- Add PowerShell scripts for path conversion and skills symlinks
- Update README with Windows installation instructions
- Tested: vim, agents, codex, claude, opencode configs work on Windows
- Зачем:
- новый режим networkingMode=mirror в WSL2 требует другого подхода к определению IP-адреса хоста.
- Что:
- добавлено определение режима WSL через проверку .wslconfig.
- при режиме mirror IP берется из Windows hosts файла.
- при режиме NAT IP вычисляется через маршрут по умолчанию.
- добавлена очистка символов \r при чтении Windows файлов.
- улучшены информативные сообщения для пользователя.
- Проверка:
- вызов функции update_hproxy в обоих режимах WSL2.
- Зачем:
- необходимо автоматически обновлять IP-адрес хоста при перезагрузке WSL или изменении сети.
- Что:
- добавлена функция update_hproxy в bash/.bash_functions.
- функция получает IP хоста через ip route.
- обновляет запись hproxy.local в /etc/hosts.
- Проверка:
- выполнить update_hproxy и проверить /etc/hosts.
- Зачем:
- привести формат commit body к виду, который используется в репозитории и ожидается в UI.
- Что:
- заменен плоский шаблон `Зачем/Что/Проверка` на markdown-список с подпунктами.
- добавлены явные требования к структуре тела коммита и количеству пунктов.
- обновлены примеры и heredoc-шаблон под новый формат.
- Проверка:
- git log -1 --pretty=format:'%s%n%n%b'.
- проверить, что секции выводятся как list в UI.
- Зачем:
- функция git с очисткой переменных прокси больше не нужна и усложняет поведение shell.
- Что:
- закомментирован блок функции git() в bash-конфигурации.
- отключена принудительная очистка HTTP_PROXY/HTTPS_PROXY/ALL_PROXY для вызовов git.
- Проверка:
- source ~/.bashrc.
- type git.
Зачем: Claude загружает user skills из ~/.claude/skills и не видел общий каталог ~/.agents/skills.
Что: добавлен пакет claude с symlink ~/.claude/skills на общие skills, исправлен YAML frontmatter skill conventional-commits, обновлен README с новой схемой и stow командой.
Проверка: stow -nvv claude и проверка лога rg "Loaded 1 unique skills" /tmp/claude-skills-check-2.log.
Зачем: улучшение визуального опыта работы в терминале с отображением git-ветки, venv и статуса последней команды.
Что: создан файл .bash_prompt с цветным двухстрочным prompt, индикацией git-ветки, активного venv и статуса exit code.
Проверка: source ~/.bashrc, проверить отображение в git-репозитории и с активированным venv.
Зачем: имя файла не отражало его содержимое (функции bash), что вводило в заблуждение.
Что: переименован файл, обновлены все ссылки в .bashrc, README.md, .env.example.
Проверка: ln -s dotfiles/bash/.bash_functions ~/.bash_functions, source ~/.bashrc, proxy_on.
Зачем: разделение публичных и приватных переменных окружения для безопасного хранения API ключей.
Что: создан шаблон .env.secrets.example, обновлен .bashrc для загрузки ~/.env.secrets, добавлено исключение в .gitignore, обновлена документация.
Проверка: cp bash/.env.secrets.example ~/.env.secrets, source ~/.bashrc, echo $CONTEXT7_API_KEY.
Зачем: переход на новый формат хранения скиллов для лучшей организации и расширяемости.
Что: удалён .skill.md файл, создана директория skills/conventional-commits/ с новой структурой.
Проверка: ls -la opencode/.config/opencode/skills/
Зачем: настройка рабочего окружения для инструмента opencode с поддержкой conventional commits.
Что: созданы конфигурационные файлы, добавлен bashrc, gitignore, документация и skill для коммитов.
Проверка: git status, проверка наличия файлов в opencode/.config/.
- Зачем:
- нужен централизованный контроль, версионирование и бэкап настроек окружения
- Что:
- создана модульная структура директорий под GNU Stow
- перенесены текущие конфигурации для bash, tmux, vim и zed
- Проверка:
- cd ~/dotfiles && stow -n -S tmux vim bash