mcpField
G
github-search

github-search

github.com/samhvw8開発1566 回インストール1 日前に更新
リポジトリ

github-search について

github-searchは、GitHubのリポジトリ、コード、Issue、PRを検索する方法とコマンド例をまとめたスキルです。長い語句から短い語句へ検索を広げるキーワード戦略と、複雑な条件に対応する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
PR を検索gh search prs "<query>" --limit 30

キーワード戦略:類義語と長い語句から短い語句へ

GitHub は、検索クエリのトークンをリポジトリの名前+説明+README(コード検索の場合はファイルの内容)と照合します。意味的な照合はありません。テキストに近い語句が含まれていなければ、そのリポジトリは検索結果に表示されません。検索で見つからない理由は次の 2 つです。

  • 単語が異なる — 作成者が、試していない類義語を使っています。
  • 語句が長すぎる — 複合語句がどのリポジトリの名前や説明よりも具体的すぎるため、一致するものがありません。

対策:キーワードの候補を生成し、長い語句から短い語句へと段階的に検索します。

# ❌ 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
ルール理由
長い語句から短い語句へ単語を 1 つ削るごとに一致する範囲が広がります。最も短い主要な名詞を使うと、トピックがなく説明が簡潔なリポジトリも見つかります
類義語を生成する作成者やユーザーによって異なる語句が使われます(headless と browserless、agent と bot など)。類義語も検索対象に含めましょう
長い語句だけで検索しない長い複合語句 1 つだけの検索は最も結果が得られにくい方法です。それだけで検索すると、この分野のリポジトリを見落とします
並列で実行するすべての候補を同時に呼び出してまとめて検索します。コストは同じで、網羅率は大幅に向上します
言語ごとに繰り返す対象言語ごとに、その言語で自然な語句(无头浏览器、автоматизация браузера など)を使って段階的に検索します

直接 API 検索(Web と同じ検索結果)

複雑なクエリで gh search repos の結果が Web 検索と異なる場合:

# 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 にアクセスし、Web とまったく同じ動作で検索します
  • 複数の言語、トピックの除外、スター数のフィルターを組み合わせる場合に必要です

よく使う 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=... を使います

コメント