refactor(dotfiles): унифицированы skills и упрощен bash_custom

Зачем: убрать дублирование skills между агентами и сократить кастомный bash слой до реально необходимых настроек.
Что: skill conventional-commits перенесен в agents/.agents/skills, добавлены symlink-bridge пакеты для opencode и codex, обновлен README, очищен bash/.bash_custom от дублирования с системным ~/.bashrc, добавлены базовые zed settings/keymap файлы.
Проверка: stow -nvv bash agents opencode codex zed и bash -n bash/.bash_custom.
This commit is contained in:
ddadmin committed 2026-02-21 19:22:10 +03:00
1 parent c94bcc19de
commit 7cd55ac988
8 files changed
+50 -89

No files matched your search

+33 -15
View File
@@ -5,9 +5,9 @@
## 📦 Содержимое ## 📦 Содержимое
### Bash ### Bash
- **Файл:** `bash/.bashrc` - **Файлы:** `bash/.bash_custom`, `bash/.bash_functions`, `bash/.bash_prompt`
- Настройки shell с поддержкой NVM (Node.js), uv (Python), npm - Подключение кастомных bash-файлов (функции, prompt, секреты) поверх стандартного `~/.bashrc`
- Кастомный двухстрочный prompt (загружается из `~/.bash_prompt`) - Кастомный двухстрочный prompt (подключается из `~/.bash_prompt`)
- Поддержка цветного вывода и автодополнения - Поддержка цветного вывода и автодополнения
### Tmux ### Tmux
@@ -43,6 +43,15 @@
- **zread** — чтение GitHub репозиториев - **zread** — чтение GitHub репозиториев
- **playwright** — браузерная автоматизация - **playwright** — браузерная автоматизация
- Требует переменных окружения (см. `.env.example`) - Требует переменных окружения (см. `.env.example`)
- Скиллы берутся из общего пакета `agents/.agents/skills/` через симлинк `~/.config/opencode/skills`
### Agents (shared skills)
- **Директория:** `agents/.agents/skills/`
- Каноничное место для общих скиллов в формате `~/.agents/skills/<name>/SKILL.md`
### Codex
- **Директория:** `codex/.codex/skills/`
- Тонкие симлинки в `~/.codex/skills/` на общие skills из `~/.agents/skills/`
## 🚀 Установка ## 🚀 Установка
@@ -50,7 +59,12 @@
```bash ```bash
# Bash # Bash
cp bash/.bashrc ~/ cp bash/.bash_custom ~/.bash_custom
cp bash/.bash_functions ~/.bash_functions
cp bash/.bash_prompt ~/.bash_prompt
# Подключите кастомные настройки в ~/.bashrc (один раз)
# [ -f ~/.bash_custom ] && source ~/.bash_custom
source ~/.bashrc source ~/.bashrc
# Tmux # Tmux
@@ -67,6 +81,14 @@ cp zed/.config/zed/* ~/.config/zed/ 2>/dev/null || true
# Opencode # Opencode
mkdir -p ~/.config/opencode mkdir -p ~/.config/opencode
cp opencode/.config/opencode/* ~/.config/opencode/ cp opencode/.config/opencode/* ~/.config/opencode/
# Agents (shared skills)
mkdir -p ~/.agents/skills
cp -r agents/.agents/skills/* ~/.agents/skills/
# Codex (bridge to shared skills)
mkdir -p ~/.codex/skills
ln -snf ~/.agents/skills/conventional-commits ~/.codex/skills/conventional-commits
``` ```
### Stow (рекомендуется) ### Stow (рекомендуется)
@@ -77,7 +99,12 @@ sudo apt install stow
# Применение конфигов # Применение конфигов
cd /path/to/dotfiles cd /path/to/dotfiles
stow bash tmux vim zed opencode stow bash tmux vim zed agents opencode codex
```
Важно: `bash` пакет кладет файлы `~/.bash_custom`, `~/.bash_functions`, `~/.bash_prompt`. Убедитесь, что ваш `~/.bashrc` содержит строку:
```bash
[ -f ~/.bash_custom ] && source ~/.bash_custom
``` ```
## 🔧 Требования ## 🔧 Требования
@@ -90,8 +117,6 @@ stow bash tmux vim zed opencode
## 📝 Дополнительные файлы ## 📝 Дополнительные файлы
Для полной настройки создайте: Для полной настройки создайте:
- `~/.bash_prompt` — кастомный prompt
- `~/.bash_functions` — кастомные функции bash (рекомендуется: симлинк на `dotfiles/bash/.bash_functions`)
- `~/.bash_aliases` — персональные алиасы - `~/.bash_aliases` — персональные алиасы
- `~/.env.secrets` — приватные переменные окружения (API ключи) - `~/.env.secrets` — приватные переменные окружения (API ключи)
@@ -100,10 +125,7 @@ stow bash tmux vim zed opencode
### Кастомные функции bash ### Кастомные функции bash
Файл `bash/.bash_functions` содержит пользовательские функции (proxy_on/off, myip и др.). Файл `bash/.bash_functions` содержит пользовательские функции (proxy_on/off, myip и др.).
Рекомендуется создать симлинк: При использовании `stow bash` он будет доступен как `~/.bash_functions`.
```bash
ln -s /path/to/dotfiles/bash/.bash_functions ~/.bash_functions
```
### Приватные переменные (секреты) ### Приватные переменные (секреты)
@@ -124,7 +146,3 @@ export ZAI_API_KEY="your_zai_api_key_here"
Файл `~/.env.secrets` автоматически подгружается при старте shell. Файл `~/.env.secrets` автоматически подгружается при старте shell.
См. `.env.example` для дополнительной информации. См. `.env.example` для дополнительной информации.
## 📄 Лицензия
MIT — используйте свободно.
@@ -74,4 +74,3 @@ refactor(docker): optimize postgres-bookings image size
Что: switched base image to alpine, removed intermediate build artifacts. Что: switched base image to alpine, removed intermediate build artifacts.
Проверка: docker build and check image size. Проверка: docker build and check image size.
EOF EOF
+12 -71
View File
@@ -1,81 +1,22 @@
# ============================================================================== # Дополнительные настройки, которые не хочется держать прямо в ~/.bashrc.
# 1. БАЗОВЫЕ НАСТРОЙКИ SHELL # Предполагается, что ~/.bashrc уже содержит базовую логику Ubuntu (history,
# ============================================================================== # checkwinsize, dircolors/aliases, bash-completion, и т.п.) и просто sources
# этот файл.
# Прерываем выполнение, если shell не интерактивный (например, скрипты) # Прерываем выполнение, если shell не интерактивный (например, скрипты).
case $- in case $- in
*i*) ;; *i*) ;;
*) return;; *) return ;;
esac esac
# Настройки истории команд # Изолируем Git от глобальных прокси (чтобы случайно не "протечь" с ними в git).
HISTCONTROL=ignoreboth # Игнорировать дубликаты и команды с пробелом в начале ; git() {
shopt -s histappend # Дописывать историю, а не перезаписывать файл ; http_proxy= https_proxy= HTTP_PROXY= HTTPS_PROXY= ALL_PROXY= all_proxy= command git "$@"
HISTSIZE=10000 # Увеличиваем размер истории в памяти ; }
HISTFILESIZE=20000 # Увеличиваем размер истории в файле
HISTTIMEFORMAT="%F %T " # (Опционально) Добавляет дату и время к командам в history
# Обновлять переменные LINES и COLUMNS после каждой команды (полезно при ресайзе окон) # Файлы из этого репозитория (stow кладет их в $HOME).
shopt -s checkwinsize
# ==============================================================================
# 2. ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ И ПУТИ (PATH)
# ==============================================================================
# Собираем PATH в одном месте
export PATH="/snap/bin:$PATH"
export PATH="$HOME/.local/bin:$PATH" # Для uv и других локальных бинарников
export PATH="$HOME/.npm-global/bin:$PATH" # Для глобальных npm пакетов
# ==============================================================================
# 3. АЛИАСЫ И УТИЛИТЫ
# ==============================================================================
# Включаем цвета для стандартных утилит
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# Навигация
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# ==============================================================================
# 4. ФУНКЦИИ И ИЗОЛЯЦИЯ
# ==============================================================================
# Изолируем Git от глобальных прокси
git() {
http_proxy= https_proxy= HTTP_PROXY= HTTPS_PROXY= ALL_PROXY= all_proxy= command git "$@"
}
# ==============================================================================
# 5. ПОДКЛЮЧЕНИЕ ВНЕШНИХ МОДУЛЕЙ И СЕКРЕТОВ
# ==============================================================================
# Автодополнение (Bash Autocompletion)
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
# NVM (Node Version Manager)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# Пользовательские конфиги (идут в Stow)
[ -f ~/.bash_aliases ] && source ~/.bash_aliases
[ -f ~/.bash_functions ] && source ~/.bash_functions [ -f ~/.bash_functions ] && source ~/.bash_functions
[ -f ~/.bash_prompt ] && source ~/.bash_prompt [ -f ~/.bash_prompt ] && source ~/.bash_prompt
# ЛОКАЛЬНЫЕ СЕКРЕТЫ (НЕ ДОБАВЛЯТЬ В GIT/STOW!) # Локальные секреты (не хранить в git/stow).
[ -f ~/.env.secrets ] && source ~/.env.secrets [ -f ~/.env.secrets ] && source ~/.env.secrets
+1 -2
View File
@@ -27,7 +27,7 @@ set_bash_prompt() {
# ---- git branch ---- # ---- git branch ----
local branch="" local branch=""
# Быстрее и проще, чем парсить `git branch` через sed :contentReference[oaicite:1]{index=1} # Быстрее и проще, чем парсить `git branch` через sed
branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
local git_part="" local git_part=""
if [ -n "$branch" ] && [ "$branch" != "HEAD" ]; then if [ -n "$branch" ] && [ "$branch" != "HEAD" ]; then
@@ -43,4 +43,3 @@ set_bash_prompt() {
# Запускаем set_bash_prompt перед каждым показом приглашения # Запускаем set_bash_prompt перед каждым показом приглашения
PROMPT_COMMAND=set_bash_prompt PROMPT_COMMAND=set_bash_prompt
+1
View File
@@ -0,0 +1 @@
../../../agents/.agents/skills/conventional-commits
+1
View File
@@ -0,0 +1 @@
../../../agents/.agents/skills
+1
View File
@@ -0,0 +1 @@
[]
+1
View File
@@ -0,0 +1 @@
{}