mcpField
R
reuse-first

reuse-first

github.com/bhagyamudgal开发2109 次安装5 天前更新
代码仓库

关于 reuse-first

Reuse first 是一种开发技能,帮助在编写新实现前寻找已有代码。它通过名称、行为和引用三层搜索,并引导开发者依据项目规范判断复用与重复。

主要功能

  1. 01三层代码搜索
  2. 02按名称和行为搜索
  3. 03追踪引用与导入
  4. 04编码前记录搜索结果
  5. 05提供避免重复的指引

适用场景

  1. 01新增辅助函数前检查是否已有实现
  2. 02在代码库中查找可复用行为
  3. 03检查新模块是否存在重复

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bhagyamudgal/skills --skill reuse-first

安装后在 Claude Code 中输入/reuse-first确认已加载。

附带文件references/artifact-guide.mdreferences/sweep-mode.md

详细介绍

优先复用

每一处重复代码都是未来分歧的源头。在一份副本中修复的 Bug,在另一份中依然存在。

如果是全新项目,还没有代码库可供搜索,请先运行 project-discovery,然后再回来。

三层搜索

只搜索确切名称往往会漏掉目标,因此要分三轮搜索:

  1. 名称层:grep -r "functionName",搜索确切名称,以及 camelCase 和 snake_case 变体
  2. 行为层:搜索它的功能,例如 format.*date、validate.*email、parse.*currency
  3. 引用层:找到使用目标功能的功能。打开它,追踪其导入项

只有在打印出每一层的搜索结果后,才算完成。先写下这三行,然后再写其他内容:

Name layer:      <variants grepped> -> <hits, or none>
Behavior layer:  <3+ keywords> -> <hits, or none>
Reference layer: <feature file opened> -> <imports followed>

这三行就是产物。没有它们就创建文件,正是这项技能要防止的失败;而且这种失败之后不会显现出来。新代码可以编译、通过审查并发布,因为下游不会再提出这个问题。如果你已经写好了产物,也要运行搜索,并删除找到的、已有合适归属的代码。不要为重复代码找借口。

每个产物都要单独搜索,而不是每批搜索一次。一次创建六个模块,就要搜索六次。把它们合在一起扫一眼,就会漏掉共享常量。原本能找到它的搜索,根本没有使用它的关键词。

如果你说不出要写的内容的三个行为关键词,就说明你还不够了解它,无法进行搜索。这就是搜索的发现,而不是搜索本身。

如何处理搜索结果

现在加载 ${CLAUDE_SKILL_DIR}/references/artifact-guide.md。只有在三层搜索都返回结果后,才能查看其中关于可接受重复代码的部分。

即将重复实现的迹象

  • 名称带后缀:formatDate2、userServiceV2、validateInputNew、parseFooHelper
  • 为相似行为使用不同变体名称:formatPrice、formatCurrency 和 priceFormatter 并存,说明分歧正在发生
  • 内联重写某个“感觉应该已经存在”的功能:这种感觉通常没错
  • utils/ 或 lib/ 中新增的文件若少于 30 行,很可能应该放在现有文件中
  • 新类型别名与 Zod schema 推断出的类型相同。改用 z.infer
  • 在多个文件中复制粘贴样板代码,例如身份验证检查、错误映射和响应整形。将其提取到共享辅助函数中
  • 已经有类似名称的常量位于 constants/ 中,你却又内联定义了一个新常量

全面检查模式:声称任务完成之前

创建前的搜索只能发现你原本打算编写的内容。现在加载 ${CLAUDE_SKILL_DIR}/references/sweep-mode.md,并在声称任务完成之前运行其中说明的全面检查。

评论

支持 Markdown