Slo architect

Use when defining, reviewing, or operating SLOs/SLIs/error budgets.

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/slo-architect, including the files SKILL.md points to.
  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 alirezarezvani/claude-skills/engineering/skills/slo-architect#main ~/.claude/skills/slo-architect

For one project only, change the path to .claude/skills/slo-architect. This skill also uses slo_designer.py, slo_review.py, error_budget_calculator.py — copying SKILL.md alone won't be enough. See the folder on GitHub.

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 architect

Show the full text235 lines
namedescriptioncontextversionauthorlicensetagscompatible_tools
slo-architectUse when defining, reviewing, or operating SLOs/SLIs/error budgets. Triggers on "define an SLO", "what should our SLO be", "error budget", "burn rate", "SLI", "service level objective", "Google SRE workbook", "multi-window burn-rate alert", or any reliability-target question. Ships SLO designer, error-budget calculator with multi-window burn-rate thresholds, and SLO reviewer that catches the common bugs (target too aggressive, window too short, conflicting SLOs, no SLI definition). 4 references on SLO principles + SLI design + error budget math + composition with feature-flags-architect/chaos-engineering/kubernetes-operator. NOT a generic observability skill — specifically the SLO discipline.fork2.9.0claude-code-skillsMIT[slo, sli, sla, error-budget, burn-rate, sre, reliability, google-sre-workbook, observability][claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli]

SLO Architect

Define SLOs that mean something. Most "SLOs" in the wild are arbitrary numbers no one believes — 99.9% on every endpoint, no SLI definition, no error budget, no policy for what happens when budget burns. This skill enforces the discipline from Google's SRE Workbook: pick the right SLI, set a target users actually care about, calculate the error budget, wire multi-window burn-rate alerts, and have a written policy for when budget runs out.

When to use

  • Defining a new SLO for a service or feature
  • Reviewing existing SLOs for common bugs
  • Picking the right SLI (event-based vs time-window based vs request-based)
  • Computing error budgets and burn-rate alert thresholds
  • Tying SLOs to existing controls — feature flags abort, chaos blast radius, operator capability levels

When NOT to use

  • General observability strategy (metrics + logs + traces) → use observability-designer
  • Customer-facing SLAs with legal teeth → that's contract drafting, not engineering
  • Performance load testing (capacity, not reliability) → use performance-profiler
  • Active incident response → use incident-response

Core principle: an SLO is a promise about user experience

SLI  ⟶  measurable signal of user-perceived health (e.g., HTTP 2xx rate)
SLO  ⟶  target for the SLI over a window (e.g., 99.9% over 30 days)
SLA  ⟶  customer-facing commitment with consequences (separate concern)
EB   ⟶  error budget: 100% − SLO target = how much "bad" you can spend
BR   ⟶  burn rate: how fast you're consuming the error budget

