The maintenance criterion was unfalsifiable, so entries went years without a push before anyone noticed by hand. The updater already fetches pushedAt; warn when it is older than 90 days, alongside the existing rename and archival annotations. Archived repos keep their own warning rather than getting two. Quantify the criterion in the README and CONTRIBUTING: dropped after 6 months idle, flagged past 3, with removal still a human decision. Also correct two CONTRIBUTING claims the code contradicts — duplicates are rejected by CI rather than ignored at run time, and renames do carry history over once canonicalKeyMigrations has the old key.
2.4 KiB
Contributing
Adding an Agent
Edit data/agents.yml and add an entry:
agents:
- owner: github-username-or-org
repo: repository-name
category: cli
Required fields: owner, repo, category
Optional fields: notes (for clarifications or caveats)
Field Reference
| Field | Type | Required | Description |
|---|---|---|---|
owner |
string | Yes | GitHub user or organization that owns the repo |
repo |
string | Yes | Repository name on GitHub |
category |
string | Yes | One of the values listed below |
notes |
string | No | Additional context or disclaimers |
Valid Categories
- cli — Command-line tools and CLI wrappers
- ide — Standalone editors and IDEs
- extension — Editor extensions (VS Code, Neovim, etc.)
- library — Libraries and SDKs
- research — Research papers and proof-of-concept projects
- web — Web-based tools and online IDEs
Handling Duplicates and Changes
Duplicate repos: CI rejects them. go run . -check fails on a case-insensitive owner/repo match, so a duplicate never reaches a daily run.
Renamed repos: GitHub redirects the old slug, so the updater keeps working — it prints a ::warning:: naming the new slug. Update owner/repo in data/agents.yml to the new slug and add the old key to canonicalKeyMigrations in history.go, or the repo's star history detaches and its deltas show —.
Deprecation: To remove an agent, delete its entry from data/agents.yml. The next run drops it from the README; its history stays in data/history.jsonl, so re-adding the entry later restores its star chart.
Staleness: An entry with no push in 6 months is dropped. Past 3 months the updater prints a ::warning:: naming the repo and its days idle, so the daily run surfaces candidates without anyone auditing the list by hand. Removal stays a human decision: a repo can go quiet between releases, and a historically significant one (gpt-engineer) is kept with a notes marker instead.
PR Review
- Keep PRs to changes in
data/agents.ymlonly (do not editREADME.mdordata/history.jsonl) - The daily GitHub Actions workflow (runs at 00:00 UTC) picks up merged PRs automatically
- No manual review required; the updater regenerates the README after your PR merges
For local testing before opening a PR, see LOCAL_DEV.md.