plugins/pm-engineering/skills/system-design-interview/SKILL.md
Structure a complete system design answer for interview questions or real architecture sessions. Use when asked to design a system, answer a system design interview question, or architect a solution at scale. Produces a structured answer covering requirements, capacity estimates, high-level design, component deep-dives, trade-offs, and follow-up considerations.
npx skillsauth add mohitagw15856/pm-claude-skills system-design-interviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Structures a complete, interview-grade system design response — covering clarifying questions, requirements, capacity estimates, architecture, component design, and trade-offs. Works equally well for real architecture sessions.
Ask for these if not provided:
Before designing, list 4–6 questions that would change the design. Examples:
Then proceed with stated assumptions if answering an interview question.
Core features (must have):
Out of scope (for this design):
| Requirement | Target | |---|---| | Availability | [e.g. 99.9% / 99.99%] | | Latency | [e.g. p95 < 100ms for reads] | | Throughput | [e.g. 10k writes/sec peak] | | Consistency | [Strong / Eventual] | | Durability | [e.g. 99.999% — no data loss] |
Traffic:
Storage:
Bandwidth:
Draw an ASCII diagram specific to this system. Do not default to the client→CDN→LB→API→Cache→DB template unless it genuinely applies. Label each component with the specific technology chosen (e.g. "Kafka" not "Message Queue", "PostgreSQL" not "DB"). Describe each component in 1–2 sentences explaining its role and why that technology was chosen.
Pick the 2–3 most critical/interesting components and go deep:
[Component 1: e.g. Database Layer]
[Component 2: e.g. Caching Strategy]
[Component 3: e.g. API Design]
Walk through the two most critical paths end-to-end:
Write path: [Step 1 → Step 2 → Step 3...] Read path: [Step 1 → Step 2 → Step 3...]
| Bottleneck | Mitigation | |---|---| | [e.g. DB write throughput] | [e.g. sharding by user_id, write batching] | | [e.g. Hot-key cache misses] | [e.g. local in-process cache, probabilistic early expiry] | | [e.g. Single region latency] | [e.g. multi-region deployment, GeoDNS routing] |
Be explicit about what was chosen and what was sacrificed:
| Decision | Why | Trade-off | |---|---|---| | [e.g. Eventual consistency] | [Higher availability, lower latency] | [Stale reads possible] | | [e.g. SQL over NoSQL] | [Complex queries, ACID transactions] | [Harder to shard horizontally] | | [e.g. Async processing via queue] | [Decoupled, more resilient] | [Eventual delivery, harder to debug] |
Things to tackle in production but out of scope for this design session:
development
Build a framework for creating shareable, high-reach social media content. Use when asked to plan viral content, develop a shareable content strategy, create a hook writing system, or build a repeatable process for content that gets shared. Produces a platform-specific viral content framework with hook formulas, content structures, shareability triggers, and a content testing system.
development
Generate article or newsletter thumbnail candidates using the Gemini API from inside Claude Code. Claude reads article copy, proposes composition concepts, writes image generation prompts incorporating brand specs, calls Gemini to generate the images, evaluates the results via computer vision, and returns ranked candidates with rationale. Use when asked to create thumbnails, generate cover images, or produce visual candidates for an article or newsletter.
testing
Flips Claude's default from "find reasons you're right" to "find reasons you're wrong." A genuine thinking partner, not a mirror with grammar. Use before high-stakes decisions, plans, assumptions, or pitches you haven't stress-tested.
development
Scrapes a Substack Notes page and exports engagement data (likes, comments, restacks) to a formatted .xlsx file with conditional formatting and summary stats.