From 9743d2db0d807ab40b8ba36a1d82f005bcc342a3 Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sat, 29 Nov 2025 18:20:09 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 11 +++++++++ README.md | 3 +++ hooks/hooks.json | 14 +++++++++++ hooks/stop-notification.sh | 13 ++++++++++ plugin.lock.json | 49 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 hooks/hooks.json create mode 100755 hooks/stop-notification.sh create mode 100644 plugin.lock.json diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..5cac58a --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "stop-notification-plugin", + "description": "macOS notification when Claude finishes working", + "version": "1.1.0", + "author": { + "name": "Stefan Cho" + }, + "hooks": [ + "./hooks" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..add0c97 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# stop-notification-plugin + +macOS notification when Claude finishes working diff --git a/hooks/hooks.json b/hooks/hooks.json new file mode 100644 index 0000000..915c183 --- /dev/null +++ b/hooks/hooks.json @@ -0,0 +1,14 @@ +{ + "hooks": { + "Stop": [ + { + "hooks": [ + { + "type": "command", + "command": "${CLAUDE_PLUGIN_ROOT}/hooks/stop-notification.sh" + } + ] + } + ] + } +} diff --git a/hooks/stop-notification.sh b/hooks/stop-notification.sh new file mode 100755 index 0000000..ccca43c --- /dev/null +++ b/hooks/stop-notification.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Stop hook: Display macOS modal notification when Claude finishes working +# This hook runs when the main Claude Code agent has finished responding + +# Read JSON input from stdin (not used for simple notification) +# input_data=$(cat) + +# Display native macOS modal dialog +osascript -e 'display dialog "Claude가 작업을 완료했습니다" with title "Claude Code 작업 완료" buttons {"확인"} default button "확인" with icon note giving up after 3' + +# Exit with success (non-blocking) +exit 0 diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..9bf1c3e --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,49 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:devstefancho/claude-plugins:stop-notification-plugin", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "3983a76122cff1b9b7664c6a7b2b74e48f318c0e", + "treeHash": "d1748cf38e261f64ea1a779d57f08d3a43c294d622f52d26241e703fefa81041", + "generatedAt": "2025-11-28T10:16:22.111598Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "stop-notification-plugin", + "description": "macOS notification when Claude finishes working", + "version": "1.1.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "42427fa7f58263d6826d9c5d9c3047965df39d304cb43a3d0e51403d453ef328" + }, + { + "path": "hooks/hooks.json", + "sha256": "d000d19aedf9f8f119863793a85b28af7c25ef020685fe70be307ee2eeb8bbb6" + }, + { + "path": "hooks/stop-notification.sh", + "sha256": "0995c77e92d59ae8bffc291a1fac13874e37a147d34377cc7a76a1554ab9d5bd" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "edf9d6aa49af2291c90b13456bc8480152295788a0901094cf3b37c32d4ce20f" + } + ], + "dirSha256": "d1748cf38e261f64ea1a779d57f08d3a43c294d622f52d26241e703fefa81041" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file