dry-principle

- Follow the DRY (Don't Repeat Yourself) Principle and Avoid Duplicating Code or Logic.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "dry-principle" with this command: npx skills add oimiragieo/agent-studio/oimiragieo-agent-studio-dry-principle

Dry Principle Skill

  • Follow the DRY (Don't Repeat Yourself) Principle and Avoid Duplicating Code or Logic.

  • Avoid writing the same code more than once. Instead, reuse your code using functions, classes, modules, libraries, or other abstractions.

  • Modify code in one place if you need to change or update it.

Iron Laws

  • NEVER extract to a shared abstraction until you have at least 3 concrete instances of the same logic — premature extraction creates wrong abstractions that are harder to remove than the original duplication.

  • ALWAYS maintain a single source of truth for configuration values — the same constant or config value defined in two places will diverge and cause bugs.

  • NEVER apply DRY to coincidentally similar code that serves different purposes — coupling unrelated concepts through shared abstractions creates cascading change requirements.

  • ALWAYS prefer readability over DRY when the abstraction requires indirection that obscures what the code does — a small amount of duplication is often better than an obscure helper.

  • NEVER use copy-paste as a first resort for new similar functionality — always check whether an existing abstraction can be extended or parameterized first.

Anti-Patterns

Anti-Pattern Why It Fails Correct Approach

Extracting on the second occurrence (Rule of Two) Two instances may be coincidentally similar; wrong abstraction is worse than duplication Wait for the third occurrence before extracting; use the Rule of Three

Coupling unrelated concepts through shared helpers Changes to one domain break the other; creates unexpected dependencies Only extract when the shared logic genuinely represents the same domain concept

Over-abstracting to eliminate all apparent duplication Creates complex indirection that requires reading 3 files to understand 1 operation Prefer 3 readable duplicate lines over 1 inscrutable abstraction

Same constant defined in multiple configuration files Values diverge silently; one-off changes cause hard-to-trace bugs Single config module or environment variable; import everywhere

DRY applied to test code (reducing fixture duplication) Test setup that's too DRY becomes hard to read in isolation Tests should be self-contained; some duplication in test setup is acceptable

Memory Protocol (MANDATORY)

Before starting:

cat .claude/context/memory/learnings.md

After completing: Record any new patterns or exceptions discovered.

ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

pyqt6-ui-development-rules

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-analyzer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

gcloud-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

github-mcp

No summary provided by upstream source.

Repository SourceNeeds Review