关于 github-search
github-search 是一项为 GitHub 搜索提供方法和命令示例的技能,面向查找仓库、代码及协作记录的开发者。它强调生成关键词变体、由长到短级联搜索,并介绍复杂查询的 API 用法。
主要功能
- 01搜索仓库、代码、Issue 和 PR
- 02关键词变体与长短查询级联
- 03并行运行多组搜索词
- 04使用 GitHub API 执行复杂查询
- 05通过限定条件筛选结果
适用场景
- 01按语言和星标数查找仓库
- 02搜索特定库的代码示例
- 03查找开放的缺陷或功能讨论
- 04排除指定主题以缩小仓库范围
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ samhvw8/ dotfiles --skill github-search安装后在 Claude Code 中输入/github-search确认已加载。
详细介绍
GitHub 搜索
快速命令
| 目标 | 命令 |
|---|---|
| 搜索仓库 | gh search repos "<query>" --limit 30 |
| 搜索代码 | gh search code "<query>" --limit 30 |
| 搜索议题 | gh search issues "<query>" --limit 30 |
| 搜索 PR | gh search prs "<query>" --limit 30 |
关键词策略:变体与由长到短
GitHub 会将查询词与仓库的名称 + 描述 + README匹配(代码搜索则匹配文件内容)。它不会进行语义匹配——如果仓库文本中没有与你的词语接近的词,该仓库就不会出现在搜索结果中。搜索不到通常有两个原因:
- 词不对——作者使用了你没想到的同义词。
- 太长——组合短语比任何仓库的名称或描述都更具体,因此没有结果。
解决方法:生成关键词变体,并按从长到短的顺序逐步搜索。
# ❌ Brittle — one long compound, matches almost nothing
gh search repos "AI powered headless browser automation framework"
# ✅ Variants + length cascade — run in parallel, shorter terms guarantee coverage
gh search repos "headless browser automation" --sort stars --limit 15
gh search repos "headless browser" --sort stars --limit 15
gh search repos "browser automation" --sort stars --limit 15
gh search repos "browserless" --sort stars --limit 15 # synonym
gh search repos "browser" --sort stars --limit 15 # shortest, widest net
| 规则 | 原因 |
|---|---|
| 由长到短 | 每删去一个词,匹配范围就会扩大;最短的核心名词能搜到没有主题标签、描述简短的仓库 |
| 生成变体 | 作者和用户会选择不同的词(headless 与 browserless、agent 与 bot)——应覆盖这些同义词 |
| 不要只搜长词 | 单个较长的组合词是最脆弱的查询——如果只搜它,就会漏掉整个领域 |
| 并行运行 | 将所有变体批量并行调用;成本相同,覆盖范围却大得多 |
| 针对每种语言重复搜索 | 使用目标语言的本地词汇逐步搜索(无头浏览器、автоматизация браузера) |
直接调用 API 搜索(与网页结果完全一致)
对于 gh search repos 返回结果与网页搜索不同的复杂查询:
# Template - URL-encodes query automatically
gh api "search/repositories?q=$(printf '%s' 'YOUR_QUERY_HERE' | jq -sRr @uri)&sort=updated&per_page=30" --jq '.items[].full_name'
示例 - 多语言并排除特定结果:
gh api "search/repositories?q=$(printf '%s' 'stars:>500 language:rust language:go language:TypeScript language:javascript -topic:ethereum -topic:cryptocurrency -topic:blockchain -topic:bitcoin -topic:web3' | jq -sRr @uri)&sort=updated&per_page=10" --jq '.items[].full_name'
为什么要使用这种方式?
gh search repos是一个便捷封装,使用自己的查询解析方式gh api search/repositories会调用原始 API,搜索行为与网页完全一致- 组合使用多种语言、排除主题和星标筛选条件时,必须使用此方式
常见的 jq 提取方式:
| 输出 | jq 筛选器 |
|---|---|
| 仅名称 | --jq '.items[].name' |
| 完整名称 | --jq '.items[].full_name' |
| 包含星标数 | --jq '.items[] | "\(.full_name) ⭐\(.stargazers_count)"' |
| URL | --jq '.items[].html_url' |
| 完整 JSON | (省略 --jq) |
模式
查找仓库
适用场景: 用户想按条件查找项目或仓库
使用: gh search repos
# Basic search with stars
gh search repos "stars:>500 language:rust" --sort=stars --limit=50
# Multiple languages (OR logic)
gh search repos "language:rust language:go language:typescript"
# Exclude topics
gh search repos "stars:>1000 -topic:cryptocurrency -topic:blockchain"
# By topic
gh search repos "topic:cli topic:terminal stars:>100"
# Recently updated (pick a date a few months back)
gh search repos "language:python pushed:>YYYY-MM-DD"
输出格式:
--json name,url,description,stargazersCount # JSON output
--web # Open in browser
查找代码示例
适用场景: 用户想了解如何使用某个库
使用: gh search code
# Find usage patterns
gh search code "from zod import" --limit=20
gh search code "import { z } from 'zod'" --limit=20
# In specific file types
gh search code "useQuery" extension:tsx --limit=30
# In specific paths
gh search code "tanstack/query" path:src/ extension:ts
# Exact phrase
gh search code '"createTRPCRouter"' extension:ts
专业提示: 与仓库筛选条件结合,获取更聚焦的结果:
gh search code "pattern" repo:owner/repo
查找议题/讨论
适用场景: 用户正在查找错误报告、功能请求或讨论
使用: gh search issues 或 gh search prs
# Open issues with label
gh search issues "is:open label:bug repo:facebook/react"
# PRs by author
gh search prs "author:username is:merged"
# Issues mentioning error
gh search issues '"connection refused" language:go'
查询限定符参考
仓库搜索
| 限定符 | 示例 | 描述 |
|---|---|---|
stars: | stars:>1000、stars:100..500 | 星标数 |
forks: | forks:>100 | 派生数 |
language: | language:rust | 主要语言 |
topic: | topic:cli | 仓库主题 |
-topic: | -topic:blockchain | 排除主题 |
pushed: | pushed:>2024-01-01 | 最近推送日期 |
created: | created:>2023-01-01 | 创建日期 |
license: | license:mit | 许可证类型 |
archived: | archived:false | 归档状态 |
is: | is:public、is:private | 可见性 |
代码搜索
| 限定符 | 示例 | 描述 |
|---|---|---|
extension: | extension:ts | 文件扩展名 |
path: | path:src/ | 文件路径 |
repo: | repo:owner/name | 指定仓库 |
language: | language:javascript | 代码语言 |
filename: | filename:package.json | 文件名 |
常用标志
| 标志 | 描述 |
|---|---|
--limit N | 结果数量(最多 1000 条) |
--sort X | 排序方式:stars、forks、updated、best-match |
--order X | asc 或 desc |
--json FIELDS | 输出包含指定字段的 JSON |
--web | 在浏览器中打开结果 |
常见用例
“查找热门的 X 仓库”
gh search repos "language:X stars:>500" --sort=stars --limit=50
“人们如何使用库 Y”
gh search code "import Y" extension:ts --limit=30
gh search code "from Y import" extension:py --limit=30
“查找类似 Z 但排除加密货币的仓库”
gh search repos "topic:Z -topic:cryptocurrency -topic:blockchain -topic:web3"
“查找近期活跃的项目”
gh search repos "language:go pushed:>YYYY-MM-DD stars:>100" --sort=updated
提示
- 查询中包含特殊字符时,请加引号:
gh search repos "stars:>500" - 多个语言表示 OR:
language:rust language:go匹配任意一种语言 - 使用
--json进行脚本处理:--json name,url,stargazersCount - 日期范围:
pushed:2024-01-01..2024-06-01 - 数值范围:
stars:100..500 - 复杂查询请使用
gh api:当gh search repos返回意外结果时,使用gh api search/repositories?q=...以获得与网页端完全一致的结果
评论
支持 Markdown