# Bash

Виконує команду оболонки всередині постійного робочого каталогу і повертає її 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, обовʼязковий): Точна команда оболонки для виконання.
- `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`; діагностуйте збої замість сліпих повторних спроб.

## Примітки

- Робочий каталог зберігається між викликами, а стан оболонки (експортовані змінні, функції оболонки, псевдоніми) — ні. Віддавайте перевагу абсолютним шляхам та уникайте `cd`, якщо користувач не попросив цього.
- Віддавайте перевагу виділеним інструментам над еквівалентами з каналами оболонки: `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`), якщо користувач явно не просить про це.
