software-design

Guides software architecture decisions using ADRs, C4 diagrams, DDD patterns, and fitness functions.

1|Updated Aug 10, 2026
One-click install
npx skills add https://github.com/TheViziusGroup/vibe-engineering-skills --skill software-design-theviziusgroup
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: software-design
Source: https://github.com/TheViziusGroup/vibe-engineering-skills/tree/main/plugins/software-architecture/skills/software-design
Command: npx skills add https://github.com/TheViziusGroup/vibe-engineering-skills --skill software-design-theviziusgroup

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Making and recording sound software architecture decisions under uncertainty is hard: teams over-engineer with premature microservices, lose decision rationale, and let design practices like ADRs die without an operating model. This Skill provides a practitioner reference for applying the right design technique at the right scale. ## Core Features & Use Cases - Decision Frameworks: Apply JEDUF, Type 1/Type 2 reversibility analysis, ADRs (Nygard, MADR, Y-Statements), and the Architecture Advice Process to record and govern trade-off decisions. - Architecture Patterns & Diagrams: Use the C4 model, hexagonal/clean architecture, event-driven patterns, DDD strategic/tactical patterns, event storming, and the monolith-first doctrine with concrete escalation thresholds. - Governance & Quality: Enforce architecture with fitness functions (ArchUnit, dependency-cruiser, NetArchTest), resilience patterns (circuit breaker, bulkhead, saga), and benchmarks that diagnose distributed monoliths and AI-driven maintainability debt. - Use Case: When designing a new greenfield system, walk the C4 sequence from system context to containers, record irreversible decisions as ADRs in source control, and start with a modular monolith guarded by build-failing dependency rules. ## Quick Start Ask the AI to help design a new system or review an architecture decision using the software-design skill, for example by requesting an ADR for choosing between a modular monolith and microservices.

Frequently Asked Questions about software-design

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

FAQPage Schema
How do I write an architecture decision record (ADR)?

Use the Nygard five-section format: Title, Status, Context, Decision, and Consequences, with one decision per record. Store ADRs in source control next to the code, and define when an ADR is required, who advises, and where records live so the practice survives.

When should I choose microservices over a monolith?

Start with a well-factored modular monolith and extract services only when you feel concrete pain: blocked independent deployability, divergent scaling needs, or team-autonomy bottlenecks. You also need operational maturity in observability and CI/CD to pay the distributed-systems tax.

What is the C4 model for architecture diagrams?

C4 is Simon Brown's four-level diagramming approach: System Context, Container, Component, and Code. It is notation- and tool-independent, works with Mermaid or Structurizr for Git-versioned diagrams, and complements ADRs rather than replacing them.

How do fitness functions enforce architecture in CI?

Fitness functions are build-failing tests that objectively assess architecture characteristics, such as dependency direction and layer rules. Tools include ArchUnit for Java, NetArchTest for .NET, dependency-cruiser for JavaScript, and go-arch-lint for Go.

What are the signs of a distributed monolith?

The tell-tale sign is a full-time release coordination manager: many services that must be deployed together. It results from splitting along technical layers instead of business domain boundaries, and the fix is to stop splitting and re-modularize.

Does AI-generated code affect software maintainability?

GitClear's 2024 study of 211 million changed lines found duplicated code blocks rose eightfold and refactoring fell sharply after AI tool adoption. The response is more design discipline: refactoring practice, boundary enforcement, and review gates, not less.