codemap 是做什么的?
运行捆绑脚本。每次调用都会读取当前工作树,并打印紧凑、排序的映射;它从不写入任何文件。
${CLAUDE_SKILL_DIR}/scripts/codemap --ext php,blade.php --dir app
${CLAUDE_SKILL_DIR}/scripts/codemap --ext css,scss --symbols
${CLAUDE_SKILL_DIR}/scripts/codemap --ext ts,tsx --dir src --symbols --max 150
选项:--ext(逗号分隔,无需点号)、--dir、--symbols、--max(输出行限制,默认 300)、--exclude REGEX(可重复)。
输出样例:
# codemap: 12 files in 3 dirs (dir: app, ext: php, via rg)
Http/Controllers/
UserController.php: class UserController, fn index, fn store
使用场景
- 你需要一种或多种类型的所有文件,但不知道它们位于何处。
- 你正准备读取多个文件,但只想了解它们定义了哪些内容:先使用
--symbols运行,然后只阅读真正需要的文件。 - 子代理进入一个不熟悉的区域:将那个目录的 codemap 传递给它,而不是让它从头开始搜索。
何时不该使用
- 你知道文件名或精确模式:请使用 Glob。
- 你需要文件内的文本内容:请使用 Grep。
- 你需要某个符号的定义或引用,且已启用 LSP 插件:请使用 LSP 工具。
注意事项
- 当 ripgrep 或 git 可用时,会遵守
.gitignore;vendor/、node_modules/、构建输出、压缩文件和源映射始终被跳过。 - 符号提取基于行级模式,而非解析器:顶层 PHP 类/函数、JS/TS
export、Python 顶层class/def、Gotype/func、CSS 自定义属性(计数)以及 SCSS/Less mixins。将其视为文件目录表,然后再读取文件。 - 当输出以
# ... truncated结束时,请使用--dir、--ext或--exclude缩小范围,而非大幅提高--max。