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
|
||||||
- **Файл:** `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 — используйте свободно.
|
|
||||||
-1
@@ -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
@@ -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
@@ -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
|
||||||
|
|
||||||
@@ -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