AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Anti Patterns Catalog

skill-mickeyyaya-refactoring-skills-anti-patterns-catalog · by mickeyyaya

Use when reviewing architecture or design for structural problems, when a codebase is hard to change or extend, when onboarding to a legacy system, or when recurring bugs suggest a deeper design flaw

No reviews yet
0 installs
14 views
0.0% view→install

Install

$ agentstack add skill-mickeyyaya-refactoring-skills-anti-patterns-catalog

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-mickeyyaya-refactoring-skills-anti-patterns-catalog)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
5mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Anti Patterns Catalog? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Software Anti-Patterns Catalog

Overview

Anti-patterns are recurring solutions that seem reasonable but cause more harm than good. Unlike code smells (surface indicators -- see detect-code-smells), anti-patterns describe complete failed solutions at class, module, or system scope. Each entry includes root cause, symptoms, and remediation with cross-references to fix skills.

When to Use

  • Architecture review reveals no clear ownership of responsibilities
  • A codebase is routinely described as "nobody dares touch that"
  • A single change requires coordinating edits across many files/teams
  • Bug fixes in one area consistently break unrelated areas

Quick Reference

| Category | Anti-Pattern | Severity | Primary Fix Skill | |----------|-------------|----------|-------------------| | Design | God Object | CRITICAL | refactor-moving-features | | Design | Golden Hammer | HIGH | design-patterns-creational-structural | | Design | Poltergeist | MEDIUM | refactor-moving-features | | Design | Blob | HIGH | refactor-moving-features | | Development | Spaghetti Code | HIGH | refactor-composing-methods | | Development | Copy-Paste Programming | HIGH | refactor-composing-methods, refactor-generalization | | Development | Lava Flow | HIGH | refactor-composing-methods | | Development | Boat Anchor | MEDIUM | refactor-moving-features | | Development | Magic Numbers/Strings | MEDIUM | refactor-organizing-data | | Development | Premature Optimization | MEDIUM | review-solid-clean-code | | Development | Cargo Cult Programming | MEDIUM | design-patterns-behavioral | | Architecture | Big Ball of Mud | CRITICAL | refactor-moving-features | | Architecture | Vendor Lock-in | HIGH | design-patterns-creational-structural | | Architecture | Singleton Overuse | HIGH | design-patterns-creational-structural |

Design Anti-Patterns

God Object

  • Symptoms: 500-1000+ lines, name includes "Manager"/"Controller"/"Processor" with unbounded scope, any feature requires opening this file, 5+ unrelated method groups, untestable without mocking everything
  • Root Cause: Class started small; features added to the "closest existing class" without enforcing responsibility boundaries
  • Severity: CRITICAL -- single point of failure, merge conflict hotspot, primary source of Divergent Change
  • Remediation: Extract Class iteratively -- group related fields/methods into cohesive clusters, promote each to its own class. See refactor-moving-features. Related smells: Large Class, Divergent Change in detect-code-smells.

Golden Hammer

  • Symptoms: Every service built the same way regardless of requirements, complex patterns applied to simple interactions, team defaults to familiar solution without evaluating alternatives
  • Root Cause: Familiarity reduces perceived risk; teams reach for what they know under deadlines
  • Severity: HIGH -- wrong-tool choices compound and resist replacement
  • Remediation: Establish ADR practice. List two alternatives before choosing. Broaden decision space via design-patterns-creational-structural and design-patterns-behavioral.

Poltergeist

  • Symptoms: Class with 1-2 methods that immediately delegate, instantiated and discarded, removable without logic changes
  • Root Cause: Premature decomposition or class lost purpose during refactoring. Related: Lazy Class smell in detect-code-smells.
  • Severity: MEDIUM -- indirection without value
  • Remediation: Inline Class from refactor-moving-features. If an abstraction layer is warranted, use a proper Facade (design-patterns-creational-structural).

Blob

  • Symptoms: A utils/helpers/common module with 20+ unrelated exports, imported by everything, public API spans multiple domains, changes cause cascading failures
  • Root Cause: Shared utility modules grow organically without cohesion checks
  • Severity: HIGH -- invisible coupling across all importers
  • Remediation: Audit exports, group by domain, extract domain-specific modules. Use refactor-moving-features Move Field/Method at module level.

Development Anti-Patterns

Spaghetti Code

  • Symptoms: Methods 50-200+ lines with 4+ nesting levels, business logic in event/route handlers, callback hell, many implicit state variables
  • Root Cause: Built incrementally under deadline pressure with no structural plan
  • Severity: HIGH -- precursor to Big Ball of Mud at scale
  • Remediation: Extract Method (refactor-composing-methods) to break large methods. Separate I/O, domain logic, validation. Replace branching with polymorphism (refactor-simplifying-conditionals).

Copy-Paste Programming

  • Symptoms: Identical blocks in 3+ locations, bug fixes must be applied in every copy, slight variations in copied code. Related: Duplicate Code smell in detect-code-smells.
  • Severity: HIGH -- every copy is a divergence risk
  • Remediation: Extract Method (refactor-composing-methods), Pull Up Method (refactor-generalization). For cross-module duplication, create a shared cohesive utility (not a Blob).

Lava Flow

  • Symptoms: "Do not remove" comments, commented-out blocks, unused methods/classes for months+, fear of deletion despite no references
  • Root Cause: Original authors left without docs; insufficient test coverage for safe deletion
  • Severity: HIGH -- grows over time, misleads new engineers
  • Remediation: Build test coverage first, use static analysis to find unreferenced code, delete confidently (version control preserves it). See refactor-composing-methods.

