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:
1 parent
c94bcc19de
commit
7cd55ac988
8 files changed
+50
-89
No files matched your search
@@ -5,9 +5,9 @@
|
||||
## 📦 Содержимое
|
||||
|
||||
### Bash
|
||||
- **Файл:** `bash/.bashrc`
|
||||
- Настройки shell с поддержкой NVM (Node.js), uv (Python), npm
|
||||
- Кастомный двухстрочный prompt (загружается из `~/.bash_prompt`)
|
||||
- **Файлы:** `bash/.bash_custom`, `bash/.bash_functions`, `bash/.bash_prompt`
|
||||
- Подключение кастомных bash-файлов (функции, prompt, секреты) поверх стандартного `~/.bashrc`
|
||||
- Кастомный двухстрочный prompt (подключается из `~/.bash_prompt`)
|
||||
- Поддержка цветного вывода и автодополнения
|
||||
|
||||
### Tmux
|
||||
@@ -43,6 +43,15 @@
|
||||
- **zread** — чтение GitHub репозиториев
|
||||
- **playwright** — браузерная автоматизация
|
||||
- Требует переменных окружения (см. `.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
|
||||
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
|
||||
|
||||
# Tmux
|
||||
@@ -67,6 +81,14 @@ cp zed/.config/zed/* ~/.config/zed/ 2>/dev/null || true
|
||||
# Opencode
|
||||
mkdir -p ~/.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 (рекомендуется)
|
||||
@@ -77,7 +99,12 @@ sudo apt install stow
|
||||
|
||||
# Применение конфигов
|
||||
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` — персональные алиасы
|
||||
- `~/.env.secrets` — приватные переменные окружения (API ключи)
|
||||
|
||||
@@ -100,10 +125,7 @@ stow bash tmux vim zed opencode
|
||||
### Кастомные функции bash
|
||||
|
||||
Файл `bash/.bash_functions` содержит пользовательские функции (proxy_on/off, myip и др.).
|
||||
Рекомендуется создать симлинк:
|
||||
```bash
|
||||
ln -s /path/to/dotfiles/bash/.bash_functions ~/.bash_functions
|
||||
```
|
||||
При использовании `stow bash` он будет доступен как `~/.bash_functions`.
|
||||
|
||||
### Приватные переменные (секреты)
|
||||
|
||||
@@ -124,7 +146,3 @@ export ZAI_API_KEY="your_zai_api_key_here"
|
||||
Файл `~/.env.secrets` автоматически подгружается при старте shell.
|
||||
|
||||
См. `.env.example` для дополнительной информации.
|
||||
|
||||
## 📄 Лицензия
|
||||
|
||||
MIT — используйте свободно.
|
||||
-1
@@ -74,4 +74,3 @@ refactor(docker): optimize postgres-bookings image size
|
||||
Что: switched base image to alpine, removed intermediate build artifacts.
|
||||
Проверка: docker build and check image size.
|
||||
EOF
|
||||
|
||||
+12
-71
@@ -1,81 +1,22 @@
|
||||
# ==============================================================================
|
||||
# 1. БАЗОВЫЕ НАСТРОЙКИ SHELL
|
||||
# ==============================================================================
|
||||
# Дополнительные настройки, которые не хочется держать прямо в ~/.bashrc.
|
||||
# Предполагается, что ~/.bashrc уже содержит базовую логику Ubuntu (history,
|
||||
# checkwinsize, dircolors/aliases, bash-completion, и т.п.) и просто sources
|
||||
# этот файл.
|
||||
|
||||
# Прерываем выполнение, если shell не интерактивный (например, скрипты)
|
||||
# Прерываем выполнение, если shell не интерактивный (например, скрипты).
|
||||
case $- in
|
||||
*i*) ;;
|
||||
*) return;;
|
||||
*) return ;;
|
||||
esac
|
||||
|
||||
# Настройки истории команд
|
||||
HISTCONTROL=ignoreboth # Игнорировать дубликаты и команды с пробелом в начале
|
||||
shopt -s histappend # Дописывать историю, а не перезаписывать файл
|
||||
HISTSIZE=10000 # Увеличиваем размер истории в памяти
|
||||
HISTFILESIZE=20000 # Увеличиваем размер истории в файле
|
||||
HISTTIMEFORMAT="%F %T " # (Опционально) Добавляет дату и время к командам в history
|
||||
# Изолируем Git от глобальных прокси (чтобы случайно не "протечь" с ними в git).
|
||||
; git() {
|
||||
; http_proxy= https_proxy= HTTP_PROXY= HTTPS_PROXY= ALL_PROXY= all_proxy= command git "$@"
|
||||
; }
|
||||
|
||||
# Обновлять переменные LINES и COLUMNS после каждой команды (полезно при ресайзе окон)
|
||||
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
|
||||
# Файлы из этого репозитория (stow кладет их в $HOME).
|
||||
[ -f ~/.bash_functions ] && source ~/.bash_functions
|
||||
[ -f ~/.bash_prompt ] && source ~/.bash_prompt
|
||||
|
||||
# ЛОКАЛЬНЫЕ СЕКРЕТЫ (НЕ ДОБАВЛЯТЬ В GIT/STOW!)
|
||||
# Локальные секреты (не хранить в git/stow).
|
||||
[ -f ~/.env.secrets ] && source ~/.env.secrets
|
||||
+1
-2
@@ -27,7 +27,7 @@ set_bash_prompt() {
|
||||
|
||||
# ---- git branch ----
|
||||
local branch=""
|
||||
# Быстрее и проще, чем парсить `git branch` через sed :contentReference[oaicite:1]{index=1}
|
||||
# Быстрее и проще, чем парсить `git branch` через sed
|
||||
branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
||||
local git_part=""
|
||||
if [ -n "$branch" ] && [ "$branch" != "HEAD" ]; then
|
||||
@@ -43,4 +43,3 @@ set_bash_prompt() {
|
||||
|
||||
# Запускаем set_bash_prompt перед каждым показом приглашения
|
||||
PROMPT_COMMAND=set_bash_prompt
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
../../../agents/.agents/skills/conventional-commits
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../../agents/.agents/skills
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
Reference in new issue
Block a user