anti-patterns

Flags dependency overrides, quick-fix shortcuts, and suppression directives in code changes.

1|1|Updated Feb 25, 2026
One-click install
npx skills add https://github.com/williamthorsen/codeassembly --skill anti-patterns-williamthorsen
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: anti-patterns
Source: https://github.com/williamthorsen/codeassembly/tree/main/packages/agents/content/skills/anti-patterns
Command: npx skills add https://github.com/williamthorsen/codeassembly --skill anti-patterns-williamthorsen

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Developers often reach for quick fixes like package manager overrides, inline linter suppressions, or band-aid patches that accumulate technical debt. This Skill guides AI agents to reject those shortcuts and pursue maintainable, root-cause solutions instead. ## Core Features & Use Cases - Dependency management discipline: Blocks pnpm.overrides, yarn resolutions, and npm overrides as first-line fixes, favoring proper dependency resolution and semantic version ranges. - Suppression directive ladder: Enforces a decision order for linter and type-checker warnings—change the code first, reconfigure the rule second, scope an exception third, and suppress inline only as a last resort with a written rationale. - Error handling hygiene: Keeps non-throwing operations like string concatenation and variable assignment outside try/catch blocks so error handling intent stays clear. - Use Case: When an agent proposes adding an eslint-disable comment to silence a complexity warning, this Skill redirects it to refactor the function so the rule no longer triggers. ## Quick Start Review this code change and reject any dependency overrides, inline suppressions, or quick-fix shortcuts in favor of maintainable solutions.

Frequently Asked Questions about anti-patterns

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

FAQPage Schema
How do I avoid dependency overrides in pnpm or npm?

Avoid pnpm.overrides, yarn resolutions, and npm overrides as first solutions since they create version conflicts and technical debt. Instead, update dependencies through proper package manager commands and use semantic version ranges to resolve transitive dependency issues.

When should I use an eslint-disable comment?

Use inline suppression only as a last resort after trying three alternatives: change the code so the rule no longer triggers, reconfigure the rule if its default is wrong, or define a scoped exception for a legitimately exempt category. Always write a rationale naming the rule and rejected alternatives.

Is using any or type assertions the same as a suppression directive?

Yes, an any type or type assertion silences the type checker the same way a comment directive silences a linter, without changing runtime behavior. The same ladder applies: model the actual type, or return unknown and let the caller narrow it.

Why should non-throwing code stay outside try/catch blocks?

Placing safe operations like string concatenation or variable assignment inside try/catch obscures which operation can actually fail. Only wrap operations that can throw so error handling intent remains clear to readers and maintainers.

What are the limitations of quick-fix approaches in code review?

Quick fixes and band-aid patches address symptoms rather than root causes, accumulating maintenance burden over time. Configuration shortcuts that bypass intended workflows also break when the underlying tooling changes, making them unreliable long-term.