mirror of
https://github.com/tiennm99/awesome-ai-dev-tools.git
synced 2026-10-11 03:13:05 +00:00
feat: widen scope to AI developer tools; enforce hard 1,000-star floor
The list was already drifting past "coding agents" — ADEs were admitted in the previous commit. Rather than keep widening criterion 1 one category at a time, it now describes the actual subject: developer tools built around AI. The dividing line becomes tools you use vs. building blocks you import, which keeps libraries, SDKs, model weights and skill collections out. The star floor drops from a soft "roughly 10,000+" to a hard 1,000: - enforceStarFloor drops any below-floor entry from the ranking and emits an ::error:: annotation, so the published list can never violate the rule. Dropping rather than failing keeps one bad entry from blocking the refresh of every other repo. - -check cannot catch this (star counts need the API, -check runs offline); docs/CONTRIBUTING.md says so explicitly. Side effect: Orkas (1,998 stars) now clears the floor it previously missed. go run . -check: 43 agents valid. go test ./...: ok.
This commit is contained in:
1 parent
21ad0d47a5
commit
c5d8561d8f
6 files changed
+81
-17
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# Awesome Coding Agents
|
||||
|
||||
> Curated ranking of AI agent coding tools, sorted by GitHub stars.
|
||||
> Curated ranking of AI-powered developer tools, sorted by GitHub stars.
|
||||
> Updated daily by GitHub Actions.
|
||||
|
||||
📊 **[Interactive dashboard with star-history charts →](https://tiennm99.github.io/awesome-coding-agents/)**
|
||||
@@ -68,8 +68,8 @@
|
||||
|
||||
**Inclusion criteria** — a repo belongs on this list when it is:
|
||||
|
||||
1. **An AI coding agent, or an environment for running them** — either a tool that autonomously writes, edits, or reviews code, or an *agent development environment* (ADE) that runs and coordinates those agents as its primary purpose. Libraries, SDKs, prompt/skill collections, and observability-only layers remain out of scope.
|
||||
2. **Notable**: roughly **10,000+ GitHub stars** (the current list floor).
|
||||
1. **A developer tool built around AI** — something a developer uses to build software, where an LLM is central to what it does. That covers agents that write, edit, or review code; agent development environments that run and coordinate them; and AI-assisted editors, terminals, and review tools. Libraries, SDKs, model weights, and prompt or skill collections are out of scope — this list ranks tools you *use*, not building blocks you *import*.
|
||||
2. **At least 1,000 GitHub stars** — a hard floor, enforced by the updater. An entry below it is dropped from the ranking automatically, so the threshold is never waived for an individual entry.
|
||||
3. **Open source and actively maintained** — no push in **6 months** means the entry is dropped. The daily run flags anything past **3 months** for review, so the ranking reflects tools people can actually use today.
|
||||
|
||||
Archived or abandoned repos are kept only when they are historically significant, and are marked as such in [`data/agents.yml`](data/agents.yml).
|
||||
|
||||
+26
-11
@@ -26,20 +26,35 @@ Optional fields: `notes` (for clarifications or caveats)
|
||||
|
||||
## Scope
|
||||
|
||||
Two kinds of project belong here:
|
||||
This list ranks **developer tools built around AI** — things a developer uses to
|
||||
build software, where an LLM is central to what the tool does. In practice that
|
||||
spans several shapes:
|
||||
|
||||
1. **Coding agents** — they write, edit, or review code themselves.
|
||||
2. **Agent development environments (ADEs)** — their primary purpose is running and
|
||||
coordinating those agents: parallel worktrees, session management, remote or mobile
|
||||
control. Tag these `orchestration`.
|
||||
- **Coding agents** — they write, edit, or review code themselves.
|
||||
- **Agent development environments (ADEs)** — their primary purpose is running and
|
||||
coordinating those agents: parallel worktrees, session management, remote or
|
||||
mobile control. Tag these `orchestration`.
|
||||
- **AI-assisted editors, terminals, and review tools** — the developer stays in the
|
||||
driver's seat and the model accelerates the work.
|
||||
|
||||
An ADE earns a row because it is the surface a developer actually works in, the same way
|
||||
a coding agent is. What stays out is anything that only *assists* agents without being a
|
||||
place you run them: libraries and SDKs, prompt or skill collections, dashboards and
|
||||
observability-only layers, and single-purpose wrappers around one agent's config.
|
||||
The dividing line is **tools you use vs. building blocks you import**. Out of scope:
|
||||
libraries and SDKs, agent frameworks meant to be built on, model weights, prompt or
|
||||
skill collections, and dashboards that only observe a tool without being one.
|
||||
|
||||
The other two criteria in the [README](../README.md#contributing) — roughly 10,000+ stars
|
||||
and active maintenance — apply to both kinds equally.
|
||||
A tool also has to be *about* software development. General-purpose assistants and
|
||||
chat UIs do not qualify just because a developer could use them.
|
||||
|
||||
### The star floor is hard
|
||||
|
||||
**1,000 stars minimum.** This is not a judgement call and is not waived for
|
||||
individual entries, however good the tool is. The updater enforces it: any entry
|
||||
below the floor is dropped from the ranking and reported as an `::error::` in the
|
||||
Actions log (`enforceStarFloor` in `github.go`). Because star counts require the
|
||||
API, `go run . -check` cannot catch this offline — a below-floor entry passes CI
|
||||
and is then dropped by the next daily run, so check the count before opening a PR.
|
||||
|
||||
Maintenance requirements apply to every entry equally: no push in 6 months means
|
||||
removal, and the daily run warns past 3 months.
|
||||
|
||||
## Tag Vocabulary
|
||||
|
||||
|
||||
@@ -74,6 +74,13 @@ var graphqlURL = "https://api.github.com/graphql"
|
||||
// annotates the run.
|
||||
const staleWarnAfter = 90 * 24 * time.Hour
|
||||
|
||||
// minStars is the hard inclusion floor from the README's criteria. Unlike the
|
||||
// staleness window, this is not a judgement call: an entry below the floor is
|
||||
// dropped from the published ranking, so the list can never show a repo that
|
||||
// does not meet it. It lives here rather than in -check because star counts
|
||||
// need the API and -check runs offline.
|
||||
const minStars = 1000
|
||||
|
||||
// chunkSize is the max aliases per GraphQL request (GitHub node-limit safety margin).
|
||||
const chunkSize = 50
|
||||
|
||||
@@ -272,3 +279,19 @@ func doWithRetry(token string, body []byte) ([]byte, int, error) {
|
||||
}
|
||||
return nil, 0, fmt.Errorf("all %d attempts failed; last error: %w", maxRetries, lastErr)
|
||||
}
|
||||
|
||||
// enforceStarFloor drops entries below minStars and annotates each one as a run
|
||||
// error. Dropping rather than failing the run keeps one below-floor entry from
|
||||
// blocking the refresh of every other repo, while the ::error:: annotation
|
||||
// makes the removal impossible to miss in the Actions log.
|
||||
func enforceStarFloor(stats []Stat) []Stat {
|
||||
kept := make([]Stat, 0, len(stats))
|
||||
for _, s := range stats {
|
||||
if s.Stars < minStars {
|
||||
fmt.Printf("::error::repo %s has %d stars, below the %d minimum — dropped from the ranking; remove its entry from data/agents.yml\n", s.CanonicalKey, s.Stars, minStars)
|
||||
continue
|
||||
}
|
||||
kept = append(kept, s)
|
||||
}
|
||||
return kept
|
||||
}
|
||||
@@ -312,3 +312,24 @@ func TestFetchStats_StaleWarning(t *testing.T) {
|
||||
t.Errorf("missing archived warning %q in:\n%s", want, logs)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEnforceStarFloor(t *testing.T) {
|
||||
in := []Stat{
|
||||
{CanonicalKey: "a/above", Stars: minStars + 1},
|
||||
{CanonicalKey: "b/exactly", Stars: minStars},
|
||||
{CanonicalKey: "c/below", Stars: minStars - 1},
|
||||
{CanonicalKey: "d/zero", Stars: 0},
|
||||
}
|
||||
|
||||
got := enforceStarFloor(in)
|
||||
|
||||
want := []string{"a/above", "b/exactly"}
|
||||
if len(got) != len(want) {
|
||||
t.Fatalf("kept %d entries, want %d: %+v", len(got), len(want), got)
|
||||
}
|
||||
for i, w := range want {
|
||||
if got[i].CanonicalKey != w {
|
||||
t.Errorf("kept[%d] = %s, want %s", i, got[i].CanonicalKey, w)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -52,6 +52,11 @@ func run() error {
|
||||
return err
|
||||
}
|
||||
|
||||
stats = enforceStarFloor(stats)
|
||||
if len(stats) == 0 {
|
||||
return fmt.Errorf("no agents in %s meet the %d-star minimum", agentsPath, minStars)
|
||||
}
|
||||
|
||||
snapshots, deltas7, deltas30, err := appendHistory(historyPath, stats)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Awesome Coding Agents
|
||||
|
||||
> Curated ranking of AI agent coding tools, sorted by GitHub stars.
|
||||
> Curated ranking of AI-powered developer tools, sorted by GitHub stars.
|
||||
> Updated daily by GitHub Actions.
|
||||
|
||||
📊 **[Interactive dashboard with star-history charts →](https://tiennm99.github.io/awesome-coding-agents/)**
|
||||
@@ -33,8 +33,8 @@
|
||||
|
||||
**Inclusion criteria** — a repo belongs on this list when it is:
|
||||
|
||||
1. **An AI coding agent, or an environment for running them** — either a tool that autonomously writes, edits, or reviews code, or an *agent development environment* (ADE) that runs and coordinates those agents as its primary purpose. Libraries, SDKs, prompt/skill collections, and observability-only layers remain out of scope.
|
||||
2. **Notable**: roughly **10,000+ GitHub stars** (the current list floor).
|
||||
1. **A developer tool built around AI** — something a developer uses to build software, where an LLM is central to what it does. That covers agents that write, edit, or review code; agent development environments that run and coordinate them; and AI-assisted editors, terminals, and review tools. Libraries, SDKs, model weights, and prompt or skill collections are out of scope — this list ranks tools you *use*, not building blocks you *import*.
|
||||
2. **At least 1,000 GitHub stars** — a hard floor, enforced by the updater. An entry below it is dropped from the ranking automatically, so the threshold is never waived for an individual entry.
|
||||
3. **Open source and actively maintained** — no push in **6 months** means the entry is dropped. The daily run flags anything past **3 months** for review, so the ranking reflects tools people can actually use today.
|
||||
|
||||
Archived or abandoned repos are kept only when they are historically significant, and are marked as such in [`data/agents.yml`](data/agents.yml).
|
||||
|
||||
Reference in new issue
Block a user