一键导入
health
Check health of all production services — frontend (Vercel), backend + domain-specific (Koyeb), ML service, key API endpoints, per-city integrations
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Check health of all production services — frontend (Vercel), backend + domain-specific (Koyeb), ML service, key API endpoints, per-city integrations
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | health |
| description | Check health of all production services — frontend (Vercel), backend + domain-specific (Koyeb), ML service, key API endpoints, per-city integrations |
| argument-hint | ["all|quick|endpoints|koyeb|city"] |
| disable-model-invocation | true |
| user-invocable | true |
| allowed-tools | Bash, Read, WebFetch |
Check the health of all FloodSafe production services and integrations.
Arguments: $ARGUMENTS (default: all)
quick — Just 3 core health endpoints (fastest, <10s)all — Everything: core + subsystems + per-city + Koyeb infraendpoints — Core + domain-specific + per-city endpointskoyeb — Koyeb service + domain status onlycity — Per-city integration checks onlyService URLs:
https://frontend-lime-psi-83.vercel.apphttps://floodsafe-backend-floodsafe-dda84554.koyeb.apphttps://floodsafe-ml-floodsafe-9b7acbea.koyeb.appRun these 3 checks in parallel using separate Bash calls:
# Frontend (Vercel)
curl -s -o /dev/null -w "%{http_code} %{time_total}s" https://frontend-lime-psi-83.vercel.app
# Backend API (Koyeb)
curl -s -o /dev/null -w "%{http_code} %{time_total}s" https://floodsafe-backend-floodsafe-dda84554.koyeb.app/health
# ML Service (Koyeb) — 45s timeout for cold start
curl -s -o /dev/null -w "%{http_code} %{time_total}s" --max-time 45 https://floodsafe-ml-floodsafe-9b7acbea.koyeb.app/v1/predictions/health
If scope is quick: Stop here and report results. Skip to Step 6.
all or endpoints)Run these checks in parallel:
# Hotspot service + ML classifier status
curl -s -w "\n%{http_code} %{time_total}s" "https://floodsafe-backend-floodsafe-dda84554.koyeb.app/api/hotspots/health"
# Weather API + FHI calculator status
curl -s -w "\n%{http_code} %{time_total}s" "https://floodsafe-backend-floodsafe-dda84554.koyeb.app/api/rainfall/health"
# Routing service status
curl -s -w "\n%{http_code} %{time_total}s" "https://floodsafe-backend-floodsafe-dda84554.koyeb.app/api/routes/health"
# ML service model info
curl -s -w "\n%{http_code} %{time_total}s" "https://floodsafe-ml-floodsafe-9b7acbea.koyeb.app/v1/predictions/models/info"
# ML hotspot service health
curl -s -w "\n%{http_code} %{time_total}s" "https://floodsafe-ml-floodsafe-9b7acbea.koyeb.app/v1/hotspots/health"
all or endpoints)Test DB is reachable via a lightweight query that exercises SQLAlchemy + PostGIS:
curl -s -w "\n%{http_code} %{time_total}s" "https://floodsafe-backend-floodsafe-dda84554.koyeb.app/api/external-alerts/sources?city=delhi"
If this returns 200 with source data, the database is healthy. Parse the response to note how many alert sources are active.
all, endpoints, or city)Run these in parallel. IMPORTANT: FloodHub uses UPPERCASE city codes (DEL, BLR, YGY, SIN). Other endpoints use lowercase.
# Delhi — FloodHub (deepest integration, should have active gauge)
curl -s -w "\n%{http_code}" "https://floodsafe-backend-floodsafe-dda84554.koyeb.app/api/floodhub/status?city=DEL"
# Delhi — Hotspots (90 expected)
curl -s -w "\n%{http_code}" "https://floodsafe-backend-floodsafe-dda84554.koyeb.app/api/hotspots/?city=delhi&limit=1"
# Singapore — Hotspots (60 expected, uses NEA weather)
curl -s -w "\n%{http_code}" "https://floodsafe-backend-floodsafe-dda84554.koyeb.app/api/hotspots/?city=singapore&limit=1"
# Yogyakarta — Hotspots (19 expected)
curl -s -w "\n%{http_code}" "https://floodsafe-backend-floodsafe-dda84554.koyeb.app/api/hotspots/?city=yogyakarta&limit=1"
# Bangalore — Alerts (no dedicated hotspots file, test alerts)
curl -s -w "\n%{http_code}" "https://floodsafe-backend-floodsafe-dda84554.koyeb.app/api/external-alerts/sources?city=bangalore"
Freshness check: Parse last_updated from the external-alerts/sources response. If any source's last_updated is >2 hours old, flag as STALE with a warning.
FloodHub note: Only Delhi has an active gauge. Bangalore, Yogyakarta, and Singapore return empty — this is expected (mark as info, not error).
all or koyeb)./koyeb-cli-extracted/koyeb.exe services list
./koyeb-cli-extracted/koyeb.exe domains list
CRITICAL CHECK: If any domain status is NOT "ACTIVE", immediately warn:
WARNING: Domain status is NOT ACTIVE — possible TLS cert expiry!
Fix: ./koyeb-cli-extracted/koyeb.exe domains refresh 0c47ca00
See MEMORY.md gotcha #32 for details.
This check would have caught the Koyeb TLS cert incident proactively.
Format the results as a dashboard:
FloodSafe Health Dashboard
══════════════════════════════════════════════════════════════
CORE SERVICES
Frontend (Vercel) │ ✅ 200 │ 0.23s │
Backend API (Koyeb) │ ✅ 200 │ 0.15s │
ML Service (Koyeb) │ ⏳ 200 │ 28.4s │ Cold start
──────────────────────────────────────────────────────────────
BACKEND SUBSYSTEMS
Hotspot Service │ ✅ 200 │ 0.31s │ Classifier loaded
Rainfall/FHI │ ✅ 200 │ 0.09s │ Weather APIs OK
Routing │ ✅ 200 │ 0.12s │
Database │ ✅ 200 │ 0.22s │ via alerts/sources
──────────────────────────────────────────────────────────────
ML SERVICE MODELS
Predictions │ ✅ 200 │ 0.44s │ 2 models loaded
Hotspots ML │ ✅ 200 │ 0.33s │ XGBoost ready
──────────────────────────────────────────────────────────────
PER-CITY STATUS
Delhi │ ✅ FloodHub (1 gauge) │ ✅ Hotspots (90)
Bangalore │ ℹ️ No FloodHub gauge │ ✅ Alerts OK
Yogyakarta │ ℹ️ No FloodHub gauge │ ✅ Hotspots (19)
Singapore │ ℹ️ No FloodHub gauge │ ✅ Hotspots (60)
──────────────────────────────────────────────────────────────
INFRASTRUCTURE
Koyeb Domain │ ✅ ACTIVE │
══════════════════════════════════════════════════════════════
Overall: ✅ All services healthy (N/N checks passed)
Status codes:
If any check is ❌ or ⚠️, add a "Recommended Actions" section at the bottom with specific fix commands.
Common failure patterns:
domains refresh 0c47ca00Query the CodeGraphContext code graph for cross-cutting analysis (callers, callees, dead code, dependency chains)
Scan codebase for real counts (hotspots, contexts, tables, cities, routers, screens) and compare against FEATURES.md, CLAUDE.md, README.md. Reports drift and optionally applies fixes.
Deploy frontend (Vercel) and/or backend (Koyeb) to production with pre-deploy quality gates
Manage Koyeb backend services - check status, view logs, redeploy, list deployments
Run all quality gates before any major change. Checks TypeScript types, Vite build, ESLint, and backend tests.
Visual verification of frontend UI using Claude-in-Chrome browser automation. Takes screenshots of all screens at desktop and mobile viewports.