task-banner について
task-bannerは、Claude Codeのターン終了時にデスクトップオーバーレイを表示するmacOS向けスキルです。Stopフックで完了概要を示し、通知センターに依存しません。
主な機能
- 01最前面に完了バナーを表示
- 02タスクに応じた概要を表示
- 03Claude CodeのStopフックを使用
- 04センチネルファイルでミュートを切り替え
活用シーン
- 01Claude Codeのターン完了を確認
- 02完了した作業の短い概要を確認
- 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
セットアップ
-
このスキルのディレクトリにある
mac-overlay.jsを~/.claude/scripts/mac-overlay.jsにコピーします。 -
~/.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
}
]
}
]
}
}
- バナーに一般的な「タスク完了」ではなく、完了した「内容」を表示するには、グローバルエージェント指示ファイル(
~/.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つのセッションが終了すると、一方のバナーにもう一方の要約が表示されることがあります。問題になる場合は、セッションごとに異なるファイルパスを使用してください。