From arb
Configures multi-channel alerts (email, Slack, webhooks, SMS) for active-compliance-monitor, notifying on policy violations, performance issues, and compliance problems via Node.js scripts.
npx claudepluginhub huifer/adsense-readiness-benchmark --plugin arbThis skill uses the workspace's default tool permissions.
Configure automated alert system to notify you of issues immediately. Supports email, Slack, webhooks, and SMS.
Suggests manual /compact at logical task boundaries in long Claude Code sessions and multi-phase tasks to avoid arbitrary auto-compaction losses.
Share bugs, ideas, or general feedback.
Configure automated alert system to notify you of issues immediately. Supports email, Slack, webhooks, and SMS.
Configuration skill for active-compliance-monitor alerts.
| Field | Value |
|---|---|
| Phase | Post-approval configuration |
| Depends on | active-compliance-monitor |
| ARB item coverage | Alert thresholds should map to ARB item severity levels (Critical → immediate, High → same-day, Medium → weekly) |
| Score mode | Inherits from active-compliance-monitor run config; alerts should record which score mode triggered them |
Alert configurations should include the score_mode of the monitoring run so teams know which item set is being watched.
Real-time notification for:
Create alerts-config.json:
{
"alerts": [
{
"name": "Policy Violation",
"condition": "policy_violation_found",
"severity": "critical",
"email": "admin@example.com",
"frequency": "instant"
},
{
"name": "Performance Drop",
"condition": "lcp_> 3000",
"severity": "high",
"email": "admin@example.com",
"frequency": "daily"
}
]
}
Script (Node.js):
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_PASSWORD
}
});
async function sendAlert(alert) {
await transporter.sendMail({
from: 'alerts@example.com',
to: alert.email,
subject: `[${alert.severity}] ${alert.name}`,
html: `<h2>${alert.name}</h2><p>${alert.message}</p>`
});
}
Setup:
https://hooks.slack.com/...Script:
const axios = require('axios');
async function sendSlackAlert(message, severity = 'warning') {
const color = severity === 'critical' ? 'danger' : 'warning';
await axios.post(process.env.SLACK_WEBHOOK, {
attachments: [{
color: color,
title: message.title,
text: message.description,
fields: [
{ title: 'Severity', value: severity, short: true },
{ title: 'Time', value: new Date().toISOString(), short: true }
]
}]
});
}
// Usage
sendSlackAlert({
title: 'Policy Violation Detected',
description: 'Page /blog/health contains prohibited health claim'
}, 'critical');
Auto-log alerts to Google Sheet:
const { google } = require('googleapis');
async function logAlertToSheet(alert) {
const sheets = google.sheets_v4.spreadsheets();
await sheets.values.append({
spreadsheetId: process.env.SHEET_ID,
range: 'Alerts!A1',
valueInputOption: 'USER_ENTERED',
resource: {
values: [[new Date(), alert.type, alert.severity, alert.message]]
}
});
}
Rule: Policy Violation Detected
Trigger: New content contains prohibited keywords
Action: Email + Slack + Block publication
Response Time: Immediate
Rule: Ad Code Broken
Trigger: Ad code errors in console
Action: Email + SMS + Alert dashboard
Response Time: Immediate
Rule: Site Down
Trigger: Site status code != 200 for 5+ minutes
Action: SMS + Email + Pagerduty
Response Time: Immediate
Rule: Thin Page Published
Trigger: New page <300 words
Action: Email alert
Response Time: 1 hour
Rule: Performance Degradation
Trigger: LCP > 3 seconds or CLS > 0.25
Action: Email alert
Response Time: 4 hours
Rule: Duplicate Content
Trigger: New content >80% similar to existing
Action: Email alert
Response Time: Daily digest
Rule: Affiliate Disclosure Missing
Trigger: New post with affiliate links but no disclosure
Action: Email alert
Response Time: Daily digest
Rule: Broken Links
Trigger: Internal links returning 404
Action: Weekly digest
Response Time: Weekly
const AWS = require('aws-sdk');
const sns = new AWS.SNS();
exports.handler = async (event) => {
await sns.publish({
TopicArn: process.env.SNS_TOPIC,
Subject: 'AdSense Alert',
Message: JSON.stringify(event.alert)
}).promise();
};
groups:
- name: adsense
rules:
- alert: PolicyViolation
expr: policy_violations > 0
annotations:
summary: "Policy violation detected"
const dogapi = require('dogapi');
dogapi.event.create({
title: 'Policy Violation',
text: 'Prohibited content found on /blog/health',
priority: 'high',
alert_type: 'error'
});
{
"alert_rules": [
{
"id": "policy_violation",
"name": "Policy Violation",
"severity": "critical",
"conditions": [
"policy_violation_found = true"
],
"actions": [
"email",
"slack",
"block_publication"
],
"recipients": {
"email": ["admin@example.com"],
"slack": ["#alerts"]
}
},
{
"id": "performance_degrade",
"name": "Performance Degradation",
"severity": "high",
"conditions": [
"lcp > 3000 ms",
"cls > 0.25"
],
"actions": ["email"],
"recipients": {
"email": ["admin@example.com"]
}
}
]
}
Policy Violation
Ad Code Broken
Site Down
Thin Page
Performance Issue
Missing Disclosures
Broken Links
| Severity | Initial Response | Escalation | Owner |
|---|---|---|---|
| Critical | <5 min | 30 min | Admin |
| High | <1 hour | 4 hours | Team |
| Medium | <4 hours | 1 day | Team |
| Low | <1 day | 1 week | Queue |
Test email alert:
curl -X POST http://localhost:8000/test-alert \
-H "Content-Type: application/json" \
-d '{"type":"policy_violation"}'
Verify Slack connection:
curl -X POST $SLACK_WEBHOOK \
-d '{"text":"Test alert"}'
Load test alerts:
for i in {1..10}; do
npm run test-alert
sleep 2
done
Related Skills:
active-compliance-monitorhealth-check-automation