关于 clj-discover
clj-discover 是面向 Clojure 开发者的技能,用于探索不熟悉的 Java API 和宏。它指导在编写代码前通过 Java 反射和宏展开收集上下文。
主要功能
- 01Java 互操作前先查找 Clojure 封装库
- 02使用 brepl 反射检查 Java 类
- 03记录构造函数、方法及返回类型
- 04单层或完整展开宏
适用场景
- 01从 Clojure 探索陌生的 Java 类
- 02检查宏生成的代码
- 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