本文へ移動
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(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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 のスキルをすべて見る

このスキルの問題を報告する