An Agent Skill for evaluating GitHub developers as potential hires. Uses the gh CLI to analyze commits, PRs, contribution patterns, and README signals — with built-in AI spam detection to filter out padded profiles.
npx skills add oss-codes/grepdev --skill candidate-findergit clone https://github.com/oss-codes/grepdev.git
cp -r grepdev/candidate-finder ~/.claude/skills/ # Claude Code
cp -r grepdev/candidate-finder ~/.config/opencode/skills/ # OpenCode- Discovers candidates from repo contributors, topic searches, or commit history
- Deep profile analysis — README, bio, contribution spread, pinned repos
- Contact extraction — Email, LinkedIn, Twitter/X, blog, portfolio, Discord
- Configurable spam detection — Filter AI spam, auto PRs, auto commits, git farming
- Export to any format — Table (default), CSV, JSON, or custom templates
- Scores 0-100 based on real signals: cross-org contributions, PR quality, community engagement
Once installed, invoke with your agent:
/candidate-finder find top contributors in cloudflare/agents
Or ask naturally:
Evaluate developer <username> for a systems role
Screen contributors in cloudflare/agents
Export candidates from cloudflare/agents as CSV with contact info
No agent required — run the Python script directly:
pip install requests python-dotenv
# Evaluate top contributors from a repo
python candidate-finder/scripts/candidate_finder.py repo cloudflare/agents
# Evaluate specific users
python candidate-finder/scripts/candidate_finder.py users <username1> <username2>
# Export as CSV with full contact info
python candidate-finder/scripts/candidate_finder.py repo cloudflare/agents --format csv --output candidates.csv
# Custom spam filters (e.g., disable auto-PR detection for DevOps roles)
python candidate-finder/scripts/candidate_finder.py users <username> --no-auto-prs --no-auto-commits
# Custom export template for recruiter outreach
python candidate-finder/scripts/candidate_finder.py users <username1> <username2> --format custom \
--template "{name}|{email}|{linkedin}|{portfolio}|{github}" \
--output outreach.csv
# Include pinned repos for deeper contact extraction
python candidate-finder/scripts/candidate_finder.py users <username> --include-pinned --format jsonRequires GitHub CLI authenticated (gh auth login).
grepdev/
├── candidate-finder/
│ ├── SKILL.md # Agent instructions (gh CLI commands, scoring rubric, export formats)
│ ├── ai-spam-signals.md # Detection heuristics & regex patterns (configurable filters)
│ └── scripts/
│ └── candidate_finder.py # Standalone Python implementation (contact extraction, CSV/JSON/custom export)
├── deploy.sh # One-command GitHub deployment script
└── README.md # This file
- GitHub CLI (
gh) authenticated jq(for JSON parsing in CLI commands)- Python 3.8+ (for standalone script only)
| Factor | Weight | Signal |
|---|---|---|
| Commit history depth | +25 | Years active, natural gaps |
| Cross-org contributions | +20 | Contributed to repos they don't own |
| PR quality | +20 | Non-trivial diffs, review cycles |
| LinkedIn presence | +10 | Found in README/bio |
| Community signals | +15 | Followers, issues closed, reviews given |
| Stars on own work | +10 | Others found their work useful |
| AI spam flags | −30 | Subtract 8pts per red flag |
All filters are configurable via CLI flags. Disable any filter that doesn't fit your use case.
| Filter | Detects | Disable Flag |
|---|---|---|
| AI Spam | Copilot/AI-generated commits | --no-ai-spam |
| Auto PRs | Dependabot, Renovate, Snyk | --no-auto-prs |
| Auto Commits | CI auto-commits (Actions, pre-commit) | --no-auto-commits |
| Git Farming | Mass trivial commits to own repos | --no-git-farming |
| Burst Uploads | >20 commits in a single day | --no-burst-uploads |
| Trivial PRs | PRs with <5 lines changed | --no-trivial-prs |
| Hacktoberfest | Hacktoberfest repo padding | --no-hacktoberfest |
See candidate-finder/ai-spam-signals.md for full heuristics and when to disable each filter.
MIT