mcpField
G
github-search

github-search

github.com/samhvw8开发1566 次安装1 天前更新
代码仓库

关于 github-search

github-search 是一项为 GitHub 搜索提供方法和命令示例的技能,面向查找仓库、代码及协作记录的开发者。它强调生成关键词变体、由长到短级联搜索,并介绍复杂查询的 API 用法。

主要功能

  1. 01搜索仓库、代码、Issue 和 PR
  2. 02关键词变体与长短查询级联
  3. 03并行运行多组搜索词
  4. 04使用 GitHub API 执行复杂查询
  5. 05通过限定条件筛选结果

适用场景

  1. 01按语言和星标数查找仓库
  2. 02搜索特定库的代码示例
  3. 03查找开放的缺陷或功能讨论
  4. 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
搜索 PRgh 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 Xasc 或 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

提示

  1. 查询中包含特殊字符时,请加引号:gh search repos "stars:>500"
  2. 多个语言表示 OR:language:rust language:go 匹配任意一种语言
  3. 使用 --json 进行脚本处理:--json name,url,stargazersCount
  4. 日期范围:pushed:2024-01-01..2024-06-01
  5. 数值范围:stars:100..500
  6. 复杂查询请使用 gh api:当 gh search repos 返回意外结果时,使用 gh api search/repositories?q=... 以获得与网页端完全一致的结果

评论

支持 Markdown