j5ik2o/okite-ai/intent-based-dedup
Claude Code and agent skill by j5ik2o/okite-ai
- community
Checking that the SKILL.md file is still in the repository.
字面の同一性ではなく意図(目的)の同一性に基づいてコードの共通化を判断するスキル。 DRY原則の誤適用(字面が同じだが意図が異なるコードの共通化)を検出し、正しい共通化判定を 支援する。コードレビュー、リファクタリング、新規実装時に重複コードの扱いを判断する場合に使用。 対象言語: 言語非依存(Rust, Java, TypeScript, Go, Python, Kotlin, Scala等すべて)。 トリガー:「重複コードを共通化したい」「DRYに従いたい」「似たコードがある」 「この2つの関数をまとめたい」「コードの重複を減らしたい」「共通化すべきか」 「リファクタリングで共通関数にしたい」といった重複コード・共通化関連リクエストで起動。
Install
npx vskill@latest install j5ik2o/okite-ai/intent-based-dedupSKILL.md
意図ベースの共通化判定
字面が同じかどうかより、意図(目的)が同じかどうかで共通化する。
核心原則
「字面が同じなら共通化」という単純思考は危険。意図・目的の一致を最優先に判断する。
コード表現が同一でも、ビジネスロジック上の目的が異なれば共通化してはならない。 逆に、表現が異なっていても目的が同じなら統一すべきである。
判断マトリックス
| 字面 | 意図 | 判定 | アクション | |
|---|---|---|---|---|
| 同じ | 同じ | 共通化 ◎ | DRY原則を適用し共通関数に抽出 | |
| 異なる | 同じ | 統一 ◎ | どちらかの実装に統一 | |
| 同じ | 異なる | 共通化 ✗ | 絶対に共通化禁止(最重要) | |
| 異なる | 異なる | 共通化 ✗ | 検討不要 |
判断フロー
アンチパターン検出
以下のパターンを見つけたらDRY誤適用の兆候:
4パターンの詳細
1. 字面が同じ × 意図が同じ → 共通化する
DRY原則が正しく適用されるケース。
2. 字面が異なる × 意図が同じ → 統一する
同じ目的だが異なる実装スタイルで書かれているケース。
3. 字面が同じ × 意図が異なる → 共通化禁止(最重要)
最も危険なケース。 形式上同じコードでも、ビジネス上の目的が異なる。
字面は同じだが共通化してはならない。 理由:
- 攻撃力の仕様変更(地形倍率が3倍に変わる等)が費用計算を壊す
- 費用計算の変更(税率適用等)が攻撃力計算を壊す
- 変更理由が異なる = 共通化すると結合度が不正に上がる
4. 字面が異なる × 意図が異なる → 何もしない
検討不要。それぞれ独立したコードとして維持する。
「意図の同一性」の判定基準
目的が同じかどうかを見極めるための質問:
- 変更理由テスト: 一方の仕様が変わったとき、もう一方も同じ理由で変わるか?
- YES → 意図が同じ(共通化可)
- NO → 意図が異なる(共通化不可)
- 命名テスト: 共通化した関数に、両方の文脈で意味の通る名前を付けられるか?
- YES → 意図が同じ
- NO(汎用的な名前しか付けられない)→ 意図が異なる
- ドメインテスト: 2つのコードは同じドメイン概念を表しているか?
- YES → 意図が同じ
- NO → 意図が異なる
適用指針
推奨
- 「似たコードがある」と報告されたコードレビュー
- リファクタリングで共通関数を抽出しようとしている場面
- ユーティリティ関数が複数のドメイン概念に使い回されている場合
- 共通化した関数のパラメータが増殖し始めた場合
過剰適用を避ける
- 明らかに同一目的のボイラープレート(設定初期化、ログ出力等)
- フレームワーク/ライブラリ提供のユーティリティ
- 数学的に同一の演算(三角関数等、目的に依存しない純粋な計算)
レビュー観点
コードレビュー時の確認ポイント:
- 意図の確認: 共通化対象の2つのコードは同じ「目的」を持つか
- 変更理由の分離: 一方の仕様変更が他方に波及しないか
- 命名の自然さ: 共通化した名前は両方の文脈で意味が通るか
- パラメータ増殖: 共通関数に条件分岐やフラグが増えていないか
- ドメイン境界: 異なるドメイン概念を1つの関数に混ぜていないか
関連スキル(併読推奨)
このスキルを使用する際は、以下のスキルも併せて参照すること:
domain-building-blocks: 異なるドメインの同形コードを共通化しない判断first-class-collection: 同じ構造のコレクションでも意図が異なれば別型とする判断package-design: 同じコードでも変更理由が異なればパッケージを分ける判断
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/intent-based-dedup/SKILL.md
Popularity
- Repository stars
- 74
- Repository forks
- 2
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 28 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/intent-based-dedup)