How this skill is triggered — by the user, by Claude, or both
Slash command
/push-notifications:push-notificationsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
---
Send notifications to Microsoft Teams and macOS desktop when tasks complete, errors occur, or attention is needed.
This skill provides two notification channels:
Use notifications for:
| Type | Icon | Colour | Use When |
|---|---|---|---|
success | ✓ | Green | Task completed successfully |
error | ✗ | Red | Task failed, requires attention |
warning | ⚠ | Amber | Task completed with issues |
info | ℹ | Blue | General information update |
attention | 👁 | Purple | User input required |
| Command | Action |
|---|---|
setup | Run setup wizard for one or both channels |
test | Send test notification to all configured channels |
status | Show current configuration and statistics |
send [message] | Send a custom notification (default: info type) |
teams [message] | Send to Teams only |
desktop [message] | Send to desktop only |
disable [channel] | Temporarily disable a channel |
enable [channel] | Re-enable a disabled channel |
log | Show recent notification history |
/push-notifications setup # First-time configuration
/push-notifications test # Test all channels
/push-notifications "Build complete" # Send info notification
/push-notifications "Deployment failed" --type error
/push-notifications teams "Ready for review" # Teams only
/push-notifications desktop "Process finished" # Desktop only
/push-notifications status # Show config
Before sending any notification, check if .notifications/config.json exists.
If config exists:
.notifications/config.jsonterminal-notifier availability (if desktop enabled): which terminal-notifierIf config does NOT exist:
When no configuration exists, ask:
Notification Channels
Microsoft Teams Setup (if selected)
references/setup-guide-teams.mdDesktop Setup (if selected)
which terminal-notifierreferences/setup-guide-desktop.mdDefault Preferences
Store configuration in .notifications/config.json:
{
"schema_version": "1.0.0",
"created_at": "2026-02-25T10:30:00Z",
"updated_at": "2026-02-25T10:30:00Z",
"channels": {
"teams": {
"enabled": true,
"webhook_url": "https://outlook.office.com/webhook/...",
"verified_at": "2026-02-25T10:30:00Z"
},
"desktop": {
"enabled": true,
"tool": "terminal-notifier",
"verified_at": "2026-02-25T10:30:00Z"
}
},
"preferences": {
"default_channel": "both",
"sound_enabled": true,
"default_type": "info"
},
"statistics": {
"total_sent": 0,
"teams_sent": 0,
"desktop_sent": 0,
"last_sent_at": null
}
}
See references/config-template.json for the full schema.
Use the Bash tool to send via curl:
curl -H "Content-Type: application/json" -d @- "WEBHOOK_URL" << 'EOF'
{
"type": "message",
"attachments": [{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"text": "✓ {{TITLE}}",
"weight": "Bolder",
"size": "Medium",
"color": "Good"
},
{
"type": "TextBlock",
"text": "{{MESSAGE}}",
"wrap": true
},
{
"type": "FactSet",
"facts": [
{"title": "Skill", "value": "{{SKILL_NAME}}"},
{"title": "Time", "value": "{{TIMESTAMP}}"}
]
}
]
}
}]
}
EOF
See references/teams-message-templates.json for templates per notification type.
Colour mapping for Adaptive Cards:
"color": "Good" (green)"color": "Attention" (red)"color": "Warning" (amber)"color": "Default" (blue)"color": "Accent" (purple)Use terminal-notifier via Bash:
terminal-notifier \
-title "{{TITLE}}" \
-message "{{MESSAGE}}" \
-sound "default" \
-group "claude-code"
For different notification types:
-sound "Glass"-sound "Basso"-sound "Sosumi"-sound "default"-sound "Ping"Linux (notify-send):
notify-send "{{TITLE}}" "{{MESSAGE}}" --urgency=normal
Windows (PowerShell toast):
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
$template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02)
$template.SelectNodes("//text[@id='1']")[0].AppendChild($template.CreateTextNode("{{TITLE}}"))
$template.SelectNodes("//text[@id='2']")[0].AppendChild($template.CreateTextNode("{{MESSAGE}}"))
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Claude Code").Show([Windows.UI.Notifications.ToastNotification]::new($template))
When another skill completes, it can trigger a notification. The pattern is:
--- Skill Complete ---
[Summary of what was done]
Sending notification...
Then send the notification using the configured channels.
Integration Examples:
| Skill | Trigger | Message |
|---|---|---|
beam-selling | Engagement saved | "BEAM engagement [Company] updated - Stage [N]" |
tender-assessment | Assessment complete | "Tender assessment complete - [N] shortlisted" |
b2b-research-agent | Dossier generated | "B2B dossier ready: [Company]" |
data-quality-analysis | Report generated | "Data quality report ready - Rating: [X]" |
If Teams notification fails:
⚠ Teams notification failed
Error: Unable to reach webhook endpoint
HTTP Status: [status code]
Possible causes:
- Network connectivity issues
- Webhook URL expired or revoked
- Teams service disruption
Action taken:
- Desktop notification sent as fallback (if configured)
- Error logged
To fix:
- Check network connectivity
- Verify webhook URL is still valid in Teams
- Run `/push-notifications setup teams` to reconfigure
If desktop notification fails:
⚠ Desktop notification unavailable
Error: terminal-notifier not found in PATH
To install (macOS):
brew install terminal-notifier
For Linux (alternative):
sudo apt install libnotify-bin
# Then use: notify-send "Title" "Message"
Action taken:
- Teams notification sent (if configured)
- Desktop notification skipped
⚠ No notification channels configured
Run `/push-notifications setup` to configure:
- Microsoft Teams (incoming webhook)
- Desktop notifications (terminal-notifier)
Webhook URL Protection:
.notifications/config.json (should be in .gitignore)https://outlook.office.com/webhook/...abc123https:// before savingTesting Webhook: When user provides a webhook URL, send a test message to verify it works before saving to config.
.notifications/config.json or trigger setupBefore sending a notification, verify:
.notifications/config.jsonAfter sending:
Notification Messages:
references/config-template.json - Configuration schemareferences/teams-message-templates.json - Adaptive Card templates per typereferences/setup-guide-teams.md - Teams webhook setup instructionsreferences/setup-guide-desktop.md - Desktop notification setup instructionsnpx claudepluginhub sas-asset-management/sasamclaudecodeskills --plugin push-notificationsConfigures Bark push, WeChat, and system notifications for Claude Code projects. Enables persistent alerts and proactive sending via PowerShell scripts after tasks.
Configures Bark push, WeChat, and system notifications for Claude Code via .claude/claude-notification.local.md. Provides bash scripts for proactive task alerts.
Sends internal team notifications via Slack or Intercom for campaign updates, alerts, and approval requests with configurable urgency levels.