System Design logo

System Design

Organization
proyecto26
system-design

This skill should be used when the user asks to "design a system", "design <a product>" (e.g. "design WhatsApp", "design a URL shortener", "design a news feed"), "high-level architecture for…", "how would you architect…", "system design interview", or wants to scope, diagram, and justify a backend/distributed-system design. It runs a reasoning loop — clarify, estimate, design, weigh trade-offs, stress-test, iterate — and routes to focused building-block skills. Use it whenever a request is an open-ended design problem, even if the user doesn't say "system design".

Overview

Publisherproyecto26
Repositorysystem-design-skills
Skill namesystem-design
Stars
117
Forks
14
Bundled files
9
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 9 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by proyecto26 on GitHub. Read the source before you install it.

Installation

Install the System Design AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/proyecto26/system-design-skills/tree/main/skills/system-design
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/proyecto26/system-design-skills.git /tmp/system-design-skills
mkdir -p .claude/skills
cp -r /tmp/system-design-skills/skills/system-design .claude/skills/system-design
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable System Design in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads System Design on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so System Design is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

System Design (orchestrator)

Drive an open-ended design problem from a vague prompt to a justified, stress-tested architecture — by reasoning, not by recalling a diagram. This skill owns the method and the routing; the actual component recipes live in focused building-block skills it pulls in as needed.

The single most important idea, from which everything here follows:

Do not memorize architectures; learn the forces that shape them. There is no single correct solution — success depends on the assumptions you make explicit.

A design that works for 1,000 users may fail at 1,000,000. Treat every architecture as a hypothesis that holds until a constraint changes, and be ready to redraw it calmly when one does.

The reasoning loop

Work this loop out loud. It is a loop, not a checklist — late steps routinely send you back to early ones, and that is the point.

  1. Clarify requirements — turn the vague prompt into functional requirements, non-functional constraints, and an explicit out of scope. Scope to a few core features; say so. → skill requirements-scoping
  2. Estimate scale — back-of-the-envelope QPS, storage, bandwidth, read/write ratio. Numbers decide the design; "high traffic" does not. → skill back-of-the-envelope
  3. Propose a high-level design — sketch the boxes and arrows (clients, LB, services, stores, caches, queues, CDN) and the user-facing API. Get buy-in before going deep. → skill api-design, plus the building blocks below.
  4. Evaluate trade-offs — for every major choice, state what it solves, what it worsens, and what would make you change it. Never name a tool without this. → reference tradeoff-framework.md
  5. Stress-test failure modes — find single points of failure, decide the degradation story, plan recovery. Assume every component breaks. → skill resilience-failure
  6. Iterate / deep-dive — pick the most interesting or fragile component and go deep; let new constraints ("what if writes 10×?", "lose a region?") drive a redesign of the affected part.

These six steps are the same four activities the GUIDE names — ask refining questions → handle the data → discuss components → discuss trade-offs — with estimation and failure-testing made explicit. See references/reasoning-loop.md for the full walk-through and time budgeting.

Routing to building blocks

This plugin is a wiki of composable parts. As each concern comes up in the loop, invoke the focused skill (via the Skill tool) rather than reconstructing its recipe from memory — load it so the options, trade-off table, behavior under stress, and cloud-provider variants come from the skill itself. That invocation is how composition works at runtime: a bare skill name below is a skill to trigger, not a file to read. Invoke each as its concern becomes active:

When the problem turns to…Use skill
What features / constraints / scope?requirements-scoping
How many QPS, how much storage, how many servers?back-of-the-envelope
Endpoints, request/response, pagination, idempotencyapi-design
Monolith vs microservices, service boundaries, gateway, discoveryservice-decomposition
SQL vs NoSQL, schema, indexing, sharding, replicationdata-storage
What to cache, eviction, invalidation, hot keyscaching
Distributing traffic, L4/L7, health checksload-balancing
Async work, queues vs streams, delivery guaranteesmessaging-streaming
CAP, consistency models, quorum, consensus, hashingconsistency-coordination
Fault tolerance, circuit breakers, degradation, rate limitingresilience-failure
Static/media delivery, edge, geo-routingcontent-delivery
How the design evolves with 10×/100× growthscaling-evolution
How clients resolve the service, geo/failover routingdns
Unique IDs at scale (Snowflake/UUID/ticket)sequencer
Storing large/unstructured objects (images, video, files)blob-store
Metrics/logs/traces, health checks, SLOs, alertingobservability
High-volume log collection/shipping/retentiondistributed-logging
Full-text search, inverted index, autocompletedistributed-search
Background / scheduled / recurring jobstask-scheduling
Counting likes/views at huge write ratessharded-counters
Drawing/visualizing the architecturearchitecture-diagram

Full descriptions, the bottom-up layering, and "which block answers which question" are in references/building-blocks-index.md (the canonical 21-block catalog). Trigger a block directly when the user asks about just that part — the orchestrator is not required for every question.

Guardrails: the ways designs fail

