mcpField
T
task-banner

task-banner

github.com/openclaudiaエージェントワークフロー722116 回インストール1 週間前に更新
リポジトリ

task-banner について

task-bannerは、Claude Codeのターン終了時にデスクトップオーバーレイを表示するmacOS向けスキルです。Stopフックで完了概要を示し、通知センターに依存しません。

主な機能

  1. 01最前面に完了バナーを表示
  2. 02タスクに応じた概要を表示
  3. 03Claude CodeのStopフックを使用
  4. 04センチネルファイルでミュートを切り替え

活用シーン

  1. 01Claude Codeのターン完了を確認
  2. 02完了した作業の短い概要を確認
  3. 03設定を編集せずバナーをミュート・再開

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/openclaudia/openclaudia-skills --skill task-banner

インストール後、Claude Code で/task-bannerを入力して読み込まれたか確認します。

同梱ファイルmac-overlay.js

詳細

task-banner

Claude Code のターンが終了すると、実際に完了した内容を1行で要約した、大きくて最前面に表示され続けるデスクトップバナーを表示します。macOS の通知センターが osascript display notification の呼び出しを黙って破棄する場合でも動作します(よくある問題です。CLI が通知センターに登録されていないため、コマンドは終了コード 0 を返しますが、何も表示されません)。

このバナーは、peon-ping をベースにした JXA スクリプト mac-overlay.js が描画する、枠線のない Cocoa オーバーレイウィンドウです。そのため、通知のアクセス許可は必要ありません。

要件

  • macOS(オーバーレイは JXA 経由で Cocoa を使用します/osascript -l JavaScript)
  • フックに対応した Claude Code

セットアップ

  1. このスキルのディレクトリにある mac-overlay.js を ~/.claude/scripts/mac-overlay.js にコピーします。

  2. ~/.claude/settings.json に Stop フックを統合します(最初にファイルを読み込み、既存のフックを保持してください)。

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "m=$(cat /tmp/claude-banner-msg 2>/dev/null); rm -f /tmp/claude-banner-msg; [ -f ~/.claude/banner.off ] || osascript -l JavaScript ~/.claude/scripts/mac-overlay.js \"${m:-Task done}\" blue \"\" 0 4 2>/dev/null || true",
            "async": true
          }
        ]
      }
    ]
  }
}
  1. バナーに一般的な「タスク完了」ではなく、完了した「内容」を表示するには、グローバルエージェント指示ファイル(~/.claude/CLAUDE.md または AGENTS.md)に以下を追加します。

各タスクの完了後、完了した内容の短い要約を /tmp/claude-banner-msg に書き込んでください(例:printf 'Typecheck fixed and committed' > /tmp/claude-banner-msg)。実際のタスク内容を明確にし、一般的な「タスク完了」という表現は使わないでください。

Stop フックはメッセージを表示して、ファイルを削除します。ファイルがない場合は「タスク完了」と表示します。

切り替え(ミュート/ミュート解除)

フックは目印となるファイルを確認するため、設定を編集する必要はありません。

touch ~/.claude/banner.off   # mute the banner
rm -f ~/.claude/banner.off   # unmute

ユーザーからバナーのミュートまたはミュート解除を求められたら、該当するコマンドを実行し、実行後の状態を伝えてください。

仕組み/注意事項

  • mac-overlay.js <message> <color> <icon> <slot> <dismiss_seconds> — 色は blue/yellow/red です。dismiss に 0 を指定すると、クリックされるまで表示され続けます。
  • フックはミュート中でも /tmp/claude-banner-msg を読み取って削除するため、ミュート解除後に古い要約が表示されることはありません。
  • 最近の macOS では、JXA ブリッジの定数 NSTextAlignmentCenter は従来の AppKit の値(2)として評価されますが、統合ランタイムでは右揃えとして扱われます。付属スクリプトでは、これを補正するために配置値 1(中央揃え)を固定で指定しています。
  • /tmp/claude-banner-msg は並行している Claude セッション間で共有されます。同じ瞬間に2つのセッションが終了すると、一方のバナーにもう一方の要約が表示されることがあります。問題になる場合は、セッションごとに異なるファイルパスを使用してください。

コメント