# Bash

Выполняет shell-команду в постоянном рабочем каталоге и возвращает её stdout/stderr. Лучше всего подходит для операций, которые не умеет выразить ни один специализированный инструмент Claude Code, — например, запуск git, npm, docker или скриптов сборки.

## Когда использовать

- Выполнение git-операций (`git status`, `git diff`, `git commit`, `gh pr create`)
- Запуск пакетных менеджеров и инструментов сборки (`npm install`, `npm run build`, `pytest`, `cargo build`)
- Запуск долгоживущих процессов (dev-серверы, наблюдатели) в фоне с `run_in_background`
- Вызов специализированных CLI (`docker`, `terraform`, `kubectl`, `gh`), не имеющих встроенного эквивалента
- Сцепление зависимых шагов через `&&`, когда важен порядок

## Параметры

- `command` (string, обязательный): точная shell-команда для выполнения.
- `description` (string, обязательный): краткое резюме в активном залоге (5–10 слов для простых команд; больше контекста для команд с пайпами или редкими флагами).
- `timeout` (number, необязательный): тайм-аут в миллисекундах, до `600000` (10 минут). По умолчанию `120000` (2 минуты).
- `run_in_background` (boolean, необязательный): если `true`, команда запускается отсоединённо, и вы получаете уведомление по завершении. Не добавляйте `&` самостоятельно.

## Примеры

### Пример 1: проверка состояния репозитория перед коммитом
Отправьте `git status` и `git diff --stat` как два параллельных вызова `Bash` в одном сообщении, чтобы быстро собрать контекст, а затем соберите коммит в следующем вызове.

### Пример 2: цепочка зависимых шагов сборки
Используйте одиночный вызов вроде `npm ci && npm run build && npm test`, чтобы каждый шаг запускался только после успешного завершения предыдущего. Применяйте `;` только если вы намеренно хотите, чтобы последующие шаги выполнялись даже после сбоев.

### Пример 3: долгоживущий dev-сервер
Вызовите `npm run dev` с `run_in_background: true`. Вы получите уведомление, когда он завершится. Не опрашивайте циклами со `sleep`; вместо этого диагностируйте сбои, а не повторяйте вслепую.

## Примечания

- Рабочий каталог сохраняется между вызовами, но состояние shell (экспортированные переменные, shell-функции, алиасы) — нет. Предпочитайте абсолютные пути и избегайте `cd`, если пользователь об этом не просил.
- Предпочитайте специализированные инструменты shell-аналогам с пайпами: `Glob` вместо `find`/`ls`, `Grep` вместо `grep`/`rg`, `Read` вместо `cat`/`head`/`tail`, `Edit` вместо `sed`/`awk`, `Write` вместо `echo >` или heredoc, и обычный текст ассистента вместо `echo`/`printf` для вывода пользователю.
- Заключайте любой путь с пробелами в двойные кавычки (например, `"/Users/me/My Project/file.txt"`).
- Для независимых команд делайте несколько параллельных вызовов `Bash` в одном сообщении. Сцепляйте через `&&` только когда одна команда зависит от другой.
- Вывод более 30000 символов усекается. При захвате больших логов перенаправляйте в файл, а затем читайте его инструментом `Read`.
- Никогда не используйте интерактивные флаги вроде `git rebase -i` или `git add -i`; они не могут получать ввод через этот инструмент.
- Не пропускайте git-хуки (`--no-verify`, `--no-gpg-sign`) и не выполняйте деструктивных операций (`reset --hard`, `push --force`, `clean -f`), если пользователь явно об этом не просит.
