Communitygithub.com

rhanka/graphify

AIコーディングアシスタントスキル(Claude Code、Codex、OpenCode、OpenClaw、Factory Droid、Trae)。コード、ドキュメント、論文、画像の任意のフォルダをクエリ可能なナレッジグラフに変換します。

graphify とは?

graphifyスキルは、任意のコードベース、ドキュメントフォルダ、論文、または画像コレクションを、構造化されたクエリ可能なナレッジグラフに変換することで、開発者がコードベースをより深く理解し、探索するのを支援します。Claude Code、Codex、OpenCode、OpenClaw、Factory Droid、Traeなどの主要なAIコーディングアシスタントとシームレスに統合され、ファイルや概念間の暗黙的な関係を明らかにします。このスキルは、指定されたフォルダまたはプロジェクトを分析し、主要なエンティティ(関数、クラス、ドキュメントセクション、キーワード)を抽出し、それらをエッジ(依存関係、参照、トピックの類似性)で接続して検索可能なグラフ構造を構築します。これにより、大規模なコードベースのオンボーディング、依存関係分析、トレーサビリティの実行などのタスクが容易になります。本質的には、静的ファイルを動的なナレッジベースに変換し、AIが既存の資産を活用したよりコンテキストに即した支援を可能にします。

対応✓Claude Code✓Codex CLI~Cursor✓OpenCode
npx skills add rhanka/graphify

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

graphify は何をしますか?

AIコーディングアシスタントスキル(Claude Code、Codex、OpenCode、OpenClaw、Factory Droid、Trae)。コード、ドキュメント、論文、画像の任意のフォルダをクエリ可能なナレッジグラフに変換します。

概要

graphifyは、プロジェクト内のファイル間の関係を自動的に発見し整理することで、開発者が複雑なコードベースをナビゲートし理解するのを支援します。これは、ソースコード、ドキュメント、論文、画像スキャンなど、さまざまな入力タイプを処理し、セマンティック検索、依存関係分析、コンセプトマッピングを可能にする統一グラフ表現を作成します。

特徴

  • マルチフォーマットサポート: コード(Python、JavaScript、TypeScript、Go、Rustなど)、マークダウン、PDF、画像(OCR経由)を処理します。
  • 自動エンティティ抽出: 関数、クラス、変数、ドキュメントセクション、キーワードを識別します。
  • 関係マッピング: インポート、関数呼び出し、継承、クロスリファレンス、トピックの類似性を検出します。
  • グラフクエリ: 自然言語または構造化されたクエリを使用してグラフを探索し、特定の情報を取得します。
  • プラットフォーム統合: Claude Code、Codex、OpenCode、OpenClaw、Factory Droid、Traeとシームレスに動作します。

インストール

Claude Code

claude add graphify

手動インストール

  1. リポジトリをクローンします:

    git clone https://github.com/rhanka/graphify.git
    
  2. 依存関係をインストールします:

    pip install -r requirements.txt
    
  3. .envファイルで環境変数を設定します(詳細は設定を参照)。

使用法

基本コマンド

プロジェクトのルートディレクトリから:

graphify build /path/to/project --output graph.json

グラフのクエリ

グラフが構築されたら、自然言語でクエリできます:

graphify query "このプロジェクトの主要なエントリポイントは何ですか?" --graph graph.json

AIアシスタントとの統合

graphifyをAIアシスタントスキルとして使用するには、プラットフォーム固有の設定ファイルに追加します:

Claude Code (claude.md):

<!-- Claude Code用にgraphifyを有効にする -->
- このプロジェクトでは、クエリ可能なナレッジグラフを維持するためにgraphifyを使用します。

設定

config.yamlを使用して、抽出プロセスと出力形式をカスタマイズします:

input:
  include_extensions: [".py", ".js", ".md", ".pdf"]
  exclude_dirs: ["node_modules", ".git", "dist"]
  max_file_size: 10  # MB

extraction:
  entity_types: ["function", "class", "variable", "section", "keyword"]
  relationship_types: ["imports", "calls", "extends", "references", "similar"]
  similarity_threshold: 0.7

output:
  format: "json"  # json, neo4j, csv
  enrich: true     # LLMベースの要約でエンティティを強化

環境変数:

  • OPENAI_API_KEY: エンティティの強化と高度な推論に必要です。
  • GRAPHIFY_CACHE_DIR: キャッシュされたグラフ(デフォルト: ~/.graphify/cache)を保存するためのカスタムディレクトリ。

アーキテクチャ

graphifyは3段階のパイプラインで動作します:

  1. スキャン: 指定されたフォルダを再帰的にトラバースし、各ファイルのタイプを識別し、内容を読み取ります。
  2. 抽出: 言語固有のパーサーとMLモデルを使用してエンティティと関係を識別します。コードファイルは、構文ツリーパターンを使用して解析されます。画像はOCRを使用して処理され、ドキュメントはNLPを使用して解析されます。
  3. グラフ構築: 抽出されたエンティティと関係をグラフデータベース(Neo4j)またはJSONファイルに保存します。グラフは、検索速度を最適化するためにインデックス付けされます。

例

# 使用方法:
# graphify build .
# graphify query "認証を処理する関数を見つける"

import json
from pathlib import Path

# グラフをロード
with open("graph.json") as f:
    graph = json.load(f)

# 類似点を検索
def find_similar(entity_name, graph, top_k=5):
    # ...類似性マッチングのロジック...
    pass

貢献

プルリクエストは大歓迎です。大きな変更の場合は、最初にイシューを開いて何を変更したいかを議論してください。

新しいファイルタイプのサポートを追加するには:

  1. parsers/に新しいパーサーを追加します。
  2. config.yamlのサポートされている拡張子のリストにファイル拡張子を追加します。
  3. テストを実行します:
    pytest tests/
    

ライセンス

MIT

関連スキル