j5ik2o/okite-ai/tell-dont-ask
Claude Code and agent skill by j5ik2o/okite-ai
- community
Checking that the SKILL.md file is still in the repository.
「Tell, Don't Ask」原則に基づくコードレビューと設計支援。オブジェクトの状態を問い合わせて 外部で判断するパターンを、オブジェクトに直接命じるパターンに変換する。カプセル化を強化し、 責任をデータを持つオブジェクトに集約する設計を促進する。コードレビュー、新規実装、 リファクタリング時にgetterの乱用やFeature Envyの改善が必要な場合に使用。 対象言語: Java, Kotlin, Scala, TypeScript, Python, Ruby, Go, Rust。 トリガー:「getterを減らしたい」「カプセル化を改善して」「Feature Envyを直して」 「オブジェクトに責任を持たせたい」「デメテルの法則」といったOOP設計関連リクエストで起動。
Install
npx vskill@latest install j5ik2o/okite-ai/tell-dont-askSKILL.md
Tell, Don't Ask
オブジェクトに問い合わせるな、命じよ。
核心原則
オブジェクトの内部状態に基づく意思決定をし、その結果で該当オブジェクトを更新してはならない。 (『達人プログラマー 第2版』167ページ)
| アプローチ | 特徴 | 問題 | |
|---|---|---|---|
| Ask | 状態を取得→外部で判断→操作 | ロジックが散在、カプセル化破壊 | |
| Tell | オブジェクトに直接命じる | 責任集約、変更に強い |
判断フロー
アンチパターン検出
以下のパターンを見つけたら変換を検討:
変換パターン
1. 状態判定の内部化
2. 条件分岐のポリモーフィズム化
3. コレクション操作の委譲
4. Nullオブジェクトパターン
関連原則・スキル
| 原則 / スキル | 関係 | |
|---|---|---|
| law-of-demeter | 連鎖呼び出しを避ける(a.getB().getC() → a.doC()) | |
| Feature Envy | 他クラスのデータに執着 → 責任を移動 | |
| 単一責任原則 | データと処理を同じ場所に | |
| カプセル化 | 内部状態を隠蔽し振る舞いを公開 | |
| breach-encapsulation-naming | getter命名でカプセル化破壊を明示 |
適用指針
推奨
- getter後にif文で判定しているコード
- 同じ判定ロジックが複数箇所に散在
- オブジェクトの状態を取得→更新するパターン
- 型やステータスによる条件分岐
過剰適用を避ける
- 表示/レポート目的のデータ取得
- DTO/Value Objectからの単純な値取得
- フレームワーク/ライブラリの制約がある場合
- クラスが肥大化する場合は責任分割を検討
レビュー観点
コードレビュー時の確認ポイント:
- getter + if: 状態取得後に条件分岐していないか
- 連鎖呼び出し:
a.getB().getC()のようなチェーンはないか - 外部での集計: ループでデータ収集していないか
- 型/ステータス分岐: ポリモーフィズムで置換できないか
詳細ガイドライン
言語別の実装パターン、リファクタリング手順の詳細は references/patterns.md を参照。
関連スキル(併読推奨)
このスキルを使用する際は、以下のスキルも併せて参照すること:
law-of-demeter: 構造面の補完原則(直接の友人とのみ会話する)first-class-collection: コレクションへのTell, Don't Ask適用パターンbreach-encapsulation-naming: カプセル化を破る必要がある場合の命名規約
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/tell-dont-ask/SKILL.md
Popularity
- Repository stars
- 72
- Repository forks
- 2
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 16 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/j5ik2o/okite-ai/tell-dont-ask)