Back to skills
SKILL.md
System Design
ASecurityUse when decomposing a system into components with clear boundaries, module organization, and interface contracts — the "how do we slice this?" question at design time. NOT for reviewing an existing system's health (use the architecture skill or engineering:arch).
- 9 stars
- 0 votes
- 0 copies
- 1 view
- Added October 18, 2026
Works with
Security analysis
100/100Pro scans all 18 files and shows the line behind each finding
npx -y skills add mikeparcewski/wicked-garden --skill system-design --agent claude-codeAre you the author of System Design?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mikeparcewski-system-design)---
name: wicked-garden-engineering-system-design
description: |
Use when decomposing a system into components with clear boundaries, module organization, and interface
contracts — the "how do we slice this?" question at design time.
NOT for reviewing an existing system's health (use the architecture skill or engineering:arch).
metadata:
role: module
phases: "design,build"
archetypes: "*"
---
# System Design Skill
Decompose systems into well-defined components with clear boundaries and interfaces.
## Purpose
Transform architecture into concrete components:
- Component identification and boundaries
- Interface definition
- Dependency management
- Module organization
## Process
### 1. Identify Components
Ask:
- What are major capabilities?
- What changes together?
- What has different scaling needs?
- What domain concepts exist?
### 2. Define Boundaries
Apply:
- **High Cohesion** - Related functionality together
- **Low Coupling** - Minimal dependencies
- **Single Responsibility** - One reason to change
- **Information Hiding** - Encapsulate internals
### 3. Design Interfaces
For each component:
- Public API (what it exposes)
- Dependencies (what it needs)
- Events (what it publishes/subscribes)
- Data contracts (I/O structures)
### 4. Document
Creates in `phases/design/`:
```
design/
├── components/
│ ├── overview.md
│ ├── auth-component.md
│ └── dependencies.mmd
└── interfaces/
└── component-api.md
```
## Component Patterns
**Layered** - Presentation → Application → Domain → Infrastructure
**Hexagonal** - Business logic with adapter ports
**Plugin** - Core system with pluggable extensions
See component patterns in refs/ (patterns-layered-pattern.md, patterns-facade-pattern.md).
## Dependency Management
### Rules
1. **Acyclic** - No circular dependencies
2. **Unidirectional** - Dependencies flow one way
3. **Stable** - Depend on stable abstractions
4. **Explicit** - Declare in constructor/config
### Common Anti-Patterns
**God Object** - One component does everything
**Fix**: Split by responsibility
**Feature Envy** - Component uses another's data extensively
**Fix**: Move functionality to data owner
**Circular Dependencies** - A depends on B, B depends on A
**Fix**: Extract shared logic or use events
**Leaky Abstraction** - Internal details exposed
**Fix**: Refine public interface
See dependency guides in refs/ (dependencies-dependency-principles.md, dependencies-best-practices.md).
## Integration
### With Architecture Skill
Implements high-level architecture:
- Takes architectural decisions
- Maps to concrete components
- Validates feasibility
### With Integration Skill
Provides boundaries for:
- API design
- Service contracts
- Event schemas
### With wicked-crew
Called during design phase after architecture.
## Events
- `[arch:components:defined:success]` - Components designed
- `[arch:interface:defined:success]` - Interface documented
- `[arch:dependency:analyzed:success]` - Dependencies validated
## Tips
1. **Start with Boundaries** - Define what's in/out first
2. **Think in Interfaces** - Design API before implementation
3. **Keep It Simple** - Don't over-decompose
4. **Test Boundaries** - Use contract tests
5. **Refactor Gradually** - Small, safe steps
6. **Document Dependencies** - Make them explicit
## Reference Materials
- Component Template:
- [Structure & API](refs/component-template-structure.md)
- [Lifecycle & Deployment](refs/component-template-lifecycle.md)
- [Maintenance & Examples](refs/component-template-maintenance.md)
- Interface Template:
- [Structure & Contracts](refs/interface-template-structure.md)
- [Testing & Operations](refs/interface-template-lifecycle.md)
- [Examples & Tips](refs/interface-template-maintenance.md)
- Component Patterns:
- [Layered](refs/patterns-layered-pattern.md)
- [Plugin Architecture](refs/patterns-plugin-architecture.md)
- [Facade](refs/patterns-facade-pattern.md)
- [Dependency Injection](refs/patterns-dependency-injection.md)
- Dependencies:
- [Principles](refs/dependencies-dependency-principles.md)
- [Tracking](refs/dependencies-dependency-tracking.md)
- [Best Practices](refs/dependencies-best-practices.md)
- Anti-Patterns:
- [God Object](refs/anti-patterns-god-object.md)
- [Big Ball of Mud](refs/anti-patterns-big-ball-of-mud.md)
- [Circular Dependencies](refs/anti-patterns-circular-dependencies.md)
- [Feature Envy](refs/anti-patterns-feature-envy.md)
Files in this skill
- SKILL.md
- refs/anti-patterns-big-ball-of-mud.md
- refs/anti-patterns-circular-dependencies.md
- refs/anti-patterns-feature-envy.md
- refs/anti-patterns-god-object.md
- refs/component-template-lifecycle.md
- refs/component-template-maintenance.md
- refs/component-template-structure.md
- refs/dependencies-best-practices.md
- refs/dependencies-dependency-principles.md
- refs/dependencies-dependency-tracking.md
- refs/interface-template-lifecycle.md
- refs/interface-template-maintenance.md
- refs/interface-template-structure.md
- refs/patterns-dependency-injection.md
- refs/patterns-facade-pattern.md
- refs/patterns-layered-pattern.md
- refs/patterns-plugin-architecture.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.