- Зачем: - зафиксировать правила работы с .scratch/ (рабочая зона) и делегирования субагентов. - Что: - описано, что .scratch/ коммитится, но не попадает в master. - добавлена процедура слияния фиче-ветки (git rm .scratch + --no-ff). - описаны принципы делегирования объёмной и механической работы субагентам. - Проверка: - cat AGENTS.md
7.9 KiB
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
stowfor Linux/WSL andchezmoifor 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_functionslikeproxy_on/off), and core customizations (.bash_custom). - Tmux: Dual prefix (
C-bandC-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-setupto 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.tomlallows critical commands likegit status,git diff, andgit addto run without confirmation.
- Policies:
- Opencode: MCP-based assistant configuration (
opencode.json) with support for documentation, search, and web-reading. - Skill Bridges: Symlinks are used to share skills across Claude, Codex, and Opencode.
🚀 Usage & Maintenance
Deployment
- Linux/WSL: Use
stow <package_name>from the root directory. - Windows: Use
chezmoi apply.
Adding/Updating Skills
- Modify files in
agents/.agents/skills/. - Ensure symlinks in other tool directories are updated if new skills are added.
Git Workflow for AI (Gemini CLI)
- Safe Commands:
git status,git diff, andgit addare pre-approved in the policy. - Commits: Always use the
conventional-commitsskill for generating commit messages. Use theСпособ B(temporary file) if direct Heredoc causes issues.
📋 TODO
Планы на будущее — см. TODO.md.
⚠️ Important Files for Reference
README.md: Detailed installation and usage instructions.bash/.bash_functions: Proxy and environment management functions.gemini/.gemini/policies/readonly-commands.toml: Permissions for Gemini CLI.agents/.agents/skills/conventional-commits/SKILL.md: Rules for commit formatting.
🤖 AI Interaction Mandates
- Adhere to Local Patterns: When suggesting changes, follow the 2-space indent rule and minimalist style established in
.vimrcand.bash_custom. - Privacy First: Never log or commit contents of
~/.env.secrets. - Verification: Before updating configs, verify with
git statusandgit diff(which are allowed without confirmation).
🗣 Язык и рассуждения
Пиши на ясном русском языке. Иностранные слова оставляй только там, где у термина нет устоявшегося русского аналога: имена технологий и инструментов (Kafka, ClickHouse, Airflow) и названия из кода. Если для понятия есть обычное русское слово — используй его, не выдумывай транслитерации (пиши «приведение в соответствие», а не «реконсиляция»; «точка отсчёта», а не «origin»).
Документы, комментарии и объяснения держи короткими и понятными читателю, который их не писал: простые слова, короткие фразы, сложную мысль поясняй при первом упоминании (помни про менти-неспециалиста). Если понятность и буквальная точность спорят — выбирай понятность. Правило касается и текста, и заголовков разделов.
Внутренние рассуждения и промежуточные пометки по ходу работы веди на английском — он экономнее по токенам (кириллица занимает примерно в 1,5–2 раза больше). На русском остаётся всё, что видит и хранит проект: итоговые ответы пользователю, документы, комментарии в коде и сообщения коммитов.
Agent skills
Issue tracker
Задачи хранятся в отслеживаемых Git Markdown-файлах текущей ветки под .scratch/. Перед merge --no-ff они удаляются. См. docs/agents/issue-tracker.md.
Triage labels
Используются стандартные названия состояний triage. См. docs/agents/triage-labels.md.
Domain docs
Используется схема single-context: корневой CONTEXT.md и общие ADR в docs/adr/. См. docs/agents/domain.md.
Handoffs
Записки для продолжения работы в новой сессии — .scratch/handoffs/YYYYMMDD-HHMM-<slug>.md (одноразовые, коммитятся, уборка best-effort; скилл /handoff пишет сюда).
.scratch/ — рабочая зона; в master не переносится
Весь .scratch/ — заметки по ходу дела: handoffs, PRD фич, нарезка задач. Коммитится (не в .gitignore), чтобы версионировать и передавать между сессиями, но в master ей делать нечего — это процесс, а не продукт.
Долговечное знание держим вне .scratch/ (в docs/, CONTEXT.md). Прежде чем сливать фиче-ветку, убедись, что долговечная часть уже вынесена туда.
Слияние фиче-ветки в master:
- Последним коммитом ветки —
git rm -r .scratch(chore: убрать рабочие заметки перед слиянием в master). git merge --no-ffв master.
--no-ff тянет все коммиты ветки в историю master, поэтому удалённый .scratch/ остаётся достижим из merge-коммита и достаётся из истории в любой момент. Ничего не теряется — тег или архив не нужны.
Субагенты и экономия контекста
Объёмную и механическую работу делегируем субагентам (Sonnet или аналогичная, в зависимости от сложности задачи), чтобы не засорять контекст основной сессии: проверки (реперы/линт/валидация), пакетные и файловые операции, отладка и прочее. Субагент сам читает «шумный» ввод-вывод и возвращает только результат.
- Мелочь делегировать не стоит — кроме случая, когда она даёт объёмный вывод: пусть субагент прочитает его у себя и вернёт выжимку.