feat: replace category with a multi-facet tag vocabulary

A single category could not describe tools that ship as a CLI, an editor
plugin and a desktop app at once, and 7 of the 40 entries were filed
under a surface they only partly match — cline is "an SDK, IDE extension
or CLI assistant" in one `extension` slot, Reasonix ships CLI, desktop
and VS Code under `cli`, warp is a terminal filed as `ide`.

Tags cover five facets: surface (at least one), model access, workflow,
integration, and origin (at most one). tagVocabulary in validate.go is
the single source of truth — the validator, its error messages, and the
dashboard's filter chips all derive from it, the last via a new facets
field in site/data.json.

The dashboard now filters on tags with multi-select chips grouped by
facet: OR within a facet, AND across facets, plus a clear-filters
control, and search matches tags as well as name and description. Only
tags some row actually carries get a chip, so chips and rows cannot
disagree. Tag pills are tinted per facet, replacing the category badge.

All 40 entries are tagged from each repo's own README, topics and docs;
CONTRIBUTING documents every tag and the evidence rule for applying one.
A leftover `category:` key now fails validation with a message naming
its replacement, rather than being silently ignored.

README.md and data/history.jsonl are the regenerated updater output.
This commit is contained in:
tiennm99 committed 2026-09-11 15:40:18 +07:00
1 parent e49c487700
commit eb12bcc2cb
16 files changed
+462 -205

No files matched your search

