responsibility-driven-design

Applies Responsibility-Driven Design principles to distribute behavior across object-oriented classes.

1|Updated May 21, 2026
One-click install
npx skills add https://github.com/vnovakovits/claude-skills --skill responsibility-driven-design-vnovakovits
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: responsibility-driven-design
Source: https://github.com/vnovakovits/claude-skills/tree/main/plugins/engineering-practices/skills/responsibility-driven-design
Command: npx skills add https://github.com/vnovakovits/claude-skills --skill responsibility-driven-design-vnovakovits

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Deciding where behavior belongs in object-oriented code is hard: classes become god objects, domain models turn anemic, and logic scatters across services. This Skill provides a systematic method for assigning responsibilities to objects so designs stay cohesive and loosely coupled. ## Core Features & Use Cases - Responsibility Assignment: Categorizes obligations as knowing, doing, or deciding, and assigns them using Information Expert and Tell-Don't-Ask heuristics. - Role Stereotypes & CRC Cards: Classifies objects as Information Holder, Structurer, Service Provider, Coordinator, Controller, or Interfacer, and uses CRC cards to sketch collaborations. - Design Smell Detection: Identifies god classes, feature envy, message chains, anemic models, and other symptoms of poor responsibility distribution. - Use Case: When refactoring a bloated OrderProcessor class, walk through scenarios with CRC cards to split it into a Coordinator, a PricingPolicy Controller, and domain Information Holders with clear contracts. ## Quick Start Ask Claude to review this class design using responsibility-driven design and suggest where each responsibility should live.

Frequently Asked Questions about responsibility-driven-design

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

FAQPage Schema
How do I decide which class should own a responsibility?▼

Apply the Information Expert heuristic: assign a responsibility to the object that already holds the information needed to fulfill it. If Order knows its line items, Order should compute the total rather than an external calculator reaching into it.

What are CRC cards and how do I use them?▼

CRC cards are index cards listing a class's name, responsibilities, and collaborators. Write candidate classes from domain nouns, add responsibilities from verbs, then walk through scenarios moving cards to reveal missing classes or misplaced behavior.

How does Responsibility-Driven Design relate to SOLID principles?▼

RDD is compatible with SOLID and complements it. The Single Responsibility Principle states the goal, while RDD provides the method to discover what that single responsibility actually is through stereotypes, scenarios, and collaboration analysis.

What is the difference between a Coordinator and a Controller in RDD?▼

A Coordinator reacts to events by delegating work to collaborators without doing the work itself. A Controller makes decisions and encodes business rules, deciding what work should be delegated rather than just passing requests along.

When should I not use Responsibility-Driven Design?▼

RDD targets object-oriented design decisions, so it adds little value in purely procedural or functional codebases. For simple CRUD applications with thin domain logic, full CRC sessions may be heavier than the problem warrants.