hoangsonww/slo-check
> Define and check simple service-level objectives for Claude Code from Agent Monitor data — session completion rate, tool success rate (PostToolUse/PreToolUse), and error rate (APIError/total) — then compare each to its target and report the error budget remaining. Use when reporting reliability or when someone asks "are we meeting our SLOs?".
npx skills add https://github.com/hoangsonww/Claude-Code-Agent-Monitor --skill slo-check
Turn raw event counts into a clear SLO scorecard with error-budget accounting.
The user provides: $ARGUMENTS
This may be:
Default SLO targets: completion rate ≥ 95%, tool success rate ≥ 99%, error rate ≤ 1%.
| Endpoint | Returns |
|----------|---------|
| GET /api/analytics | event_types (PreToolUse, PostToolUse, APIError counts), sessions_by_status, daily_events (365d), daily_sessions (365d) — the raw numerators/denominators for every SLI |
| GET /api/stats | total_sessions, total_events, events_today, sessions_by_status — fleet totals and recency |
| GET /api/events?session_id=X | Per-session stream — drill into the sessions that breach an SLO |
Compute each SLI from GET /api/analytics / GET /api/stats:
sessions_by_status; count active/running as in-flight, exclude them from the denominator if still open).PostToolUse / PreToolUse (capped at 100%).APIError / total_events.Within a window, derive the numerators/denominators from daily_events / daily_sessions.
For each SLI, compare to its target and mark MET ✅ or BREACHED ❌.
For each objective, report the error budget and how much remains:
1 − target (e.g., 1% for a 99% target).(observed − target) / (1 − target).(target − observed) / target.For any breached SLO, list the sessions contributing most to the breach (most failed tools or most APIErrors) via GET /api/events?session_id=X.
session_id values — never fabricate numerators or denominators.curl cannot reach http://localhost:4820, tell the user to start the dashboard with npm start from the repo root.Take hoangsonww/slo-check from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.