The four cardinal mistakes:

  1. Target too high (99.99%+ on services that can't support it) — every minor blip violates SLO; alerts become noise.
  2. Wrong SLI (CPU usage as proxy for user experience) — system can be "green" while users suffer.
  3. No error budget policy — burning budget means nothing if there's no agreed action.
  4. Single-window burn-rate alert — either too noisy (page on a 5-min spike) or too slow (notice budget exhausted after the fact).

The 3 tools below catch each of these.

Quick start

SKILL=engineering/slo-architect/skills/slo-architect

# 1. Design an SLO
python "$SKILL/scripts/slo_designer.py" \
  --service checkout-svc \
  --sli-type request-success-rate \
  --target 99.9 \
  --window-days 30

# 2. Compute error budget + multi-window burn-rate alerts
python "$SKILL/scripts/error_budget_calculator.py" \
  --target 99.9 --window-days 30

# 3. Review existing SLO definitions for common bugs
python "$SKILL/scripts/slo_review.py" --slo-doc docs/slos/

The 3 Python tools

All stdlib-only.

slo_designer.py

Generates a structured SLO definition with required fields. Refuses to render if any required field is missing (exit 1).

python scripts/slo_designer.py \
  --service checkout-svc \
  --sli-type request-success-rate \
  --target 99.9 \
  --window-days 30 \
  --owner team-checkout

SLI types supported:

  • request-success-rate — (total_requests - bad_requests) / total_requests
  • request-latency — count(requests < threshold) / total_requests
  • availability-time — (window - downtime) / window
  • data-freshness — count(data_age < threshold) / total_data_points
  • correctness — count(correct_outputs) / total_outputs

Output is markdown by default with all required fields filled or marked <must define>. JSON output (--format json) is consumed by slo_review.py.

error_budget_calculator.py

Given target availability + window, computes:

  • Allowed downtime in the window
  • Multi-window burn-rate thresholds per Google SRE Workbook (Chapter 5):
    • Fast burn — page if 2% of monthly budget consumed in 1 hour
    • Slow burn — page if 10% consumed in 6 hours, ticket if 10% in 3 days
  • Recommended alerting rules (PromQL-shaped output)
python scripts/error_budget_calculator.py --target 99.9 --window-days 30
python scripts/error_budget_calculator.py --target 99.95 --window-days 7 --format json
slo_review.py

Audits a directory of SLO definitions (markdown or JSON) for the common bugs.

python scripts/slo_review.py --slo-doc docs/slos/

Checks:

  • target_too_high: target ≥ 99.99% (sustainable only with massive engineering investment)
  • target_too_low: target ≤ 99.0% (probably wrong SLI; users will notice)
  • window_too_short: window < 7 days (statistical noise dominates)
  • window_too_long: window > 90 days (slow feedback)
  • no_sli_definition: SLI section missing or vague ("everything OK")
  • no_error_budget_policy: no documented action when budget burns
  • cpu_as_sli: CPU/memory used as user-experience proxy (wrong signal)

SLI selection cheatsheet

User experience SLI type What you measure
"Did the request succeed?" request-success-rate 2xx / total
"Was the response fast?" request-latency count(p99 < threshold) / total
"Was the service up?" availability-time (window - downtime) / window
"Is the data current?" data-freshness count(data_age < threshold) / total
"Was the answer correct?" correctness count(correct) / total

See references/sli_design.md for examples and anti-patterns.

Error budget math (the basics)

For 99.9% SLO over 30 days:

  • Allowed unavailability: 0.1% × 30 × 24 × 60 = 43.2 minutes
  • 1-hour fast-burn threshold (2% of monthly budget burned): 2% × 43.2 / 60 ≈ 1.44 ratio multiplier
  • 6-hour slow-burn threshold (10% in 6h): 10% × 43.2 / 360 ≈ 0.6 ratio multiplier

error_budget_calculator.py does this math for you and emits ready-to-paste alert rules.

Composition with the rest of the portfolio

This skill explicitly composes with three others:

Skill Composition
feature-flags-architect Rollout abort criteria reference SLO burn-rate thresholds
chaos-engineering Blast-radius calculator already takes monthly error budget as input — define it here
kubernetes-operator Operator capability L4 (Deep Insights) requires SLOs + Prometheus rules

The error_budget_calculator.py output is in the same shape engineering/skills/chaos-engineering/scripts/blast_radius_calculator.py expects on stdin.

Workflows

Workflow 1: Define a new SLO
1. Pick the user journey to protect (e.g., "checkout completion").
2. Choose SLI type (request-success-rate, latency, availability, freshness, correctness).
3. Define the SLI precisely: numerator/denominator with concrete labels.
4. Pick a target by measuring 30 days of historical SLI value:
     target = floor(p50 of last 30 days × 100) / 100
   This avoids targets the system has never sustained.
5. Pick a window (28 days = 4 calendar weeks, recommended).
6. Run slo_designer.py to render the SLO definition.
7. Run error_budget_calculator.py to get burn-rate alerts.
8. Write the error budget policy (what happens when budget burns).
9. Run slo_review.py — must pass before the SLO is "live".
Workflow 2: Quarterly SLO review
1. For every active SLO, run slo_review.py — fix any FAIL findings.
2. Look at last quarter's data:
   - Was the SLO too easy (never burned budget)? Tighten target.
   - Was it too hard (frequently burned)? Loosen target OR fix the system.
   - Did burn-rate alerts fire usefully (not too noisy, not too late)? Adjust thresholds.
3. Audit error budget policies — were they actually followed when budget burned?
4. Commit revised SLOs; archive old versions with date stamps.
Workflow 3: SLO-driven rollback
1. New deploy starts burning error budget faster than baseline.
2. Burn-rate alert fires (from error_budget_calculator.py thresholds).
3. Auto-rollback via feature flag (kill switch from feature-flags-architect).
4. Postmortem feeds into next SLO revision.

References

  • references/slo_principles.md — SLI vs SLO vs SLA, Google SRE Workbook canon
  • references/sli_design.md — picking the right SLI; 5 types with examples
  • references/error_budget.md — error budget math, burn-rate alerts, budget policy
  • references/composition.md — how SLOs feed feature flags, chaos, operators

Slash command

/slo-design — interactive SLO design wizard that runs all 3 tools.

Asset templates

  • assets/slo_template.yaml — fillable SLO YAML
  • assets/error_budget_policy.md — fillable policy template

Anti-patterns

  • 99.99% on every endpoint — copy-paste SLOs that nobody verified the system can sustain
  • CPU usage as SLI — system metrics aren't user experience
  • Single-window burn-rate alert — too noisy if 5-min, too slow if 30-day
  • No error budget policy — burning budget means nothing without an action
  • SLOs without owners — no one is responsible; they bit-rot
  • SLOs reviewed once a year — system characteristics change faster than that
  • SLAs in the SLO doc — different audience, different stakes; keep them separate
  • SLO target = SLA target — SLO must be tighter (you should beat your contract before customers notice)

Verifiable success

A team using this skill should achieve:

  • 100% of SLOs pass slo_review.py with 0 FAIL findings
  • Every SLO has a documented owner, error budget, burn-rate alerts, and policy
  • Burn-rate alerts fire ≤2 times/month per SLO that's hit (signal, not noise)
  • Mean time to detect SLO violation: <30 min (multi-window burn-rate alerts working)
  • Quarterly SLO review happens every quarter (not annually)
1---
2name: slo-architect
3description: Use when defining, reviewing, or operating SLOs/SLIs/error budgets. Triggers on "define an SLO", "what should our SLO be", "error budget", "burn rate", "SLI", "service level objective", "Google SRE workbook", "multi-window burn-rate alert", or any reliability-target question. Ships SLO designer, error-budget calculator with multi-window burn-rate thresholds, and SLO reviewer that catches the common bugs (target too aggressive, window too short, conflicting SLOs, no SLI definition). 4 references on SLO principles + SLI design + error budget math + composition with feature-flags-architect/chaos-engineering/kubernetes-operator. NOT a generic observability skill — specifically the SLO discipline.
4context: fork
5version: 2.9.0
6author: claude-code-skills
7license: MIT
8tags: [slo, sli, sla, error-budget, burn-rate, sre, reliability, google-sre-workbook, observability]
9compatible_tools: [claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli]
10---
11 
12# SLO Architect
13 
14Define SLOs that mean something. Most "SLOs" in the wild are arbitrary numbers no one believes — 99.9% on every endpoint, no SLI definition, no error budget, no policy for what happens when budget burns. This skill enforces the discipline from Google's SRE Workbook: pick the right SLI, set a target users actually care about, calculate the error budget, wire multi-window burn-rate alerts, and have a written policy for when budget runs out.
15 
16## When to use
17 
18- Defining a new SLO for a service or feature
19- Reviewing existing SLOs for common bugs
20- Picking the right SLI (event-based vs time-window based vs request-based)
21- Computing error budgets and burn-rate alert thresholds
22- Tying SLOs to existing controls — feature flags abort, chaos blast radius, operator capability levels
23 
24## When NOT to use
25 
26- General observability strategy (metrics + logs + traces) → use `observability-designer`
27- Customer-facing SLAs with legal teeth → that's contract drafting, not engineering
28- Performance load testing (capacity, not reliability) → use `performance-profiler`
29- Active incident response → use `incident-response`
30 
31## Core principle: an SLO is a promise about user experience
32 
33```
34SLI ⟶ measurable signal of user-perceived health (e.g., HTTP 2xx rate)
35SLO ⟶ target for the SLI over a window (e.g., 99.9% over 30 days)
36SLA ⟶ customer-facing commitment with consequences (separate concern)
37EB ⟶ error budget: 100% − SLO target = how much "bad" you can spend
38BR ⟶ burn rate: how fast you're consuming the error budget
39```
40 
41The four cardinal mistakes:
42 
431. **Target too high** (99.99%+ on services that can't support it) — every minor blip violates SLO; alerts become noise.
442. **Wrong SLI** (CPU usage as proxy for user experience) — system can be "green" while users suffer.
453. **No error budget policy** — burning budget means nothing if there's no agreed action.
464. **Single-window burn-rate alert** — either too noisy (page on a 5-min spike) or too slow (notice budget exhausted after the fact).
47 
48The 3 tools below catch each of these.
49 
50## Quick start
51 
52```bash
53SKILL=engineering/slo-architect/skills/slo-architect
54 
55# 1. Design an SLO
56python "$SKILL/scripts/slo_designer.py" \
57 --service checkout-svc \
58 --sli-type request-success-rate \
59 --target 99.9 \
60 --window-days 30
61 
62# 2. Compute error budget + multi-window burn-rate alerts
63python "$SKILL/scripts/error_budget_calculator.py" \
64 --target 99.9 --window-days 30
65 
66# 3. Review existing SLO definitions for common bugs
67python "$SKILL/scripts/slo_review.py" --slo-doc docs/slos/
68```
69 
70## The 3 Python tools
71 
72All stdlib-only.
73 
74### `slo_designer.py`
75 
76Generates a structured SLO definition with required fields. Refuses to render if any required field is missing (`exit 1`).
77 
78```bash
79python scripts/slo_designer.py \
80 --service checkout-svc \
81 --sli-type request-success-rate \
82 --target 99.9 \
83 --window-days 30 \
84 --owner team-checkout
85```
86 
87**SLI types supported:**
88- `request-success-rate` — `(total_requests - bad_requests) / total_requests`
89- `request-latency` — `count(requests < threshold) / total_requests`
90- `availability-time` — `(window - downtime) / window`
91- `data-freshness` — `count(data_age < threshold) / total_data_points`
92- `correctness` — `count(correct_outputs) / total_outputs`
93 
94Output is markdown by default with all required fields filled or marked `<must define>`. JSON output (`--format json`) is consumed by `slo_review.py`.
95 
96### `error_budget_calculator.py`
97 
98Given target availability + window, computes:
99- Allowed downtime in the window
100- Multi-window burn-rate thresholds per Google SRE Workbook (Chapter 5):
101 - **Fast burn** — page if 2% of monthly budget consumed in 1 hour
102 - **Slow burn** — page if 10% consumed in 6 hours, ticket if 10% in 3 days
103- Recommended alerting rules (PromQL-shaped output)
104 
105```bash
106python scripts/error_budget_calculator.py --target 99.9 --window-days 30
107python scripts/error_budget_calculator.py --target 99.95 --window-days 7 --format json
108```
109 
110### `slo_review.py`
111 
112Audits a directory of SLO definitions (markdown or JSON) for the common bugs.
113 
114```bash
115python scripts/slo_review.py --slo-doc docs/slos/
116```
117 
118**Checks:**
119- `target_too_high`: target ≥ 99.99% (sustainable only with massive engineering investment)
120- `target_too_low`: target ≤ 99.0% (probably wrong SLI; users will notice)
121- `window_too_short`: window < 7 days (statistical noise dominates)
122- `window_too_long`: window > 90 days (slow feedback)
123- `no_sli_definition`: SLI section missing or vague ("everything OK")
124- `no_error_budget_policy`: no documented action when budget burns
125- `cpu_as_sli`: CPU/memory used as user-experience proxy (wrong signal)
126 
127## SLI selection cheatsheet
128 
129| User experience | SLI type | What you measure |
130|---|---|---|
131| "Did the request succeed?" | request-success-rate | `2xx / total` |
132| "Was the response fast?" | request-latency | `count(p99 < threshold) / total` |
133| "Was the service up?" | availability-time | `(window - downtime) / window` |
134| "Is the data current?" | data-freshness | `count(data_age < threshold) / total` |
135| "Was the answer correct?" | correctness | `count(correct) / total` |
136 
137See `references/sli_design.md` for examples and anti-patterns.
138 
139## Error budget math (the basics)
140 
141For 99.9% SLO over 30 days:
142- Allowed unavailability: `0.1% × 30 × 24 × 60 = 43.2 minutes`
143- 1-hour fast-burn threshold (2% of monthly budget burned): `2% × 43.2 / 60 ≈ 1.44 ratio multiplier`
144- 6-hour slow-burn threshold (10% in 6h): `10% × 43.2 / 360 ≈ 0.6 ratio multiplier`
145 
146`error_budget_calculator.py` does this math for you and emits ready-to-paste alert rules.
147 
148## Composition with the rest of the portfolio
149 
150This skill explicitly composes with three others:
151 
152| Skill | Composition |
153|---|---|
154| `feature-flags-architect` | Rollout abort criteria reference SLO burn-rate thresholds |
155| `chaos-engineering` | Blast-radius calculator already takes monthly error budget as input — define it here |
156| `kubernetes-operator` | Operator capability L4 (Deep Insights) requires SLOs + Prometheus rules |
157 
158The `error_budget_calculator.py` output is in the same shape `engineering/skills/chaos-engineering/scripts/blast_radius_calculator.py` expects on stdin.
159 
160## Workflows
161 
162### Workflow 1: Define a new SLO
163 
164```
1651. Pick the user journey to protect (e.g., "checkout completion").
1662. Choose SLI type (request-success-rate, latency, availability, freshness, correctness).
1673. Define the SLI precisely: numerator/denominator with concrete labels.
1684. Pick a target by measuring 30 days of historical SLI value:
169 target = floor(p50 of last 30 days × 100) / 100
170 This avoids targets the system has never sustained.
1715. Pick a window (28 days = 4 calendar weeks, recommended).
1726. Run slo_designer.py to render the SLO definition.
1737. Run error_budget_calculator.py to get burn-rate alerts.
1748. Write the error budget policy (what happens when budget burns).
1759. Run slo_review.py — must pass before the SLO is "live".
176```
177 
178### Workflow 2: Quarterly SLO review
179 
180```
1811. For every active SLO, run slo_review.py — fix any FAIL findings.
1822. Look at last quarter's data:
183 - Was the SLO too easy (never burned budget)? Tighten target.
184 - Was it too hard (frequently burned)? Loosen target OR fix the system.
185 - Did burn-rate alerts fire usefully (not too noisy, not too late)? Adjust thresholds.
1863. Audit error budget policies — were they actually followed when budget burned?
1874. Commit revised SLOs; archive old versions with date stamps.
188```
189 
190### Workflow 3: SLO-driven rollback
191 
192```
1931. New deploy starts burning error budget faster than baseline.
1942. Burn-rate alert fires (from error_budget_calculator.py thresholds).
1953. Auto-rollback via feature flag (kill switch from feature-flags-architect).
1964. Postmortem feeds into next SLO revision.
197```
198 
199## References
200 
201- `references/slo_principles.md` — SLI vs SLO vs SLA, Google SRE Workbook canon
202- `references/sli_design.md` — picking the right SLI; 5 types with examples
203- `references/error_budget.md` — error budget math, burn-rate alerts, budget policy
204- `references/composition.md` — how SLOs feed feature flags, chaos, operators
205 
206## Slash command
207 
208`/slo-design` — interactive SLO design wizard that runs all 3 tools.
209 
210## Asset templates
211 
212- `assets/slo_template.yaml` — fillable SLO YAML
213- `assets/error_budget_policy.md` — fillable policy template
214 
215## Anti-patterns
216 
217- **99.99% on every endpoint** — copy-paste SLOs that nobody verified the system can sustain
218- **CPU usage as SLI** — system metrics aren't user experience
219- **Single-window burn-rate alert** — too noisy if 5-min, too slow if 30-day
220- **No error budget policy** — burning budget means nothing without an action
221- **SLOs without owners** — no one is responsible; they bit-rot
222- **SLOs reviewed once a year** — system characteristics change faster than that
223- **SLAs in the SLO doc** — different audience, different stakes; keep them separate
224- **SLO target = SLA target** — SLO must be tighter (you should beat your contract before customers notice)
225 
226## Verifiable success
227 
228A team using this skill should achieve:
229 
230- 100% of SLOs pass `slo_review.py` with 0 FAIL findings
231- Every SLO has a documented owner, error budget, burn-rate alerts, and policy
232- Burn-rate alerts fire ≤2 times/month per SLO that's hit (signal, not noise)
233- Mean time to detect SLO violation: <30 min (multi-window burn-rate alerts working)
234- Quarterly SLO review happens every quarter (not annually)
235 

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