A CLI tool for searching GitHub code and viewing results in your editor.
This tool requires the GitHub CLI (gh) to be:
- Installed and available in your PATH
- Authenticated with your GitHub account
Without these requirements, the tool will fail to work due to GitHub API rate limiting.
-
Install GitHub CLI:
- macOS:
brew install gh - Other installation methods
- macOS:
-
Authenticate with GitHub:
gh auth login
Follow the prompts to complete authentication.
-
Install ghx:
pnpm add -g @johnlindquist/ghx
ghx "your search query" [options]--pipe- Output results directly to stdout--debug- Output code fence contents for testing--limit, -L <n>- Maximum number of results to fetch (default: 50)--context, -c <n>- Number of context lines around matches (default: 20)--max-filename, -f <n>- Maximum length of generated filenames (default: 50)
You can use either CLI flags or GitHub's search qualifiers:
CLI Flags:
--filename <name>- Search in files with a specific name--extension <ext>- Search files with specific extension--language <lang>- Search in a specific programming language--repo <owner/repo>- Search in a specific repository--path <path>- Search in a specific file path--size <n>- Files that are n bytes in size--fork- Include or exclude forked repositories
Examples:
# Search for TypeScript config files
ghx --filename tsconfig.json "strict"
# Find React components
ghx --language typescript --extension tsx "useState"
# Search in specific repo
ghx --repo facebook/react "useState"
# Search and pipe results to stdout
ghx --pipe --filename tsconfig.json "strict"
# Pipe results to a file
ghx --pipe --language typescript "useState" > results.md
# Get more results
ghx --limit 100 --filename package.json "dependencies"
# Show more context around matches
ghx --context 50 --language typescript "useState"
# Allow longer filenames
ghx --max-filename 100 --filename package.json "devDependencies"
# Combine options
ghx -L 100 -c 30 -f 75 --repo facebook/react "hooks"Results are saved as markdown files in your system's config directory:
- macOS:
~/Library/Preferences/johnlindquist/ghx-nodejs/searches/ - Linux:
~/.config/johnlindquist/ghx-nodejs/searches/ - Windows:
%APPDATA%/johnlindquist/ghx-nodejs/searches/
On first run, ghx will prompt you to:
- Choose whether to automatically open results in an editor
- Specify your preferred editor command (e.g., 'code', 'cursor', 'vim')
You can change these settings by editing the config file in:
- macOS:
~/Library/Preferences/johnlindquist/ghx-nodejs/config.json - Linux:
~/.config/johnlindquist/ghx-nodejs/config.json - Windows:
%APPDATA%/johnlindquist/ghx-nodejs/config.json
- Searches GitHub code using the GitHub API
- Shows matching code snippets with context
- Saves results as markdown for easy viewing
- Handles rate limiting and authentication through GitHub CLI
- Opens results in Cursor (if available)
If you get authentication errors:
- Make sure GitHub CLI is installed:
gh --version - Make sure you're logged in:
gh auth status - Try logging in again:
gh auth login
# Clone the repo
git clone https://github.com/johnlindquist/ghx.git
# Install dependencies
pnpm install
# Run in development
pnpm dev
# Build
pnpm buildISC