Claude Notifications
PassAudited by ClawScan on May 10, 2026.
Overview
This skill coherently sets up macOS Claude Code notifications, but users should notice that it installs a notifier, changes Claude/SSH/tmux configuration, and starts a persistent local listener.
This appears to be a purpose-built notification setup skill. Before installing, be comfortable with it modifying ~/.claude/settings.json, ~/.ssh/config, remote devpod ~/.claude and ~/.tmux.conf files, installing terminal-notifier via Homebrew if needed, and running a persistent localhost launchd listener on port 19876.
Findings (6)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Running the setup will change Claude Code behavior and SSH/devpod configuration, not just send a one-time notification.
The skill runs setup commands and changes local/remote configuration, which is expected for notification setup but gives the script meaningful control over the user's environment.
The script handles: - Installs `terminal-notifier` via brew if missing ... - Adds `RemoteForward 19876` to `~/.ssh/config` ... - Configures Claude Code notification hooks in `~/.claude/settings.json`
Review the devpod hosts and configuration changes before running the setup, and keep a backup of existing Claude, SSH, and tmux configuration if those files are important.
If another local process is using port 19876, setup could stop it.
The setup script frees the notification port by killing processes listening on port 19876. This is limited to a fixed port and supports the stated purpose, but it does not verify that the process belongs to this skill.
stale_pids = result.stdout.strip().split()
for pid in stale_pids:
subprocess.run(["kill", pid], capture_output=True)Before running setup, check whether anything important is using port 19876, especially on systems with custom local services.
The setup will use whatever SSH identity or configuration the user has for the named devpods.
The skill uses the user's SSH access to modify remote devpod configuration and local SSH configuration. This is disclosed and matches the remote-notification purpose.
The script SSHs into devpods to configure them remotely ... Adds `RemoteForward 19876` to `~/.ssh/config` for each devpod
Only provide trusted devpod SSH hostnames and verify the added SSH config entries if you use custom SSH settings.
Installing the skill may cause Homebrew to fetch and install terminal-notifier if it is missing.
The setup can install an external Homebrew package. This is expected for native macOS notifications but is not represented in the registry requirements.
subprocess.run(
["brew", "install", "terminal-notifier"],If you are cautious about dependencies, install or inspect terminal-notifier yourself before running the setup script.
Local processes, and configured remote devpod sessions through the SSH tunnel, can trigger desktop notifications.
The listener accepts local HTTP POSTs on localhost port 19876, and devpod notifications reach it through SSH RemoteForward. It handles notification text rather than credentials, and it is bound to localhost.
server = HTTPServer(("127.0.0.1", PORT), NotifyHandler)Configure forwarding only for trusted devpods and avoid putting secrets in notification message text.
After setup, a background listener can continue running until the launchd agent is unloaded or removed.
The skill creates a launchd service that starts automatically and is kept alive. This persistence is clearly tied to receiving devpod notifications.
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>Install only if you want persistent notifications, and disable the launchd plist if you no longer need the listener.
