Back to list
TobiasWooldridge

wavecap-alerts

by TobiasWooldridge

Transcribes emergency radio streams in real time, to help volunteers/rescue staff/enthusiasts stay abreast of them

0🍴 0📅 Jan 5, 2026

SKILL.md


name: wavecap-alerts description: Manage WaveCap alert rules and keyword triggers. Use when the user wants to view, add, update, or remove alert phrases and notification rules.

WaveCap Alerts Skill

Use this skill to manage keyword alert rules in WaveCap.

Authentication Required

Updating alerts requires editor authentication:

TOKEN=$(curl -s -X POST http://localhost:8000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"password": "YOUR_EDITOR_PASSWORD"}' | jq -r '.token')

View Current Alerts

curl -s http://localhost:8000/api/alerts | jq

Response Format

{
  "enabled": true,
  "rules": [
    {
      "id": "rule-1",
      "label": "Emergency",
      "phrases": ["emergency", "urgent", "mayday"],
      "playSound": true,
      "notify": true,
      "caseSensitive": false,
      "enabled": true
    }
  ]
}

Update Alerts

The PUT endpoint replaces the entire alerts configuration:

curl -s -X PUT http://localhost:8000/api/alerts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "rules": [
      {
        "id": "emergency",
        "label": "Emergency",
        "phrases": ["emergency", "mayday", "urgent"],
        "playSound": true,
        "notify": true,
        "caseSensitive": false,
        "enabled": true
      },
      {
        "id": "fire",
        "label": "Fire",
        "phrases": ["structure fire", "brush fire", "fire alarm"],
        "playSound": true,
        "notify": true,
        "caseSensitive": false,
        "enabled": true
      }
    ]
  }' | jq

Alert Rule Fields

FieldTypeDescription
idstringUnique identifier for the rule
labelstringDisplay name for the alert
phrasesstring[]Keywords/phrases to match
playSoundboolPlay audio alert when triggered
notifyboolShow notification when triggered
caseSensitiveboolMatch case exactly
enabledboolWhether rule is active

Common Operations

Add a New Alert Rule

First get existing alerts, then append the new rule:

# Get current config
CURRENT=$(curl -s http://localhost:8000/api/alerts)

# Add new rule using jq
UPDATED=$(echo "$CURRENT" | jq '.rules += [{
  "id": "medical",
  "label": "Medical Emergency",
  "phrases": ["cardiac arrest", "cpr", "unresponsive"],
  "playSound": true,
  "notify": true,
  "caseSensitive": false,
  "enabled": true
}]')

# Update
curl -s -X PUT http://localhost:8000/api/alerts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "$UPDATED" | jq

Disable a Rule

CURRENT=$(curl -s http://localhost:8000/api/alerts)
UPDATED=$(echo "$CURRENT" | jq '(.rules[] | select(.id == "rule-id")).enabled = false')
curl -s -X PUT http://localhost:8000/api/alerts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "$UPDATED" | jq

Remove a Rule

CURRENT=$(curl -s http://localhost:8000/api/alerts)
UPDATED=$(echo "$CURRENT" | jq '.rules = [.rules[] | select(.id != "rule-to-remove")]')
curl -s -X PUT http://localhost:8000/api/alerts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "$UPDATED" | jq

Add Phrases to Existing Rule

CURRENT=$(curl -s http://localhost:8000/api/alerts)
UPDATED=$(echo "$CURRENT" | jq '(.rules[] | select(.id == "emergency")).phrases += ["crisis", "help"]')
curl -s -X PUT http://localhost:8000/api/alerts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "$UPDATED" | jq

Disable All Alerts

curl -s -X PUT http://localhost:8000/api/alerts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false, "rules": []}' | jq

View Triggered Alerts in Transcriptions

Transcriptions that triggered alerts have an alerts array:

curl -s "http://localhost:8000/api/streams/{STREAM_ID}/transcriptions?limit=100" | \
  jq '[.transcriptions[] | select(.alerts | length > 0)] | .[] | {timestamp, text, alerts: [.alerts[].ruleLabel]}'

Tips

  • The entire rules array is replaced on PUT - always include all rules you want to keep
  • Use descriptive id values for easy reference
  • Keep caseSensitive: false for most use cases
  • Test phrases with common variations and misspellings

Score

Total Score

60/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon