A small set of standalone CLI scripts that discover GitHub repositories, grade them with a local Ollama model, then follow promising authors and star strong projects. State lives in a single SQLite file. No database server, no extra services.
Four independent step scripts live in scripts/, each runnable on its
own. main.py at the project root chains them together.
| Script | What it does |
|---|---|
scripts/fetch.py |
Pull N new repositories from GitHub Search and insert them into the DB. |
scripts/evaluate.py |
Clone unrated repos, ask Ollama for idea, skill, description, store. |
scripts/subscribe.py |
Follow profiles whose repos updated in the last W hours scored above X. |
scripts/star.py |
Star repos updated in the last W hours that scored above Y. |
main.py |
Runs fetch -> evaluate -> subscribe -> star once, or in an infinite loop. |
One SQLite table — entries — one row per repository:
| Column | Meaning |
|---|---|
repo |
owner/name (primary key) |
profile |
repository owner login |
clone_url |
git URL used for the shallow clone |
html_url |
browser URL |
created_at |
when the row was inserted (UTC ISO-8601) |
updated_at |
last time we touched the row (UTC ISO-8601) |
followed |
1 if we follow the profile, mirrored across rows |
starred |
1 if we star the repo |
idea |
1.0–10.0 novelty grade from Ollama |
skill |
1.0–10.0 engineering grade from Ollama |
description |
one-sentence English summary |
Scoring uses idea + skill so thresholds live in [2.0, 20.0].
- Python 3.11+ (standard library only)
- Git CLI
- Network access to GitHub
- A running Ollama with the configured model installed
(e.g.
ollama pull qwen2.5-coder:7b) - A GitHub personal access token with
user:followandpublic_reposcopes
python3 -m venv .venv
source .venv/bin/activate
cp env.example .env
# edit .env: at minimum set GITHUB_TOKEN and OLLAMA_URL / OLLAMA_MODELrequirements.txt exists but is empty — no third-party packages are needed.
Every script reads .env from the project root. Flags override env values.
python3 scripts/fetch.py -n 5python3 scripts/evaluate.py # rate all pending
python3 scripts/evaluate.py -l 10 # rate up to 10python3 scripts/subscribe.py -s 14 -w 24
python3 scripts/subscribe.py --dry-runpython3 scripts/star.py -s 16 -w 24
python3 scripts/star.py --dry-runpython3 main.py # one cycle, defaults from .env
python3 main.py -n 5 --subscribe-threshold 14 --star-threshold 16 -w 24
python3 main.py --dry-run # safe rehearsal
python3 main.py -i --sleep 600 # loop foreverThe default cycle is exactly what the project was built around:
- fetch 5 new repos
- evaluate them
- follow profiles updated in the last 24h with
idea + skill > 14 - star repos updated in the last 24h with
idea + skill > 16
data/followme.sqlite— single source of truthdata/repo/— scratch clone directory, wiped between repos
The Ollama prompt asks for strict anchors:
1.0— trivial / junior5.0— ordinary / middle9.0— strong / senior
Both idea and skill are clamped into [1.0, 10.0].