principles-and-patterns

Review object-oriented and functional codebases for design principle adherence.

Updated May 28, 2026
One-click install
npx skills add https://github.com/syntropic137/harness-app-template --skill principles-and-patterns
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: principles-and-patterns
Source: https://github.com/syntropic137/harness-app-template/tree/main/.claude/skills/principles-and-patterns
Command: npx skills add https://github.com/syntropic137/harness-app-template --skill principles-and-patterns

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Cross-cutting design principles like SOLID, separation of concerns, and dependency inversion are often either ignored entirely or applied as a generic checklist without context, leading to brittle codebases where every change ripples unpredictably across modules. This Skill provides scoped, paradigm-aligned guidance to help teams apply design principles consistently where they fit, avoiding the trap of principle theatre that adds complexity without tangible benefit.

Core Features & Use Cases

  • Paradigm-scoped principle guidance: Provides separate, applicable rules for object-oriented codebases (SOLID weighting, inheritance vs composition tradeoffs) and functional codebases (pure core, effects at edges), avoiding literal translation of OO principles to functional contexts where they do not apply.
  • Dependency and module health guardrails: Defines clear rules for dependency direction (volatile to stable), module cohesion, and coupling, with explicit red flags for common failure modes like unmaintained utils grab-bags and bidirectional cross-module dependencies.
  • Maturity-aligned enforcement: Offers tailored guidance for projects at every stage, from early POCs to safety-critical systems, including recommended stances on principle weighting, pattern enforcement styles, and technical debt paydown discipline.
  • Real-world use case: A team reviewing a new microservice's architecture can use this Skill to validate that high-level domain logic does not depend on concrete database clients, that bounded contexts do not share entity types directly, and that the team has a declared stance on SOLID weighting to avoid inconsistent code review feedback.

Quick Start

Use the principles-and-patterns skill to review the architecture of the new payment processing module for adherence to declared design principles and dependency direction rules.

Frequently Asked Questions about principles-and-patterns

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

FAQPage Schema
How do I enforce SOLID principles during code review without causing over-engineering?

To enforce SOLID principles during code review without over-engineering, apply maturity-aligned principle weighting. This approach provides scoped guidance to avoid principle theatre, ensuring design rules reduce change ripple and architectural decay without adding unnecessary complexity to the codebase.

What is the correct dependency direction for preventing architectural decay in object-oriented codebases?

The correct dependency direction for preventing architectural decay points from volatile modules to stable ones. This design discipline ensures high-level domain logic does not depend on concrete database clients, reducing change ripple and preventing brittle module coupling.

How do I measure coupling and cohesion metrics when reviewing microservice architecture?

To measure coupling and cohesion metrics when reviewing microservice architecture, validate module health guardrails by checking for bidirectional cross-module dependencies and unmaintained utils grab-bags. This ensures bounded contexts do not share entity types directly, preventing change ripple.

Can I apply object-oriented design principles like SOLID to functional codebases?

You cannot directly apply object-oriented design principles like SOLID to functional codebases. Paradigm-scoped guidance separates rules for OO SOLID weighting from functional patterns like pure core and effects at edges, avoiding literal translations where they do not apply.

When do I need composition over inheritance guidance for software architecture?

You need composition over inheritance guidance for software architecture when evaluating object-oriented design tradeoffs. This design principle prevents brittle codebases by aligning team code reviews on a shared set of declared rules, reducing unpredictable change ripple across modules.

What's the best way to establish consistent technical debt paydown discipline for early POCs?

The best way to establish technical debt paydown discipline for early POCs is to use maturity-aligned enforcement. This offers tailored guidance on principle weighting and pattern enforcement styles, preventing architectural decay while avoiding rigid principle theatre in early-stage projects.