# GEMINI.md - Project Context & Instructions This repository contains personal dotfiles and configurations for a highly productive development environment, integrating Bash, Tmux, Vim, VS Code, and various AI assistants (Gemini CLI, Claude, Codex, Opencode). ## πŸ“‚ Project Overview * **Type:** Non-Code Project (Dotfiles / Configuration) * **Management:** Uses `stow` for Linux/WSL and `chezmoi` for Windows/WSL. * **Key Focus:** * Unified configuration across editors and terminals. * Deep integration with AI tools via shared "skills". * Automated environment setup (proxy handling, secret loading). ## πŸ›  Key Components ### 1. Shell & Terminal (Bash & Tmux) * **Bash:** Custom prompt (`.bash_prompt`), utility functions (`.bash_functions` like `proxy_on/off`), and core customizations (`.bash_custom`). * **Tmux:** Dual prefix (`C-b` and `C-Space`), Vi-mode for copying, and optimized pane management. * **Secrets:** Managed via `~/.env.secrets` (not tracked in Git). ### 2. Editors (Vim, VS Code, Zed) * **Vim:** Minimalist `.vimrc`, 2-space indentation, leader-key mappings (`Space`). * **VS Code (WSL):** Uses `server-env-setup` to automatically load secrets and configure proxy settings upon startup. * **Zed:** Placeholder directory for future configuration. ### 3. AI Agents & Skills * **Shared Skills:** Located in `agents/.agents/skills/`. This is the single source of truth for AI instructions. * **Gemini CLI:** Configured via `gemini/.gemini/`. * **Policies:** `readonly-commands.toml` allows critical commands like `git status`, `git diff`, and `git add` to run without confirmation. * **Opencode:** MCP-based assistant configuration (`opencode.json`): Context7 для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ встроСнныС `websearch`/`webfetch`. Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ SearXNG Π² `docker/searxng` β€” Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, MCP-сСрвСр ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Ρ‘Π½. * **Skill Bridges:** Claude gets skills via the `~/.claude/skills` symlink; Opencode reads `~/.agents/skills` natively, no bridge needed. ## πŸš€ Usage & Maintenance ### Deployment * **Linux/WSL:** Use `stow ` from the root directory. * **Windows:** Use `chezmoi apply`. ### Adding/Updating Skills 1. Modify files in `agents/.agents/skills/`. 2. Ensure symlinks in other tool directories are updated if new skills are added. 3. Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ скиллы врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ удаляСм. Π£Π±ΠΈΡ€Π°ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Π° вмСстС с Π½ΠΈΠΌ ссылки ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… скиллов ΠΈ строку Π² `.gitignore`, Ссли скилл Π±Ρ‹Π» внСшним. Упоминания Π² Π°Ρ€Ρ…ΠΈΠ²Π°Ρ… ΠΈ handoff-записках β€” история, ΠΈΡ… Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°Π΅ΠΌ. ## πŸ“‹ TODO ΠŸΠ»Π°Π½Ρ‹ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ β€” см. [TODO.md](TODO.md). ## πŸ—£ Π―Π·Ρ‹ΠΊ ΠΈ рассуТдСния Пиши Π½Π° ясном русском языкС. Π˜Π½ΠΎΡΡ‚Ρ€Π°Π½Π½Ρ‹Π΅ слова оставляй Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Ρƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Π½Π΅Ρ‚ ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠ΅Π³ΠΎΡΡ русского Π°Π½Π°Π»ΠΎΠ³Π°: ΠΈΠΌΠ΅Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ инструмСнтов (Kafka, ClickHouse, Airflow) ΠΈ названия ΠΈΠ· ΠΊΠΎΠ΄Π°. Если для понятия Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ русскоС слово β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Π΅Π³ΠΎ, Π½Π΅ Π²Ρ‹Π΄ΡƒΠΌΡ‹Π²Π°ΠΉ транслитСрации (пиши Β«ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² соотвСтствиС», Π° Π½Π΅ «рСконсиляция»; Β«Ρ‚ΠΎΡ‡ΠΊΠ° отсчёта», Π° Π½Π΅ Β«originΒ»). Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ объяснСния Π΄Π΅Ρ€ΠΆΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ ΠΈ понятными Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ… Π½Π΅ писал: простыС слова, ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ Ρ„Ρ€Π°Π·Ρ‹, ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΌΡ‹ΡΠ»ΡŒ поясняй ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΈ (ΠΏΠΎΠΌΠ½ΠΈ ΠΏΡ€ΠΎ ΠΌΠ΅Π½Ρ‚ΠΈ-нСспСциалиста). Если ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ спорят β€” Π²Ρ‹Π±ΠΈΡ€Π°ΠΉ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒ. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ касаСтся ΠΈ тСкста, ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ². Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ рассуТдСния ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π΅Π΄ΠΈ Π½Π° английском β€” ΠΎΠ½ экономнСС ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌ (ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 1,5–2 Ρ€Π°Π·Π° большС). На русском остаётся всё, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΡ‚ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΈ сообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². ## Навыки Π°Π³Π΅Π½Ρ‚ΠΎΠ² ### Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π°Π΄Π°Ρ‡ Π—Π°Π΄Π°Ρ‡ΠΈ хранятся Π² Gitea Issues (`git.dementev.space`), Ρ€Π°Π±ΠΎΡ‚Π° с Π½ΠΈΠΌΠΈ β€” Ρ‡Π΅Ρ€Π΅Π· CLI `tea`. Π‘ΠΌ. `docs/agents/issue-tracker.md`. ### Бостояния triage Бостояния triage β€” ΠΌΠ΅Ρ‚ΠΊΠΈ Gitea со стандартными названиями. Π‘ΠΌ. `docs/agents/triage-labels.md`. ### Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Одна прСдмСтная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π½Π° вСсь Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ: ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ `CONTEXT.md` ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ ADR Π² `docs/adr/`. Π‘ΠΌ. `docs/agents/domain.md`. ### Записки для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Записки для продолТСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π½ΠΎΠ²ΠΎΠΉ сСссии β€” `.scratch/handoffs/YYYYMMDD-HHMM-.md` (ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Π΅, ΡƒΠ±ΠΎΡ€ΠΊΠ° best-effort; скилл `/handoff` ΠΏΠΈΡˆΠ΅Ρ‚ сюда). ### `.scratch/` β€” локальная рабочая Π·ΠΎΠ½Π° Π’Π΅ΡΡŒ `.scratch/` β€” Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Π΄Π΅Π»Π°: handoffs ΠΈ Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠΈ (Π·Π°Π΄Π°Ρ‡ΠΈ ΠΆΠΈΠ²ΡƒΡ‚ Π² Gitea). ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Π² `.gitignore`: ΠΎΠ½ ΠΆΠΈΠ²Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° этой машинС ΠΈ Π² Git Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚. Π”ΠΎΠ»Π³ΠΎΠ²Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ Π΄Π΅Ρ€ΠΆΠΈΠΌ **Π²Π½Π΅** `.scratch/` (Π² `docs/`, `CONTEXT.md`) ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΠΌ вмСстС с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΠ»ΠΈΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΡ‡Π΅-Π²Π΅Ρ‚ΠΊΡƒ, ΡƒΠ±Π΅Π΄ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ долговСчная Ρ‡Π°ΡΡ‚ΡŒ ΡƒΠΆΠ΅ вынСсСна Ρ‚ΡƒΠ΄Π°: ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ· `.scratch/` ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. ## Π‘ΡƒΠ±Π°Π³Π΅Π½Ρ‚Ρ‹ ΠΈ экономия контСкста ΠžΠ±ΡŠΡ‘ΠΌΠ½ΡƒΡŽ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅ΠΌ субагСнтам (Sonnet ΠΈΠ»ΠΈ аналогичная, Π² зависимости ΠΎΡ‚ слоТности Π·Π°Π΄Π°Ρ‡ΠΈ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°ΡΠΎΡ€ΡΡ‚ΡŒ контСкст основной сСссии: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ (Ρ€Π΅ΠΏΠ΅Ρ€Ρ‹/Π»ΠΈΠ½Ρ‚/валидация), ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. Π‘ΡƒΠ±Π°Π³Π΅Π½Ρ‚ сам Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Β«ΡˆΡƒΠΌΠ½Ρ‹ΠΉΒ» Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. - ΠœΠ΅Π»ΠΎΡ‡ΡŒ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ стоит β€” ΠΊΡ€ΠΎΠΌΠ΅ случая, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π΄Π°Ρ‘Ρ‚ ΠΎΠ±ΡŠΡ‘ΠΌΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄: ΠΏΡƒΡΡ‚ΡŒ субагСнт ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΅Π³ΠΎ Ρƒ сСбя ΠΈ Π²Π΅Ρ€Π½Ρ‘Ρ‚ Π²Ρ‹ΠΆΠΈΠΌΠΊΡƒ.