| Ask | 状態を取得→外部で判断→操作 | ロジックが散在、カプセル化破壊 | | Tell | オブジェクトに直接命じる | 責任集約、変更に強い |
| law-of-demeter | 連鎖呼び出しを避ける(a.getB().getC() → a.doC()) | | Feature Envy | 他クラスのデータに執着 → 責任を移動 | | 単一責任原則 | データと処理を同じ場所に | | カプセル化 | 内部状態を隠蔽し振る舞いを公開 | | breach-encapsulation-naming | getter命名でカプセル化破壊を明示 |
「Tell, Don't Ask」原則に基づくコードレビューと設計支援。オブジェクトの状態を問い合わせて 外部で判断するパターンを、オブジェクトに直接命じるパターンに変換する。カプセル化を強化し、 責任をデータを持つオブジェクトに集約する設計を促進する。コードレビュー、新規実装、 リファクタリング時にgetterの乱用やFeature Envyの改善が必要な場合に使用。 対象言語: Java, Kotlin, Scala, TypeScript, Python, Ruby, Go, Rust。 トリガー:「getterを減らしたい」「カプセル化を改善して」「Feature Envyを直して」 「オブジェクトに責任を持たせたい」「デメテルの法則」といったOOP設計関連リクエストで起動。 Source: j5ik2o/okite-ai.
Open your terminal or command line tool (Terminal, iTerm, Windows Terminal, etc.) Copy and run this command: npx skills add https://github.com/j5ik2o/okite-ai --skill tell-dont-ask Once installed, the skill will be automatically configured in your AI coding environment and ready to use in Claude Code, Cursor, or OpenClaw