api-design
This skill should be used when the user needs to "design the API", do "endpoint design", pin down a "request/response shape", choose a "pagination" strategy…
This skill should be used when the user wants a "blob store" or "object storage", names "S3" or an S3-compatible store, needs to "store images / video / files", asks about "multipart upload" or "resumable upload", "signed / presigned URLs", "media storage", "unstructured data at
$ npx -y skills add proyecto26/system-design-skills --skill blob-store --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/blob-storeContext preview
The summary Claude sees to decide when to auto-load this skill.
This skill should be used when the user wants a "blob store" or "object storage", names "S3" or an S3-compatible store, needs to "store images / video / files", asks about "multipart upload" or "resumable upload", "signed / presigned URLs", "media storage", "unstructured data at
name: blob-store description: This skill should be used when the user wants a "blob store" or "object storage", names "S3" or an S3-compatible store, needs to "store images / video / files", asks about "multipart upload" or "resumable upload", "signed / presigned URLs", "media storage", "unstructured data at scale", object "versioning", storage "tiering" (hot/cold/archive), or "erasure coding" vs replication for durability. Use it whenever a design must hold large unstructured objects (photos, video, backups, logs, ML datasets) and serve them cheaply and durably, even if the user just says "where do we put the files".
Store large, immutable, unstructured objects — images, video, backups, model weights, document blobs — in a flat namespace keyed by a string, replicated for durability and served by direct download. Getting it wrong means stuffing multi-megabyte blobs into a row-oriented database (where they bloat the working set, wreck cache locality, and cap throughput) or hand-rolling a file server that loses data on the first disk failure.
Objects are large (KB to GB), written once and read many times, and you only ever fetch them whole by key — never query *inside* them. Photo/video stores, user uploads, backups, data-lake/ML datasets, static-site assets, log archives. The access pattern is `PUT key → GET key`, durability matters, and the total volume is too large or too cold to sit in a primary database.
Small structured records you query, filter, sort, or join — that is `data-storage`. Data that needs transactions, secondary indexes, or partial updates (blobs are replace-whole, not edit-in-place). Low-latency reads of tiny values (a KV cache or `caching` wins). A few files on one box that never grow — the local filesystem is fine; a blob store is operational overhead you do not need yet (YAGNI). Naming "object storage" for a workload that is really a database is failure mode #2.
thresholds, and whether reads stream or buffer.) → `back-of-the-envelope`.
go cold? (Drives tiering and CDN fronting.)
briefly fail or must it always succeed? (Replication vs erasure coding, multi-region.)
(compliance, undo)? (Versioning + lifecycle.)
**Durability scheme** (how many copies, what shape)
objects are small, hot, and latency matters; simplest to reason about.
reconstruct it. Use for large/cold data at scale — same durability as replication at ~1.4x overhead instead of 3x. (Mechanics in `references/deep-dive.md`.)
**Storage tier** (price/latency/retrieval trade)
for backups and data read a few times a month.
retention and rarely-touched data; never for anything on a request path.
**Upload path**
commit on completion. Use for large objects and flaky networks; the default above the threshold.
**Mutation model**
Use when history, undo, or accidental-overwrite protection matters.
latest object matters and storage of old copies is waste.
| Option | What it solves | What it worsens | Change it when | |---|---|---|---| | N-way replication | Simple, fast reads, fast rebuild | 3x+ storage cost | Data is large/cold and cost dominates → erasure coding | | Erasure coding | Same durability at ~1.4x storage | CPU + multi-node read on every fetch; slow small-object reads; costly rebuild | Objects are small/hot and latency matters → replication | | Hot tier | Low-latency serving | Highest $/GB | Data goes cold and is rarely read → cool/archive | | Archive tier | Cheapest at-rest storage | Minutes–hours to first byte; retrieval fees | Anything ends up on a latency-sensitive path → hot/cool | | Multipart/resumable upload | Large files survive flaky links; parallel throughput | More client logic; orphaned parts cost money | Objects are small → single PUT | | Versioning | Undo, history, overwrite protection | Storage grows silently; needs lifecycle expiry | Only latest matters → overwrite, last-writer-wins | | Signed URLs | Offload transfer off your app; scoped access | Leaked/over-broad URLs; clock-skew expiry bugs | Content is fully public → CDN + public read |
A blob store rarely "falls over" the way a database does, but it amplifies trouble in specific ways.
prefix concentrates load on one partition. *Mitigate:* front hot reads with a CDN (`content-delivery`), randomize/hash key prefixes, replicate the hot object.
SPOF and the throughput ceiling (millions of tiny objects hurt far more than a few huge ones). *Mitig
Design scalable systems the way strong engineers actually do — by reasoning, not by memorizing diagrams.
Repo: proyecto26/system-design-skills
This skill should be used when the user needs to "design the API", do "endpoint design", pin down a "request/response shape", choose a "pagination" strategy…
This skill should be used when a system design needs a diagram — "draw the architecture", "diagram this system", "show the components", "make an…
This skill should be used when the user needs to "estimate QPS", "back-of-the-envelope" (BOTEC) numbers, "how much storage / bandwidth", "how many servers",…
This skill should be used when the user asks about a "caching strategy", "cache invalidation", "what to cache", "read-through vs write-through vs write-back",…
This skill should be used when the user asks about the "CAP theorem", "PACELC", a "consistency model", "eventual vs strong consistency", "read-your-writes",…
This skill should be used when the user asks about a "CDN", "edge caching", "static asset delivery", "media / video delivery", "geo distribution of content" or…