Archetypes
Architecture paradigm selection and implementation planning for software systems
Skills in this plugin
14- ▌ Architecture Paradigms · micsappInteractive selector and router for architecture paradigms. Use when selecting architecture patterns for new systems, comparing paradigm trade-offs, creating architecture decision records, evaluating architecture fit for team size and domain complexity, planning implementation roadmaps. Do not use when implementing a specific known paradigm - use the specific architecture-paradigm-* skill (hexagonal, layered, microservices, etc.) instead. reviewing existing architecture - use architecture-review instead. Use this skill BEFORE making architecture decisions. Check even if unsure about needs.
- ▌ Architecture Paradigm Cqrs Es · micsappCQRS and Event Sourcing for auditability, read/write separation, and temporal queries. Triggers: CQRS, event-sourcing, audit-trail, temporal queries, distributed-systems Use when: read/write scaling differs or audit trail required DO NOT use when: selecting paradigms (use architecture-paradigms first), simple CRUD without audit needs.
- ▌ Architecture Paradigm Layered · micsappConsult this skill when implementing layered patterns or enforcing layer boundaries. Use when building traditional applications with clear boundaries, working with moderate-sized teams, needing familiar and well-understood patterns, compliance requirements demand clear separation. Do not use when selecting from multiple paradigms - use architecture-paradigms first. DO NOT use when: high scalability needs independent component scaling. DO NOT use when: teams need independent deployment cycles - use microservices.
- ▌ Architecture Paradigm Pipeline · micsappConsult this skill when designing data pipelines or transformation workflows. Use when data flows through fixed sequence of transformations, stages can be independently developed and tested, parallel processing of stages is beneficial. Do not use when selecting from multiple paradigms - use architecture-paradigms first. DO NOT use when: data flow is not sequential or predictable. DO NOT use when: complex branching/merging logic dominates.
- ▌ Architecture Paradigm Hexagonal · micsappDecouple domain logic from infrastructure using Hexagonal (Ports & Adapters) pattern. Triggers: hexagonal, ports-adapters, infrastructure-independence, domain-isolation, testability Use when: business logic separation, infrastructure changes needed, testability critical DO NOT use when: selecting paradigms (use architecture-paradigms first), simple CRUD.
- ▌ Architecture Paradigm Serverless · micsappServerless FaaS for event-driven workloads with minimal infrastructure management. serverless, FaaS, Lambda, event-driven, pay-per-use Use when: workloads are event-driven with bursty traffic DO NOT use when: long-running processes or stateful operations required.
- ▌ Architecture Paradigm Microkernel · micsappMinimal core system with plugin-based feature extensibility for platform development. Triggers: microkernel, plugin-architecture, extensibility, platform-design Use when: platforms/IDEs/marketplaces, core stability critical, plugin isolation needed DO NOT use when: selecting paradigms (use architecture-paradigms first), no extensibility needed.
- ▌ Architecture Paradigm Space Based · micsappData-grid architecture for high-traffic stateful workloads with linear scalability. space-based, data grid, in-memory, linear scaling, high traffic Use when: traffic overwhelms database nodes or linear scalability needed DO NOT use when: data does not fit in memory or simpler caching suffices.
- ▌ Architecture Paradigm Event Driven · micsappAsynchronous event-based communication to decouple producers/consumers for scalability and resilience. Triggers: event-driven, message queue, pub/sub, asynchronous, decoupling Use when: real-time workloads or multiple subsystems react to same events DO NOT use when: selecting paradigms (use architecture-paradigms first), simple request-response.
- ▌ Architecture Paradigm Client Server · micsappConsult this skill when designing client-server systems or API architectures. Use when traditional web/mobile applications with centralized services, clear separation between client and server responsibilities needed. Do not use when selecting from multiple paradigms - use architecture-paradigms first. DO NOT use when: peer-to-peer dominates - consider dedicated P2P patterns.
- ▌ Architecture Paradigm Microservices · micsappConsult this skill when designing or evolving microservices architectures. Use when teams need high autonomy and independent releases, different capabilities have distinct scaling needs, strong DevOps/SRE maturity exists, polyglot tech stacks needed. Do not use when selecting from multiple paradigms - use architecture-paradigms first. DO NOT use when: small team with low organizational complexity. DO NOT use when: lack of DevOps maturity or limited platform engineering resources. DO NOT use when: strong transactional consistency required across operations.
- ▌ Architecture Paradigm Service Based · micsappCoarse-grained service architecture for deployment independence without microservices complexity. service-based, SOA, coarse-grained services, domain services Use when: teams need deployment independence without microservices complexity DO NOT use when: fine-grained scaling needed - use microservices.
- ▌ Architecture Paradigm Functional Core · micsappFunctional Core, Imperative Shell: isolate deterministic logic from side effects for testability. Triggers: functional-core, imperative-shell, pure functions, side-effects, testability Use when: business logic is entangled with I/O or tests are brittle DO NOT use when: simple scripting without complex logic, or performance-critical hot paths where immutability overhead matters.
- ▌ Architecture Paradigm Modular Monolith · micsappSingle deployable with enforced module boundaries for team autonomy without distributed complexity. Triggers: modular-monolith, module boundaries, single deployment, team autonomy Use when: teams need autonomy without distributed overhead DO NOT use when: already using microservices or system is small.