system-design-review
Skill0 starsChanged 6 months agoMITView on GitHub
Review system architecture through design lenses to surface inherited defaults, underspecified decisions, tradeoffs, and cross-cutting tensions. Use when the user asks to "review this architecture", "review this design", "evaluate this system", "check this design for gaps", "what decisions did we inherit", "where are the gaps in this design", "what are the architectural concerns here", or "stress test this architecture", or wants an architectural assessment of a design doc, codebase, or verbal system description. Do not use for code-level bug review, incident post-mortems, debt prioritization, refactoring sequencing, or implementation-readiness audits.
We split this skill into the rules it gives an agent
36 rules. About 0 are common, 23 are distinctive, and 13 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈23
Distinctive · estimate
This author's own choices. Worth a look.
13
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
If the user primarily wants incident reconstruction, debt prioritization, refactoring sequencing, implementation readiness, or code bug …
- Distinctive: line 29
If the request mixes scope levels, ask which scope to review first.
- Very specific: line 31
If the input is sparse, mark categories insufficient evidence instead of guessing.
- Very specific: line 32
If 4 or more categories would be insufficient evidence, say so explicitly, ask whether to narrow scope, and label the review reduced-depth …
- Distinctive: line 33
If no material findings surface at the chosen depth, say so directly.
- Distinctive: line 47
If the request mixes in-scope and out-of-scope work, perform the architecture diagnosis first, then state the handoff explicitly.
- Distinctive: line 68
If the user asks for both a system-level review and an interface deep dive, ask which one to review first.
- Distinctive: line 83
When the system does not map cleanly to the list, infer up to 2 archetypes, reduce weighting strength if confidence is low, and fall back …
- Distinctive: line 100
Use this decision order:
- Very specific: line 103
If any high-risk cue is present, propose high.
- Very specific: line 104
If all cues are low-risk, propose low.
- Distinctive: line 106
If uncertain between two tiers, choose the higher tier.
- Distinctive: line 159
Read the full document first.
- Distinctive: line 160
Treat sections, diagrams, tables, and named decisions as anchors.
- Very specific: line 173
If the codebase is too large, ask to narrow scope or mark more categories insufficient evidence.
- Distinctive: line 177
Use only explicit user statements as anchors.
- Very specific: line 179
If the signal is only implied, mark insufficient evidence.
- Distinctive: line 181
After screening, record one line per category with: status, sentinel used, anchor, and one-line disposition.
- Very specific: line 185
If 4 or more categories would be insufficient evidence, state this explicitly after screening and ask whether to continue at reduced depth …
- Very specific: line 187
If the user does not respond, continue with a partial review limited to categories that cleared screening.
- Distinctive: line 191
After screening, select 6-10 individual lenses for the deep dive.
- Distinctive: line 199
If no archetype fits cleanly, skip step 1 and rely on evidence-promoted lenses only.
- Distinctive: line 207
Use 5 parts. Every section must earn its place.
- Distinctive: line 211
Use a compact table:
- Very specific: line 236
Use labels F1, F2, and so on.
- Very specific: line 247
Use labels T1, T2, and so on only when a real tension exists.
- Very specific: line 269
Use default likely inherited only with positive evidence of a default.
- Distinctive: line 283
Before emitting a tension, verify all 6 lines:
- Distinctive: line 292
Use the bundled tensions table as a prompt source, not a required menu.
- Distinctive: line 302
If you have more than 12 findings in the main reply, either cluster them by root cause or produce a saved artifact.
- Distinctive: line 306
If no material findings surface, say so directly.
- Distinctive: line 310
Use staged checkpoints. The user can redirect between stages.
- Distinctive: line 324
If the user does not respond, continue.
- Very specific: line 374
If the user asks to save the review, or the workspace already uses docs/audits/, write docs/audits/YYYY-MM-DD-<target-slug>.md.
- Very specific: line 379
Read references/system-design-dimensions.md when you need:
- Distinctive: line 386
Do not read the reference during screening.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
System Design Review
Review architectural decisions by walking the system through design lenses. Keep one question in view throughout the review:
"Was this a conscious decision, or an inherited default?"
Surface inherited defaults, underspecified decisions, explicit tradeoffs, cross-cutting tensions, and the sharpest next questions. Work at the architecture level, not the implementation-bug level.
Quick start
- Choose exactly one scope level:
system,subsystem, orinterface. - Infer the top 1-2 system archetypes and state confidence.
- Propose a stakes tier before going deep. Never silently downgrade risk.
- Screen all 8 categories with sentinel questions before producing findings.
- Deep-dive only the lenses that earned attention through archetype weighting, screening signals, or cross-category linkage.
- End with sharp questions, not a verdict.
Defaults and failure modes
- If the user primarily wants incident reconstruction, debt prioritization, refactoring sequencing, implementation readiness, or code bug review, hand off immediately instead of forcing an architecture review.
- If the request mixes scope levels, ask which scope to review first.
- If multiple plausible review targets are in scope, name them and ask which one to review first. If the user does not choose, review the artifact they referenced most directly; if that is still tied, prefer the design doc for intended architecture and the codebase for implemented architecture. Do not blend multiple targets into one pass unless the user explicitly asks for both.
- If the input is sparse, mark categories
insufficient evidenceinstead of guessing. - If 4 or more categories would be
insufficient evidence, say so explicitly, ask whether to narrow scope, and label the reviewreduced-depthif you continue without clarification. - If no material findings surface at the chosen depth, say so directly. Do not pad the review.
Scope and handoffs
In scope: architectural diagnosis using the lens framework. Judge decision quality and system shape, not line-level implementation quality.
| Request | Handoff |
| Incident timeline or root-cause analysis | "This skill identifies which lenses likely failed. Use a post-mortem skill for timeline reconstruction." |
| Debt prioritization or remediation ordering | "This skill identifies strained lenses and hidden tradeoffs. Use a planning or tech-debt skill to prioritize fixes." |
| Refactoring sequencing | "This skill surfaces architectural gaps. Use a next-steps or refactoring-triage skill to sequence remediation." |
| Implementation-readiness audit | "This skill diagnoses architectural decisions. Use a design-review or readiness skill for implementation detail checks." |
| Code-level bug review | "This skill works at the architecture level. Use a code review skill for bug hunting." |
If the request mixes in-scope and out-of-scope work, perform the architecture diagnosis first, then state the handoff explicitly. Do not silently expand into adjacent workflows.
Execution flow
Frame -> Screen -> Deep Dive -> Deliver
Frame- choose scope, infer archetypes, calibrate stakesScreen- build an evidence map and run sentinel questions across all 8 categoriesDeep Dive- analyze the lenses that earned attention, then assemble findings and tensionsDeliver- present staged checkpoints appropriate to the stakes tier
1. Frame
Scope selection
Choose one scope level before starting. Do not mix scope levels in one run.
system- the whole architecture at the top levelsubsystem- a bounded component or serviceinterface- a specific boundary, contract, or integration point
If the user asks for both a system-level review and an interface deep dive, ask which one to review first.
Archetype identification
Infer the top 1-2 archetypes from the input. State them with a confidence level and proceed unless ambiguity would materially change which lenses deserve deep attention.
Available archetypes:
- Internal tool or back-office
- User-facing API or SaaS
- Data pipeline or ETL
- Financial or regulated
- ML or research platform
- Event-driven or streaming
When the system does not map cleanly to the list, infer up to 2 archetypes, reduce weighting strength if confidence is low, and fall back to unweighted screening plus evidence-promoted lenses if no archetype fits.
Example framing:
Archetype: User-facing API + event-driven (medium confidence)
If that's wrong, correct me now. It changes which lenses I prioritize.Stakes calibration
Propose stakes and proceed. Stakes control depth, finding count, and when to invite correction.
low- reversible, narrow blast radius, internal-onlymedium- meaningful blast radius or partial irreversibilityhigh- hard to reverse, external or shared impact, or meaningful trust, safety, or reliability exposure
Use this decision order:
- Honor an explicit user depth request unless a higher-risk cue overrides it.
- If any high-risk cue is present, propose
high. - If all cues are low-risk, propose
low. - Otherwise, propose
medium. - If uncertain between two tiers, choose the higher tier.
High-risk cues:
- External user-facing API
- Auth, permissions, or trust boundary
- Payments, regulated data, or sensitive data handling
- Migration or irreversible data change
- SLO, SLA, or availability commitment
- Shared platform or infrastructure
- Multi-team blast radius
- Distributed consistency concerns
Fail-safe: never silently downgrade. If the user does not answer a stakes question, proceed at the higher plausible tier.
2. Screen
Build an evidence map from the input, then run one sentinel question per category.
Sentinel questions
| Category | Sentinel |
| Structural | Can I name the main components and their boundaries at this scope? |
| Behavioral | Can I trace the main runtime path and name what happens under failure, retry, or overload? |
| Data | Can I trace one critical datum from entry to storage to exit and identify its source of truth? |
| Reliability | Are guarantees, recovery, and degradation behavior stated or visible? |
| Change | Is there a credible story for change, migration, rollback, or test isolation? |
| Cognitive | Could a new engineer find the responsibility and rationale without oral tradition? |
| Trust and Safety | Is there an explicit trust boundary, privilege boundary, or sensitive-data handling point? |
| Operational | Can I tell how this is deployed, configured, observed, and owned? |
Category statuses
| Status | Meaning |
deep | Selected for substantive analysis. Eligible to produce findings. |
screened | Concrete check completed against anchored evidence. No material concern at screening depth. |
insufficient evidence | Available evidence is too weak to classify responsibly. |
not applicable | The category has no meaningful surface at the chosen scope. |
A category qualifies as screened only when all of these hold:
- At least one concrete anchor exists.
- The sentinel is answered in one sentence tied to that anchor.
- The answer does not rely on guessing.
Promote screened to deep when the category is primary or secondary for the archetype, the sentinel surfaced a concern, or it connects to a finding from another category.
Evidence bars by input type
Design doc
- Read the full document first.
- Treat sections, diagrams, tables, and named decisions as anchors.
- Require 1 anchored sentinel answer for
screened.
Codebase
- Build a bounded architecture sample with at most 12 anchors total:
- 2 entrypoints
- 2 orchestration or control-flow anchors
- 2 data or state anchors
- 2 boundary anchors such as API, queue, or adapter
- 2 config, deploy, or observability anchors
- 2 test or validation anchors
- Require 1 primary and 1 corroborating anchor for
screened. - If the codebase is too large, ask to narrow scope or mark more categories
insufficient evidence.
Verbal description
- Use only explicit user statements as anchors.
- Require a direct quoted claim or clearly stated mechanism for
screened. - If the signal is only implied, mark
insufficient evidence.
After screening, record one line per category with: status, sentinel used, anchor, and one-line disposition.
Global evidence floor
If 4 or more categories would be insufficient evidence, state this explicitly after screening and ask whether to continue at reduced depth or narrow scope before producing findings.
If the user does not respond, continue with a partial review limited to categories that cleared screening. Label the review reduced-depth in the snapshot and cap findings at 4.
Deep lens selection
After screening, select 6-10 individual lenses for the deep dive. For narrow interface scope or sparse verbal input, 4-6 is acceptable if you state why fewer lenses were genuinely relevant.
Select lenses in this order:
- Archetype weighting from the bundled reference
- Screening promotion where sentinel answers surfaced a real concern
- Cross-category links where one concern explains another
If no archetype fits cleanly, skip step 1 and rely on evidence-promoted lenses only.
3. Deep dive
Analyze only the selected deep lenses. Produce findings and optional tensions, then assemble the review.
Output structure
Use 5 parts. Every section must earn its place. If a section has nothing meaningful, say so instead of padding it.
1. Review Snapshot
Use a compact table:
| Signal | Count |
| ------ | ----- |
| High-priority findings | N |
| Total findings | N |
| Tensions identified | N |
| Categories screened only | N |
| Insufficient evidence | N |2. Focus and Coverage
State:
- scope level
- input type
- archetype or archetypes plus confidence
- stakes tier
- named deep lenses
- one-line status per category with status, sentinel, anchor, and disposition
3. Findings
Use labels F1, F2, and so on. Each finding must include:
LensDecision stateAnchorProblemImpactRecommendation or question
4. Tension Map
Use labels T1, T2, and so on only when a real tension exists. Each tension must include:
TensionWhat is being tradedWhy it hidLikely failure storyLinked findings
5. Questions / Next Probes
End with 2-4 sharp questions. Do not end with a verdict unless the user explicitly asked for one.
Decision state taxonomy
| State | When to use |
explicit tradeoff | The design names both sides and makes a conscious choice. |
explicit decision | A conscious choice is visible, but not framed as a tradeoff. |
default likely inherited | No local rationale is visible and the choice matches a framework default or legacy pattern. |
underspecified | The system must decide something here, but the choice is not defined. |
not enough evidence | The input is too sparse to classify safely. |
Use default likely inherited only with positive evidence of a default. Lack of rationale alone is not enough. For codebase reviews, stay conservative: code shows what exists, not why.
Tension inclusion rules
Tensions are optional. 0 is a valid count. Do not force one.
Include a tension only when all of these hold:
- Both sides have concrete anchors in the input.
- You can explain the tradeoff mechanism.
- You can explain why the tradeoff was easy to miss.
- The tension explains at least 1 concrete finding.
- The wording is specific to this system, not generic architecture prose.
Before emitting a tension, verify all 6 lines:
- Side A anchor
- Side B anchor
- The decision or default that pulled toward side A
- The cost or blind spot that appeared on side B
- Why a reviewer could miss this
- Which finding or findings this tension explains
Use the bundled tensions table as a prompt source, not a required menu. Custom tensions are valid.
Depth calibration
| Stakes | Finding target | Hard cap | Tension cap | Overflow handling |
low | 3-5 | 6 | 0-1 | Drop minor items. |
medium | 5-8 | 9 | 0-2 | Move lower-signal items to a deferred section. |
high | 8-12 | 12, or 15 with appendix | 1-3 | Cluster by root cause and move overflow to an appendix. |
If you have more than 12 findings in the main reply, either cluster them by root cause or produce a saved artifact. Overflow findings, up to 15 total, go in a Deferred Findings appendix as one-line items with lens and decision state only.
No-findings path
If no material findings surface, say so directly. A clean review at the current depth is a valid outcome.
Delivery model
Use staged checkpoints. The user can redirect between stages.
| Checkpoint | Content | When to pause |
C0: Framing | Scope, archetype, stakes, planned deep lenses | Pause only for high stakes with scope or archetype uncertainty. |
C1: First findings | Snapshot, coverage, top 2-4 findings | For high stakes, invite reaction here before continuing. |
C2: Full review | Remaining findings, tension map, questions | Do not pause unless the user redirects. |
Delivery defaults:
lowstakes: collapse into one messagemediumstakes: use one message unless scope or archetype is ambiguous, then invite correction atC0highstakes: invite reaction atC0if framing is uncertain, otherwise atC1
If the user does not respond, continue. Checkpoints are invitations, not gates.
Anti-patterns
| Pattern | Problem | Fix |
Marking a category screened without a concrete anchor | It creates false coverage and hides evidence gaps. | If the anchor is vague, use insufficient evidence. |
| Copying a generic tension from a table | It sounds architecture-literate but explains nothing about this system. | Emit tensions only when all inclusion rules pass. |
Claiming default likely inherited without evidence of a default | It overstates diagnosis when the evidence only shows missing rationale. | Use not enough evidence when unsure. |
| Walking all 40-plus lenses narratively | It buries signal in noise and exhausts the reader. | Screen broadly, then deep-dive selectively. |
| Ending with a verdict instead of questions | It closes the conversation too early. | End with questions that move the user's thinking forward. |
| Silently expanding into out-of-scope work | It blurs the skill boundary and makes every answer shallower. | State the handoff explicitly. |
Example
User: "Review the architecture of our notification service. It handles email, SMS, and push via a single queue."
Review Snapshot
Signal Count High-priority findings 2 Total findings 5 Tensions identified 1 Categories screened only 3 Insufficient evidence 1 F1. Single queue for heterogeneous delivery channels
- Lens: Failure Containment
- Decision state:
default likely inherited- Anchor: Queue configuration in
notification-service/config.yaml- Problem: SMS gateway timeouts block email delivery, so failure in one channel propagates to all channels.
- Impact: A slow SMS provider degrades every notification type.
- Recommendation: Evaluate per-channel queues or priority lanes.
T1. Simplicity vs. failure containment
- What is being traded: Single-queue simplicity vs. per-channel isolation
- Why it hid: The system started with email only. SMS and push were added later without revisiting the original queue decision.
- Likely failure story: An SMS provider has a 30-second timeout spike, the queue backs up, and users miss time-sensitive email.
- Linked findings: F1, F3
Questions
- Was the single-queue design revisited when SMS was added, or was the email-era default simply carried forward?
- What is the SLO for email delivery latency, and does the current design meet it during SMS degradation?
Durable record
- If the user asks to save the review, or the workspace already uses
docs/audits/, writedocs/audits/YYYY-MM-DD-<target-slug>.md. - Otherwise, keep the review in the reply.
Reference
Read references/system-design-dimensions.md when you need:
- the full list of named lenses within a category
- the weighting table for archetype-driven deep-lens selection
- the cross-cutting tensions table as a prompt source
- details on a specific lens the user names
Do not read the reference during screening. Sentinel questions are sufficient for that stage.
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- dathuynh1108/agent-skills★ 4same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- git-hygieneSkill
- making-recommendationsSkill
- next-stepsSkill
- scrutinizeSkill
- writing-principlesSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

