Skip to content
Agentmart
Submit a tool

code-smells/change-preventers

Detect and refactor Change Preventers — flaws that hinder software evolution.

Skill by gentleman-programming

IndexedApache-2.0
Write a review

Install

Works with Claude Code. Read the repository before you give any tool access to your data.

npx agentmarket install skill/johnnystefan-code-smells-change-preventers

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Detect and refactor Change Preventers — flaws that hinder software evolution. Trigger: When identifying Divergent Change, Shotgun Surgery, or Parallel Inheritance Hierarchies.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/code-smells-change-preventers

Tools it pre-approves 7

From allowed-tools in SKILL.md: the agent may use these without asking you each time.

  • Read,
  • Edit,
  • Write,
  • Glob,
  • Grep,
  • Bash,
  • Task

What's inside

Skill name
code-smells/change-preventers
Description
Detect and refactor Change Preventers — flaws that hinder software evolution. Trigger: When identifying Divergent Change, Shotgun Surgery, or Parallel Inheritance Hierarchies.
License
Apache-2.0
Allowed tools
Read,, Edit,, Write,, Glob,, Grep,, Bash,, Task
Metadata
author: gentleman-programming · version: 1.0 · auto_invoke: Reviewing architectural coupling and change patterns
Instructions
111 lines in SKILL.md · view on GitHub

Before installing

  • Pre-approves some shell commands

Agent Skills spec issues

  • name: only lowercase letters, digits and single hyphens allowed
  • name: "code-smells/change-preventers" does not match folder "change-preventers"

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Skill: Detect and Refactor Change Preventers

## Purpose

This skill enables the agent to identify "Change Preventers" — architectural flaws that hinder software evolution by requiring widespread changes for single functional updates. The agent will apply refactoring techniques to consolidate responsibilities and reduce the ripple effect of code modifications.

## Domain Knowledge: The 3 Change Preventers

1. **Divergent Change:** When you find yourself having to change many unrelated methods inside a single class every time you make a modification (e.g., changing product logic requires changing finding, displaying, and ordering methods).
2. **Shotgun Surgery:** The opposite of Divergent Change. Making a single modification requires many small changes across many different classes.
3. **Parallel Inheritance Hierarchies:** A special case where whenever you create a subclass for one class, you find yourself forced to create a subclass for another class.

## Procedural Instructions

### 1. Detection Phase

- **Monitor Change Patterns:** If one class is constantly modified for different reasons, label it as **Divergent Change**.
- **Identify "Ripples":** If a single logical change (e.g., adding a new tax rule) forces edits across five or more files, label it as **Shotgun Surgery**.
- **Spot Hierarchy Pairs:** Look for class hierarchies that mirror each other (e.g., `Triangle` → `TriangleDrawing`, `Circle` → `CircleDrawing`). This is **Parallel Inheritance**.

### 2. Treatment Phase

- **For Divergent Change:**
  - Use **Extract Class** to split unrelated behaviors into separate components.
  - If classes share behavior, use **Extract Superclass**.
- **For Shotgun Surgery:**
  - Use **Move Method** and **Move Field** to consolidate all related behaviors into a single class.
  - If the original classes become empty, use **Inline Class** to eliminate them.
- **For Parallel Inheritance:**
  - Make instances of one hierarchy refer to instances of the other.
  - Use **Move Method** and **Move Field** to eliminate the redundant hierarchy.

## TypeScript Examples

### Divergent Change

```typescript
// BAD: This class changes for DB reasons, UI reasons, and logic reasons
class ProductManager {
  getProduct(id: string) {
    /* DB Logic */
  }
  renderProductHtml() {
    /* UI Logic */
  }
  calculateDiscount() {
    /* Business Logic */
  }
}

// GOOD: Responsibilities extracted into dedicated classes (SRP)
class ProductRepository {
  getProduct(id: string) {
    /* ... */
  }
}

class ProductPresenter {
  renderHtml(product: Product) {
    /* ... */
  }
}

class DiscountCalculator {
  calculate(product: Product) {
    /* ... */
  }
}
```

### Shotgun Surgery

```typescript
// BAD: A single change to "Account" forces changes in three separate classes
class AccountTransfer {
  execute(amount: number) {
    /* ... */
  }
}
class AccountInterest {
  apply(rate: number) {
    /* ... */
  }
}
class AccountAudit {
  log(action: string) {
    /* ... */
  }
}

// GOOD: Related behaviors consolidated into one class
class Account {
  transfer(amount: number) {
    /* ... */
  }
  applyInterest(rate: number) {
    /* ... */
  }
  logAction(action: string) {
    /* ... */
  }
}
```

## Payoff

- **Reduced Maintenance Cost:** Modifications are localized to a single class or method.
- **Code Organization:** Classes become more cohesive and follow the Single Responsibility Principle.
- **Predictability:** Developers can modify features without fearing unexpected breakages in unrelated parts of the system.

From johnnystefan/test-saas-business, Apache-2.0.

More from johnnystefan/test-saas-business

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Apr 1, 2026 (7 months ago)

From GitHub (fetched Oct 24, 2026).

Details

Version
1.0
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from gentleman-programming

Cite this page

code-smells/change-preventers skill. Agent Mart. https://agentmart.dev/skills/johnnystefan-code-smells-change-preventers (last updated 2026-10-24)