Boat Anchor

  • Symptoms: Interfaces with no implementations, abstraction layers for use cases that never arrived, unread configuration options. Related: Speculative Generality in detect-code-smells.
  • Severity: MEDIUM -- cognitive overhead without value (YAGNI violation)
  • Remediation: Remove unused abstractions via Collapse Hierarchy / Inline Class from refactor-moving-features.

Magic Numbers and Strings

  • Symptoms: Literals like 86400, 0.15, "admin" in logic, same magic value in multiple places. Related: see refactor-organizing-data (Replace Magic Number with Constant).
  • Severity: MEDIUM -- subtle bugs when values change and one occurrence is missed
  • Remediation: Replace Magic Number with Symbolic Constant (refactor-organizing-data). Group related constants in a dedicated module.

Premature Optimization

  • Symptoms: Complex caching for rarely-accessed data, bit manipulation replacing clear arithmetic, "this is faster" comments without profiling data
  • Severity: MEDIUM -- harder to maintain, often contains subtle bugs
  • Remediation: Measure first, optimize only proven bottlenecks. Document profiling data that justified it. See review-solid-clean-code.

Cargo Cult Programming

  • Symptoms: Patterns applied mechanically with no clear benefit (Factory for a single-instantiation class), framework boilerplate preserved without understanding, team cannot explain pattern choice
  • Severity: MEDIUM -- misapplied patterns create accidental complexity
  • Remediation: Articulate the problem before applying any pattern. Use design-patterns-behavioral and design-patterns-creational-structural to understand intent, not just structure.

Architecture Anti-Patterns

Big Ball of Mud

  • Symptoms: No module boundaries, circular dependencies, dependency diagram looks like a web, new features require understanding the entire system
  • Root Cause: Accumulated Spaghetti Code and God Objects over years without architectural enforcement
  • Severity: CRITICAL -- end state of other anti-patterns left unaddressed
  • Remediation: Strangler Fig pattern -- identify one cohesive domain, extract behind a clean interface, route calls through it. Repeat per domain. Do NOT attempt full rewrite. Use refactor-moving-features Extract Class / Move Method. Enforce boundaries with package-level dependency rules.

Vendor Lock-in

  • Symptoms: Vendor SDK types throughout business logic (not just integration layer), vendor-specific query syntax, deployment scripts coupled to one cloud provider
  • Root Cause: Fast initial integration favors using vendor SDKs directly; abstraction feels premature with one vendor
  • Severity: HIGH -- critical during pricing negotiations, outages, or compliance changes
  • Remediation: Introduce Adapter/Repository layer between vendor SDKs and business logic. Define vendor-agnostic interfaces first. See design-patterns-creational-structural (Adapter).

Singleton Overuse

  • Symptoms: Many classes access shared state via static getters, tests must reset global state, race conditions from mutable singletons, adding a second instance requires significant refactoring
  • Root Cause: Easy global access without dependency injection
  • Severity: HIGH -- global state is the enemy of testability and concurrency safety
  • Remediation: Replace with Dependency Injection. Pass shared resources via constructors. Reserve Singleton for truly process-wide resources (logger, config). See design-patterns-creational-structural.

Decision Flowchart

Is the problem in a single class?
  YES -> Doing too much?  YES -> GOD OBJECT -> refactor-moving-features (Extract Class)
                          NO  -> Doing too little? YES -> POLTERGEIST -> refactor-moving-features (Inline Class)
  NO  -> In a module?
          YES -> Dumping ground? YES -> BLOB -> refactor-moving-features
  NO  -> System-wide?
          No architecture?     -> BIG BALL OF MUD -> incremental strangler fig
          Vendor coupling?     -> VENDOR LOCK-IN -> design-patterns (Adapter)

Daily coding habits?
  Duplicate code?     -> COPY-PASTE -> refactor-composing-methods
  Dead code/fear?     -> LAVA FLOW -> refactor-composing-methods
  Hardcoded literals? -> MAGIC NUMBERS -> refactor-organizing-data
  Tangled control?    -> SPAGHETTI -> refactor-composing-methods
  Speculative code?   -> BOAT ANCHOR -> refactor-moving-features
  Blind patterns?     -> CARGO CULT -> design-patterns-behavioral
  Familiar tool?      -> GOLDEN HAMMER -> design-patterns
  No profiling?       -> PREMATURE OPTIMIZATION -> review-solid-clean-code
  Global state?       -> SINGLETON OVERUSE -> design-patterns

Relationship to Code Smells

Anti-patterns operate at a higher scope than code smells. A God Object typically presents multiple smells simultaneously (Large Class, Divergent Change, Inappropriate Intimacy). Addressing the anti-pattern resolves underlying smells at once. For line/method-level indicators, see detect-code-smells.

Common Mistakes

| Mistake | Fix | |---------|-----| | Treating anti-pattern as root cause when it's a symptom | Trace back to process failure: missing code review, no boundary enforcement | | Big-bang rewrite to fix Big Ball of Mud | Use incremental extraction; rewrites fail at the same rate | | Removing God Object by creating many Poltergeists | Each extracted class must have genuine responsibility | | Fixing Vendor Lock-in with a leaky abstraction | Define interface from consumer's perspective, not vendor's API | | Labeling every pattern-use as Golden Hammer / Cargo Cult | Patterns are valid when addressing a real, demonstrated problem | | Conflating Singleton Overuse with legitimate shared resources | Logger/config = valid Singleton; business service via global state = not |

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.