Files
antigravity-skills-reference/skills/oss-hunter/bin/hunter.py

57 lines
1.9 KiB
Python

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()