# Bash

永続的な作業ディレクトリ内でシェルコマンドを実行し、その stdout/stderr を返します。git、npm、docker、ビルドスクリプトの実行など、専用の Claude Code ツールでは表現できない操作に限定するのが最適です。

## 使用タイミング

- git 操作の実行 (`git status`、`git diff`、`git commit`、`gh pr create`)
- パッケージマネージャーやビルドツールの実行 (`npm install`、`npm run build`、`pytest`、`cargo build`)
- `run_in_background` を使った長時間実行プロセス (開発サーバー、ウォッチャー) のバックグラウンド起動
- 組み込みに相当するものがないドメイン固有 CLI (`docker`、`terraform`、`kubectl`、`gh`) の呼び出し
- 順序が重要な場合に `&&` で依存ステップを連結

## パラメータ

- `command` (string, required): 実行する正確なシェルコマンド。
- `description` (string, required): 短くアクティブボイスの要約 (単純なコマンドは 5〜10 語、パイプ化されたものや分かりにくいものはさらに文脈を補足)。
- `timeout` (number, optional): タイムアウト (ミリ秒)。最大 `600000` (10 分)。デフォルトは `120000` (2 分)。
- `run_in_background` (boolean, optional): `true` の場合、コマンドはデタッチして実行され、完了時に通知されます。自分で `&` を付けないでください。

## 例

### 例 1: コミット前にリポジトリの状態を確認
同じメッセージ内で `git status` と `git diff --stat` を 2 つの並列 `Bash` 呼び出しとして発行し、コンテキストを素早く収集してから、後続の呼び出しでコミットを組み立てます。

### 例 2: 依存するビルドステップの連結
`npm ci && npm run build && npm test` のような単一呼び出しを使用し、各ステップが前のステップの成功後にのみ実行されるようにします。失敗後も後続のステップを実行させたい場合のみ `;` を使用してください。

### 例 3: 長時間実行の開発サーバー
`npm run dev` を `run_in_background: true` で呼び出します。終了時に通知されます。`sleep` ループでポーリングしないでください。盲目的に再試行するのではなく、失敗を診断してください。

## 注意事項

- 作業ディレクトリは呼び出し間で永続化されますが、シェルの状態 (エクスポートされた変数、シェル関数、エイリアス) は永続化されません。絶対パスを優先し、ユーザーが要求しない限り `cd` は避けてください。
- パイプ化されたシェル同等品よりも専用ツールを優先してください。`find`/`ls` の代わりに `Glob`、`grep`/`rg` の代わりに `Grep`、`cat`/`head`/`tail` の代わりに `Read`、`sed`/`awk` の代わりに `Edit`、`echo >` やヒアドキュメントの代わりに `Write`、ユーザー向け出力には `echo`/`printf` の代わりに通常のアシスタントテキストを使用してください。
- スペースを含むパスは二重引用符で囲んでください (例 `"/Users/me/My Project/file.txt"`)。
- 独立したコマンドの場合、単一メッセージ内で複数の `Bash` ツール呼び出しを並列に行ってください。1 つのコマンドが別のコマンドに依存する場合のみ `&&` で連結してください。
- 30000 文字を超える出力は切り詰められます。大きなログをキャプチャする場合は、ファイルにリダイレクトしてから `Read` ツールで読み込んでください。
- `git rebase -i` や `git add -i` などの対話フラグは絶対に使用しないでください。このツールから入力を受け取れません。
- ユーザーが明示的に要求しない限り、git フック (`--no-verify`、`--no-gpg-sign`) をスキップしたり、破壊的操作 (`reset --hard`、`push --force`、`clean -f`) を実行しないでください。
