agentleFS
jholhewresjholhewres/devclaw-skills/skills/health/SKILL.md

health

Skill4 starsChanged 9 months agoMITView on GitHub

Health and system monitoring — check services, uptime, and alerts

  • Reads credentials
  • Sends data out

We split this skill into the rules it gives an agent

1 rule. 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 36 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Check from multiple locations if possible

    line 192

“Common” is measured: kept by at least 6 in 10 of the 36 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Health

Monitor system health, services, and uptime.

Setup

API keys (optional; for UptimeRobot, Healthchecks.io, Slack, Resend; store in vault, never use export):

  • UptimeRobot: vault_save uptimerobot_key "xxx"
  • Healthchecks.io: vault_save healthchecks_uuid "xxx"
  • Slack webhook: vault_save slack_webhook_url "xxx"
  • Resend: vault_save resend_api_key "xxx"
  • Keys auto-inject as uppercase env vars.

curl, jq, nc, openssl are usually pre-installed. For systemd/Docker checks, those tools must be available.

HTTP Health Checks

# Basic health check
curl -s -o /dev/null -w "%{http_code}" https://example.com

# With response time
curl -s -o /dev/null -w "HTTP: %{http_code}, Time: %{time_total}s\n" https://example.com

# Check multiple endpoints
for url in "https://api.example.com/health" "https://app.example.com"; do
  status=$(curl -s -o /dev/null -w "%{http_code}" "$url")
  echo "$url: $status"
done

# Detailed check
curl -s -w "\n\nDNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\nHTTP: %{http_code}\n" -o /dev/null https://example.com

Service Monitoring

# Check if port is open
nc -zv example.com 443

# Check with timeout
timeout 5 bash -c "echo > /dev/tcp/example.com/443" && echo "UP" || echo "DOWN"

# Check systemd service
systemctl is-active nginx

# Check service status
systemctl status nginx --no-pager

# Check Docker container
docker inspect -f '{{.State.Status}}' container_name

System Health

# CPU usage
top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1

# Memory usage
free -h

# Disk usage
df -h

# Load average
uptime

# Check running processes
ps aux --sort=-%mem | head -10

# Check open files
lsof | wc -l

# Network connections
netstat -an | grep ESTABLISHED | wc -l

SSL Certificate Check

# Check expiration
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

# Days until expiration
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2 | xargs -I {} date -d {} +%s | xargs -I {} echo $(( ({} - $(date +%s)) / 86400 )) days

# Certificate info
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -text | grep -E "Issuer:|Subject:|DNS:"

Uptime Monitoring

UptimeRobot API

# Get monitors
curl -s -X POST "https://api.uptimerobot.com/v2/getMonitors" \
  -H "Cache-Control: no-cache" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "api_key=$UPTIMEROBOT_KEY&format=json" | jq '.monitors[]'

# Create monitor
curl -s -X POST "https://api.uptimerobot.com/v2/newMonitor" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "api_key=$UPTIMEROBOT_KEY&friendly_name=MySite&url=https://example.com&type=1" | jq '.'

# Get uptime
curl -s -X POST "https://api.uptimerobot.com/v2/getMonitors" \
  -d "api_key=$UPTIMEROBOT_KEY&monitors=MONITOR_ID&custom_uptime_ratios=30" | jq '.monitors[0].custom_uptime_ratio'

Healthchecks.io

# Ping (mark as alive)
curl -s "https://hc-ping.com/$HEALTHCHECKS_UUID"

# Report failure
curl -s "https://hc-ping.com/$HEALTHCHECKS_UUID/fail"

# Report start
curl -s "https://hc-ping.com/$HEALTHCHECKS_UUID/start"

# With execution time
curl -s "https://hc-ping.com/$HEALTHCHECKS_UUID/$?rid=$(uuidgen)"

Alerting

Slack Alert

send_alert() {
  local message="$1"
  curl -s -X POST "$SLACK_WEBHOOK_URL" \
    -H "Content-Type: application/json" \
    -d "{\"text\": \"🚨 Health Alert: $message\"}"
}

# Usage
curl -s -o /dev/null -w "%{http_code}" https://example.com | grep -v "200\|301\|302" && send_alert "Site down!"

Email Alert

