mcpField
S
searching-sourcegraph

searching-sourcegraph

github.com/cline开发401.5k 次安装15 周前更新
代码仓库

关于 searching-sourcegraph

用于指导开发者借助 Sourcegraph 搜索代码库的技能,帮助在实现、排错和代码审查前查找现有模式。它按搜索目标推荐工具,并强调缩小范围、追踪引用和阅读实现。

主要功能

  1. 01按目标选择搜索工具
  2. 02限定仓库、文件和语言范围
  3. 03追踪符号引用与定义
  4. 04搜索提交、差异和版本
  5. 05提供实现与排错工作流

适用场景

  1. 01实现功能前查找相似代码
  2. 02排查错误并追踪调用链
  3. 03理解陌生代码库的实现
  4. 04审查变更并检查近期修改

安装

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

$npx skills add https://github.com/cline/skills --skill searching-sourcegraph

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

query-patterns.md
examples/
common-searches.md
workflows/
code-review.md
debugging-issue.md
fixing-bug.md
implementing-feature.md
understanding-code.md

详细介绍

搜索 Sourcegraph

先搜索,再构建。复用现有模式可以减少 Token、确保一致性,并找到经过验证的解决方案。

工具选择逻辑

从这里开始:

  1. 知道确切的符号或模式? → keyword_search
  2. 知道概念,但不知道代码? → nls_search
  3. 需要了解原理或原因? → deepsearch → deepsearch_read
  4. 追踪符号的用法? → find_references
  5. 需要查看完整实现? → go_to_definition → read_file
  6. 需要了解用户参与过哪些仓库? → 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 hooksfile:.*\.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/CDfile:\.github/workflows deploy

更多模式请参阅 query-patterns.md。

输出格式

搜索结果:

  • 以简要摘要的形式呈现,而不是原始工具输出
  • 突出显示最相关的文件和行
  • 仅在能直接回答问题时包含代码片段

代码说明:

  • 以一句话总结开头
  • 使用代码库自身的术语
  • 引用具体文件和函数

建议:

  • 如需采取行动,请以编号步骤呈现
  • 链接到代码库中发现的具体模式
  • 指出应重复使用的现有工具

常见错误

错误修正方法
搜索所有仓库添加 repo:^github.com/org/repo$
结果过多添加 file: 模式或关键词
遗漏相关代码尝试使用 nls_search 进行语义匹配
未能理解上下文使用 deepsearch_read
猜测模式使用 read_file 阅读实现

原则

  • 从较小范围开始,必要时再扩大
  • 串联工具:搜索 → 阅读 → 查找引用 → 查看定义
  • 查看测试中的使用示例
  • 先阅读,再生成

评论

支持 Markdown