Skip to content

Bash cd 进子目录后找不到技能?2.1.312 修好了按目录和 paths: 技能的加载 ​

在 monorepo 里给不同子项目配不同技能,是很常见的做法:前端目录一套、后端目录一套,或者用 paths: 限定某个技能只在特定路径下生效。CLI 2.1.312 修掉了一个让这套做法时灵时不灵的 bug。

问题是什么 ​

更新说明的意思是:修复了 Bash 执行 cd 进入 git 仓库更深层目录后,按目录放置的技能和 paths: 技能找不到的问题。

具体表现大概是这样:你在仓库根目录启动 Claude Code,Claude 在干活过程中用 Bash 执行了 cd packages/web,然后去处理这个子包里的事情。按理说,放在 packages/web 下面的技能、或者 paths: 覆盖了这个目录的技能应该能被用上,但实际上 Claude 像是「看不见」它们,只能用到根目录那一层的技能。

为什么容易被忽略 ​

这个问题不会报错,只是技能悄悄没生效。常见的症状是:

  • 明明写了子项目专用的测试或发布技能,Claude 却按通用方式去做;
  • 同一个任务,从子目录直接启动 Claude Code 时表现正常,从根目录启动、中途 cd 进去就不对;
  • 你以为是技能描述写得不够好,反复改描述也没用。

如果你遇到过这种「技能有时灵有时不灵」的情况,而且仓库结构比较深,很可能就是这个 bug。

升级后的行为 ​

升级到 2.1.312 之后,Bash 里 cd 到仓库深处,Claude Code 会正确按新的位置去查找对应的按目录技能和 paths: 技能。对 monorepo 用户来说,这意味着从根目录启动一次会话、在多个子包之间切换工作,也能拿到各自的技能。

升级前的临时办法 ​

暂时没法升级的话,可以先这样绕过:

  • 直接在要工作的子目录里启动 Claude Code,而不是从仓库根目录启动后再 cd;
  • 把确实需要跨目录使用的技能提到更上层的位置,或者放进用户级技能目录;
  • 在提示里点名要用的技能,减少依赖自动发现。

小结 ​

这是一个修复类更新,不需要改任何配置。如果你的技能是按目录组织的,升级后不妨回头验证一下:在根目录启动、cd 进子包,看看子包里的技能是不是终于能被用上了。

Claude-cn.org,专注于 Claude Code 中文教程