RaycastからClaude Code/Codex CLIを呼び出す方法


TL;DR

RaycastのScript CommandsからClaude Code/Codex CLIを呼び出すシェルを実行するようにしました。

はじめに

自分は普段私用PCではClaude Code、仕事PCではCodex CLI(以下codexと呼ぶ)をよく使います。この2つはどちらもCLIツールなのでターミナル(私の場合はWezTerm)を開く必要があります。このターミナルを開くというワンクッション動作をなくすために、RaycastというMacのランチャーツールからClaude CodeまたはCodex CLIを直接実行する方法を考えました。

デモ

こんな感じです。
demo

実装方法

RaycastのScript Commandsという機能を使います。Script CommandsとはRaycastからシェルスクリプトを実行することができる機能です。
https://www.raycast.com/blog/getting-started-with-script-commands

Claude Codeを呼び出すために、以下のシェルスクリプトを作成します。

#!/bin/bash

# @raycast.schemaVersion 1
# @raycast.title cc
# @raycast.mode silent
# @raycast.packageName Developer Tools
# @raycast.icon 🤖
# @raycast.argument1 { "type": "text", "placeholder": "prompt", "optional": true }

if [ -n "$1" ]; then
  wezterm start -- zsh -ic "cd ~/Documents/tmp/claude-sandbox; claude \"$1\"; exec zsh"
else
  wezterm start -- zsh -ic "cd ~/Documents/tmp/claude-sandbox; claude; exec zsh"
fi

コメントに書いているパラメータは以下の通りです。

パラメータ説明
@raycast.schemaVersionScript Commandsのスキーマバージョン。現時点では1を指定
@raycast.titleRaycastの検索バーに入力するコマンド名
@raycast.mode実行モード。silentはRaycastウィンドウを閉じた後にHUDトーストで最後の1行を表示する。他にcompact(トースト通知で最後の1行を表示)、fullOutput(ターミナルのように全出力を表示)、inline(コマンドアイテムに最初の1行を直接表示しrefreshTimeで自動更新)がある
@raycast.packageNameコマンドのカテゴリ名。Raycast上でのグルーピングに使われる
@raycast.iconRaycast上で表示されるアイコン。絵文字やファイルパスを指定可能
@raycast.argument1コマンドの引数定義。typeで型、placeholderで入力欄のプレースホルダー、optionalで任意入力かどうかを指定する。argument1argument3まで定義可能

cd ~/Documents/tmp/claude-sandbox;の部分は適宜変更してください。自分はこの機能専用のディレクトリを切りました。

Codex CLIの場合はこちらです。

#!/bin/bash

# @raycast.schemaVersion 1
# @raycast.title codex
# @raycast.mode silent
# @raycast.packageName Developer Tools
# @raycast.icon 🧠
# @raycast.argument1 { "type": "text", "placeholder": "prompt", "optional": true }

if [ -n "$1" ]; then
  wezterm start -- zsh -ic "cd ~/tmp/codex-sandbox; codex \"$1\"; exec zsh"
else
  wezterm start -- zsh -ic "cd ~/tmp/codex-sandbox; codex; exec zsh"
fi

このシェルスクリプトをRaycast側に登録します。
Raycastの設定画面(⌘+,)→Extensions→Scriptsタブ からScript Commandsを選択し、先ほどのシェルスクリプトが保存されているパスを指定します。
raycast.png

動作確認

ここまでできれば、Raycastからccと入力するとClaude Codeが実行できるようになるはずです。
codexと入力するとCodex CLIが実行可能)

雑感

RaycastのScript Commandsは他にも応用を利かせることができそうな予感がします。シェルスクリプトは基本的にCLI上のことはなんでもできますし。他にも思いついたらまたブログにしようと思います。