software-architect

Design module boundaries, dependency rules, and domain models for maintainable software architecture.

Updated Aug 20, 2026
One-click install
npx skills add https://github.com/rhorba/RestoLedger --skill software-architect-rhorba
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: software-architect
Source: https://github.com/rhorba/RestoLedger/tree/main/skills/software-architect
Command: npx skills add https://github.com/rhorba/RestoLedger --skill software-architect-rhorba

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Choosing the right architecture style and enforcing clean module boundaries is hard, and over-engineering with DDD, CQRS, or event sourcing adds complexity without payoff. This Skill guides architecture decisions with a YAGNI-first approach, concrete diagrams, and enforceable dependency rules. ## Core Features & Use Cases - Architecture Style Selection: Compare layered, clean, hexagonal, DDD, CQRS, and event sourcing with a decision table based on project complexity. - Module & Dependency Design: Apply package-by-feature structure, dependency rules, and design patterns (Repository, Strategy, Factory, Observer) only where they solve real problems. - Architectural Governance: Define fitness functions, ADRs, and cross-cutting concern strategies (logging, validation, transactions) enforceable in CI. - Use Case: When starting a new backend service, ask for a module structure and get a layered architecture with repository interfaces, domain entities free of framework dependencies, and an ADR documenting the decision. ## Quick Start Ask the AI to design the module structure and dependency rules for a new order management service using clean architecture.

Frequently Asked Questions about software-architect

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I choose between clean architecture and layered architecture?▼

Start with layered architecture for CRUD apps, small teams, and prototypes since it has low complexity. Upgrade to clean architecture when business logic becomes complex and the application is long-lived, following the YAGNI principle of adding patterns only when they reduce complexity.

When should I use DDD aggregates and bounded contexts?▼

Use DDD only when the domain is genuinely complex with multiple bounded contexts. Apply aggregates to enforce invariants at a root entity, keep repositories only at the aggregate root level, and use domain events to communicate across bounded contexts.

What is the difference between hexagonal architecture and clean architecture?▼

Hexagonal architecture (ports and adapters) fits systems with multiple I/O adapters like REST, CLI, and queues, where ports are interfaces defined by the application. Clean architecture emphasizes concentric dependency rules where inner layers never import outer layers.

Should I package code by feature or by layer?▼

Package by feature is preferred: each module like user/ or order/ owns its entity, repository interface, service, and controller. Cross-module access goes through well-defined APIs rather than direct database queries, keeping cohesion high and coupling low.

When is CQRS or event sourcing actually justified?▼

Use CQRS only when read and write models diverge significantly, such as heavy reporting needs. Use event sourcing only when a full audit trail or temporal queries are an actual requirement, since both patterns carry high complexity costs.

How do I enforce architecture rules in CI?▼

Define architectural fitness functions and run them in CI: zero circular dependencies via dependency-cruiser, forbidden import rules via import-linter so domain never imports infrastructure, plus coverage, build time, and bundle size thresholds.