Back to skills
SkillHub ClubShip Full StackFull Stack

dev-philosophy

Development Philosophy & Standards. Use it everytime you plan or implement any code.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
0
Hot score
74
Updated
March 19, 2026
Overall rating
C0.5
Composite score
0.5
Best-practice grade
B74.4

Install command

npx @skill-hub/cli install shredbx-demo-3d-model-dev-philosophy

Repository

shredbx/demo-3d-model

Skill path: .claude/skills/dev-philosophy

Development Philosophy & Standards. Use it everytime you plan or implement any code.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: shredbx.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install dev-philosophy into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/shredbx/demo-3d-model before adding dev-philosophy to shared team environments
  • Use dev-philosophy for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: dev-philosophy
description: Development Philosophy & Standards. Use it everytime you plan or implement any code.
---

# Development Philosophy & Standards

## Architecture Principles

### Layering & Boundaries

- Domain-driven layers: Domain → Application → Infrastructure → Presentation
- Dependency rule: dependencies point inward (outer layers depend on inner)
- Domain layer has NO external dependencies (no frameworks, no database)
- Use ports & adapters (hexagonal architecture) for external integrations
- Keep business logic framework-agnostic

### Separation of Concerns

- Each module/class has ONE reason to change (Single Responsibility)
- Separate "what" (business rules) from "how" (implementation details)
- Use interfaces to define contracts, implementations to fulfill them

## SOLID Principles

- **S**RP: Single Responsibility - one class, one reason to change
- **O**CP: Open/Closed - open for extension, closed for modification
- **L**SP: Liskov Substitution - subtypes must be substitutable for base types
- **I**SP: Interface Segregation - many specific interfaces > one general
- **D**IP: Dependency Inversion - depend on abstractions, not concretions

## Design Patterns (When to Use)

### Creational

- **Factory Method**: When object creation logic is complex or varies
- **Abstract Factory**: When creating families of related objects
- **Builder**: When constructing complex objects step-by-step
- **Singleton**: RARELY - only for truly global state (prefer DI)

### Structural

- **Adapter**: When integrating incompatible interfaces
- **Decorator**: When adding behavior dynamically without subclassing
- **Facade**: When simplifying complex subsystem interfaces
- **Proxy**: For lazy loading, access control, or remote objects
- **Repository**: For abstracting data access layer

### Behavioral

- **Strategy**: When algorithms/behaviors should be interchangeable
- **Observer**: For event-driven communication between objects
- **Command**: For encapsulating requests as objects (undo/redo)
- **Template Method**: When algorithm structure is fixed but steps vary
- **State**: When object behavior changes based on internal state
- **Chain of Responsibility**: For processing requests through handler chain

### Architectural

- **MVC/MVVM**: Separating UI concerns
- **Service Layer**: Coordinating application operations
- **Unit of Work**: Managing transactions across repositories
- **CQRS**: Separating read/write operations when beneficial

## Code Quality Standards

### Naming & Clarity

- Names reveal intent: `getUsersByActiveStatus()` not `get()`
- Boolean functions: `isValid()`, `hasPermission()`, `canExecute()`
- Avoid mental mapping: use domain terms, not `x`, `temp`, `data`

### Function Design

- Small functions: 5-20 lines ideal, rarely >50
- One level of abstraction per function
- Maximum 3 parameters; use objects for more
- No side effects unless function name indicates it
- Command-query separation: do something OR return something, not both

### Class Design

- Small classes: <300 lines typical, rarely >500
- High cohesion: members work together toward single purpose
- Low coupling: minimal dependencies between classes
- Composition over inheritance
- Prefer immutability when possible

### Error Handling

- Use exceptions for exceptional cases
- Don't return null; use Optional/Maybe or empty collections
- Fail fast: validate early, fail clearly
- Specific exceptions > generic ones

## Testing Philosophy

### Test-Driven Development

- Red: Write failing test
- Green: Make it pass (simplest way)
- Refactor: Clean up while tests stay green

### Test Structure

- Arrange-Act-Assert pattern
- One assertion concept per test
- Test behavior, not implementation
- Mock external dependencies, not internal ones

### Test Coverage

- Unit tests: business logic, algorithms, utilities
- Integration tests: component interactions, database access
- E2E tests: critical user workflows
- Avoid testing framework code or trivial getters/setters

## Domain-Driven Design Concepts

### Strategic Design

- Bounded contexts: explicit boundaries between models
- Ubiquitous language: shared vocabulary between devs and domain experts
- Context mapping: define relationships between bounded contexts

### Tactical Design

- **Entities**: Objects with identity that persists over time
- **Value Objects**: Immutable objects defined by their attributes
- **Aggregates**: Cluster of entities/VOs with consistency boundary
- **Domain Events**: Record of something significant that happened
- **Services**: Operations that don't belong to entities/VOs
- **Repositories**: Access to aggregates (collection illusion)

## Refactoring Practices

### When to Refactor

- Before adding features (make it easy to add)
- When you see duplication (DRY principle)
- When code smells appear (long functions, large classes, etc.)
- During code review feedback

### Common Refactorings

- Extract method/function
- Extract class/interface
- Rename for clarity
- Replace magic numbers with named constants
- Replace conditionals with polymorphism
- Introduce parameter object

### Code Smells to Avoid

- Long methods (>20-30 lines)
- Large classes (>300 lines)
- Long parameter lists (>3 params)
- Duplicated code
- Dead code
- Primitive obsession
- Feature envy
- Inappropriate intimacy

## Agile & XP Practices

### Core Practices

- Continuous integration
- Small, frequent releases
- Collective code ownership
- Coding standards (this document)
- Sustainable pace

### Development Cycle

1. Pick smallest valuable increment
2. Write test first (if TDD)
3. Implement simplest solution
4. Refactor for quality
5. Integrate immediately
6. Get feedback

### Simplicity Rules (in order)

1. Passes all tests
2. Reveals intention (clear names, structure)
3. No duplication (DRY)
4. Fewest elements (minimal code)

## Dependency Management

### Dependency Injection

- Prefer constructor injection
- Use DI container/framework when beneficial
- Avoid service locator pattern (hidden dependencies)

### Inversion of Control

- Framework calls your code, not vice versa
- Define interfaces for extension points
- Plugin architecture where appropriate

## Performance Considerations

- **Premature optimization is evil** - make it work, then measure
- **But design for performance** - choose right data structures, algorithms
- Profile before optimizing - don't guess bottlenecks
- Cache strategically - at appropriate layer with clear invalidation

## Security Principles

- Never trust user input - validate and sanitize
- Principle of least privilege
- Defense in depth - multiple security layers
- Fail securely - errors shouldn't leak sensitive info
- Keep dependencies updated

## Anti-Patterns to Avoid

- God objects (classes that do everything)
- Spaghetti code (no clear structure)
- Golden hammer (using same solution for every problem)
- Cargo cult programming (copying without understanding)
- Shotgun surgery (one change requires many edits)
- Leaky abstractions (implementation details bleeding through)

## When to Break Rules

Rules are guidelines, not laws. Break them when:

- The alternative is clearly worse
- You understand WHY the rule exists
- You document the deviation and reasoning
- The team agrees it's the right tradeoff

## Priorities (in order)

1. **Correct** - Software must work
2. **Maintainable** - Others (future you) can understand/change it
3. **Flexible** - Can adapt to new requirements
4. **Efficient** - Performs adequately (not prematurely optimized)
dev-philosophy | SkillHub