跳到正文
cccskills
免费在 GitHub 公开

anti-overengineering

Anti-overengineering guide based on YAGNI. Use before adding an architectural pattern, during code review, or to challenge an overly complex implementation.

中文简介正在准备中。当前显示原文说明。

实测评分 未实测

查看安装方法

包含的文件(1)

  • SKILL.md5.1 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Anti Over-Engineering Guidelines

Persona

Read .claude/roles/architect.md — adopt this profile and follow all its rules.

Activation

This skill activates for:

  • Challenging a proposed implementation
  • Deciding if a DDD/Clean Architecture pattern is justified
  • Code review with suspicion of overengineering
  • Refactoring toward more simplicity

Core Principle

"The best code is no code" - Solve problems with the minimum viable complexity.

YAGNI (You Aren't Gonna Need It)
    ↓
Pragmatic Architecture
    ↓
Progressive Enhancement

DDD Pattern Decision Matrix

When to Apply Patterns

Pattern✅ Apply When❌ Avoid When
Value ObjectComplex business rules, invariants to protectSimple data structures, basic formatting
EntityIdentity-based objects with lifecycleStateless operations, simple data transfer
AggregateComplex transactional boundariesSingle entity operations, simple CRUD
ServiceStateless business logic, orchestrationSimple transformations, UI-only logic
RepositoryComplex data access, multiple sourcesSimple API calls, single gateway sufficient
Use CaseBusiness workflow orchestrationSingle service calls, simple operations

Overengineering Red Flags

  • Creating Value Objects for {name: string, email: string}
  • Adding Repository when Gateway suffices
  • Using Domain Events for basic state changes
  • Creating Aggregates for single-entity operations
  • Factory patterns for simple object creation
  • Command/Query separation without complex logic

Decision Tree

Before adding any pattern, ask:

1. Does current code fail to solve the problem?
   └─ No → Don't add complexity
   └─ Yes ↓

2. Is there actual business complexity?
   └─ No → Use simpler approach
   └─ Yes ↓

3. Will this pattern reduce overall complexity?
   └─ No → Find simpler solution
   └─ Yes ↓

4. Can you implement in <50 lines?
   └─ Yes → Start simple, refactor later
   └─ No → Pattern might be justified

Complexity Thresholds

Apply patterns ONLY IF:

  1. Business Logic Complexity > Simple CRUD operations
  2. Multiple Business Rules need coordination
  3. Cross-Entity Invariants must be maintained
  4. Complex Validation beyond basic type checking
  5. Workflow Orchestration involves multiple steps/services

Practical Examples

✅ Good Simplicity

// Simple service - clear responsibility, no premature abstraction
class ReviewActionDispatcher {
  constructor(private readonly gateway: ReviewActionGateway) {}

  async dispatch(action: ReviewAction, mrId: MergeRequestId): Promise<void> {
    if (action.type === 'comment') return this.gateway.postComment(mrId, action.body);
    if (action.type === 'resolve') return this.gateway.resolveThread(action.threadId);
  }
}

❌ Over-Engineering

// Unnecessary strategy hierarchy for two branches
abstract class AbstractReviewActionStrategy {
  abstract execute(action: ReviewAction, mrId: MergeRequestId): Promise<void>;
}

class CommentActionStrategy extends AbstractReviewActionStrategy {
  // 50+ lines wrapping a single postComment call
}

class ReviewActionStrategyFactory {
  createStrategy(type: ReviewActionType): AbstractReviewActionStrategy {
    // Complex factory for two simple options
  }
}

✅ Start Simple, Evolve

// ❌ Over-engineered from start: class-as-value-object with manual validation
class MergeRequestIdValueObject {
  constructor(private readonly value: string) {
    this.assertValid();
  }
  private assertValid(): void { /* runtime check */ }
  getValue(): string { return this.value; }
}

// ✅ Start simple: branded type (zero runtime cost) + boundary validation
type MergeRequestId = string & { readonly __brand: 'MergeRequestId' };

const isMergeRequestId = (value: string): value is MergeRequestId =>
  /^[a-z0-9-]+$/.test(value);

Checklist Before Adding a Pattern

  • Business Justification: Does business complexity warrant this?
  • Team Understanding: Can team easily understand and maintain?
  • Testing Impact: Does this make testing easier or harder?
  • Future Flexibility: Does this help or hinder future changes?
  • Code Ratio: Is business logic > boilerplate code?

When to Refactor

TO patterns:

  • Pain points emerge (hard to test, modify, understand)
  • Business logic grows beyond simple functions
  • Invariants need protection across operations
  • Same logic reused in multiple places

AWAY FROM patterns:

  • Pattern used only once (no reusability)
  • Boilerplate > Business logic
  • Testing becomes harder
  • Team confusion increases

Remember

"Architecture should scream the domain" - But don't force patterns where simple functions suffice.

"Refactor when it hurts" - Don't prematurely optimize for imaginary future requirements.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Guide for creating optimized Claude Code agents. Use to design a new specialized agent, a swarm sub-agent, or a multi-agent workflow. Follows the Skill → Agent (preloaded skills) → Skill orchestration pattern.

中文简介正在准备中。当前显示原文说明。

DGouron/review-flow442026年10月21日 更新

Clean Architecture (Uncle Bob) guide for this project. Use when creating modules, entities, use cases, presenters, controllers, gateways, guards, services. Contains tactical patterns and structure conventions.

中文简介正在准备中。当前显示原文说明。

DGouron/review-flow442026年10月21日 更新

Audit documentation for duplication, staleness, language issues, and verbosity. Read-only — produces an actionable report.

中文简介正在准备中。当前显示原文说明。

DGouron/review-flow442026年10月21日 更新

Local auto-review of modified code (no GitLab/GitHub). Runs 5 sequential audits and generates a local report. Ideal for validating code before creating a MR/PR.

中文简介正在准备中。当前显示原文说明。

DGouron/review-flow442026年10月21日 更新

Clean Code (Robert C. Martin) guide to produce and challenge code that is readable, durable, simple, and consistent. Covers naming, functions, comments, smells, and refactor heuristics. Complements `/solid` (SOLID principles) and `/anti-overengineering` (YAGNI/KISS). Activate during the REFACTOR phase of the TDD cycle and during implementation self-review.

中文简介正在准备中。当前显示原文说明。

DGouron/review-flow442026年10月21日 更新

commit

免费

Safe commit and push workflow. Creates a commit following conventions and pushes. Husky handles verifications (TypeScript, Biome, tests).

中文简介正在准备中。当前显示原文说明。

DGouron/review-flow442026年10月21日 更新

查看 DGouron 的全部技能

报告此技能的问题