Notification Hub

Unified notification hub collecting all skill alerts and delivering by priority

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 724 · 7 current installs · 7 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The name/description (centralized notification hub) aligns with the instructions to scan events/, classify priorities, deduplicate, deliver, and save history. However, delivering urgent items via Discord implies access to a Discord bot token or webhook, which is not declared in the skill's requirements.
!
Instruction Scope
SKILL.md explicitly instructs the agent to read events/ and memory/notifications/ and to read configuration from TOOLS.md; it also directs sending messages (sendDiscordDM) and adding items to heartbeat/daily-report queues. Reading and writing those directories is within the stated purpose, but the instructions assume the agent has permission to access other skills' event files and a configured delivery integration. The skill does not document where channel IDs or credentials live, granting it potentially broad file/system access by implication.
Install Mechanism
Instruction-only skill with no install spec or code files; nothing will be written to disk by an installer. This minimizes install-time risk.
!
Credentials
The skill requires sending Discord DMs (an external service) but declares no required environment variables or primary credential (no Discord token/webhook). It references TOOLS.md for channel ID but doesn't explain where a bot token or webhook is stored. That missing credential declaration is disproportionate/unexplained. Also, the skill will read events/ and memory/notifications/, which may contain sensitive data from other skills; that access should be explicit and limited.
Persistence & Privilege
always is false and the skill is not automatically persistent. It does instruct saving sent history under memory/notifications/, which is a modest local persistence consistent with its purpose. Nothing in the manifest requests elevated or global privileges.
What to consider before installing
This skill appears to do what it says (aggregate events and send notifications), but before installing: 1) Verify how Discord delivery is configured — where is the bot token or webhook stored? The skill mentions TOOLS.md and a channel ID but does not declare required credentials. 2) Confirm the agent's file permissions: the skill reads events/ and writes memory/notifications/; ensure those directories don't contain sensitive secrets you don't want aggregated or transmitted. 3) Prefer explicit credential handling: require a specific env var (e.g., DISCORD_TOKEN or DISCORD_WEBHOOK) and document where TOOLS.md lives and who can edit it. 4) Test in a sandboxed agent or with a throwaway Discord channel to confirm behavior. 5) If you cannot confirm where channel IDs and tokens are stored, treat the skill as risky and do not enable it for agents with access to sensitive data.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk9736vnm0sm51jvm6c17g1yakn817e37

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

notification-hub

Notification Integration — Collects all skill notifications centrally and delivers by priority to reduce notification fatigue.

🎯 Purpose

Centrally manage diverse notifications from all skills and deliver at appropriate timing and channels based on importance.

📥 Notification Sources

Collect all event files from events/ directory:

events/
  ├── health-2026-02-14.json         (health-monitor)
  ├── scrape-result-2026-02-14.json  (data-scraper)
  ├── dm-check-2026-02-14.json       (insta-post)
  ├── competitor-2026-02-14.json     (competitor-watch)
  └── workflow-2026-02-14.json       (skill-composer)

🚦 Priority Filtering

1. urgent — Immediate Discord DM

Conditions:

  • Security issues (abnormal login, suspicious access)
  • System errors (OpenClaw down, browser disconnected)
  • Cost exceeded (API usage 90%+)
  • Critical mentions

Delivery:

  • Discord DM (channel ID configured in TOOLS.md)
  • Send immediately (within 1 min)

Example:

🚨 Urgent: Browser disconnected
Port 18800 not responding. Auto-recovery attempted but failed.
Manual check needed: openclaw browser start

2. important — Include in next heartbeat

Conditions:

  • New Instagram DMs (unread)
  • Trending keyword surge detected
  • Competitor launches new service
  • Git push needed (10+ unpushed commits)

Delivery:

  • Include in next heartbeat response (~30 min intervals)
  • Bundle multiple notifications in single message

Example:

📢 3 Updates

📩 2 Instagram DMs (iam.dawn.kim, partner_xyz)
📈 Trend: "AI agent" surging (+150%)
🔄 Git: 12 commits waiting for push

3. info — Include in daily-report only

Conditions:

  • Regular statistics updates
  • Daily token usage
  • Completed workflows
  • General system logs

Delivery:

  • Include when daily-report skill executes
  • Send summary once daily

Example:

📊 Daily Report (2026-02-14)

✅ 3 workflows completed
📊 Tokens: 45,230 / 100,000 (45%)
📝 Memory: 3.2 GB
🔧 Health check: OK

🔕 Duplicate Prevention

Never send notification more than once for same event.

Duplicate Detection

{
  "event_id": "health-check-2026-02-14-07:00",
  "fingerprint": "sha256(source + type + key_data)",
  "notified_at": "2026-02-14T07:05:00+09:00"
}

History Storage

memory/notifications/
  ├── sent-2026-02-14.json
  ├── sent-2026-02-13.json
  └── ...

sent-YYYY-MM-DD.json structure:

{
  "date": "2026-02-14",
  "notifications": [
    {
      "id": "health-check-2026-02-14-07:00",
      "priority": "info",
      "sent_at": "2026-02-14T07:05:00+09:00",
      "channel": "discord_dm",
      "source": "health-monitor"
    }
  ]
}

📢 Delivery Channels

Discord DM

  • Channel ID: Configure in TOOLS.md
  • Purpose: urgent, important notifications
  • Format: Markdown (emoji + title + content)

Heartbeat Response

  • Purpose: Bundle important notifications
  • Format: Concise bullet list

Daily Report

  • Purpose: info notification summary
  • Format: Structured section organization

🎤 Triggers

Activate skill with these keywords:

  • "notification settings"
  • "notification"
  • "check notifications"
  • "anything new"

🚀 Usage Examples

Check Notifications

"Anything new?"
→ Immediately summarize important+ notifications

Notification Settings

"Set Instagram DMs to immediate notification"
→ Promote dm-check events to urgent

Notification History

"Show today's notification history"
→ Read memory/notifications/sent-2026-02-14.json

⚙️ Implementation Guide

1. Collect Events

// Scan events/ directory
const events = fs.readdirSync('events/')
  .filter(f => f.endsWith('.json'))
  .map(f => JSON.parse(fs.readFileSync(`events/${f}`)));

2. Classify by Priority

const urgent = events.filter(e => e.priority === 'urgent');
const important = events.filter(e => e.priority === 'important');
const info = events.filter(e => e.priority === 'info');

3. Duplicate Check

const sent = loadSentHistory(today);
const newEvents = events.filter(e => 
  !sent.notifications.some(n => n.id === e.id)
);

4. Deliver

// urgent → Immediate Discord DM
if (urgent.length > 0) {
  await sendDiscordDM(urgent);
}

// important → Add to heartbeat queue
if (important.length > 0) {
  await addToHeartbeatQueue(important);
}

// info → Add to daily-report queue
if (info.length > 0) {
  await addToDailyReportQueue(info);
}

5. Save History

saveSentHistory(today, newlySentNotifications);

📊 Event Priority Guide

Guide each skill to include priority field when creating events:

{
  "timestamp": "2026-02-14T07:58:00+09:00",
  "skill": "health-monitor",
  "priority": "urgent",  // urgent | important | info
  "message": "Browser disconnected",
  "data": { ... }
}

🐧 Built by 무펭이Mupengism ecosystem skill

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…