github-search について
github-searchは、GitHubのリポジトリ、コード、Issue、PRを検索する方法とコマンド例をまとめたスキルです。長い語句から短い語句へ検索を広げるキーワード戦略と、複雑な条件に対応する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(コード検索の場合はファイルの内容)と照合します。意味的な照合はありません。テキストに近い語句が含まれていなければ、そのリポジトリは検索結果に表示されません。検索で見つからない理由は次の 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 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 対応