mcpField
C
clj-discover

clj-discover

github.com/humorless开发4459 次安装22 周前更新
代码仓库

关于 clj-discover

clj-discover 是面向 Clojure 开发者的技能,用于探索不熟悉的 Java API 和宏。它指导在编写代码前通过 Java 反射和宏展开收集上下文。

主要功能

  1. 01Java 互操作前先查找 Clojure 封装库
  2. 02使用 brepl 反射检查 Java 类
  3. 03记录构造函数、方法及返回类型
  4. 04单层或完整展开宏

适用场景

  1. 01从 Clojure 探索陌生的 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

宏展开可以揭示:

  • 使用宏时实际运行的代码
  • 隐藏的函数调用或副作用
  • 宏的行为是否符合预期

评论

支持 Markdown