SLO and Error Budget Skill

Define Service Level Objectives (SLOs) and an error budget policy for a service.

SLO and Error Budget Skill — The Skill Playground: pick the Executive Update skill, fill in a few notes, hit run, and watch a structured executive… (from the mohitagw15856/pm-claude-skills README)

From the mohitagw15856/pm-claude-skills README — shows the whole collection, not only this skill. · view on GitHub

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/slo-error-budget.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit mohitagw15856/pm-claude-skills/skills/slo-error-budget#main ~/.claude/skills/slo-error-budget

For one project only, change the path to .claude/skills/slo-error-budget.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of SLO and Error Budget Skill

Show the full text275 lines
namedescription
slo-error-budgetDefine Service Level Objectives (SLOs) and an error budget policy for a service. Use when asked to write SLOs, define SLIs, calculate an error budget, set reliability targets, or create an error budget policy. Produces a complete SLO document with SLI definitions, target calculation, error budget policy, burn rate alerts, and review cadence.

SLO and Error Budget Skill

Produce a complete, implementable SLO document for a service — covering what to measure, what target to set, how to calculate the error budget, and what to do when it burns.

A good SLO is not a target to hit. It is an agreement about what reliability means for your users — and a framework for making principled trade-offs between reliability and velocity.

Where this sits — the frame of the spine

This is the governor of the incident-response spine: slo-error-budget (frame) → /debugging-log-analyser → /incident-postmortem → /oncall-runbook. It sets the error budget the whole loop runs inside — the objective forcing function that later decides whether a postmortem's action items get done now (budget spent) or deferred (budget healthy). Shared terms (SLO, error budget, incident, action item) are defined once in docs/craft/incident-response.md.

The loop

An SLO fails when it's aspirational instead of user-derived, or when the budget has no teeth. Phase 1 is load-bearing: a target picked from "100% minus a bit" defends nothing.

  1. Derive the target from users, not from 100%. Pick the SLIs that track what users actually feel (success rate, latency, freshness) and a target from what they need — the point where more reliability stops mattering to them. Done when: each SLO target traces to a stated user need, and none is 100% or a round number chosen for looking good.
  2. Turn the target into a budget with math. Compute the error budget (100% minus the SLO, over the window) as a concrete allowance — requests, minutes, or events — not a percentage nobody feels. Done when: the budget is expressed as a countable allowance for the window, and burn-rate alerts fire before it's spent, not after.
  3. Give the budget teeth — the policy is the point. Write what changes at each budget level: healthy → ship; at risk → slow and shore up; exhausted → stop feature work and fix reliability. A budget with no policy is a dashboard nobody obeys. Done when: each budget level names a specific, enforced consequence — including a real feature-freeze trigger — that a team would actually follow.
  4. Hand off as the loop's governor. State that this budget is what prioritises /incident-postmortem action items: budget spent makes them urgent, budget healthy lets them wait. Done when: the loop downstream could use this budget to decide action-item urgency without re-litigating the reliability target.

Required Inputs

Ask for these if not already provided:

  • Service name and brief description of what it does
  • Primary users — who depends on this service and how
  • User-facing interactions to protect — e.g. API calls, page loads, transactions
  • Current reliability data — error rate, latency, uptime (last 30–90 days if available)
  • Existing on-call setup — who responds to alerts?
  • Deployment frequency — how often does the team ship?
  • Any existing SLAs with customers — these constrain SLO targets

Key Definitions

Always establish these before writing the SLO:

Term Definition
SLI (Service Level Indicator) The metric being measured — e.g. "% of requests completing successfully in <500ms"
SLO (Service Level Objective) The target for that metric — e.g. "99.5% of requests"
SLA (Service Level Agreement) The contractual commitment to customers — must be looser than the SLO
Error budget The allowed headroom below 100% — the budget for planned and unplanned downtime
Burn rate How fast the error budget is being consumed

Output Format


SLO Document: [Service Name]

Service: [Name] | Team: [Team name] Owner: [Name / role] | Approved by: [Name] Effective date: [Date] | Review date: [Date + 3 months] Version: [1.0]


