Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 0品質スコア 50/100

finding-duplicate-functions

コードベース内で意味的に重複している関数――同じ処理を行いながら異なる名前や実装を持つ関数――を洗い出す際に使用します。既存の関数を再利用せず新しい関数を生成しがちなLLM生成コードベースのレビューに特に有効です。

description の原文を見る

Use when auditing a codebase for semantic duplication - functions that do the same thing but have different names or implementations. Especially useful for LLM-generated codebases where new functions are often created rather than reusing existing ones.

SKILL.md 本文

重複する意図の関数の検出

概要

LLM生成のコードベースは意味的な重複が蓄積します。同じ目的を果たすが独立して実装された関数が発生します。古典的なコピペ検出器(jscpd)は構文的な重複は見つけますが、「同じ意図で異なる実装」は見落とします。

このスキルは2段階のアプローチを使用します。古典的な抽出の後、LLMを活用した意図のクラスタリング。

使用時期

  • コードベースが複数の貢献者(人間またはLLM)によって有機的に成長している
  • ユーティリティ関数が複数回再実装されていると疑われる
  • 主要なリファクタリングの前に、統合の機会を特定する
  • jscpd が実行済みで、構文的な重複はすでに処理されている

クイックリファレンス

フェーズツールモデル出力
1. 抽出scripts/extract-functions.sh-catalog.json
2. 分類scripts/categorize-prompt.mdhaikucategorized.json
3. 分割scripts/prepare-category-analysis.sh-categories/*.json
4. 検出scripts/find-duplicates-prompt.mdopusduplicates/*.json
5. レポートscripts/generate-report.sh-report.md

プロセス

digraph duplicate_detection {
  rankdir=TB;
  node [shape=box];

  extract [label="1. Extract function catalog\n./scripts/extract-functions.sh"];
  categorize [label="2. Categorize by domain\n(haiku subagent)"];
  split [label="3. Split into categories\n./scripts/prepare-category-analysis.sh"];
  detect [label="4. Find duplicates per category\n(opus subagent per category)"];
  report [label="5. Generate report\n./scripts/generate-report.sh"];
  review [label="6. Human review & consolidate"];

  extract -> categorize -> split -> detect -> report -> review;
}

フェーズ1: 関数カタログの抽出

./scripts/extract-functions.sh src/ -o catalog.json

オプション:

  • -o FILE: 出力ファイル(デフォルト: stdout)
  • -c N: キャプチャするコンテキスト行数(デフォルト: 15)
  • -t GLOB: ファイルタイプ(デフォルト: *.ts,*.tsx,*.js,*.jsx
  • --include-tests: テストファイルを含める(デフォルトでは除外)

テストファイル(*.test.*, *.spec.*, __tests__/**)は、テストユーティリティが統合の候補になりにくいため、デフォルトで除外されます。

フェーズ2: ドメイン別の分類

scripts/categorize-prompt.mdのプロンプトを使用してhaikuサブエージェントをディスパッチします。

プロンプトテンプレートの指定された場所にcatalog.jsonの内容を挿入します。出力をcategorized.jsonとして保存します。

フェーズ3: カテゴリに分割

./scripts/prepare-category-analysis.sh categorized.json ./categories

カテゴリごとに1つのJSONファイルを作成します。3つ以上の関数を持つカテゴリのみ分析する価値があります。

フェーズ4: 重複の検出(カテゴリごと)

./categories/内の各カテゴリファイルについて、scripts/find-duplicates-prompt.mdのプロンプトを使用してopusサブエージェントをディスパッチします。

各出力を./duplicates/{category}.jsonとして保存します。

フェーズ5: レポート生成

./scripts/generate-report.sh ./duplicates ./duplicates-report.md

信頼度別にグループ化された優先順位付きマークダウンレポートを生成します。

フェーズ6: 人間によるレビュー

レポートをレビューします。HIGH信頼度の重複については:

  1. 推奨される後継関数がテストを持つことを確認
  2. 呼び出し元を後継関数を使用するように更新
  3. 重複を削除
  4. テストを実行

高リスク重複ゾーン

これらの領域の抽出に最初に焦点を当てます—最速で重複が蓄積します:

ゾーン一般的な重複
utils/, helpers/, lib/再実装された汎用ユーティリティ
バリデーションコード複数の方法で書かれた同じチェック
エラーフォーマッティングエラーから文字列への変換
パス操作パスの結合、解決、正規化
文字列フォーマッティングケース変換、切り詰め、エスケープ
日付フォーマッティング繰り返し実装された同じフォーマット
APIレスポンス整形異なるエンドポイントの類似変換

よくある間違い

抽出しすぎる: エクスポートされた関数とパブリックメソッドに焦点を当てます。内部ヘルパーは複数ファイル間で重複する可能性は低いです。

分類ステップをスキップする: カタログ全体で直接重複検出に進むとノイズが多くなります。カテゴリは比較に焦点を当てます。

重複検出にhaikusを使用する: Haikuは分類にはコスト効率的ですが、微妙な意味的重複を見落とします。実際の重複分析にはOpusを使用します。

テストなしで統合する: 重複を削除する前に、後継関数が削除される関数のすべてのユースケースをカバーするテストを持つことを確認します。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
obra
リポジトリ
obra/superpowers-lab
ライセンス
MIT
最終更新
不明

Source: https://github.com/obra/superpowers-lab / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: obra · obra/superpowers-lab · ライセンス: MIT