The GUIDE catalogs ten failure modes. They are not about wrong answers; they are about wrong signals. Keep these reflexes (full list and antidotes in references/failure-modes.md):

  • Clarify before designing. Rushing to a solution signals memorization.
  • Quantify before choosing. Convert "heavy traffic" into numbers first.
  • Justify every component. Three questions per choice: solves / worsens / when-to-change. "Industry standard" is not a justification.
  • Open building blocks, don't name them. Know how a cache, queue, or DB behaves under stress — not just what it is called.
  • Design for failure. "Add more retries" usually amplifies an outage.
  • Make interfaces concrete. If you can't write the request, response, and primary key, the diagram is guesswork.
  • Treat the architecture as a hypothesis. If a small constraint change collapses the whole design, it was memorized, not reasoned.

Collaborate; do not present

A design discussion is a working session, not a lecture. Propose, invite the critique, and adapt in real time. When a constraint changes, name which earlier assumption it invalidates and redesign that part — defending a sunk design is a worse signal than a flawed first idea. See references/collaboration-playbook.md for how to narrate, handle curveballs, and pivot.

When requirements are genuinely ambiguous and the answer changes the design, ask the user a clarifying question rather than guessing silently.

Producing the design

  • Capture scope in assets/requirements-template.md (functional / non-functional / out-of-scope / assumptions).
  • Write up the design with assets/design-doc-template.md — it threads the reasoning loop, so the trade-offs and failure story are first-class, not footnotes.
  • Diagram with the in-plugin architecture-diagram skill — a self-contained dark-theme HTML+SVG generator that ships in this plugin (no external dependency). A quick ASCII sketch is fine for early thinking; render properly once the design is clear. See references/diagramming.md for what to draw at each step and how to specify a diagram to that skill.
  • Persist it so the work survives the conversation: write the requirements and design doc to a file (suggest docs/design/<system>.md; ask the user where if unsure). Keep trade-off exploration and constraint back-and-forth in the conversation; commit the settled artifacts (scope, design, key decisions, data model, diagram) to the file.
  • Score & diagnose before wrapping: rate the design with the quality bar and run the Quick Diagnostic in references/failure-modes.md, and state the weakest dimension + what would raise it.

Answer contract

What the user reads must show the reasoning, not just contain it. Every design answer (first pass or revision) includes, in the reply itself:

  • A decisions table — one row per major choice (at least three for a full design): Decision | Solves | Worsens | Change it when…. The last column is a concrete trigger — a number or observable signal ("write QPS > 50k on one shard", "a second team needs independent deploys"), never "if needed".
  • A closing weakest-point line — the part of this design that breaks first as load or requirements grow, and the move you would make then.

A pros/cons list, or trade-offs for only one choice, does not meet the bar.

Running it as a workflow

Two entry points drive this skill as a repeatable process:

  • /design <system> — the slash command that runs the full loop on a problem.
  • system-design-orchestrator — the agent the command dispatches to; it loads this skill, then invokes the building-block skills as each concern arises.

Both compose the same blocks listed above — invoke a block skill when its concern is active rather than reconstructing its recipe from memory.

References

  • references/reasoning-loop.md — the six-step loop in depth, with the news-feed walk-through and 45-minute time budget. Read when running a full design.
  • references/failure-modes.md — the ten failure modes and their antidotes. Read to self-check a design or diagnose why one isn't landing.
  • references/tradeoff-framework.md — the solves/worsens/when-to-change method and common axis trade-offs (latency↔throughput, consistency↔availability, cost↔complexity). Read at step 4.
  • references/building-blocks-index.md — the full wiki index: every block, what it answers, and how blocks combine. Read to route.
  • references/collaboration-playbook.md — narrating, handling curveballs, pivoting on constraint changes. Read when the discussion gets adversarial.
  • references/diagramming.md — what to draw at each loop step and how to specify a diagram to the architecture-diagram skill. Read when drawing.
  • references/worked-example-news-feed.md — one end-to-end pass of the loop, shown as reasoning (not a template to memorize).

Assets

  • assets/requirements-template.md — functional / non-functional / scope / assumptions capture.
  • assets/design-doc-template.md — a design write-up structured around the reasoning loop.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the System Design AI skill do?

This skill should be used when the user asks to "design a system", "design <a product>" (e.g. "design WhatsApp", "design a URL shortener", "design a news feed"), "high-level architecture for…", "how would you architect…", "system design interview", or wants to scope, diagram, and justify a backend/distributed-system design. It runs a reasoning loop — clarify, estimate, design, weigh trade-offs, stress-test, iterate — and routes to focused building-block skills. Use it whenever a request is an open-ended design problem, even if the user doesn't say "system design".

Why use System Design on TypingMind?

Because you install it once and use it with any model. System Design is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install System Design in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/proyecto26/system-design-skills/tree/main/skills/system-design. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use System Design?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with System Design?

As many as you like. As long as a model supports skills, you can use System Design with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the System Design AI skill free?

Yes. It is published on GitHub by proyecto26 under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