design-philosophy

Enforce core design principles for API and module design.

477|32|Updated Feb 23, 2022
One-click install
npx skills add https://github.com/r3bl-org/r3bl-open-core --skill design-philosophy-r3bl-org
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: design-philosophy
Source: https://github.com/r3bl-org/r3bl-open-core/tree/main/.claude/skills/design-philosophy
Command: npx skills add https://github.com/r3bl-org/r3bl-open-core --skill design-philosophy-r3bl-org

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Core design principles help teams reduce cognitive load, reveal complexity progressively, and ensure safe abstractions when creating APIs, modules, or data structures.

Core Features & Use Cases

  • Minimize Cognitive Load: Encourage clear separation of concerns, single responsibilities, and readable interfaces.
  • Progressive Disclosure: Expose complexity gradually; keep public APIs minimal while making advanced features accessible.
  • Make Illegal States Unrepresentable: Favor type-safe patterns and restrict invalid configurations at compile time.
  • Abstractions Must Earn Their Keep: Prefer simple, well-justified abstractions that truly reduce cognitive load.
  • Use Case: When designing a new API, start from a minimal surface and progressively add well-scoped features without leaking internal state.

Quick Start

Review and apply these principles when starting new APIs, modules, or data structures. See patterns.md for practical patterns and examples.

Frequently Asked Questions about design-philosophy

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

FAQPage Schema
How do I design APIs that minimize cognitive load for developers?

Progressive disclosure in API design exposes complexity gradually by keeping public APIs minimal while making advanced features accessible. This ensures users start with a simple interface and scale up functionality as needed without initial overwhelm.

How do I make illegal states unrepresentable in my data types?

To make illegal states unrepresentable, favor type-safe patterns and restrict invalid configurations at compile time. This technique leverages your type system to prevent invalid module states before the code ever runs.

When should I introduce abstractions in software architecture?

Introduce abstractions in software architecture only when they earn their keep by genuinely reducing cognitive load. Prefer simple, well-justified abstractions over premature generalization to maintain readable and maintainable module boundaries.

What is the best way to structure module boundaries for scalable APIs?

The best way to structure module boundaries is to start from a minimal API surface and progressively add well-scoped features without leaking internal state. This enforces safe separation of concerns and validates data-type selection.