Starepo
Search your GitHub stars with semantic search
Install / Use
/learn @yangyang0507/StarepoREADME
Starepo
Search your GitHub starred repositories with semantic search.
English | 简体中文
Features
- 🔍 Semantic Search - Natural language queries powered by local embeddings
- ⚡ Fast Keyword Search - Full-text search fallback for instant results
- 🔃 Flexible Sorting - Sort results by stars, forks, starred date, or updated date
- 🤖 MCP Server - Integrate with Claude Desktop, Cursor, and other AI tools
- 🔐 Zero Config - GitHub Device Flow authentication, no tokens needed
- 💾 Local Storage - All data stored locally with LanceDB (no compilation required)
- 🌍 Multilingual - Supports English, Chinese, and other languages
Installation
npm install -g starepo
Or use with npx (no installation required):
npx starepo <command>
Agent Integration (skills.sh)
Install the starepo skill into Claude Code, Cursor, and other AI agents with one command:
npx skills add yangyang0507/starepo
Once installed, your AI agent can search your GitHub stars directly. Just ask naturally:
"Find my starred repos about semantic search" "Show me TypeScript repos I starred this month"
MCP Server Integration
Starepo can run as an MCP server to integrate with AI assistants.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"starepo": {
"command": "starepo",
"args": ["serve"]
}
}
}
Or if installed locally:
{
"mcpServers": {
"starepo": {
"command": "npx",
"args": ["starepo", "serve"]
}
}
}
Available MCP Tools
search_stars(query?, language?, topic?, since?, until?, days?, limit?)- Search repositories with combined filterslist_stars(query?, language?, topic?, since?, until?, days?, limit?)- List with combined filtersget_star_info(full_name)- Get repository detailssync_stars(force?)- Trigger smart or full sync from GitHub
MCP Resources
starepo://stars- All starred repositories overviewstarepo://stars/{owner}/{repo}- Specific repository details (direct URI access; not enumerated inresources/list)
Quick Start
1. Authenticate with GitHub
starepo auth
Follow the prompts to authorize via GitHub Device Flow.
2. Sync Your Stars
# Smart sync (incremental if last_sync exists, full otherwise)
starepo sync
# Force full sync
starepo sync --force
# Skip embedding generation (faster)
starepo sync --no-embeddings
3. Search
# Semantic search (natural language)
starepo search "react state management library"
starepo search "ai design tool"
# Search with structured filters
starepo search "react" --lang TypeScript --topic hooks
starepo search --query "state" --since 2026-03-01 --until 2026-03-08
starepo search --lang TypeScript --days 7
# Limit results
starepo search "python web framework" --limit 5
# Sort results
starepo search "rust cli" --sort stars
starepo search "react" --sort forks --order asc
# JSON output
starepo search "rust cli" --json
Commands
auth
Authenticate with GitHub (runs automatically on first use).
starepo auth
starepo auth --force # Re-authenticate
sync
Sync your GitHub starred repositories.
starepo sync # Smart sync (incremental if synced before, full otherwise)
starepo sync --force # Force full sync
starepo sync --no-embeddings # Skip embeddings
Note: First sync generates embeddings for semantic search (~0.5s per repo). For 1000+ stars, this takes ~10 minutes.
embed
Generate or regenerate embeddings for semantic search.
starepo embed # Generate missing embeddings only
starepo embed --force # Regenerate all embeddings
Use cases:
- Resume interrupted embedding generation
- Upgrade to a newer embedding model
- Fix corrupted embeddings
search [query]
Search your starred repositories.
starepo search "query"
starepo search --query "query"
starepo search "query" --limit 10
starepo search "query" --lang TypeScript --topic react
starepo search "query" --since 2026-03-01 --until 2026-03-08
starepo search --lang TypeScript --days 7
starepo search "query" --sort stars # Sort by star count (desc)
starepo search "query" --sort forks --order asc # Sort by forks ascending
starepo search "query" --json
Search modes:
- If embeddings exist: Hybrid search (vector + keyword)
- Otherwise: Keyword search (full-text fallback)
Sort options (--sort): relevance (default), stars, forks, starred, updated
Order options (--order): desc (default), asc
list
List your starred repositories with filters.
starepo list
starepo list --query "react"
starepo list --lang TypeScript
starepo list --topic ai
starepo list --since 2026-03-01 --until 2026-03-08
starepo list --days 7
starepo list --limit 20
starepo list --sort stars # Sort by star count (desc)
starepo list --sort starred --order asc # Oldest starred first
starepo list --sort updated # Recently updated first
starepo list --json
Sort options (--sort): starred (default), stars, forks, updated
Order options (--order): desc (default), asc
info <owner/repo>
Show detailed information about a repository.
starepo info facebook/react
serve
Start the MCP server (stdio mode).
starepo serve
Configuration
All data is stored in XDG-compliant directories:
- Config:
~/.config/starepo/auth.json- GitHub tokenmeta.json- Sync metadata
- Data:
~/.local/share/starepo/lancedb/- LanceDB database with embeddings
Architecture
Tech Stack
| Component | Technology | Why |
|-----------|-----------|-----|
| Language | TypeScript (Node.js) | MCP SDK native support |
| GitHub API | @octokit/rest | Official SDK with pagination |
| Auth | @octokit/auth-oauth-device | CLI-friendly Device Flow |
| Storage | @lancedb/lancedb | Zero-compilation vector DB |
| Embeddings | @xenova/transformers | Local, offline-capable |
| CLI | commander | Lightweight, type-safe |
| MCP | @modelcontextprotocol/sdk | Official SDK |
Search Strategy
L1: Keyword Search (FTS)
- LanceDB INVERTED index on name/description/topics
- Fallback to filter-based search if index unavailable
- Instant results, zero dependencies
L2: Vector Search
- Local embeddings via
Xenova/bge-m3(1024-dim) - Cosine similarity ranking
- Supports natural language and multilingual queries
L3: Hybrid Search
- Combines vector + keyword results
- Deduplicates and re-ranks by relevance
- Best of both worlds
Development
# Clone the repository
git clone https://github.com/yourusername/starepo.git
cd starepo
# Install dependencies
npm install
# Build
npm run build
# Dev mode (with tsx)
npm run dev -- search "query"
# Type check
npx tsc --noEmit
# Test locally
npm link
starepo --help
Troubleshooting
No search results
Run starepo sync to ensure:
- Data is synced from GitHub
- Embeddings are generated (first sync only)
Slow first sync
Embedding generation takes ~0.5s per repo. For 1000+ stars:
- Use
--no-embeddingsfor faster initial sync - Generate embeddings later by running
starepo syncagain
Command not found after global install
Ensure npm global bin directory is in your PATH:
npm config get prefix
# Add <prefix>/bin to your PATH
License
MIT
Credits
Built with:
- LanceDB - Modern vector database
- Transformers.js - Local ML inference
- Octokit - GitHub API client
- MCP SDK - Model Context Protocol
Related Skills
apple-reminders
353.3kManage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
gh-issues
353.3kFetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]
node-connect
353.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
oracle
353.3kBest practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).
