agentsclimarketplace

Notify config

Skill fadymondy/claude-notifications/skills/notify-config

Configure Claude Code notification channels — enable Slack/Discord/email/WhatsApp/desktop voice/web push, set credentials, route specific events to specific channels. Use when the user wants to "set up notifications", "add a Slack webhook", "turn on voice", "stop notifications for X event", or otherwise manage `~/.claude-notifications/config.json`.From its SKILL.md

Install
npx -y skills add fadymondy/claude-notifications --skill notify-config

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

3.6 KB, as published. Nobody here has run it

/notify-config — manage notification channels

This skill edits the user's notification config at ~/.claude-notifications/config.json (or the project-local override at <project>/.claude-notifications.json).

Steps

  1. Read current config first. Always:

    cat ~/.claude-notifications/config.json 2>/dev/null || echo '{}'
    

    Never overwrite without seeing what's there.

  2. Merge new channel block into existing JSON. Use jq so you don't lose other channels:

    mkdir -p ~/.claude-notifications
    tmp=$(mktemp)
    jq '.channels.slack = {
      enabled: true,
      webhook_url: "https://hooks.slack.com/services/...",
      channel: "#claude",
      events: ["notification","stop"]
    }' ~/.claude-notifications/config.json > "$tmp" \
      && mv "$tmp" ~/.claude-notifications/config.json
    
  3. Set enabled: false to disable instead of removing the block — preserves credentials for re-enabling.

  4. Test immediately after a change:

    bash "$CLAUDE_PLUGIN_ROOT/scripts/notify.sh" manual <<< '{"title":"config test","body":"new channel works"}'
    tail -3 ~/.claude-notifications/logs/notify.log
    

Channel cheat sheet

ChannelRequired fields
slackwebhook_url (Incoming Webhook from api.slack.com)
discordwebhook_url (Server Settings → Integrations → Webhooks)
emailsmtp_url, smtp_user, smtp_password, from, to[] — Gmail needs an app password
whatsappprovider: callmebot → phone + apikey (text "I allow callmebot" to +34 644 51 95 23 to get one)
provider: twilio → account_sid, auth_token, from, to[]
desktopnothing required — works out of the box. voice.enabled for spoken alerts.
webpushprovider: ntfy → just a unique topic. Install ntfy app on phone, subscribe to topic.
provider: pushover → user_key + app_token
webhookurls[] — your own endpoint

Event routing

A channel sees an event when either:

  • the channel's events array contains that event name (or "*"), or
  • the top-level events.<name> array names the channel.

Default to ["notification", "stop"] — never ["*"] unless the user explicitly asks. pre-tool and post-tool fire many times per turn.

Events: notification, stop, subagent-stop, session-start, session-end, user-prompt, pre-tool, post-tool, manual.

Credentials hygiene

  • Project config (<project>/.claude-notifications.json) is fine for routing rules but never put secrets there — it can be committed.
  • Put creds in ~/.claude-notifications/config.json (chmod 600) or CN_* env vars.
  • If the user pastes a webhook URL or token in chat, write it to user config and tell them where it landed so they can rotate later.

When done

Confirm with one line: which channels are now enabled and which events fire them. No long recap.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.