# Shiiman Common:brew Upgrade AI

> AI 関連 CLI ツールを brew で一括アップグレードする。「AI ツール更新」「brew upgrade AI」「AI CLI 更新」「ツール一括更新」「claude/codex/cursor/gemini 更新」などで起動。

- Skill: `shiiman/shiiman-common-brew-upgrade-ai` (Agent Skill)
- Install (CLI): `npx skillmds@latest add shiiman/shiiman-common-brew-upgrade-ai`
- Raw SKILL.md: https://api.skillmd.com/api/skills/shiiman/shiiman-common-brew-upgrade-ai/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: shiiman (https://skillmd.com/u/shiiman)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/shiiman/shiiman-common-brew-upgrade-ai

---


# Brew Upgrade AI

AI 関連 CLI ツールを brew で一括アップグレードします。

## Help

`$ARGUMENTS` に `--help` が含まれる場合、以下を表示して終了:

```text
/shiiman-common:brew-upgrade-ai - AI ツール一括更新

概要:
  AI 関連 CLI ツール（claude-code@latest, codex, cursor-cli, gemini-cli）を
  brew で一括アップグレードします。

使用方法:
  /shiiman-common:brew-upgrade-ai [オプション]

オプション:
  --help    このヘルプを表示

例:
  /shiiman-common:brew-upgrade-ai     # AI ツールを一括更新
```

## 対象ツール

| brew パッケージ名                           | ツール名    |
| ------------------------------------------- | ----------- |
| claude-code@latest（fallback: claude-code） | Claude Code |
| codex                                       | Codex       |
| cursor-cli                                  | Cursor CLI  |
| gemini-cli                                  | Gemini CLI  |

## ワークフロー

### 1. 現在のバージョン確認

Bash ツールで以下を**並列実行**し、各ツールのインストール状態・パッケージ種別・現在のバージョンを取得:

- `brew list --cask --versions claude-code@latest 2>/dev/null || brew list --cask --versions claude-code 2>/dev/null || brew list --versions claude-code 2>/dev/null || echo "NOT_INSTALLED"`
- `brew list --cask --versions codex 2>/dev/null || brew list --versions codex 2>/dev/null || echo "NOT_INSTALLED"`
- `brew list --cask --versions cursor-cli 2>/dev/null || brew list --versions cursor-cli 2>/dev/null || echo "NOT_INSTALLED"`
- `brew list --cask --versions gemini-cli 2>/dev/null || brew list --versions gemini-cli 2>/dev/null || echo "NOT_INSTALLED"`

判定ルール:

- `brew list --cask --versions` で取得できた場合: `type=cask`、出力先頭トークンを実際のパッケージ名として記録（例: `claude-code@latest`）
- `brew list --versions` で取得できた場合: `type=formula`、コマンドに渡したパッケージ名をそのまま記録
- どちらも取得できない場合: `NOT_INSTALLED`

未インストール（`NOT_INSTALLED`）のツールはスキップ対象として記録。手順 2・3 では記録したパッケージ名を使う。

### 2. アップグレード実行

インストール済みのツールのみ、判定された type に応じて Bash ツールで**並列実行**:

- `type=cask` の場合: `brew upgrade --cask <package> 2>&1`
- `type=formula` の場合: `brew upgrade <package> 2>&1`

各コマンドの出力から以下を判定:

- **更新済み**: バージョンが変わった場合
- **最新**: 以下のいずれかを含む場合
  - `already installed`
  - `already up-to-date`
  - `Not upgrading`
- **エラー**: その他のエラー出力

### 3. 新バージョン確認

インストール済みツールについて、type に応じたコマンドを **並列実行** して新バージョンを取得:

- `type=cask` の場合: `brew list --cask --versions {パッケージ名}`
- `type=formula` の場合: `brew list --versions {パッケージ名}`

### 4. 結果表示

以下のフォーマットで結果を出力:

```markdown
## AI ツール更新結果

| ツール             | 旧バージョン | 新バージョン | 状態           |
| ------------------ | ------------ | ------------ | -------------- |
| claude-code@latest | x.x.x        | y.y.y        | 更新済み       |
| codex              | x.x.x        | x.x.x        | 最新           |
| cursor-cli         | -            | -            | 未インストール |
| gemini-cli         | x.x.x        | y.y.y        | 更新済み       |

> 「ツール」列には手順 1 で記録した実際のパッケージ名（Claude Code なら `claude-code@latest` または `claude-code`）を表示する。
```

**状態の表記**:

| 状態           | 条件                                     |
| -------------- | ---------------------------------------- |
| 更新済み       | バージョンが変わった                     |
| 最新           | 既に最新バージョン                       |
| 未インストール | brew にパッケージが存在しない            |
| エラー         | upgrade コマンドが失敗（エラー詳細付記） |

## 重要な注意事項

- ✅ `claude-code` / `codex` / `cursor-cli` は環境によって cask 管理の場合があるため、必ず `cask` → `formula` の順で確認する
- ✅ Claude Code は `claude-code@latest`（cask） → `claude-code`（cask） → `claude-code`（formula）の順で確認し、ヒットしたパッケージ名を upgrade・再確認でそのまま使う
- ✅ 未インストールのツールはスキップ（エラーにしない）
- ✅ 各 brew upgrade は並列実行して高速化
- ✅ 旧バージョン・新バージョンを比較して状態を判定
- ❌ 未インストールのツールを自動インストールしない
- ❌ brew 以外のパッケージマネージャは使用しない

