From bee
Evaluates architecture options (onion, MVC, simple) enforcing dependency direction and YAGNI-based abstraction decisions. Calls when deciding layer structure or dependency rules.
How this skill is triggered — by the user, by Claude, or both
Slash command
/bee:architecture-patternsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Use when:** Scripts, utilities, CLI tools, small services with minimal business logic, CRUD with no rules beyond validation.
Use when: Scripts, utilities, CLI tools, small services with minimal business logic, CRUD with no rules beyond validation.
Structure: Functions or modules organized by feature. No layers, no ports.
Tradeoff: Fastest to build. Hardest to extend if complexity grows. Refactor to layers when it hurts, not before.
Use when: Web apps, APIs, most CRUD-heavy applications. The default for Rails, Django, Express, Spring.
Structure: Route -> Controller (thin, delegates) -> Service (business logic) -> Model/Repository (data).
Dependency direction: Controller depends on Service, Service depends on Model. Never the reverse.
Tradeoff: Familiar, well-tooled, lots of examples. Services can grow large as business logic gets complex. At that point, consider extracting a domain layer.
Use when: Complex domain logic with many business rules. Multiple input channels (HTTP, CLI, events). Need to swap infrastructure (different DB, different API provider).
Structure: Pure domain core (zero external dependencies) -> Use cases (orchestration) -> Adapters (HTTP, DB, messaging).
Dependency direction: Everything points inward. Outer layers depend on inner layers. Inner layers know nothing about outer layers. Ports (interfaces) define the boundaries.
Tradeoff: More structure upfront. Trivially testable domain. Worth it when business rules are complex. Overkill for simple CRUD.
The cardinal rule: inner layers never import from outer layers.
Violations of this rule create coupling that makes testing hard and changes expensive.
You Aren't Gonna Need It. Before creating any abstraction, ask:
The rule: Extract an interface when the second implementation arrives. Not before.
Why this matters for AI: AI loves generating interfaces, abstract factories, and strategy patterns. It will create IUserRepository, UserRepositoryImpl, UserRepositoryFactory for a single Postgres query. Push back. Use the concrete class. Extract when you need to.
Warranted abstractions:
Unwarranted abstractions:
npx claudepluginhub incubyte/ai-plugins --plugin beeDesigns software architecture and selects appropriate patterns (layered, clean, hexagonal) based on project size and team size. Activate when structuring new projects or making architectural decisions.
Asks structured questions about domain complexity, team size, and system lifetime to recommend the best .NET architecture: Vertical Slice, Clean Architecture, DDD+CA, or Modular Monolith.
Advises on architecture patterns: SOLID, DDD, CQRS, Event Sourcing, Clean/Hexagonal, microservices, Data Mesh, EDA, Service Mesh, micro-frontends, Vertical Slice, Saga/Outbox. For architectural decisions, design evaluations, refactoring.