Why This SLO Exists

[2–3 sentences. What reliability problem are we solving? What was happening before this SLO that made us need it? What decision-making does this SLO enable?]


Service Overview

What this service does: [One sentence] Who depends on it: [Internal teams / external customers / both — describe] Critical user journeys protected by this SLO:

  1. [Journey 1 — e.g. "User completes a payment"]
  2. [Journey 2]
  3. [Journey 3]

SLIs — What We Measure

Define one SLI per user journey or reliability dimension. Keep it to 3–5 SLIs maximum.

SLI 1: [Name — e.g. Request Success Rate]
Field Detail
What it measures [e.g. "% of API requests that return a non-5xx response"]
Good event definition [e.g. "HTTP response with status 2xx or 4xx, completed within 500ms"]
Bad event definition [e.g. "HTTP response with status 5xx, or any response taking >500ms"]
Measurement source [e.g. "Application load balancer access logs / Datadog APM / Prometheus"]
Measured over Rolling 28-day window
Exclusions [e.g. "Health check endpoints excluded / Requests during planned maintenance excluded"]
SLI 2: [Name — e.g. Latency]
Field Detail
What it measures [e.g. "P99 response time for the /checkout endpoint"]
Good event definition [e.g. "Request completes in ≤500ms at P99"]
Bad event definition [e.g. "Request takes >500ms at P99"]
Measurement source [Source]
Measured over Rolling 28-day window
Exclusions [Any exclusions]
SLI 3: [Name — e.g. Data Freshness / Queue Depth / etc.]

[Same structure]


SLO Targets

SLI Target Window Error Budget
[SLI 1 name] [X]% 28-day rolling [100 - X]% = [Y minutes/month]
[SLI 2 name] [X]% 28-day rolling [100 - X]% = [Y minutes/month]
[SLI 3 name] [X]% 28-day rolling [100 - X]% = [Y minutes/month]

How targets were set:

  • Historical baseline (last 90 days): [X]%
  • Target is set [above / at] historical baseline to [improve reliability / reflect current reality while formalising the commitment]
  • Rationale: [1–2 sentences]

