From system-design-skills
Estimates QPS, storage, bandwidth, and server counts for capacity planning. Turns vague scale into concrete numbers to guide system design decisions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/system-design-skills:back-of-the-envelopeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn vague scale ("high traffic", "huge data") into a few concrete numbers that
Turn vague scale ("high traffic", "huge data") into a few concrete numbers that decide the design. BOTECs are quick, approximate calculations — feasibility checks, not precision. The point is the process and directional correctness: they tell you when a single database won't do, when caching is forced, when a write spike needs a queue.
A design for 1k QPS and one for 1M QPS are different systems. 10 GB fits in RAM; 10 TB needs distributed storage. Estimate first, choose second.
At step 2 of any design (right after requirements), and any time a choice depends on scale: sizing the read vs write path, deciding sharding vs a single node, justifying a cache, or sanity-checking a proposed component against load.
Don't chase precision or model every microservice — that's the opposite of the technique. Don't estimate what won't change a decision (YAGNI). Round aggressively: "99,987 / 9.1" is "100,000 / 10". Always label units and write assumptions down.
Estimates are only as good as their inputs. Pin down:
Work each as a single multiply/divide chain. Full worked numbers and the CPU-time
derivation are in references/estimation-recipes.md.
DAU × actions_per_user_per_day ÷ 86,400. Peak QPS ≈ 2 × QPS
(state your peak factor).writes_per_day × avg_object_size. Total =
storage/day × retention_days (watch base-10 vs base-2; storage is sold base-10).QPS × payload_size (separate read and write; egress usually
dominates and costs money).peak_QPS ÷ per_server_QPS. Use the per-server rates
below as the divisor.concurrent_users × per_connection_cost;
check the working set fits RAM (else it's an IO-bound, disk-backed design).These are the reference points to know, so you can estimate without lookups.
Full tables (latency, server specs, request types, powers of two, nines) live in
references/numbers-to-remember.md — load it when you need a specific figure.
The two that drive most decisions:
| What | Rule of thumb |
|---|---|
| Single SQL/RDBMS node | ~1,000 QPS |
| Key-value store node | ~10,000 QPS |
| Cache server (Redis/Memcached) | ~100,000–1M QPS |
| One modern CPU core | ~1,000 simple requests/s → a 64-core box ≈ 64k req/s |
| Read 1 MB: memory vs SSD vs disk | ~μs vs tens–hundreds of μs vs ms (memory ≫ SSD ≫ disk) |
Think in orders of magnitude, not exact values. CPU-bound work is ~1×, memory-bound ~10×, IO-bound ~100× the time. That ratio, not the decimals, is what shifts an architecture.
Distilled from the recipes and the ways estimates mislead.
Do
Don't
Estimation is usually a table, not a picture — keep the numbers and assumptions
inline. When a derived number forces a structural change (e.g. "300k QPS > single
DB → shard / add replicas"), that belongs in the architecture diagram itself; use
the architecture-diagram skill when drawing the design those numbers justify.
requirements-scoping — depends on it for the inputs (DAU, action rates, ratios, SLAs) this skill turns into numbers.data-storage — feeds into it: the storage totals and shard counts computed here drive its SQL/NoSQL and partitioning choices.caching — feeds into it: a high read ratio or hot working set sized here is the case for a cache.scaling-evolution — feeds into it: when an estimate crosses a per-node ceiling, that ceiling is the next bottleneck to plan around.system-design — owned-concept lives here for the reasoning loop; this is the orchestrator that calls this skill at step 2.references/numbers-to-remember.md — the cheat sheet: latency table, typical server spec, per-server QPS rates, CPU/memory/IO-bound request types, powers of two, availability nines. Read when you need a specific figure.references/estimation-recipes.md — worked examples (Twitter-scale QPS + storage, the 64-core→64k req/s CPU-time derivation, bandwidth and server-count sizing). Read to see a full chain end to end.For a deterministic check of a sizing chain (the one place exact arithmetic earns its keep), run the calculator rather than doing it by hand:
scripts/botec.py — python3 scripts/botec.py --dau 150e6 --actions 2 --peak 2 --obj-bytes 1e6 --media-frac 0.10 --retention-days 1825 --server-qps 1000 --json → QPS, peak, storage/day & total, bandwidth, server count. Per-server-QPS defaults mirror the rules of thumb above (override with --server-qps).scripts/test_botec.py — asserts the calculator matches expected_outputs/twitter_scale.json (the worked Twitter example), so the prose recipe and the math can't drift.npx claudepluginhub proyecto26/system-design-skillsBreaks down unknown quantities into estimable factors for order-of-magnitude answers. Use for capacity planning, cost estimation, or sanity-checking when real data is unavailable.
Generates a capacity planning document for a service covering traffic forecasts, resource requirements, scaling strategy, and cost projections.
Decomposes complex unknowns into estimable components for rapid order-of-magnitude estimates with bounded uncertainty. Useful for market sizing, resource planning, feasibility checks.