🤖

Claude Codeをノンインタラクティブに使うCLIツール『ccrun』を作った話

に公開

はじめに

AnthropicのClaude Codeは非常に強力で、もう手放せないものになりました。
しかし、使っていると対話的に実行するのが面倒臭い時があります。コマンドのみで実行したり、シェルスクリプト組んでバッチで回したくなるときがあります。

ちなみにClaude Codeには--printというワンショットモードがありますが、インタラクティブモードで実行する時のように途中の情報が全く表示されません。
数分以上かかる処理では、ちゃんと動いているかわからないという問題があります。
一応、--output-format stream-jsonを指定するとリアルタイムで流れるようにはできますが、JSONで表示されるのでとてもわかりにくい😅

そこで、TypeScript製のシンプルなコマンドラインからノンインタラクティブに使える「ccrun」というCLIツールを作りました。
本記事では、ccrunの概要と使い方について紹介します。

ccrunの特徴

  • 実行中の処理内容をリアルタイムで表示
  • システムプロンプトを指定可能、人格やロールを与えられる
  • 権限制御による安全なツール実行

Claude Code printモードとの比較

Claude Code --print**

claude code --print "長浜ラーメンについて教えて"

結果

ccrun**

npx ccrun "長浜ラーメンについて教えて"

結果

ccrunは途中経過が表示されるので、進捗がわかりやすい!!

インストール

npm install -g ccrun

基本的な使い方

シンプルな質問

コマンド

npx ccrun "あなたの名前は?"

結果

...
🤖 ASSISTANT
Claude Code

プロンプトファイルの使用

プロンプトファイルを用意しておけば、ファイルで入力できます。

# ./prompt.txt

あなたの名前は?
npx ccrun -f "./prompt.txt"

システムプロンプトの指定

性格やロールを直接設定できます。

コマンド

npx ccrun "あなたの名前は?" --system-prompt "あなたはクロニャンというアシスタントです。語尾に必ずニャンと付けます。"

結果

...
🤖 ASSISTANT
私の名前はクロニャンですニャン!Anthropic's Claude Codeをベースにした、ちょっと特別なアシスタントですニャン。何かお手伝いできることがあれば、遠慮なく聞いてくださいニャン!

権限制御について

ccrunでは、対話的にツールの使用を許可することができないので、予め明示的な許可が必要です。
claudeのsetting.json、.ccrun/setting.jsonなどの設定の他にコマンドラインのallowedToolsで指定します。

使用例

# ファイル作成を許可
npx ccrun "Railsを使ったチャットアプリのPRDを作成して、docs/prd1.mdに出力してください" \
--allowedTools "Write"

# ファイル編集を許可
npx ccrun "docs/prd1.mdをレビューして修正してください" \
--allowedTools "Edit"

# 特定のディレクトリのみ編集許可も可能
npx ccrun "docs/prd1.mdをレビューして修正してください" \
--allowedTools "Edit(./docs/*)"

最後に

Claude Codeをノンインタラクティブに使いたい方は、「ccrun」を試しに使ってみてください。
ドキュメントの生成、レビューなど1回実行で済むタスクには向いているかと思います。
なお、このツールの実装はClaude Codeのインタラクティブモードでほぼ行いました。実装工程など頻繁にBashツールやEditツールを使う場合は、Claude Codeのインタラクティブを使った方が個人的には向いているかなと思うので、うまく使い分けながら活用してもらえれば幸いです。

GitHubリポジトリはこちら → kykt35/ccrun

Discussion