1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

忘れっぽい私がClaude CodeのHooksで「終わったら教えて」を実現した話

1
Posted at

はじめに

Claude Codeに長めのタスクをお願いして、
ブラウザで別のことを調べていたら、

気づいたらとっくに終わっていた。

これ、本当によくやります。

しかも気づくのが遅いだけじゃなくて、
「まだかな?」とターミナルを確認しに行くのも地味につらい。

  • 確認しに行く → まだ作業中
  • 別タブに戻る
  • しばらくして確認しに行く → 実はもう終わってた

この繰り返し、効率が悪いのはわかってるんですが、
ずっとターミナルを眺めているのも無理で。

そこで Hooks という機能を使って、
Claude Codeが「次の指示待ちです」のタイミングでデスクトップに通知を出せるようにしました。

設定自体は5分もあれば終わります。

Hooksってなに?

一言でいうと、
「Claude Codeの特定タイミングで自動でシェルコマンドを叩く仕組み」 です。

プロンプトでClaudeに「〇〇しておいて」とお願いするのとは違って、
システムレベルで「必ず実行する」を保証してくれます。

Claudeがうっかり忘れることもない、という点が強いです。

どんなタイミングで動くの?

Hooksはイベントごとに設定します。
主なものはこんな感じです。

イベント名 発火するタイミング
Notification Claudeが入力待ち・許可待ちになったとき
Stop Claudeが応答・作業を完了したとき
PreToolUse ファイル編集やコマンド実行などの直前
PostToolUse ファイル編集やコマンド実行などの直後
SessionStart セッション開始時

今回は 「Claudeが次の入力を待っている」 タイミングで通知を出したいので、
Notification イベントを使います。

やってみる

まず通知コマンドを確認する

macOSには osascript というコマンドがあって、
これでデスクトップ通知を出せます。

まずターミナルで試してみましょう。

osascript -e 'display notification "作業が完了しました!" with title "Claude Code"'

うまくいくと、画面右上に通知が出るはずです。
スクリーンショット 2026-04-28 10.54.08.png

通知が出ない場合

osascript はmacOSの「Script Editor」アプリ経由で通知を出しています。
初回は通知の権限がないことがあるので、
System Settings > NotificationsScript Editor を探して、
Allow Notifications をオンにしてみてください。

settings.jsonに設定を書く

Hooksの設定は ~/.claude/settings.json に書きます。
グローバルな設定ファイルなので、すべてのプロジェクトに適用されます。

{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Claude Codeが入力を待っています\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

設定の各項目を軽く説明すると、

  • Notification : どのイベントで動かすか
  • matcher : 通知の種類でフィルタリングできる。"" にするとすべてで発火
  • type : hookの種類。command でシェルコマンドを実行
  • command : 実際に叩くコマンド

設定を確認する

Claude Codeのチャットで /hooks と入力すると、
設定されているHooksの一覧が見られます。

Notification の横に数字が出ていれば成功です。

動かしてみる

あとは普通に使うだけです。

Claude Codeが作業を終えて次の入力を待つタイミングで、
デスクトップに通知が届きます。

別のアプリを使っていても気づけるようになって、
地味ですがかなり楽になりました。

使ってみた感想

設定が思ったより全然簡単でした。

JSONを数行書くだけなので、
「シェルスクリプトはよくわからない…」という方でも全然いけると思います。

効果としては、
無駄にターミナルを確認しに行く回数が激減しました。

「終わったかな?」と気になって作業が中断されることがなくなって、
集中力が地味に変わった気がします。

Hooksでできることはまだまだある

今回はデスクトップ通知の例を紹介しましたが、
「シェルコマンドで何かできること」ならHooksで自動化できます。

思いついたアイデアをいくつか。

やりたいこと イベント イメージ
Slackに完了通知を飛ばす Notification curl でIncoming Webhook
ファイル編集後に自動フォーマット PostToolUse prettier --write など
特定ファイルへの書き込みをブロック PreToolUse 条件チェックして exit 2
作業ログを自動記録 Stop タイムスタンプ付きでファイルにappend
セッション開始時にコンテキストを注入 SessionStart echo でプロジェクト情報を出力

個人的に気になっているのは 「Slackに通知を飛ばす」 です。
リモートワークで別の作業をしているときも、
Slackで「Claude Codeが終わったよ」と通知が来たら最高ですよね。

自分の開発スタイルに合わせて、
「こんなことできるかな?」と試してみると面白いと思います。

おわりに

  • Claude CodeのHooks機能を使えば、特定のタイミングで自動でコマンドを実行できる
  • Notification イベントと osascript を組み合わせるだけで、macOSのデスクトップ通知が実現できる
  • 設定は ~/.claude/settings.json にJSONを数行書くだけ
  • 「シェルコマンドで何かできること」ならHooksで自動化できる

「気づいたら終わってた…」を繰り返している方は、
ぜひ試してみてください。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?