diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..7b986d2 --- /dev/null +++ b/.env.example @@ -0,0 +1,24 @@ +# Переменные окружения для dotfiles + +## Opencode MCP конфигурация + +Добавьте эти строки в `~/.custom_env`: + +```bash +# Context7 API (https://context7.com) +# Используется для поиска документации библиотек +export CONTEXT7_API_KEY="your_context7_api_key_here" + +# Z.AI API (https://z.ai) +# Используется для: +# - LLM доступа +# - Поиска в интернете (web-search-prime) +# - Чтения веб-страниц (web-reader) +# - Чтения GitHub репозиториев (zread) +export ZAI_API_KEY="your_zai_api_key_here" +``` + +## Как получить ключи + +1. **Context7**: Зарегистрируйтесь на https://context7.com и получите API ключ +2. **Z.AI**: Зарегистрируйтесь на https://z.ai и создайте API ключ в настройках аккаунта diff --git a/.gitignore b/.gitignore index e43b0f9..f049842 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ .DS_Store + +# Opencode local files +opencode/.config/opencode/package.json +opencode/.config/opencode/node_modules/ +opencode/.config/opencode/bun.lock diff --git a/README.md b/README.md new file mode 100644 index 0000000..264c1fc --- /dev/null +++ b/README.md @@ -0,0 +1,113 @@ +# Dotfiles + +Персональные конфигурационные файлы для настройки рабочего окружения. + +## 📦 Содержимое + +### Bash +- **Файл:** `bash/.bashrc` +- Настройки shell с поддержкой NVM (Node.js), uv (Python), npm +- Кастомный двухстрочный prompt (загружается из `~/.bash_prompt`) +- Поддержка цветного вывода и автодополнения + +### Tmux +- **Файл:** `tmux/.tmux.conf` +- Два префикса: `Ctrl+b` (стандартный) и `Ctrl+Space` (удобный) +- Визуальный стиль с синей цветовой схемой +- Vi-режим для копирования +- Горячие клавиши: + - `|` / `-` — разделение панелей + - `Alt+стрелки` — изменение размера панелей и переключение окон + - `r` — перезагрузка конфига + +### Vim +- **Файл:** `vim/.vimrc` +- Минималистичная конфигурация без плагинов +- 2 пробела вместо табов (оптимально для YAML/XML) +- Поддержка мыши и подсветка поиска +- Leader key: `Space` + - `w` — сохранить + - `h` — убрать подсветку поиска + - `p` — вставка без форматирования + +### Zed +- **Директория:** `zed/.config/zed/` +- Структура для конфигурации Zed редактора + +### Opencode +- **Директория:** `opencode/.config/opencode/` +- Конфигурация AI-ассистента opencode с MCP-серверами: + - **context7** — документация библиотек + - **web-reader** — чтение веб-страниц + - **web-search-prime** — поиск в интернете + - **zread** — чтение GitHub репозиториев + - **playwright** — браузерная автоматизация +- Требует переменных окружения (см. `.env.example`) + +## 🚀 Установка + +### Ручная установка + +```bash +# Bash +cp bash/.bashrc ~/ +source ~/.bashrc + +# Tmux +cp tmux/.tmux.conf ~/ +tmux source-file ~/.tmux.conf + +# Vim +cp vim/.vimrc ~/ + +# Zed +mkdir -p ~/.config/zed +cp zed/.config/zed/* ~/.config/zed/ 2>/dev/null || true + +# Opencode +mkdir -p ~/.config/opencode +cp opencode/.config/opencode/* ~/.config/opencode/ +``` + +### Stow (рекомендуется) + +```bash +# Установка stow +sudo apt install stow + +# Применение конфигов +cd /path/to/dotfiles +stow bash tmux vim zed opencode +``` + +## 🔧 Требования + +- Linux (протестировано на Ubuntu) +- Bash 4.0+ +- Tmux 2.0+ +- Vim 8.0+ + +## 📝 Дополнительные файлы + +Для полной настройки создайте: +- `~/.bash_prompt` — кастомный prompt +- `~/.custom_env` — переменные окружения +- `~/.bash_aliases` — персональные алиасы + +## 🔑 Переменные окружения + +Создайте файл `~/.custom_env` и добавьте необходимые API ключи: + +```bash +# Context7 API (https://context7.com) +export CONTEXT7_API_KEY="your_context7_api_key_here" + +# Z.AI API для LLM, поиска и чтения (https://z.ai) +export ZAI_API_KEY="your_zai_api_key_here" +``` + +См. `.env.example` для шаблона. + +## 📄 Лицензия + +MIT — используйте свободно. diff --git a/bash/.bashrc b/bash/.bashrc index 79d19a7..363f4a3 100644 --- a/bash/.bashrc +++ b/bash/.bashrc @@ -136,3 +136,7 @@ if [ -f ~/.custom_env ]; then source ~/.custom_env fi +# Opencode MCP конфигурация (добавьте в ~/.custom_env): +# export CONTEXT7_API_KEY="ваш_ключ_от_context7" +# export ZAI_API_KEY="ваш_ключ_от_z.ai" + diff --git a/opencode/.config/opencode/opencode.json b/opencode/.config/opencode/opencode.json new file mode 100644 index 0000000..527d09c --- /dev/null +++ b/opencode/.config/opencode/opencode.json @@ -0,0 +1,39 @@ +{ + "$schema": "https://opencode.ai/config.json", + "mcp": { + "context7": { + "type": "remote", + "url": "https://mcp.context7.com/mcp", + "headers": { + "CONTEXT7_API_KEY": "${env:CONTEXT7_API_KEY}" + }, + "enabled": true + }, + "web-reader": { + "type": "remote", + "url": "https://api.z.ai/api/mcp/web_reader/mcp", + "headers": { + "Authorization": "${env:ZAI_API_KEY}" + } + }, + "web-search-prime": { + "type": "remote", + "url": "https://api.z.ai/api/mcp/web_search_prime/mcp", + "headers": { + "Authorization": "${env:ZAI_API_KEY}" + } + }, + "zread": { + "type": "remote", + "url": "https://api.z.ai/api/mcp/zread/mcp", + "headers": { + "Authorization": "${env:ZAI_API_KEY}" + } + }, + "playwright": { + "type": "local", + "command": ["npx", "-y", "@playwright/mcp@latest"], + "enabled": true + } + } +} diff --git a/opencode/.config/opencode/skills/conventional-commits.skill.md b/opencode/.config/opencode/skills/conventional-commits.skill.md new file mode 100644 index 0000000..5577f55 --- /dev/null +++ b/opencode/.config/opencode/skills/conventional-commits.skill.md @@ -0,0 +1,82 @@ +--- +name: Conventional Commits Formatter +description: Навык для генерации стандартизированных git-коммитов через терминал без ошибок форматирования. +triggers: + - "сделай коммит" + - "закоммить" + - "commit" + - "зафиксируй" +--- + +# Твоя роль +Ты — педантичный Release Manager и Senior Engineer. Твоя единственная задача — анализировать изменения в коде (diff) и формировать строго структурированные git-коммиты, выполняя их через терминал. + +# Алгоритм действий +1. Изучи измененные файлы через `git status` и `git diff`. +2. Определи язык: по умолчанию всегда используй Русский. Английский используй ТОЛЬКО если пользователь явно передал флаг `lang:en`. +3. Сформируй заголовок и тело коммита. +4. Выполни коммит в терминале, строго используя метод Heredoc (EOF). + +# Правила заголовка +* Формат: `(): <описание>` +* Длина: не более 72 символов. +* Типы (type): feat, fix, refactor, docs, test, chore, ci, perf. +* Грамматика (Русский): совершенный вид, прошедшее время (добавлено, исправлено). +* Грамматика (Английский): повелительное наклонение (add, fix, update). Без точки в конце. +* Технические термины (SQL, DWH, PostgreSQL, Airflow) не переводи. + +# Шаблон тела коммита (Плоская структура) +Зачем: [Бизнес-причина или техническая необходимость] +Что: [Ключевые изменения] +Проверка: [Как проверить: команда, тест или скрипт] + +# Строгое правило форматирования (Анти-экранирование) +КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО использовать литералы `\n`, `\r`, `\t` в тексте коммита. Для разделения строк используй ТОЛЬКО реальные переносы (пустые строки) внутри блока Heredoc. + +НЕПРАВИЛЬНО: +Зачем: текст.\nЧто: текст. + +ПРАВИЛЬНО: +Зачем: текст. +Что: текст. + +# Правила выполнения команд +ЗАПРЕЩЕНО использовать флаги `-m`. РАЗРЕШЕНО использовать только формат передачи через Heredoc: + +git commit -F- <<'EOF' +(): <описание> + +Зачем: <текст> +Что: <текст> +Проверка: <текст> +EOF + +# Идеальные примеры + +Пример 1 (Русский, новая фича): +git commit -F- <<'EOF' +feat(sql): добавлен скрипт валидации данных для DWH слоя + +Зачем: необходима проверка целостности и уникальности перед загрузкой в хранилище. +Что: создан файл 04_validation.sql, добавлены проверки на NULL. +Проверка: psql -f dwh-modeling/sql/04_validation.sql. +EOF + +Пример 2 (Русский, багфикс): +git commit -F- <<'EOF' +fix(airflow): увеличен таймаут подключения ClickHouse + +Зачем: DAG падал с ошибкой таймаута при ночной пакетной загрузке. +Что: параметр conn_timeout изменен с 30 до 120 секунд. +Проверка: тестовый запуск таски в Airflow UI. +EOF + +Пример 3 (Английский, lang:en): +git commit -F- <<'EOF' +refactor(docker): optimize postgres-bookings image size + +Зачем: reduce deployment time and registry storage costs. +Что: switched base image to alpine, removed intermediate build artifacts. +Проверка: docker build and check image size. +EOF +