What 100% is NOT the target: [Brief explanation of why targeting 100% is counterproductive — it discourages feature development and doesn't reflect user reality]


Error Budget Calculation

For SLI 1 ([Name]), at [X]% target:

Error budget = (100% - SLO target) × measurement window
             = (100% - [X]%) × 28 days × 24 hours × 60 minutes
             = [Y]% × [Z total minutes]
             = [N] minutes of allowed failure per 28-day window

In plain terms: We can afford [N] minutes of [bad events] in any rolling 28-day window before we breach the SLO.


Burn Rate Alerts

Burn rate = how fast the error budget is being consumed relative to the budget window. A burn rate of 1 = consuming the budget at exactly the rate that would exhaust it over 28 days.

Alert Burn rate Window Severity Response
Page (critical) >14× 1 hour P1 Page on-call immediately — budget exhausted in <2 hours
Page (high) >6× 6 hours P2 Page on-call — budget exhausted in <5 days
Ticket (warning) >3× 3 days P3 Create ticket — review at next team meeting
Info >1× 28 days Info Log only — budget on track to exhaust by end of window

Alert implementation: [Link to alert config in monitoring tool — e.g. Datadog, Prometheus/Alertmanager, Grafana]


Error Budget Policy

This policy defines what to do with the error budget — both when it's healthy and when it's burning.

When budget is healthy (>50% remaining)
  • Feature development and deployments proceed at normal pace
  • The team may take on riskier experiments
  • Reliability improvements are scheduled but not urgent
When budget is at risk (25–50% remaining)
  • Deployment frequency reduced — team ships only well-tested changes
  • One reliability improvement added to current sprint
  • Weekly error budget review added to team standup
When budget is nearly exhausted (<25% remaining)
  • Feature work paused in favour of reliability improvements
  • No new deployments without explicit on-call approval
  • Daily review of error budget burn rate
  • CSM / support notified to manage customer expectations
When budget is exhausted (0% remaining — SLO breached)
  • All feature work stops
  • On-call engineer and engineering manager notified immediately
  • Post-incident review (PIR) required within 5 business days
  • SLO target may be temporarily relaxed (with stakeholder approval) while root cause is addressed

Dashboard and Reporting

SLO dashboard: [Link to Datadog / Grafana / etc. dashboard]

Metrics exposed:

  • Current SLO compliance (rolling 28-day)
  • Error budget remaining (% and minutes)
  • Burn rate (current and trend)
  • Incident count and MTTR this window

Reporting cadence:

Audience Frequency Format
Engineering team Weekly Slack summary — #[service]-slo
Engineering manager Monthly SLO review meeting
Stakeholders / customers Quarterly SLO compliance summary

Exclusions and Edge Cases

Planned maintenance: Error budget is not consumed during pre-announced maintenance windows. Maintenance must be communicated [X hours] in advance via [channel].

Dependency failures: If SLO breach is caused by an upstream dependency outside our control, document it — but it still counts against our error budget (our users don't distinguish between our failures and our dependencies' failures).

Force majeure: [Policy for cloud provider outages, major infrastructure events]


SLO Review Cadence

Review When Who Output
Error budget review Weekly Team Budget health check — adjust if burning fast
SLO target review Quarterly Team + EM Adjust targets if baseline has shifted significantly
Annual SLO audit Annually Team + Stakeholders Review SLIs — are we measuring the right things?

When to change the SLO target:

  • Historical baseline has improved significantly and target no longer reflects real reliability
  • User feedback indicates the target is misaligned with what users actually experience
  • The SLO is being gamed (metric is healthy but users are unhappy)

Quality Checks

  • SLIs are user-facing — they measure what users experience, not internal system metrics
  • Good and bad events are precisely defined — no ambiguity about what counts
  • Targets are based on historical data, not aspirational round numbers
  • Error budget policy has clear triggers and clear actions — not "discuss as a team"
  • Burn rate alerts have different windows to catch both fast burns and slow burns
  • Exclusions are documented so they don't silently inflate the SLO number

Anti-Patterns

  • Do not set SLO targets at 100% — this discourages feature development and does not reflect how users experience reliability
  • Do not measure internal system metrics as SLIs — SLIs must reflect what users directly experience, not internal CPU or memory
  • Do not write an error budget policy with vague triggers — "discuss as a team" is not an actionable policy; triggers must be specific percentages
  • Do not base targets on aspirational round numbers — always derive from historical baseline data
  • Do not configure only one burn-rate alert window — a single window misses both fast burns and slow burns that exhaust the budget quietly
1---
2name: slo-error-budget
3description: "Define Service Level Objectives (SLOs) and an error budget policy for a service. Use when asked to write SLOs, define SLIs, calculate an error budget, set reliability targets, or create an error budget policy. Produces a complete SLO document with SLI definitions, target calculation, error budget policy, burn rate alerts, and review cadence."
4---
5 
6# SLO and Error Budget Skill
7 
8Produce a complete, implementable SLO document for a service — covering what to measure, what target to set, how to calculate the error budget, and what to do when it burns.
9 
10A good SLO is not a target to hit. It is an agreement about what reliability means for your users — and a framework for making principled trade-offs between reliability and velocity.
11 
12## Where this sits — the frame of the spine
13 
14This is the governor of the incident-response spine: **`slo-error-budget` (frame) →
15`/debugging-log-analyser` → `/incident-postmortem` → `/oncall-runbook`**. It sets the
16**error budget** the whole loop runs inside — the objective forcing function that later
17decides whether a postmortem's action items get done now (budget spent) or deferred
18(budget healthy). Shared terms (SLO, error budget, incident, action item) are defined
19once in [`docs/craft/incident-response.md`](../../docs/craft/incident-response.md).
20 
21## The loop
22 
23An SLO fails when it's aspirational instead of user-derived, or when the budget has no
24teeth. Phase 1 is load-bearing: a target picked from "100% minus a bit" defends nothing.
25 
261. **Derive the target from users, not from 100%.** Pick the SLIs that track what users
27 actually feel (success rate, latency, freshness) and a target from what they need —
28 the point where more reliability stops mattering to them.
29 **Done when:** each SLO target traces to a stated user need, and none is 100% or a
30 round number chosen for looking good.
312. **Turn the target into a budget with math.** Compute the error budget (100% minus the
32 SLO, over the window) as a concrete allowance — requests, minutes, or events — not a
33 percentage nobody feels.
34 **Done when:** the budget is expressed as a countable allowance for the window, and
35 burn-rate alerts fire before it's spent, not after.
363. **Give the budget teeth — the policy is the point.** Write what *changes* at each
37 budget level: healthy → ship; at risk → slow and shore up; exhausted → stop feature
38 work and fix reliability. A budget with no policy is a dashboard nobody obeys.
39 **Done when:** each budget level names a specific, enforced consequence — including a
40 real feature-freeze trigger — that a team would actually follow.
414. **Hand off as the loop's governor.** State that this budget is what prioritises
42 `/incident-postmortem` action items: budget spent makes them urgent, budget healthy
43 lets them wait.
44 **Done when:** the loop downstream could use this budget to decide action-item urgency
45 without re-litigating the reliability target.
46 
47## Required Inputs
48 
49Ask for these if not already provided:
50- **Service name** and brief description of what it does
51- **Primary users** — who depends on this service and how
52- **User-facing interactions** to protect — e.g. API calls, page loads, transactions
53- **Current reliability data** — error rate, latency, uptime (last 30–90 days if available)
54- **Existing on-call setup** — who responds to alerts?
55- **Deployment frequency** — how often does the team ship?
56- **Any existing SLAs** with customers — these constrain SLO targets
57 
58## Key Definitions
59 
60Always establish these before writing the SLO:
61 
62| Term | Definition |
63|---|---|
64| **SLI** (Service Level Indicator) | The metric being measured — e.g. "% of requests completing successfully in <500ms" |
65| **SLO** (Service Level Objective) | The target for that metric — e.g. "99.5% of requests" |
66| **SLA** (Service Level Agreement) | The contractual commitment to customers — must be looser than the SLO |
67| **Error budget** | The allowed headroom below 100% — the budget for planned and unplanned downtime |
68| **Burn rate** | How fast the error budget is being consumed |
69 
70---
71 
72## Output Format
73 
74---
75 
76# SLO Document: [Service Name]
77 
78**Service:** [Name] | **Team:** [Team name]
79**Owner:** [Name / role] | **Approved by:** [Name]
80**Effective date:** [Date] | **Review date:** [Date + 3 months]
81**Version:** [1.0]
82 
83---
84 
85## Why This SLO Exists
86 
87[2–3 sentences. What reliability problem are we solving? What was happening before this SLO that made us need it? What decision-making does this SLO enable?]
88 
89---
90 
91## Service Overview
92 
93**What this service does:** [One sentence]
94**Who depends on it:** [Internal teams / external customers / both — describe]
95**Critical user journeys protected by this SLO:**
961. [Journey 1 — e.g. "User completes a payment"]
972. [Journey 2]
983. [Journey 3]
99 
100---
101 
102## SLIs — What We Measure
103 
104Define one SLI per user journey or reliability dimension. Keep it to 3–5 SLIs maximum.
105 
106### SLI 1: [Name — e.g. Request Success Rate]
107 
108| Field | Detail |
109|---|---|
110| **What it measures** | [e.g. "% of API requests that return a non-5xx response"] |
111| **Good event definition** | [e.g. "HTTP response with status 2xx or 4xx, completed within 500ms"] |
112| **Bad event definition** | [e.g. "HTTP response with status 5xx, or any response taking >500ms"] |
113| **Measurement source** | [e.g. "Application load balancer access logs / Datadog APM / Prometheus"] |
114| **Measured over** | Rolling 28-day window |
115| **Exclusions** | [e.g. "Health check endpoints excluded / Requests during planned maintenance excluded"] |
116 
117### SLI 2: [Name — e.g. Latency]
118 
119| Field | Detail |
120|---|---|
121| **What it measures** | [e.g. "P99 response time for the /checkout endpoint"] |
122| **Good event definition** | [e.g. "Request completes in ≤500ms at P99"] |
123| **Bad event definition** | [e.g. "Request takes >500ms at P99"] |
124| **Measurement source** | [Source] |
125| **Measured over** | Rolling 28-day window |
126| **Exclusions** | [Any exclusions] |
127 
128### SLI 3: [Name — e.g. Data Freshness / Queue Depth / etc.]
129 
130[Same structure]
131 
132---
133 
134## SLO Targets
135 
136| SLI | Target | Window | Error Budget |
137|---|---|---|---|
138| [SLI 1 name] | [X]% | 28-day rolling | [100 - X]% = [Y minutes/month] |
139| [SLI 2 name] | [X]% | 28-day rolling | [100 - X]% = [Y minutes/month] |
140| [SLI 3 name] | [X]% | 28-day rolling | [100 - X]% = [Y minutes/month] |
141 
142**How targets were set:**
143- Historical baseline (last 90 days): [X]%
144- Target is set [above / at] historical baseline to [improve reliability / reflect current reality while formalising the commitment]
145- Rationale: [1–2 sentences]
146 
147**What 100% is NOT the target:** [Brief explanation of why targeting 100% is counterproductive — it discourages feature development and doesn't reflect user reality]
148 
149---
150 
151## Error Budget Calculation
152 
153**For SLI 1 ([Name]), at [X]% target:**
154 
155```
156Error budget = (100% - SLO target) × measurement window
157 = (100% - [X]%) × 28 days × 24 hours × 60 minutes
158 = [Y]% × [Z total minutes]
159 = [N] minutes of allowed failure per 28-day window
160```
161 
162**In plain terms:** We can afford [N] minutes of [bad events] in any rolling 28-day window before we breach the SLO.
163 
164---
165 
166## Burn Rate Alerts
167 
168Burn rate = how fast the error budget is being consumed relative to the budget window.
169A burn rate of 1 = consuming the budget at exactly the rate that would exhaust it over 28 days.
170 
171| Alert | Burn rate | Window | Severity | Response |
172|---|---|---|---|---|
173| Page (critical) | >14× | 1 hour | P1 | Page on-call immediately — budget exhausted in <2 hours |
174| Page (high) | >6× | 6 hours | P2 | Page on-call — budget exhausted in <5 days |
175| Ticket (warning) | >3× | 3 days | P3 | Create ticket — review at next team meeting |
176| Info | >1× | 28 days | Info | Log only — budget on track to exhaust by end of window |
177 
178**Alert implementation:** [Link to alert config in monitoring tool — e.g. Datadog, Prometheus/Alertmanager, Grafana]
179 
180---
181 
182## Error Budget Policy
183 
184This policy defines what to do with the error budget — both when it's healthy and when it's burning.
185 
186### When budget is healthy (>50% remaining)
187 
188- Feature development and deployments proceed at normal pace
189- The team may take on riskier experiments
190- Reliability improvements are scheduled but not urgent
191 
192### When budget is at risk (25–50% remaining)
193 
194- Deployment frequency reduced — team ships only well-tested changes
195- One reliability improvement added to current sprint
196- Weekly error budget review added to team standup
197 
198### When budget is nearly exhausted (<25% remaining)
199 
200- Feature work paused in favour of reliability improvements
201- No new deployments without explicit on-call approval
202- Daily review of error budget burn rate
203- CSM / support notified to manage customer expectations
204 
205### When budget is exhausted (0% remaining — SLO breached)
206 
207- All feature work stops
208- On-call engineer and engineering manager notified immediately
209- Post-incident review (PIR) required within 5 business days
210- SLO target may be temporarily relaxed (with stakeholder approval) while root cause is addressed
211 
212---
213 
214## Dashboard and Reporting
215 
216**SLO dashboard:** [Link to Datadog / Grafana / etc. dashboard]
217 
218**Metrics exposed:**
219- Current SLO compliance (rolling 28-day)
220- Error budget remaining (% and minutes)
221- Burn rate (current and trend)
222- Incident count and MTTR this window
223 
224**Reporting cadence:**
225 
226| Audience | Frequency | Format |
227|---|---|---|
228| Engineering team | Weekly | Slack summary — #[service]-slo |
229| Engineering manager | Monthly | SLO review meeting |
230| Stakeholders / customers | Quarterly | SLO compliance summary |
231 
232---
233 
234## Exclusions and Edge Cases
235 
236**Planned maintenance:** Error budget is not consumed during pre-announced maintenance windows. Maintenance must be communicated [X hours] in advance via [channel].
237 
238**Dependency failures:** If SLO breach is caused by an upstream dependency outside our control, document it — but it still counts against our error budget (our users don't distinguish between our failures and our dependencies' failures).
239 
240**Force majeure:** [Policy for cloud provider outages, major infrastructure events]
241 
242---
243 
244## SLO Review Cadence
245 
246| Review | When | Who | Output |
247|---|---|---|---|
248| Error budget review | Weekly | Team | Budget health check — adjust if burning fast |
249| SLO target review | Quarterly | Team + EM | Adjust targets if baseline has shifted significantly |
250| Annual SLO audit | Annually | Team + Stakeholders | Review SLIs — are we measuring the right things? |
251 
252**When to change the SLO target:**
253- Historical baseline has improved significantly and target no longer reflects real reliability
254- User feedback indicates the target is misaligned with what users actually experience
255- The SLO is being gamed (metric is healthy but users are unhappy)
256 
257---
258 
259## Quality Checks
260 
261- [ ] SLIs are user-facing — they measure what users experience, not internal system metrics
262- [ ] Good and bad events are precisely defined — no ambiguity about what counts
263- [ ] Targets are based on historical data, not aspirational round numbers
264- [ ] Error budget policy has clear triggers and clear actions — not "discuss as a team"
265- [ ] Burn rate alerts have different windows to catch both fast burns and slow burns
266- [ ] Exclusions are documented so they don't silently inflate the SLO number
267 
268## Anti-Patterns
269 
270- [ ] Do not set SLO targets at 100% — this discourages feature development and does not reflect how users experience reliability
271- [ ] Do not measure internal system metrics as SLIs — SLIs must reflect what users directly experience, not internal CPU or memory
272- [ ] Do not write an error budget policy with vague triggers — "discuss as a team" is not an actionable policy; triggers must be specific percentages
273- [ ] Do not base targets on aspirational round numbers — always derive from historical baseline data
274- [ ] Do not configure only one burn-rate alert window — a single window misses both fast burns and slow burns that exhaust the budget quietly
275 

Discussion

Alternatives

Also in Cash & budgetSee all 35 in Finance →
Ad campaign analyzerAnalyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.Business & ops · MITStartup financial modelingBuild comprehensive 3-5 year financial models with revenue projections, cost structures, cash flow analysis, and scenario planning for early-stage startups. Use this skill when creating financial projections, calculating burn rate or runway, modeling fundraising scenarios, or preparing investor-ready financials for a seed or Series A raise.Business & ops · MIT/cs:cfo-review — CFO Forcing Questions/cs:cfo-review <plan> — Numerate-skeptic interrogation of any plan that touches money. Unit economics, runway, dilution, capital allocation. Use when a plan commits meaningful spend — e.g. a hiring wave, a fundraise decision, or a new channel budget.Business & ops · MITCfo advisorFinancial leadership for startups and scaling companies. Financial modeling, unit economics, fundraising strategy, cash management, and board financial packages. Use when building financial models, analyzing unit economics, planning fundraising, managing cash runway, preparing board materials, or when user mentions CFO, burn rate, runway, fundraising, unit economics, LTV, CAC, term sheets, or financial strategy.Business & ops · MIT