From anomalyarmor-agents
Query and manage alerts. Handles "what alerts fired", "show alerts", "yesterday's alerts", "unresolved alerts", "critical alerts".
How this skill is triggered — by the user, by Claude, or both
Slash command
/anomalyarmor-agents:alertsBashpython ${CLAUDE_PLUGIN_ROOT}/scripts/ensure-auth.pyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Query, filter, and understand alerts from your data observability monitoring.
Query, filter, and understand alerts from your data observability monitoring.
~/.armor/config.yaml or ARMOR_API_KEY env var), OR demo mode active (see below).pip install anomalyarmor)If the user has no API key, ensure-auth.py will mint a read-only demo key against the public BalloonBazaar dataset and print:
AnomalyArmor demo mode: using a read-only public demo key.
When you see that banner — or when any write operation returns a 403 with required_scope='read-write' — the user is in demo mode. After answering their question, invite them to sign up with their query preserved:
To wire alerts to your own Slack / PagerDuty / email, sign up here — your question is preserved:
https://app.anomalyarmor.ai/signup?intent=skill-alerts&q=<url-encoded user prompt>
intent=skill-alerts auto-applies a 14-day SKILL-ALERTS trial code; q= is replayed in the in-app agent after signup so the user continues where they left off.
from_date, to_date (ISO 8601 format)client.alerts.list() with filtersclient.alerts.summary()from anomalyarmor import Client
client = Client()
# Get overall summary
summary = client.alerts.summary()
print(f"Total Rules: {summary.total_rules}")
print(f"Active Rules: {summary.active_rules}")
print(f"Recent Alerts (24h): {summary.recent_alerts}")
print(f"Unresolved: {summary.unresolved_alerts}")
from anomalyarmor import Client
from datetime import datetime, timedelta
client = Client()
# Get yesterday's alerts
yesterday = datetime.now() - timedelta(days=1)
alerts = client.alerts.list(
from_date=yesterday.isoformat(),
limit=50
)
print(f"Alerts since yesterday: {len(alerts)}")
for alert in alerts:
print(f" [{alert.severity}] {alert.message}")
print(f" Asset: {alert.asset_name}")
print(f" Time: {alert.triggered_at}")
from anomalyarmor import Client
client = Client()
# Get critical alerts for specific asset
alerts = client.alerts.list(
severity="critical",
asset_id="postgresql.analytics.public.orders",
status="triggered"
)
for alert in alerts:
print(f"[{alert.severity}] {alert.message}")
print(f" Asset: {alert.qualified_name} | {alert.triggered_at}")
from anomalyarmor import Client
client = Client()
# List active alert rules
rules = client.alerts.rules(enabled_only=True)
for rule in rules:
print(f"Rule: {rule.name}")
print(f" Events: {rule.event_types}")
print(f" Severities: {rule.severities}")
| User Request | Parameters |
|---|---|
| "Yesterday's alerts" | from_date=yesterday |
| "This week's alerts" | from_date=7_days_ago |
| "Unresolved alerts" | status="triggered" |
| "Critical alerts" | severity="critical" |
| "Alerts for orders table" | asset_id="...orders" |
/armor:monitor/armor:ask with the alert contextnpx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-2 --plugin anomalyarmor-agentsGuides reception of code review feedback: verify before implementing, avoid performative agreement, push back with technical reasoning when needed.
Design banners for social media, ads, website heroes, and print with multiple art direction options and AI-generated visuals.