Anti-Over-Defense は何をしますか?
過剰なエンジニアリングを防ぎ、コーディングタスクを直接的な成果物に集中させるためのCodexスキルです。
概要
このスキルは、AIエージェントがタスクに対して過剰に防御的な設計や実装を行うことを抑制します。特に、本来不要なエラーハンドリング、過度な抽象化、将来の拡張を見越した過剰なコード構造を避け、現時点での要件に集中した効率的なコード生成を促します。
目的
- 過剰なエンジニアリングを防止し、コードの複雑性を低減する
- タスク完了までの時間を短縮し、納期を重視する
- コードの可読性と保守性を犠牲にすることなく、必要最小限の機能に集中する
使用方法
このスキルはCodexエージェント内で自動的に適用されます。特に以下のような状況で効果を発揮します:
- 要件が明確で、追加機能が不要な場合
- プロトタイプやMVP(Minimum Viable Product)の開発時
- コードレビューやリファクタリングで、過剰な設計を指摘したい場合
動作の詳細
エージェントは以下の原則に従います:
- 要件に忠実に:指定された要件を超える機能は追加しない
- シンプルさを優先:必要以上に複雑なデザインパターンや抽象化を避ける
- エラーハンドリングは最小限に:システムが実際に必要とする範囲に限定し、過度なtry-catchやバリデーションを避ける
- 将来の拡張を想定しない:現時点で要求されていない将来の機能や変更を考慮した設計を行わない
- 直接的な実装:必要ならば、中間層やラッパーを追加せずに直接的なアプローチを取る
例
良い例(このスキルを適用した場合)
def calculate_total(items):
return sum(item['price'] * item['quantity'] for item in items)
悪い例(過剰なエンジニアリング)
from abc import ABC, abstractmethod
from typing import List, Dict, Any
class ItemProcessor(ABC):
@abstractmethod
def process(self, item: Dict[str, Any]) -> float:
pass
class PriceCalculator(ItemProcessor):
def process(self, item: Dict[str, Any]) -> float:
return item['price'] * item['quantity']
class TotalCalculator:
def __init__(self, processor: ItemProcessor):
self.processor = processor
def calculate(self, items: List[Dict[str, Any]]) -> float:
return sum(self.processor.process(item) for item in items)
注意事項
- このスキルは、厳格なエラーハンドリングや堅牢性が求められるプロダクションシステムには適さない場合があります。
- 必要に応じて、特定のタスクではこのスキルを明示的に無効にすることも検討してください。
関連情報
- 開発者: JaneZ-2006
- 対応プラットフォーム: Codex