---
name: reuse-before-build
description: 在新增或替换任何代码实现前调查复用机会，涵盖组件、工具函数、后端、脚本及业务功能。先核实项目封装、标准能力和已安装依赖；没有合适能力时主动联网比较成熟方案，推荐并获得选型确认后实现。适用于跨语言、跨技术栈的编码任务；纯文案和格式调整无需触发。
---

# 实现前先发现和复用

把能力调查放在实现之前。自己能写出来，不是选择自研的依据。所有新增或替换实现都检查，包括简单业务逻辑；按用户需要的完整能力分组，不对每行代码单独选型。遵守用户已指定的技术路线、已有授权与项目约束，不把调查扩展成全项目改造。

## 1. 明确能力并检查本地证据

从任务中确认功能、输入输出、运行环境及必要约束。先检查，再编辑该能力的实现：

- 查找项目现有组件、业务封装、工具函数及邻近使用方式，判断是否适用。
- 检查语言标准库和运行平台的原生能力。
- 读取相关依赖清单、锁定版本和实际安装包；用对应版本的导出、类型、随包文档或示例核实能力。若依赖未安装，明确这一限制，结合锁定版本和官方版本文档核实，不把声明范围当成实际版本。
- 不因为当前文件没有 import 就认定项目没有该能力；不因为最新版文档提供某 API 就认定当前安装版本也有。

给出简短结论：复用什么、何处证明其适用、还需哪些适配。无需展示完整检索日志。复用项目内部代码时仍须遵守模块边界，不能为了复用引入不合理耦合。

## 2. 有合适能力：直接复用

任务已经授权且现有能力适用时，直接使用，无需额外询问。优先沿用项目的合适封装和约定；封装不适用时核查底层公开能力，不机械复用错误抽象。

使用组件、函数或 SDK 的真实公开接口。允许样式、数据映射和业务连接；不要用“适配器”或“封装”的名义重新写一遍依赖已有的状态机、算法或交互。不要为了验证猜测修改依赖源码。

“部分覆盖”要明确拆分：现有能力负责哪些部分，剩余哪些能力仍需调查。保持用户要求的行为，不能为了方便套库默默删减功能。

## 3. 本地存在缺口：先联网调查

在编写替代实现前，主动搜索成熟库、官方组件、SDK、标准方案或其他适合当前任务的解决方式。所有未被本地能力合理覆盖的新增实现都经过这一步，包括业务专用逻辑；不要求每个业务规则都有对应的库。

依据功能与实际环境搜索，使用官方文档、官方仓库、版本记录核实候选。搜索摘要只能发现线索，不能作为能力或维护状态的最终证据。调查应足以判断可行性，无需无休止搜索；优先形成少量真正适用的候选。对证据不足的能力、兼容性或费用明确标注，不能编造结论。

网络不可用时说明受阻项，不能声称没有成熟方案，也不能自动开始自研。继续完成不依赖该选型的工作，向用户说明恢复调查或明确授权自研等可选路径。

## 4. 比较、推荐并确认路线

通常比较 2–3 个实际可行方案；只有一个或没有候选时如实说明，不凑数。可用紧凑表格：

| 方案及官方来源 | 能力覆盖与缺口 | 环境/版本兼容性 | 接入和维护成本 |
| --- | --- | --- | --- |

只讨论影响当前选择的因素：必要的体积、性能、许可、维护情况或服务费用，不罗列无关指标。推荐基于当前需求、已有技术栈和总体成本，不只看热度或功能数量。

给出明确结论：“我推荐 X，因为……；需要引入/升级……，还需自行实现……；是否同意使用？”使用当前环境提供的询问工具；没有工具时直接提问。

以下路线需要用户确认，除非先前已明确授权同一路线：

- 引入新依赖、升级依赖、引入服务或切换框架。升级必须说明现有版本缺口及兼容影响。
- 调查后决定自研：说明排除候选的依据、最小自研范围、验证方式与维护责任，再请用户确认。通用能力可复用、业务规则需自写时，可以合并说明并一次确认。

一般的“实现功能”请求不代替上述选型确认。用户已经指定库或明确授权自研时，保留授权，仍核实适配性，不反复询问；若发现需要超出授权范围，再提出具体差异。

确认前可做只读检查和方案准备，不安装、不改依赖声明、不调用付费服务、不写该缺口的替代实现。无回复或拒绝某候选都不等于同意自研。用户拒绝后根据原因调整候选或提出剩余路线。

若这份 Skill 导致暂停，注明并链接当前 SKILL.md 的“比较、推荐并确认路线”规则，简短解释等待的是哪个未获授权的选择；不把本规则描述成工具强制拦截。

## 5. 实现与验证

按已确认路线执行，使用最少必要适配，避免不必要依赖或大型框架。验证实际行为、版本兼容性与受影响回归；检查最终代码确实调用了被选能力，未暗中保留重复实现或未经批准的自研回退。

交付说明复用对象、必要自定义部分、检查结果与未验证事项。发现候选实际不能满足需求时返回选型阶段，不静默更换路线。

## 验证此 Skill

仅在创建、修改或评测此 Skill 时读取 [行为验收场景](references/behavior-checks.md)。结构校验不等于行为验证，显式调用通过不等于自然编码请求能自动触发。不能声称此 Skill 能保证每次自动加载。