+46 -41
View File
@@ -1,136 +1,141 @@
# Curated list of AI agent coding tools.
# Edit this file to add, remove, or recategorize entries.
# Edit this file to add, remove, or retag entries.
# The daily GitHub Actions run will refresh stars and regenerate README.md.
#
# owner/repo must be the CURRENT canonical GitHub slug. When a tracked repo is
# renamed, update it here AND add a key migration in history.go so historical
# star data stays attached.
#
# tags describe each tool across five facets — surface (at least one required),
# model access, workflow, integration, and origin (at most one). The full
# vocabulary and the evidence rule for applying a tag live in
# docs/CONTRIBUTING.md; `go run . -check` rejects anything outside it.
agents:
- owner: Aider-AI
repo: aider
category: cli
tags: [terminal, byo-model, local-models, interactive, community]
- owner: cline
repo: cline
category: extension
tags: [editor-plugin, terminal, byo-model, local-models, interactive, mcp, community]
- owner: continuedev
repo: continue
category: extension
tags: [editor-plugin, terminal, byo-model, local-models, interactive, mcp, community]
- owner: anomalyco
repo: opencode
category: cli
tags: [terminal, desktop, byo-model, local-models, interactive, headless, mcp, community]
- owner: charmbracelet
repo: crush
category: cli
tags: [terminal, byo-model, local-models, interactive, mcp, community]
- owner: google-gemini
repo: gemini-cli
category: cli
tags: [terminal, single-vendor, interactive, headless, mcp, vendor]
notes: Google announced a closed-source successor; OSS repo may be retired
- owner: openai
repo: codex
category: cli
tags: [terminal, editor-plugin, single-vendor, interactive, headless, mcp, vendor]
- owner: aaif-goose
repo: goose
category: cli
tags: [terminal, desktop, byo-model, local-models, interactive, mcp, acp, community]
notes: Moved to the Agentic AI Foundation (Linux Foundation)
- owner: AntonOsika
repo: gpt-engineer
category: cli
tags: [terminal, byo-model, autonomous, community]
notes: Archived upstream (read-only); kept for historical significance
- owner: SWE-agent
repo: SWE-agent
category: research
tags: [terminal, byo-model, autonomous, research, community]
- owner: RooCodeInc
repo: Roo-Code
category: extension
tags: [editor-plugin, byo-model, interactive, mcp, community]
notes: Archived upstream (read-only)
- owner: TabbyML
repo: tabby
category: ide
tags: [self-hosted, editor-plugin, local-models, interactive, community]
- owner: zed-industries
repo: zed
category: ide
tags: [ide, byo-model, local-models, interactive, acp, community]
- owner: voideditor
repo: void
category: ide
tags: [ide, byo-model, local-models, interactive, community]
notes: Archived upstream (read-only)
- owner: anthropics
repo: claude-code
category: cli
tags: [terminal, editor-plugin, single-vendor, interactive, headless, mcp, vendor]
- owner: avante-corp
repo: avante.nvim
category: extension
tags: [editor-plugin, byo-model, local-models, interactive, mcp, acp, community]
- owner: kortix-ai
repo: suna
category: web
tags: [web, self-hosted, byo-model, autonomous, mcp, community]
- owner: earendil-works
repo: pi
category: cli
tags: [terminal, byo-model, interactive, community]
- owner: OpenHands
repo: OpenHands
category: web
tags: [web, self-hosted, terminal, byo-model, autonomous, acp, community]
- owner: warpdotdev
repo: warp
category: ide
tags: [terminal, desktop, byo-model, interactive, community]
notes: Agentic terminal; client open-sourced Apr 2026 (AGPL-3.0)
- owner: Pythagora-io
repo: gpt-pilot
category: cli
tags: [terminal, editor-plugin, byo-model, autonomous, community]
- owner: QwenLM
repo: qwen-code
category: cli
tags: [terminal, editor-plugin, desktop, byo-model, local-models, interactive, headless, mcp, acp, vendor]
- owner: Kilo-Org
repo: kilocode
category: extension
tags: [editor-plugin, terminal, byo-model, interactive, mcp, community]
- owner: onlook-dev
repo: onlook
category: web
tags: [desktop, web, byo-model, app-builder, mcp, community]
- owner: dyad-sh
repo: dyad
category: web
tags: [desktop, byo-model, local-models, app-builder, community]
- owner: github
repo: copilot-cli
category: cli
tags: [terminal, single-vendor, interactive, headless, mcp, vendor]
- owner: deepseek-ai
repo: deepseek-harness
category: cli
tags: [terminal, single-vendor, interactive, vendor]
notes: Developer preview; compatibility-breaking changes expected
- owner: openinterpreter
repo: openinterpreter
category: cli
tags: [terminal, byo-model, local-models, interactive, mcp, acp, community]
- owner: Hmbown
repo: Codewhale
category: cli
tags: [terminal, editor-plugin, desktop, byo-model, local-models, interactive, mcp, community]
- owner: esengine
repo: DeepSeek-Reasonix
category: cli
tags: [terminal, desktop, web, editor-plugin, byo-model, interactive, autonomous, mcp, acp, community]
- owner: Gitlawb
repo: openclaude
category: cli
tags: [terminal, byo-model, local-models, interactive, headless, mcp, community]
- owner: can1357
repo: oh-my-pi
category: cli
tags: [terminal, editor-plugin, byo-model, local-models, interactive, mcp, acp, headless, community]
- owner: xai-org
repo: grok-build
category: cli
tags: [terminal, editor-plugin, single-vendor, interactive, headless, mcp, acp, vendor]
- owner: alibaba
repo: open-code-review
category: cli
tags: [terminal, byo-model, review, mcp, vendor]
- owner: PrimeIntellect-ai
repo: prime-agent
category: cli
tags: [terminal, byo-model, autonomous, headless, vendor]
- owner: 1jehuang
repo: jcode
category: cli
tags: [terminal, byo-model, local-models, interactive, headless, mcp, community]
- owner: HKUDS
repo: DeepCode
category: research
tags: [terminal, desktop, web, byo-model, local-models, autonomous, research, mcp, headless, community]
- owner: CodebuffAI
repo: freebuff
category: cli
tags: [terminal, interactive, community]
- owner: MoonshotAI
repo: kimi-cli
category: cli
tags: [terminal, editor-plugin, single-vendor, interactive, mcp, acp, vendor]
- owner: Kuberwastaken
repo: claurst
category: cli
tags: [terminal, byo-model, interactive, headless, acp, community]
+1 -1
View File
@@ -116,4 +116,4 @@
{"date":"2026-09-08","stars":{"Aider-AI/aider":48823,"AntonOsika/gpt-engineer":55106,"Kilo-Org/kilocode":27218,"OpenHands/OpenHands":86718,"Pythagora-io/gpt-pilot":33679,"QwenLM/qwen-code":27704,"RooCodeInc/Roo-Code":24305,"SWE-agent/SWE-agent":20273,"TabbyML/tabby":33867,"aaif-goose/goose":54012,"anomalyco/opencode":205723,"anthropics/claude-code":144384,"avante-corp/avante.nvim":18154,"bytedance/trae-agent":12071,"charmbracelet/crush":27950,"cline/cline":67649,"continuedev/continue":35829,"dyad-sh/dyad":21395,"earendil-works/pi":102830,"github/copilot-cli":11143,"google-gemini/gemini-cli":106856,"kortix-ai/suna":20180,"onlook-dev/onlook":26658,"openai/codex":122299,"plandex-ai/plandex":15627,"stackblitz/bolt.new":16537,"voideditor/void":28808,"warpdotdev/warp":64864,"zed-industries/zed":89912}}
{"date":"2026-09-09","stars":{"Aider-AI/aider":48834,"AntonOsika/gpt-engineer":55101,"Kilo-Org/kilocode":27228,"OpenHands/OpenHands":86949,"Pythagora-io/gpt-pilot":33680,"QwenLM/qwen-code":27713,"RooCodeInc/Roo-Code":24306,"SWE-agent/SWE-agent":20286,"TabbyML/tabby":33874,"aaif-goose/goose":54041,"anomalyco/opencode":205984,"anthropics/claude-code":144483,"avante-corp/avante.nvim":18156,"bytedance/trae-agent":12077,"charmbracelet/crush":27962,"cline/cline":67689,"continuedev/continue":35835,"dyad-sh/dyad":21418,"earendil-works/pi":103216,"github/copilot-cli":11147,"google-gemini/gemini-cli":106875,"kortix-ai/suna":20183,"onlook-dev/onlook":26675,"openai/codex":122602,"plandex-ai/plandex":15628,"stackblitz/bolt.new":16539,"voideditor/void":28807,"warpdotdev/warp":64890,"zed-industries/zed":89980}}
{"date":"2026-09-10","stars":{"Aider-AI/aider":48862,"AntonOsika/gpt-engineer":55100,"Kilo-Org/kilocode":27237,"OpenHands/OpenHands":87134,"Pythagora-io/gpt-pilot":33678,"QwenLM/qwen-code":27733,"RooCodeInc/Roo-Code":24305,"SWE-agent/SWE-agent":20292,"TabbyML/tabby":33875,"aaif-goose/goose":54074,"anomalyco/opencode":206201,"anthropics/claude-code":144585,"avante-corp/avante.nvim":18156,"bytedance/trae-agent":12082,"charmbracelet/crush":27982,"cline/cline":67757,"continuedev/continue":35852,"dyad-sh/dyad":21443,"earendil-works/pi":103554,"github/copilot-cli":11152,"google-gemini/gemini-cli":106884,"kortix-ai/suna":20192,"onlook-dev/onlook":26697,"openai/codex":122903,"plandex-ai/plandex":15630,"stackblitz/bolt.new":16540,"voideditor/void":28801,"warpdotdev/warp":64917,"zed-industries/zed":90022}}
{"date":"2026-09-11","stars":{"1jehuang/jcode":19470,"Aider-AI/aider":48890,"AntonOsika/gpt-engineer":55104,"CodebuffAI/freebuff":11933,"Gitlawb/openclaude":33134,"HKUDS/DeepCode":16518,"Hmbown/Codewhale":40946,"Kilo-Org/kilocode":27253,"Kuberwastaken/claurst":10300,"MoonshotAI/kimi-cli":11339,"OpenHands/OpenHands":87316,"PrimeIntellect-ai/prime-agent":20529,"Pythagora-io/gpt-pilot":33681,"QwenLM/qwen-code":27764,"RooCodeInc/Roo-Code":24303,"SWE-agent/SWE-agent":20297,"TabbyML/tabby":33874,"aaif-goose/goose":54114,"alibaba/open-code-review":22238,"anomalyco/opencode":206578,"anthropics/claude-code":144703,"avante-corp/avante.nvim":18153,"can1357/oh-my-pi":30590,"charmbracelet/crush":28005,"cline/cline":67815,"continuedev/continue":35870,"deepseek-ai/deepseek-harness":219729,"dyad-sh/dyad":21464,"earendil-works/pi":103982,"esengine/DeepSeek-Reasonix":35497,"github/copilot-cli":11157,"google-gemini/gemini-cli":106910,"kortix-ai/suna":20197,"onlook-dev/onlook":26713,"openai/codex":123215,"openinterpreter/openinterpreter":68295,"voideditor/void":28803,"warpdotdev/warp":64946,"xai-org/grok-build":26662,"zed-industries/zed":90083}}
{"date":"2026-09-11","stars":{"1jehuang/jcode":19471,"Aider-AI/aider":48891,"AntonOsika/gpt-engineer":55104,"CodebuffAI/freebuff":11933,"Gitlawb/openclaude":33135,"HKUDS/DeepCode":16518,"Hmbown/Codewhale":40945,"Kilo-Org/kilocode":27256,"Kuberwastaken/claurst":10300,"MoonshotAI/kimi-cli":11340,"OpenHands/OpenHands":87330,"PrimeIntellect-ai/prime-agent":20531,"Pythagora-io/gpt-pilot":33681,"QwenLM/qwen-code":27764,"RooCodeInc/Roo-Code":24303,"SWE-agent/SWE-agent":20298,"TabbyML/tabby":33874,"aaif-goose/goose":54117,"alibaba/open-code-review":22243,"anomalyco/opencode":206589,"anthropics/claude-code":144706,"avante-corp/avante.nvim":18153,"can1357/oh-my-pi":30608,"charmbracelet/crush":28009,"cline/cline":67819,"continuedev/continue":35870,"deepseek-ai/deepseek-harness":219829,"dyad-sh/dyad":21464,"earendil-works/pi":104006,"esengine/DeepSeek-Reasonix":35497,"github/copilot-cli":11158,"google-gemini/gemini-cli":106909,"kortix-ai/suna":20198,"onlook-dev/onlook":26713,"openai/codex":123254,"openinterpreter/openinterpreter":68295,"voideditor/void":28802,"warpdotdev/warp":64946,"xai-org/grok-build":26662,"zed-industries/zed":90089}}