send_email() {
  local subject="$1"
  local body="$2"
  curl -s -X POST "https://api.resend.com/emails" \
    -H "Authorization: Bearer $RESEND_API_KEY" \
    -H "Content-Type: application/json" \
    -d "{\"from\": \"alerts@example.com\", \"to\": \"admin@example.com\", \"subject\": \"$subject\", \"text\": \"$body\"}"
}

Monitoring Script

#!/bin/bash
# health_check.sh

check_url() {
  local url=$1
  local status=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$url")
  if [[ "$status" =~ ^2[0-9][0-9]$ ]]; then
    echo "✅ $url - OK ($status)"
  else
    echo "❌ $url - FAIL ($status)"
    # Send alert here
  fi
}

check_url "https://example.com"
check_url "https://api.example.com/health"

Tips

  • Set appropriate timeouts for checks
  • Check from multiple locations if possible
  • Monitor response time, not just status
  • Set up alerts for certificate expiration
  • Log check results for trend analysis

Triggers

health check, uptime, monitor, status check, service health, ssl check, system monitoring, health monitoring

Download now (ZIP)

  • Other versions52 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 52

    1. garrytan/gstack★ 139ksame name
    2. tw93/Waza★ 7.5ksame name
    3. tw93/claude-health★ 7.3ksame name
    4. agenticnotetaking/arscontexta★ 3.5ksame name
    5. kellyvv/PhoneClaw★ 1.3ksame name
    6. ninehills/skills★ 280same name
    7. kv0906/pm-kit★ 138same name
    8. buildomator/buildomator★ 101same name
    9. priyanshuchaudhary53/naval-skills★ 19same name
    10. JaimeGBA/Ion★ 9same name

    42 more not listed

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • Used alongsideProjects with it also use ios-clean, ios-fix and 10 more.

    Other files people use alongside this one.

    Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
    • Saqlain-811Skill

      ios-clean

      Remove the DebugBridge SPM package and all #if DEBUG wiring from an iOS app. (gstack)

      Also in 5 projects that use this

    • Saqlain-811Skill

      ios-fix

      Autonomous iOS bug fixer. (gstack)

      Also in 5 projects that use this

    • ShreyRaviSkill

      plan-tune

      Self-tuning question sensitivity + developer psychographic for gstack (v1: observational). Review which AskUserQuestion prompts fire across gstack skills, set per-question preferences (never-ask / always-ask / ask-only-for-one-way), inspect the dual-track profile (what you declared vs what your behavior suggests), and enable/disable question tuning. Conversational interface — no CLI syntax required.

      Also in 8 projects that use this

    • seek888Skill

      pair-agent

      Pair a remote AI agent with your browser. One command generates a setup key and prints instructions the other agent can follow to connect. Works with OpenClaw, Hermes, Codex, Cursor, or any agent that can make HTTP requests. The remote agent gets its own tab with scoped access (read+write by default, admin on request). Use when asked to "pair agent", "connect agent", "share browser", "remote browser", "let another agent use my browser", or "give browser access". (gstack) Voice triggers (speech-to-text aliases): "pair agent", "connect agent", "share my browser", "remote browser access".

      Also in 10 projects that use this

    • ShreyRaviSkill

      landing-report

      Read-only queue dashboard for workspace-aware ship. Shows which VERSION slots are currently claimed by open PRs, which sibling Conductor workspaces have WIP work likely to ship soon, and what slot /ship would pick next. No mutations — just a snapshot. Use when asked to "landing report", "what's in the queue", "show me open PRs", or "which version do I claim next". (gstack)

      Also in 7 projects that use this

    • seek888Skill

      open-gstack-browser

      Launch GStack Browser — AI-controlled Chromium with the sidebar extension baked in. Opens a visible browser window where you can watch every action in real time. The sidebar shows a live activity feed and chat. Anti-bot stealth built in. Use when asked to "open gstack browser", "launch browser", "connect chrome", "open chrome", "real browser", "launch chrome", "side panel", or "control my browser". Voice triggers (speech-to-text aliases): "show me the browser".

      Also in 8 projects that use this

    • +2 more from Saqlain-811
    • +3 more from ShreyRavi
  • In this repository83 other files it gives its agents.

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.