Source profileQuality 74/100

jackchuka/skills/dev-software-design/SKILL.md

dev-software-design

Opinionated guide to software design principles and architectural patterns. Use when reviewing code design, planning feature architecture, asking "is this the right design?", "how should I structure this?", or requesting design philosophy guidance. Triggers on questions about SOLID, DRY, KISS, YAGNI, Clean Architecture, DDD, hexagonal architecture, composition vs inheritance, coupling, cohesion, or any software design trade-off discussion.

Source repository stars
15
Declared platforms
0
Static risk flags
0
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

Opinionated guidance on classic design principles and architectural patterns, with concrete code examples and trade-off analysis.

Best for

  • Use when reviewing code design, planning feature architecture, asking "is this the right design?

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/jackchuka/skills --skill "dev-software-design"
Safe inspection promptEditorial

Inspect the Agent Skill "dev-software-design" from https://github.com/jackchuka/skills/blob/7b0b33f68b8f11522e43622e5cb3bacd802999d2/dev-software-design/SKILL.md at commit 7b0b33f68b8f11522e43622e5cb3bacd802999d2. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    When Applying Design Guidance

    1. Diagnose first — Identify the specific design tension (coupling, cohesion, complexity, rigidity) 2. Name the principle — State which principle applies and why 3. Show the trade-off — Every principle has a cost; state it explicitly 4. Demonstrate with code — Before/after examp…

    Diagnose first — Identify the specific design tension (coupling, cohesion, complexity, rigidity)Name the principle — State which principle applies and whyShow the trade-off — Every principle has a cost; state it explicitly
  2. 02

    Core Stance: Pragmatism Over Dogma

    Principles are heuristics, not laws. Apply them when they reduce complexity; skip them when they add it.

    Principles are heuristics, not laws. Apply them when they reduce complexity; skip them when they add it.Prefer boring, obvious code over clever, abstract code.The best design is the simplest one that handles current requirements. Speculative generality is a code smell.
  3. 03

    Classic Principles Quick Reference

    For detailed explanations, examples, and anti-patterns for each principle, see references/principles.md.

    For detailed explanations, examples, and anti-patterns for each principle, see references/principles.md.
  4. 04

    Architectural Patterns Quick Reference

    For detailed guidance on each pattern including structure, trade-offs, and code examples, see references/architecture.md.

    For detailed guidance on each pattern including structure, trade-offs, and code examples, see references/architecture.md.
  5. 05

    Decision Framework

    When advising on design, follow this priority order:

    Does it work correctly? — Correctness over eleganceCan someone else read it? — Clarity over clevernessCan it be tested? — Testability over convenience

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score74/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars15SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
jackchuka/skills
Skill path
dev-software-design/SKILL.md
Commit
7b0b33f68b8f11522e43622e5cb3bacd802999d2
License
MIT
Collected
2026-07-28
Default branch
main
View the original SKILL.md

Software Design Philosophies

Opinionated guidance on classic design principles and architectural patterns, with concrete code examples and trade-off analysis.

When Applying Design Guidance

  1. Diagnose first — Identify the specific design tension (coupling, cohesion, complexity, rigidity)
  2. Name the principle — State which principle applies and why
  3. Show the trade-off — Every principle has a cost; state it explicitly
  4. Demonstrate with code — Before/after examples grounded in the user's codebase context

Core Stance: Pragmatism Over Dogma

  • Principles are heuristics, not laws. Apply them when they reduce complexity; skip them when they add it.
  • Prefer boring, obvious code over clever, abstract code.
  • The best design is the simplest one that handles current requirements. Speculative generality is a code smell.
  • Three concrete duplications are better than one wrong abstraction (Rule of Three).

Classic Principles Quick Reference

PrincipleOne-linerApply when...Skip when...
SRPOne reason to changeA module mixes unrelated concernsSplitting creates indirection with no clarity gain
OCPExtend, don't modifyYou need plugin-style variationYou're still discovering requirements
LSPSubtypes must be substitutableBuilding type hierarchiesUsing composition instead
ISPSmall, focused interfacesClients depend on methods they don't useInterface has natural cohesion
DIPDepend on abstractionsYou need testability or swappable implementationsOnly one implementation exists or will ever exist
DRYSingle source of truthIdentical logic with identical reasons to changeSimilar-looking code with different reasons to change
KISSSimplest solution that worksAlways the defaultNever skip this
YAGNIDon't build it until you need itTempted to add "just in case" featuresBuilding foundational APIs with known extension points

For detailed explanations, examples, and anti-patterns for each principle, see references/principles.md.

Architectural Patterns Quick Reference

PatternBest forAvoid when
Clean/HexagonalLong-lived systems with complex domainsSimple CRUD apps, prototypes
DDDComplex business logic with domain expertsTechnical/infrastructure-heavy systems
Event-DrivenDecoupled workflows, audit trailsSimple request/response flows
CQRSRead/write asymmetry, complex queriesUniform read/write patterns
Monolith-firstNew projects, small teamsAlready proven need for independent deployment
MicroservicesIndependent team deployment at scaleSmall team, shared database, tight coupling

For detailed guidance on each pattern including structure, trade-offs, and code examples, see references/architecture.md.

Decision Framework

When advising on design, follow this priority order:

  1. Does it work correctly? — Correctness over elegance
  2. Can someone else read it? — Clarity over cleverness
  3. Can it be tested? — Testability over convenience
  4. Can it change safely? — Isolation of change over DRY
  5. Does it perform adequately? — Performance only when measured

Common Design Smells and Remedies

SmellLikely violationRemedy
God class / functionSRPExtract cohesive responsibilities
Shotgun surgery (one change touches many files)Low cohesionColocate related logic
Feature envy (method uses another object's data more than its own)Misplaced responsibilityMove method to the data owner
Primitive obsessionMissing domain conceptIntroduce a value type
Deep inheritance treesFavoring inheritance over compositionFlatten with composition/interfaces
Boolean parametersSRP, OCPSplit into separate functions
Speculative generalityYAGNIDelete unused abstractions

Offering Guidance

When reviewing or advising:

  • Reference the specific principle by name with a one-sentence rationale
  • Show a minimal before/after code example in the user's language
  • State the trade-off honestly ("this adds an interface but isolates the database dependency")
  • If multiple principles conflict, state the tension and recommend based on context
  • Load references/principles.md for deep-dive principle discussions
  • Load references/architecture.md for architectural pattern guidance

Alternatives

Compare before choosing