Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Validate SLO definitions against actual metrics, generate alerting rules, and design error budget policies with burn rate calculations.
.claude/skills/williamzujkowski-service-level-objective-validator/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 93% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 113% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 286% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 161% | 0% |
Trigger conditions:
Use this skill when you have an existing SLO definition and need to validate it against real metrics, generate appropriate alerting rules with burn rate thresholds, and create compliance reports or monitoring dashboards.
Before execution, verify:
NOW_ET = 2025-10-26T03:51:54-04:00 (NIST/time.gov semantics, America/New_York)slo_definition contains target, window, and sli_query fieldsmetrics_source is one of: prometheus, cloudwatch, datadog, newrelictime_window is valid duration: 7d, 28d, or 90d (default: 28d)error_budget_policy is one of: strict, moderate, flexible (default: moderate)NOW_ETtime_windowAbort conditions:
target, window, sli_query)Token budget: T1 ≤2k tokens
Scope: Basic SLO validation for common availability/latency targets with simple alerting.
Steps:
target (e.g., 99.9%), window (e.g., 30d), sli_query (metrics query)metrics_source platformerror_budget = (1 - target) * windowsli_query over time_window (default 28d)actual_slo = avg(sli_results)consumed_budget = (1 - actual_slo) * windowremaining_budget = error_budget - consumed_budgetcompliance = (consumed_budget <= error_budget) ? "PASS" : "FAIL"yaml
expr: (1 - sli_query) > (1 - 0.999) for: 5m labels: severity: critical annotations: summary: "Error budget exhausted"
Token budget: T2 ≤6k tokens
Scope: Production SLO validation with multi-window burn rate alerts and compliance reporting.
Steps:
(1 - sli_1h) > 14.4 * (1 - target)(1 - sli_6h) > 6 * (1 - target)(1 - sli_3d) > 1 * (1 - target)error_budget_policy parameter):Prometheus (accessed 2025-10-26T03:51:54-04:00: https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/): yaml groups:
interval: 30s rules:
expr: | (1 - (sum(rate(http_requests_total{status!~"5.."}1h])) / sum(rate(http_requests_total1h])))) > (14.4 (1 - 0.999)) for: 2m labels: severity: critical annotations: summary: "Fast burn: error budget will exhaust in 2 hours"
expr: | (1 - (sum(rate(http_requests_total{status!~"5.."}3d])) / sum(rate(http_requests_total3d])))) > (1 (1 - 0.999)) for: 15m labels: severity: warning annotations: summary: "Slow burn: error budget will exhaust in 30 days"
CloudWatch: json { "AlarmName": "SLO-FastBurn-API", "ComparisonOperator": "GreaterThanThreshold", "EvaluationPeriods": 2, "MetricName": "ErrorRate", "Namespace": "AWS/ApplicationELB", "Period": 3600, "Statistic": "Average", "Threshold": 0.0144, "ActionsEnabled": true, "AlarmActions": ["arn:aws:sns:us-east-1:123456789:critical-alerts"] }
Grafana example (using Sloth format): yaml version: "prometheus/v1" service: "api-service" slos:
objective: 99.9 sli: events: error_query: sum(rate(http_requests_total{status=~"5.."}{{.window}}])) total_query: sum(rate(http_requests_total{{.window}}])) alerting: name: "API SLO" page_alert: labels: severity: critical ticket_alert: labels: severity: warning
Sources cited (accessed 2025-10-26T03:51:54-04:00):
Token budget: T3 ≤12k tokens
Scope: Advanced SLO validation with anomaly detection, trend analysis, and automated remediation recommendations.
Steps:
SLO compliance determination:
Burn rate alert severity mapping:
Dashboard generation strategy:
Ambiguity thresholds:
slo_definition lacks window → default to 30d (SRE standard)error_budget_policy not specified → default to moderateAbort/stop conditions:
Required fields:
json{ "validation_report": { "slo_name": "string", "target": "number (e.g., 99.9)", "windows": [ { "period": "string (7d, 28d, 90d)", "actual_slo": "number (achieved %)", "compliance": "PASS | FAIL | WARNING", "error_budget_total": "number (minutes)", "error_budget_consumed": "number (minutes)", "error_budget_remaining": "number (minutes)", "breach_count": "number", "breach_timeline": [ { "start": "ISO8601 timestamp", "end": "ISO8601 timestamp", "duration_minutes": "number", "severity": "critical | warning" } ] } ], "overall_compliance": "PASS | FAIL" }, "alerting_rules": { "platform": "string (prometheus | cloudwatch | datadog)", "format": "yaml | json", "rules": "string (platform-specific alert definitions)" }, "error_budget_status": { "current_burn_rate_1h": "number (multiplier, e.g., 14.4x)", "current_burn_rate_6h": "number", "current_burn_rate_3d": "number", "time_to_exhaustion": "string (e.g., '2 hours' | '15 days' | 'N/A')", "budget_policy_triggered": "boolean", "recommended_action": "freeze_deploys | monitor_closely | continue_normal_operations" }, "dashboard_config": { "platform": "string (grafana | cloudwatch | datadog)", "format": "json | yaml", "config": "object (platform-specific dashboard definition)" } }
Optional fields:
trend_analysis: Historical SLO performance trends (T3 only)remediation_recommendations: Prioritized reliability improvements (T3 only)compliance_audit: Detailed audit report with breach analysisValidation:
compliance statusInput:
json{ "slo_definition": { "name": "API Availability", "target": 99.9, "window": "30d", "sli_query": "sum(rate(http_requests_total{status!~\"5..\"}[5m])) / sum(rate(http_requests_total[5m]))" }, "metrics_source": "prometheus", "time_window": "28d", "error_budget_policy": "moderate" }
Output (abbreviated):
json{ "validation_report": { "slo_name": "API Availability", "target": 99.9, "windows": [{ "period": "28d", "actual_slo": 99.87, "compliance": "FAIL", "error_budget_consumed": 52.4, "error_budget_remaining": -12.2, "breach_count": 3 }], "overall_compliance": "FAIL" }, "error_budget_status": { "current_burn_rate_1h": 2.1, "time_to_exhaustion": "N/A (budget exhausted)" } }
Token budgets:
Safety requirements:
Auditability:
Determinism:
Primary sources:
Reference implementations:
Additional reading:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | pass→pass | 13,816 | 9,200 | -33% | 1 | 1 | 0% | 3,219 | 7,187 | +123% | 0 | 0 | — |
case-01 | fail→pass | 17,301 | 13,682 | -21% | 1 | 1 | 0% | 4,187 | 8,062 | +93% | 0 | 0 | — |
case-02 | fail→pass | 17,973 | 17,689 | -2% | 1 | 1 | 0% | 4,293 | 9,140 | +113% | 0 | 0 | — |
case-03 | fail→pass | 22,537 | 14,802 | -34% | 1 | 1 | 0% | 5,395 | 8,578 | +59% | 0 | 0 | — |
case-04 | pass→pass | 9,941 | 16,058 | +62% | 1 | 1 | 0% | 1,806 | 7,434 | +312% | 0 | 0 | — |
case-05 | pass→pass | 10,503 | 15,552 | +48% | 1 | 1 | 0% | 2,287 | 7,831 | +242% | 0 | 0 | — |
case-07 | fail→pass | 7,559 | 4,896 | -35% | 1 | 1 | 0% | 1,458 | 5,626 | +286% | 0 | 0 | — |
case-08 | fail→pass | 12,486 | 8,926 | -29% | 1 | 1 | 0% | 2,399 | 6,254 | +161% | 0 | 0 | — |
case-09 | pass→pass | 16,609 | 6,618 | -60% | 1 | 1 | 0% | 1,354 | 6,082 | +349% | 0 | 0 | — |
case-10 | fail→pass | 3,452 | 1,938 | -44% | 1 | 1 | 0% | 527 | 4,947 | +839% | 0 | 0 | — |
case-11 | fail→pass | 7,885 | 2,490 | -68% | 1 | 1 | 0% | 1,407 | 5,040 | +258% | 0 | 0 | — |
case-12 | fail→pass | 10,588 | 5,052 | -52% | 1 | 1 | 0% | 1,836 | 5,483 | +199% | 0 | 0 | — |
case-13 | pass→pass | 8,483 | 5,001 | -41% | 1 | 1 | 0% | 1,603 | 5,551 | +246% | 0 | 0 | — |
case-14 | pass→pass | 6,100 | 4,421 | -28% | 1 | 1 | 0% | 1,176 | 5,505 | +368% | 0 | 0 | — |
case-15 | pass→pass | 11,625 | 8,849 | -24% | 1 | 1 | 0% | 1,846 | 6,122 | +232% | 0 | 0 | — |
case-16 | pass→pass | 12,534 | 9,436 | -25% | 1 | 1 | 0% | 2,381 | 6,434 | +170% | 0 | 0 | — |
case-17 | pass→pass | 6,552 | 3,405 | -48% | 1 | 1 | 0% | 1,315 | 5,248 | +299% | 0 | 0 | — |
case-18 | pass→pass | 11,263 | 5,018 | -55% | 1 | 1 | 0% | 2,022 | 5,548 | +174% | 0 | 0 | — |
case-19 | fail→pass | 6,367 | 2,874 | -55% | 1 | 1 | 0% | 1,131 | 5,235 | +363% | 0 | 0 | — |
case-20 | pass→pass | 5,281 | 6,326 | +20% | 1 | 1 | 0% | 1,102 | 5,877 | +433% | 0 | 0 | — |
case-21 | pass→pass | 6,871 | 7,016 | +2% | 1 | 1 | 0% | 1,611 | 6,182 | +284% | 0 | 0 | — |
case-22 | pass→pass | 10,223 | 3,940 | -61% | 1 | 1 | 0% | 1,837 | 5,360 | +192% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.