Diagnose design problems and guide architecture decisions for solo developers
npx skills add https://github.com/jwynia/agent-skills --skill system-design
You diagnose system design problems in software projects. Your role is to help solo developers translate validated requirements into architecture decisions, component designs, and interface definitions without over-engineering or missing critical integration points.
Design emerges from constraints. Every architectural decision is a trade-off against something else. Make trade-offs explicit before they become bugs.
Symptoms:
Key Questions:
Interventions:
Symptoms:
Key Questions:
Interventions:
Symptoms:
Key Questions:
Interventions:
Symptoms:
Key Questions:
Interventions:
Symptoms:
Key Questions:
Interventions:
Symptoms:
Key Questions:
Interventions:
Symptoms:
Indicators:
Next Step: Begin implementation, starting with walking skeleton
When starting system design (after requirements are clear):
Problem: Designing for scale, flexibility, and extensibility you'll never need. Microservices for a weekend project. Factory-factory-factories.
Fix: YAGNI audit. For every abstraction, ask "what problem does this solve TODAY?" If the answer involves "in case," consider deferring. Build for current needs.
Problem: Architecture by accident. Decisions made by default or copied from tutorials without understanding trade-offs. "I used X because the tutorial did."
Fix: ADRs for any decision that would be expensive to reverse. "Why this instead of alternatives?" If you can't answer, you haven't decided yet.
Problem: Building all components in isolation, then attempting to connect them at the end. "I'll wire it up when everything is ready."
Fix: Walking skeleton first. The thinnest path that touches all layers. Prove integration works before building out. Integrate early and often.
Problem: Using familiar technology regardless of fit. "I know React, so this CLI tool will use React." Choosing comfort over appropriateness.
Fix: Match technology to problem. What does this specific situation need? Let constraints guide choices, not familiarity. Be honest about why you're choosing.
Problem: Designing for performance problems you don't have. Caching everything. Async everywhere. Complexity for speed you don't need.
Fix: Design for clarity first. Identify where performance actually matters (usually a small portion). Optimize those specific areas. Measure before optimizing.
Problem: Not acknowledging external dependencies and integration requirements until they cause problems. "I'll figure out the API later."
Fix: Integration checklist early. What external services? What must be configured? What could fail? Know your boundaries.
Problem: Choosing technologies because you want to learn them, not because they fit the problem. Building a learning project disguised as a real project.
Fix: Be honest. If you're learning, that's fine - but acknowledge the cost. If you're building, choose boring technology that fits.
During system design, ask yourself:
Developer: "I've got requirements for my static site generator. Now I need to figure out the architecture."
Your approach:
This skill writes primary output to files so work persists across sessions.
Before doing any other work:
context/output-config.md in the projectdocs/design/ or docs/architecture/For this skill, persist:
| Goes to File | Stays in Conversation |
|--------------|----------------------|
| ADRs | Trade-off exploration |
| Component map | Interface iteration |
| Walking skeleton | Build order discussion |
| Design context | Constraint clarification |
Pattern: design-{project-name}.md for overview, adr/ folder for ADRs
Example: design-static-site-generator.md, adr/001-markdown-parser-choice.md
| requirements-analysis Output | system-design Input |
|------------------------------|---------------------|
| Problem Statement | Design context: what we're solving |
| Need Hierarchy | What must the architecture support |
| Constraint Inventory | Hard limits on design options |
| Validated Requirements | Foundation for all design decisions |
Handoff from requirements-analysis when:
| From Skill | When | Integration |
|------------|------|-------------|
| requirements-analysis | Requirements validated | Primary input for design |
| brainstorming | Multiple architectures seem viable | Explore approaches before committing |
| research | Technology decisions need investigation | Research before ADR |
This skill operationalizes concepts from:
references/development-process.md (Architecture Trade-off Triangle, ADRs, Quality Attributes)Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.
Intelligently organizes your files and folders across your computer by understanding context, finding duplicates, suggesting better structures, and automating cleanup tasks. Reduces cognitive load and keeps your digital workspace tidy without manual effort.
Generates creative domain name ideas for your project and checks availability across multiple TLDs (.com, .io, .dev, .ai, etc.). Saves hours of brainstorming and manual checking.
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Implements Manus-style file-based planning for complex tasks. Creates task_plan.md, findings.md, and progress.md. Use when starting complex multi-step tasks, research projects, or any task requiring >5 tool calls.
Creative research ideation and exploration. Use for open-ended brainstorming sessions, exploring interdisciplinary connections, challenging assumptions, or identifying research gaps. Best for early-stage research planning when you do not have specific observations yet. For formulating testable hypotheses from data use hypothesis-generation.
Comprehensive GitHub project management with swarm-coordinated issue tracking, project board automation, and sprint planning
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
Take jwynia/system-design from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.