# Design Principles

> Code design patterns: pure functions, immutability, composition, and async. Use when designing code or functions.

- Skill: `majiayu000/design-principles-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/design-principles-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/design-principles-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/design-principles-2

---


---
name: design-principles
description: Code design patterns: pure functions, immutability, composition, and async. Use when designing code or functions.
---

# Code Design Principles

Patterns for writing clean, maintainable, and testable code.

## Quick Start

```typescript
// Pure function with immutability
function updateUser(user: User, age: number): User {
  return { ...user, age }; // new object, no mutation
}
```

## Key Principles

- Pure functions: no side effects, same input = same output
- Immutability: create new objects/arrays instead of mutating
- Single responsibility: one function = one task
- Early returns: reduce nesting, improve readability
- Composition over inheritance: inject dependencies
- Promises over callbacks for async code
- Template strings over concatenation
- Plain objects for data, classes only for stateful services
- Avoid global variables and getters/setters
- Lazy initialization: no module-level side effects, wrap in getter functions

## References

See [rules.md](references/rules.md) for complete guidelines with examples.

