mcpField
C
clj-discover

clj-discover

github.com/humorless開発4459 回インストール22 週間前に更新
リポジトリ

clj-discover について

clj-discoverは、未知のJava APIやマクロを調べるClojure開発者向けのスキルです。コードを書く前に、Javaリフレクションとマクロ展開で情報を集める手順を案内します。

主な機能

  1. 01Java連携の前にClojureラッパーを検索
  2. 02breplのリフレクションでJavaクラスを調査
  3. 03コンストラクター、メソッド、戻り値型を記録
  4. 04マクロを1段階または完全に展開

活用シーン

  1. 01Clojureから未知のJavaクラスを調査
  2. 02マクロが生成するコードを確認
  3. 03マクロ内の隠れた呼び出しや副作用を発見

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/humorless/clj-native-agent --skill clj-discover

インストール後、Claude Code で/clj-discoverを入力して読み込まれたか確認します。

同梱ファイルCHANGELOG.mdevals/evals.json

詳細

Clojure コードの調査

使い慣れていない API を使って Clojure コードを書くときは、コードを書く前に情報を集めてください。このスキルでは、Java 相互運用とマクロに重点を置きます。

このスキルを使うタイミング

以下に該当する場合は、必ずこのスキルを自動的に使ってください。

  • Clojure から使用する Java クラスがある
  • 動作が不明なマクロがある(展開結果を確認する必要がある)

ワークフロー:Java 相互運用

1. まず Clojure ラッパーを検索する

Java クラスを直接調べる前に、次のように尋ねます。

「java.time.LocalDateTime を使うところですね。Clojure ラッパーライブラリを検索しましょうか?ラッパーを使うと、より簡潔で慣用的な API を利用できることがよくあります。」

  • 「ラッパーを検索する」 → WebSearch を使って clojure wrapper for <library-name> を検索します
  • 「Java を直接使う」 → 以下の Java の調査に進みます
2. Java クラスを調査する

Java を直接使う場合は、brepl を使ってクラスをリフレクションします。

brepl <<'EOF'
(require '[clojure.reflect :as r])

; Get all public methods
(->> (r/reflect java.time.LocalDateTime)
     :members
     (filter #(instance? clojure.reflect.Method %))
     (map :name)
     sort)
EOF

調査結果を記録します。

  • 使用可能なコンストラクターまたはファクトリーメソッド(例:now()、of())
  • 主なメソッドとその戻り値の型
  • コードベースでよく使われるパターン

ワークフロー:マクロの調査

マクロを使うときは、展開して生成されるコードを確認します。

brepl <<'EOF'
(macroexpand-1 '(your-macro args))     ; expand one level
(macroexpand '(your-macro args))       ; fully expand
EOF

マクロ展開により、以下を確認できます。

  • マクロを使ったときに実際に実行されるコード
  • 隠れた関数呼び出しや副作用
  • マクロが想定どおりに動作するかどうか

コメント