by mylee04
Cross-platform desktop notifications for Claude Code, Codex, and Gemini CLI. Install via Homebrew, npm, or script.
# Add to your Claude Code skills
git clone https://github.com/mylee04/code-notifyGuides for using cli tools skills like code-notify.
Last scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T15:27:50.517Z",
"npmAuditRan": true,
"pipAuditRan": true
}See how code-notify compares with popular alternatives.
code-notify is an open-source cli tools skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by mylee04. Cross-platform desktop notifications for Claude Code, Codex, and Gemini CLI. Install via Homebrew, npm, or script. It has 290 GitHub stars.
Yes. code-notify passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/mylee04/code-notify" and add it to your Claude Code skills directory (see the Installation section above).
code-notify is primarily written in Shell. It is open-source under mylee04 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other CLI Tools skills you can browse and compare side by side. Open the CLI Tools category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh code-notify against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Official downloads: https://github.com/mylee04/code-notify/releases
Homebrew:
brew install mylee04/tools/code-notifynpm:
npm install -g code-notify
Desktop notifications for AI coding tools - get alerts when tasks complete or input is needed.
On macOS/Linux (including WSL), Code-Notify can now remind you before Codex or Claude usage resets, using the existing usage watcher and notification channels.
cn usage reset-reminders set 24,6,1, or disable it with cn usage reset-reminders offUpdate and verify the installed version:
cn update
code-notify version
v1.13.1 maintenance fix: cn status no longer reports REPAIR NEEDED for the current Claude ask_user hook format, while genuine legacy hooks remain repairable.
Usage alerts remain opt-in: start with cn usage setup --watch. Existing enabled usage configs without a reset_reminders setting use the default reminder schedule. After updating, restart any running watcher with cn usage watch restart (include your provider and interval options if customized).
Voice samples: Daily reset · Weekly reset
ask_user hooks using PreToolUse claude are recognized as enabled instead of legacycn on claude is no longer suggested for a configuration Code-Notify just installedPreToolUse commands without the Claude tool argument are still detected for repaircn and cnp for fast accessmacOS (Homebrew)
brew tap mylee04/tools
brew install code-notify
cn on
macOS (Homebrew, Already Installed)
cn update
code-notify version
If you were using the older claude-notify hook layout, supported upgrades now repair those Claude hooks automatically. On Windows, that repair also covers older notify.ps1 hook layouts and alternate Claude settings locations such as %USERPROFILE%\.config\.claude\settings.json. Existing unrelated Claude hooks are preserved during enable/disable operations.
Linux / WSL
curl -sSL https://raw.githubusercontent.com/mylee04/code-notify/main/scripts/install.sh | bash
npm (macOS / Linux / Windows)
npm install -g code-notify
cn on
Windows
irm https://raw.githubusercontent.com/mylee04/code-notify/main/scripts/install-windows.ps1 | iex
Paste this to your AI coding agent (Claude Code, Codex, Cursor, Gemini CLI, etc.):
Install code-notify using npm only. Prefer npm over curl or git clone.
npm install -g code-notify
cn on all
cn test
cn status
Expected result:
cn test shows a desktop notification.cn status shows enabled tools.If npm is unavailable, use the fallback installer in docs/installation.md.
Agent-friendly command block:
npm install -g code-notify
cn on all
cn test
npm packages are published with GitHub Actions Trusted Publisher and npm provenance. The npm postinstall script only performs global-install bootstrap tasks: on macOS/Linux it quietly repairs legacy Claude hook paths, and on Windows it bootstraps the local PowerShell wrapper. Set CODE_NOTIFY_SKIP_POSTINSTALL=1 to skip those install-time helpers.

| Command | Description |
|---|---|
cn on |
Enable notifications for all detected tools |
cn on all |
Explicit alias for enabling all detected tools |
cn on claude |
Enable for Claude Code only |
cn on codex |
Enable for Codex only |
cn on gemini |
Enable for Gemini CLI only |
cn on omp |
Enable for Oh My Pi (omp) only |
cn off |
Disable notifications |
cn off all |
Explicit alias for disabling all tools |
cn test |
Send test notification |
cn status |
Show current status |
cn update |
Update code-notify |
cn update check |
Check the latest release and show the update command |
cn click-through |
Show current macOS click-through mappings |
cn click-through add <app> |
Add a macOS click-through mapping |
cn alerts |
Configure which events trigger notifications |
cn channels |
Configure Slack/Discord delivery channels |
cn usage |
Configure Codex/Claude usage alerts |
cn sound on |
Enable sound notifications |
cn sound set <path> |
Use custom sound file |
cn voice on |
Enable voice (macOS, Windows) |
cn voice on claude |
Enable voice for Claude only |
cnp on |
Enable for current project only |
When enabling project notifications with cnp on, Code-Notify warns if Claude project trust does not appear to be accepted yet.
Project-scoped Claude hooks override the global mute file, so cn off will not suppress a project where cnp on is enabled.
all is also accepted as an explicit alias for global commands such as cn on all, cn off all, and cn status all.
Code-Notify uses the hook systems built into AI coding tools:
~/.claude/settings.json~/.codex/config.toml~/.gemini/settings.json~/.omp/agent/extensions/code-notify.jsFor Codex, Code-Notify configures notify = ["/absolute/path/to/notifier.sh", "codex"] and reads the JSON payload Codex appends on completion.
Codex currently exposes completion events through notify; approval and request_permissions prompts do not currently arrive through this hook.
On macOS, when a Codex session runs through T3 Code, Code-Notify uses the payload's thread-id to resolve the matching title from T3 Code's local state. If T3 Code is unavailable or no matching thread exists, it falls back to the workspace name.
For omp, Code-Notify writes a small managed extension module to ~/.omp/agent/extensions/code-notify.js, because omp loads extension modules instead of reading hook commands from a config file. The extension forwards omp's agent_end event to the same notifier.sh, so sound, voice, Slack/Discord channels, click-through, the global mute switch, and rate limiting all work unchanged. Like Codex, omp currently exposes completion events; approval and idle prompts are not yet wired.
When enabled, it adds hooks that call the notification script when tasks complete:
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [{ "type": "command", "command": "notify.sh stop claude" }]
}
],
"Notification": [
{
"matcher": "idle_prompt",
"hooks": [
{ "type": "command", "command": "notify.sh notification claude" }
]
}
],
"SubagentStop": [
{
"matcher": "",
"hooks": [
{ "type": "command", "command": "notify.sh SubagentStop claude" }
]
}
]
}
}
By default, notifications only fire when the AI is idle and waiting for input (idle_prompt). You can customize this:
cn alerts # Show current config
cn alerts add permission_prompt # Also n