关于 searching-sourcegraph
用于指导开发者借助 Sourcegraph 搜索代码库的技能,帮助在实现、排错和代码审查前查找现有模式。它按搜索目标推荐工具,并强调缩小范围、追踪引用和阅读实现。
主要功能
- 01按目标选择搜索工具
- 02限定仓库、文件和语言范围
- 03追踪符号引用与定义
- 04搜索提交、差异和版本
- 05提供实现与排错工作流
适用场景
- 01实现功能前查找相似代码
- 02排查错误并追踪调用链
- 03理解陌生代码库的实现
- 04审查变更并检查近期修改
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ cline/ skills --skill searching-sourcegraph安装后在 Claude Code 中输入/searching-sourcegraph确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
query-patterns.mdexamples/common-searches.mdworkflows/code-review.mddebugging-issue.mdfixing-bug.mdimplementing-feature.mdunderstanding-code.md详细介绍
搜索 Sourcegraph
先搜索,再构建。复用现有模式可以减少 Token、确保一致性,并找到经过验证的解决方案。
工具选择逻辑
从这里开始:
- 知道确切的符号或模式? →
keyword_search - 知道概念,但不知道代码? →
nls_search - 需要了解原理或原因? →
deepsearch→deepsearch_read - 追踪符号的用法? →
find_references - 需要查看完整实现? →
go_to_definition→read_file - 需要了解用户参与过哪些仓库? →
get_contributor_repos
| 目标 | 工具 |
|---|---|
| 概念/语义搜索 | nls_search |
| 精确代码模式 | keyword_search |
| 追踪用法 | find_references |
| 查看实现 | go_to_definition |
| 发起深度搜索 | deepsearch |
| 阅读深度搜索结果 | deepsearch_read |
| 读取文件 | read_file |
| 浏览结构 | list_files |
| 查找仓库 | list_repos |
| 搜索提交 | commit_search |
| 追踪更改 | diff_search |
| 比较版本 | compare_revisions |
| 查找用户参与过的仓库 | get_contributor_repos |
限定范围(始终执行)
repo:^github.com/ORG/REPO$ # Exact repo (preferred)
repo:github.com/ORG/ # All repos in org
file:.*\.ts$ # TypeScript only
file:src/api/ # Specific directory
file:.*\.test\.ts$ -file:__mocks__ # Tests, exclude mocks
从小范围开始。只有在没有结果时才扩大范围。
组合筛选条件:repo:^github.com/myorg/backend$ file:src/handlers lang:typescript
根据上下文调整行为
当用户提供文件路径或错误消息时:
- 提取符号、函数名或错误代码
- 先搜索这些确切的词
- 如果错误涉及已知符号,则追踪引用
当用户询问“X 是如何工作的”时:
- 使用
deepsearch发起搜索,然后使用deepsearch_read获取结果 - 接着对响应中提到的关键文件使用
read_file
当用户询问某项工作的参与者,或某位贡献者涉及过哪些仓库时:
- 使用
get_contributor_repos和一个或多个用户名,查找他们活跃参与的仓库 - 然后将后续搜索限定在这些仓库中
当用户正在实现新功能时:
- 先搜索现有的类似实现
- 阅读测试以了解用法示例
- 创建新工具前,先检查是否有可复用的共享工具函数
当排查错误、构建失败或运行时异常时:
- 从堆栈跟踪或构建输出中提取确切的符号、错误代码或日志行
- 搜索错误出现的位置,然后使用
find_references追踪完整的调用链 - 尽早使用
diff_search和commit_search检查近期更改——回归问题很常见 - 提出修复方案前,找出所有受影响的代码路径和服务
当修复 Bug 时:
- 从错误消息或堆栈跟踪中提取确切的符号
- 搜索错误出现的位置,然后使用
find_references追踪完整的调用链 - 尽早使用
diff_search和commit_search检查近期更改——回归问题很常见 - 编写修复代码前,找出所有受影响的代码路径
- 阅读现有测试,了解预期行为
工作流
详细的分步工作流请参阅:
workflows/implementing-feature.md— 构建新功能时workflows/understanding-code.md— 探索不熟悉的系统时workflows/debugging-issue.md— 排查错误、构建失败、堆栈跟踪、支持问题或运行时异常时workflows/fixing-bug.md— 使用 Sourcegraph 进行广泛搜索来修复 Bug 时workflows/code-review.md— 审查拉取请求或变更集时
效率规则
尽量减少工具调用:
- 按逻辑串联搜索:搜索 → 阅读 → 查找引用 → 查看定义
- 不要重复搜索相同模式;使用之前调用的结果
- 有精确术语时,优先使用
keyword_search,而不是nls_search(速度更快、精度更高)
批量理解:
- 先阅读 2-3 个相关文件,再综合分析,而不是读完一个就提问
- 对于“X 如何工作”这类问题,使用
deepsearch+deepsearch_read,而不是多次关键词搜索
避免常见的 token 浪费:
- 知道目标仓库时,不要搜索所有仓库
- 对于简单的“查找全部”查询,不要使用
deepsearch——keyword_search更快 - 不要重新阅读本次对话中已经看过的文件
查询模式
| 意图 | 查询 |
|---|---|
| React hooks | file:.*\.tsx$ use[A-Z].*= \( |
| API 路由 | file:src/api app\.(get|post|put|delete) |
| 错误处理 | catch.*Error|\.catch\( |
| 类型定义 | file:types/ export (interface|type) |
| 测试设置 | file:.*\.test\. beforeEach|beforeAll |
| 配置文件 | file:(webpack|vite|rollup)\.config |
| CI/CD | file:\.github/workflows deploy |
更多模式请参阅 query-patterns.md。
输出格式
搜索结果:
- 以简要摘要的形式呈现,而不是原始工具输出
- 突出显示最相关的文件和行
- 仅在能直接回答问题时包含代码片段
代码说明:
- 以一句话总结开头
- 使用代码库自身的术语
- 引用具体文件和函数
建议:
- 如需采取行动,请以编号步骤呈现
- 链接到代码库中发现的具体模式
- 指出应重复使用的现有工具
常见错误
| 错误 | 修正方法 |
|---|---|
| 搜索所有仓库 | 添加 repo:^github.com/org/repo$ |
| 结果过多 | 添加 file: 模式或关键词 |
| 遗漏相关代码 | 尝试使用 nls_search 进行语义匹配 |
| 未能理解上下文 | 使用 deepsearch_read |
| 猜测模式 | 使用 read_file 阅读实现 |
原则
- 从较小范围开始,必要时再扩大
- 串联工具:搜索 → 阅读 → 查找引用 → 查看定义
- 查看测试中的使用示例
- 先阅读,再生成
评论
支持 Markdown