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.