Pa Status
by @netanel-abergel
PA network health dashboard. Use when: checking if all PAs in the network are active, checking billing status, verifying calendar connections, or generating...
clawhub install pa-statusπ About This Skill
name: pa-status description: "PA network health dashboard. Use when: checking if all PAs in the network are active, checking billing status, verifying calendar connections, or generating a network status report. Reads from data/pa-directory.json."
PA Status Skill
Minimum Model
Any model. Status checks are data-driven and rule-based.When to Run
Status Checks
For each PA in data/pa-directory.json, check:
| Check | Field | Healthy State |
|---|---|---|
| Last active | last_seen | Within 24 hours |
| Billing | billing_error | false |
| Calendar | calendar_connected | true |
| Status | status | "active" |
Automated Report Script
#!/usr/bin/env python3
import json
import datetimeLoad PA directory
try:
with open('data/pa-directory.json') as f:
d = json.load(f)
except FileNotFoundError:
print("ERROR: data/pa-directory.json not found")
exit(1)today = datetime.date.today().isoformat()
online = []
issues = []
offline = []
for pa in d.get('pas', []):
name = pa['name']
owner = pa['owner']
status = pa.get('status', 'unknown')
model = pa.get('model', 'unknown')
# Format calendar and billing indicators
calendar = "β
" if pa.get('calendar_connected') else "β"
billing_ok = not pa.get('billing_error', False)
billing = "β
" if billing_ok else "β οΈ billing error"
# Classify each PA into online / issues / offline
if status == 'active' and billing_ok:
online.append(f"β’ {name} ({owner}) β {model}, cal {calendar}")
elif status == 'inactive':
offline.append(f"β’ {name} ({owner})")
else:
issues.append(f"β’ {name} ({owner}) β {billing}")
Print the report
total = len(d.get('pas', []))
print(f"π PA Network Status β {today}\n")
print(f"β
ONLINE ({len(online)}/{total})")
for line in online:
print(line)if issues:
print("\nβ οΈ ISSUES")
for line in issues:
print(line)
if offline:
print("\nβ OFFLINE")
for line in offline:
print(line)
if not issues and not offline:
print("\nAll PAs are healthy π")
Directory Schema (With Status Fields)
Add these fields to each PA entry in pa-directory.json:
{
"name": "Aria",
"phone": "+1XXXXXXXXXX",
"owner": "Owner Name",
"owner_email": "owner@company.com",
"status": "active",
"model": "your-llm-model",
"last_seen": "2026-04-01T10:00:00Z",
"calendar_connected": true,
"billing_error": false,
"billing_error_since": null
}
Replace "your-llm-model" with the actual model ID (e.g. "claude-haiku-20240307", "gpt-4o-mini", "gemini-1.5-flash").
Quick Ping (WhatsApp Reachability)
Use this for real-time check (after the script above):
For each PA in the issues list:
Send: "ping π"
Wait up to 5 minutes
If response received: mark ONLINE
If no response: mark NO_RESPONSE β check whatsapp-diagnostics and billing-monitor skills
Rule: Only ping PAs that are flagged. Do not ping healthy PAs β it creates noise.
Scheduling
| Frequency | Action | |---|---| | Daily at 09:00 | Full network report to admin | | On billing error | Immediate partial report | | On demand | When admin asks "what's the status?" |