feat: add OSS Hunter skill for automated contribution hunting
This commit is contained in:
56
skills/oss-hunter/bin/hunter.py
Normal file
56
skills/oss-hunter/bin/hunter.py
Normal file
@@ -0,0 +1,56 @@
|
||||
import os
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
def run_gh_command(args):
|
||||
try:
|
||||
result = subprocess.run(['gh'] + args, capture_output=True, text=True, check=True)
|
||||
return result.stdout
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error running gh command: {e.stderr}", file=sys.stderr)
|
||||
return None
|
||||
|
||||
def hunt():
|
||||
print("🎯 Hunting for high-impact OSS issues...")
|
||||
|
||||
# 1. Find trending repos (stars > 1000 created/updated recently)
|
||||
repos_json = run_gh_command(['api', 'search/repositories?q=stars:>1000+pushed:>2026-02-01&sort=stars&order=desc', '--jq', '.items[] | {full_name: .full_name, stars: .stargazers_count, description: .description}'])
|
||||
|
||||
if not repos_json:
|
||||
print("No trending repositories found.")
|
||||
return
|
||||
|
||||
repos = [json.loads(line) for line in repos_json.strip().split('\n')[:10]]
|
||||
|
||||
dossier = []
|
||||
|
||||
for repo in repos:
|
||||
name = repo['full_name']
|
||||
print(f"Checking {name}...")
|
||||
|
||||
# 2. Search for help-wanted issues
|
||||
issues_json = run_gh_command(['issue', 'list', '--repo', name, '--label', 'help wanted', '--json', 'number,title,url', '--limit', '3'])
|
||||
|
||||
if issues_json:
|
||||
try:
|
||||
issues = json.loads(issues_json)
|
||||
for issue in issues:
|
||||
dossier.append({
|
||||
'repo': name,
|
||||
'stars': repo['stars'],
|
||||
'number': issue['number'],
|
||||
'title': issue['title'],
|
||||
'url': issue['url']
|
||||
})
|
||||
except json.JSONDecodeError:
|
||||
pass
|
||||
|
||||
print("\n--- 📂 OSS CONTRIBUTION DOSSIER ---")
|
||||
for item in dossier:
|
||||
print(f"\n[{item['repo']} ★{item['stars']}]")
|
||||
print(f"Issue #{item['number']}: {item['title']}")
|
||||
print(f"Link: {item['url']}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
hunt()
|
||||
Reference in New Issue
Block a user