cupid-properties

Evaluate code quality using Dan North's CUPID properties framework.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Code reviews often stall on vague feedback or rigid rule-checking against SOLID principles recited without understanding. This Skill gives you a shared, qualitative vocabulary — Composable, Unix philosophy, Predictable, Idiomatic, Domain-based — for judging whether code is ergonomic, trustworthy, and aligned with its problem domain. ## Core Features & Use Cases - Five-property evaluation lens: Assess any module, class, or function against Composability, Unix philosophy, Predictability, Idiomaticity, and Domain-fit, each with concrete smells and heuristics. - SOLID comparison and integration: Map CUPID properties to SOLID principles so both frameworks can be used as complementary lenses in design discussions. - Use Case: During a code review, instead of saying "this feels off," you can state precisely: "This service isn't composable because it imposes its framework on callers, and its behavior is unpredictable due to hidden side effects." ## Quick Start Ask Claude to review a class or module against the CUPID properties and identify which qualities are missing.

Frequently Asked Questions about cupid-properties

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

FAQPage Schema
What are the CUPID properties in software design?▼

CUPID stands for Composable, Unix philosophy, Predictable, Idiomatic, and Domain-based. Proposed by Dan North in 2022, these are properties to lean toward rather than rules to obey, framing code quality around ergonomics and joy instead of compliance.

How do I use CUPID properties in code review?▼

Apply each property as evaluative language: check whether code plays well with others, does one thing well, behaves as its name suggests, uses language idioms naturally, and mirrors the problem domain. The Skill provides smells and heuristics per property.

CUPID vs SOLID: which should I use?▼

Use both as complementary lenses. SOLID helps spot specific structural violations in class design, while CUPID evaluates whether the result feels right — composable, predictable, idiomatic, and domain-fitted. Many designs score well on both.

When should I not treat CUPID as a checklist?▼

CUPID names directions of travel, not a scorecard. Treating it as a compliance checklist, confusing idiomatic with trendy, or using predictability to justify rigidity are common mistakes the Skill explicitly warns against.

How does CUPID relate to domain-driven design?▼

The D in CUPID — Domain-based — is Eric Evans' ubiquitous language reformulated as a code property. It means naming code after domain concepts, modeling them as first-class types, and organizing modules by capability rather than technology layer.