From 35748104adb99b9ac27872f172493aa417d03078 Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sat, 29 Nov 2025 18:01:13 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 13 ++++++++++ README.md | 3 +++ commands/check.md | 7 +++++ commands/install.md | 28 ++++++++++++++++++++ commands/remove.md | 24 +++++++++++++++++ plugin.lock.json | 53 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 128 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 commands/check.md create mode 100644 commands/install.md create mode 100644 commands/remove.md create mode 100644 plugin.lock.json diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..c860000 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,13 @@ +{ + "name": "notifications", + "description": "Plugin for managing audio and popup notifications when Claude is waiting for input or completes tasks", + "version": "1.0.0", + "author": { + "name": "Björn Allvin" + }, + "commands": [ + "./commands/check.md", + "./commands/install.md", + "./commands/remove.md" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..80d8bfc --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# notifications + +Plugin for managing audio and popup notifications when Claude is waiting for input or completes tasks diff --git a/commands/check.md b/commands/check.md new file mode 100644 index 0000000..e39e2f4 --- /dev/null +++ b/commands/check.md @@ -0,0 +1,7 @@ +Check the status of notification hooks in the current project. + +Run the notification check script: + +```bash +bash ~/.claude/plugins/marketplaces/cc-plugins/notifications/scripts/check-notifications.sh +``` diff --git a/commands/install.md b/commands/install.md new file mode 100644 index 0000000..deb6dd6 --- /dev/null +++ b/commands/install.md @@ -0,0 +1,28 @@ +Install notification hooks at either project or user level. + +This adds hooks for: +- Audio/popup notification when Claude is waiting for input (Notification event) +- Audio/popup notification when Claude completes a task (Stop event) + +**Before running the script, ask the user:** + +1. **Installation level**: "Where would you like to install notification hooks?" + - Option 1: "Project level (./.claude/) - Only for this project" + - Option 2: "User level (~/.claude/) - All projects" + +2. **If project level was chosen**, ask: "Which settings file should we use?" + - Option 1: "settings.json - Committed to git, shared with team" + - Option 2: "settings.local.json - Local only, not committed (in .gitignore)" + +3. Based on their answers, run the installation script: + +```bash +# If user chooses USER level: +bash ~/.claude/plugins/marketplaces/cc-plugins/notifications/scripts/install-notifications.sh user + +# If user chooses PROJECT level with settings.json: +bash ~/.claude/plugins/marketplaces/cc-plugins/notifications/scripts/install-notifications.sh project settings + +# If user chooses PROJECT level with settings.local.json: +bash ~/.claude/plugins/marketplaces/cc-plugins/notifications/scripts/install-notifications.sh project local +``` diff --git a/commands/remove.md b/commands/remove.md new file mode 100644 index 0000000..d42d7a6 --- /dev/null +++ b/commands/remove.md @@ -0,0 +1,24 @@ +Remove notification hooks from either project or user level. + +**Before running the script, ask the user:** + +1. **Removal level**: "Where would you like to remove notification hooks from?" + - Option 1: "Project level (./.claude/) - Only this project" + - Option 2: "User level (~/.claude/) - All projects" + +2. **If project level was chosen**, ask: "Which settings file should we update?" + - Option 1: "settings.json - Committed to git, shared with team" + - Option 2: "settings.local.json - Local only, not committed (in .gitignore)" + +3. Based on their answers, run the removal script: + +```bash +# If user chooses USER level: +bash ~/.claude/plugins/marketplaces/cc-plugins/notifications/scripts/remove-notifications.sh user + +# If user chooses PROJECT level with settings.json: +bash ~/.claude/plugins/marketplaces/cc-plugins/notifications/scripts/remove-notifications.sh project settings + +# If user chooses PROJECT level with settings.local.json: +bash ~/.claude/plugins/marketplaces/cc-plugins/notifications/scripts/remove-notifications.sh project local +``` diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..58d80bb --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,53 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:bjornallvin/cc-plugins:notifications", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "77861e38ceb751b200c635540fea53bc470e7d76", + "treeHash": "6e33d46828e744eb426d47d28f6737061d717d9dc27bfd7d36a65cc2af94f10a", + "generatedAt": "2025-11-28T10:14:16.509773Z", + "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": "notifications", + "description": "Plugin for managing audio and popup notifications when Claude is waiting for input or completes tasks", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "48c24ccd53148bd860353ebc1383652671f13616ac26e36f700e3192bd60b705" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "9becb676bbcfc89616dc35c561b2c2796959bc96b0aa6a01fab56a9460ed9392" + }, + { + "path": "commands/install.md", + "sha256": "5d72655826fe602d44cfdd146d49887a31f48c06aa89d4bf37b7f04675f81ffb" + }, + { + "path": "commands/check.md", + "sha256": "7b098215aa09a814f18837978588a2afc30e6d684977823a84fbae0c50376995" + }, + { + "path": "commands/remove.md", + "sha256": "43355bea6a88faceca6bf444e0d5ea182d881ee76eebb03a8a32efb60b694e98" + } + ], + "dirSha256": "6e33d46828e744eb426d47d28f6737061d717d9dc27bfd7d36a65cc2af94f10a" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file