Evaluate system designs through Unix/Linux principles for simplicity and composability.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "design-philosophy-linux" skill from askskill: 1. Download https://raw.githubusercontent.com/microsoft/amplifier-bundle-systems-design/main/skills/design-philosophy-linux/SKILL.md 2. Save it as ~/.claude/skills/design-philosophy-linux/SKILL.md 3. Reload skills and tell me it's ready
Review this microservice interface proposal using Unix/Linux design philosophy. Focus on separation of mechanism and policy, composability, and the principle of least surprise, then suggest improvements: [paste proposal]
A structured review highlighting coupling, complexity sources, and improvement opportunities.
I am designing a command-line tool. Using Unix/Linux philosophy, assess whether it should be split into smaller tools, whether text streams fit composition, and which options should favor convention over configuration, then suggest a redesign: [paste tool spec]
A set of CLI-focused redesign suggestions covering decomposition, I/O conventions, and simpler options.
Here are two system architecture options. Compare them through Unix/Linux design philosophy, and explain which is better for simplicity, maintainability, composability, and separation of concerns, including the trade-offs: [Option A] [Option B]
A comparative analysis with a clear recommendation and philosophy-based reasoning.
The Unix philosophy as a thinking tool for modern system design.
The deepest principle in Unix. The kernel provides mechanisms (process scheduling, file descriptors, memory mapping). User-space provides policy (which processes run, what files mean, how memory is used). The kernel doesn't have opinions about your workflow. It gives you the tools to build any workflow.
The litmus test: Could two reasonable users want different behavior here? If yes, you're looking at policy — don't hardcode it. Provide a mechanism and let the caller decide.
How this applies broadly:
Design evaluation questions:
The failure mode: Over-separating mechanism from policy creates systems that are infinitely flexible and impossible to use out of the box. X11 separated mechanism from policy so aggressively that every desktop environment had to reinvent window management from scratch. The mechanism layer should be opinionated enough to be useful — just not so opinionated that it precludes valid alternatives.
The most cited and most misunderstood Unix principle. grep searches. sort sorts. uniq deduplicates. Each does one thing, does it thoroughly, and handles edge cases within its domain. The key word is well, not small.
What this actually means:
A component should have a clear responsibility boundary. Everything inside that boundary, it handles completely. Everything outside, it delegates. grep doesn't sort its output because sorting is outside its boundary. But grep handles binary files, compressed input, recursive directories, regex dialects, and colorized output — because those are all within "searching text."
How microservices got this wrong: "Do one thing" was interpreted as "be small." Teams created services so thin they couldn't do anything useful alone. A "user service" that only stores user records but can't validate an email address. A "notification service" that can't template a message. The result: every operation requires orchestrating five services, and the real logic lives in the orchestration layer — which is now doing everything and doing it badly.
The real principle: Draw clear responsibility boundaries. A component owns a coherent piece of functionality, not a minimal piece. The question isn't "Is this small enough?" but "If I need to change how X works, do I change exactly one component?"
Design evaluation questions:
…
Review system designs with a seven-step method to surface risks and improvements.
Design or assess Azure system architectures, operations, and cloud service choices.
Design and evaluate data pipelines, streaming systems, and ETL architecture patterns.
Design and assess multi-tenant SaaS architecture, isolation, billing, and resilience.
Design and evaluate decentralized peer-to-peer architectures and core system mechanisms.
Design and assess enterprise integration patterns, legacy modernization, and orchestration strategies.
Evaluate architecture and code organization through object-oriented design principles.
Design and evaluate CLI tools and developer SDK architecture and usability.
Improve Claude Code with stricter coding guidance based on classic engineering pitfalls.
Design systems and architectures with APIs, data models, and service boundaries.