chore: repo cleanup — badges, URLs, metadata, keywords#44
Merged
johnnichev merged 1 commit intomainfrom Apr 7, 2026
Merged
Conversation
General cleanup pass across README, pyproject.toml, and GitHub repo
metadata. Fixes one genuinely broken item (stale example count) and
aligns the project's public identity across all sources of truth.
README badges (top of file):
- Replaced badge.fury.io/py/selectools.svg with shields.io/pypi/v,
which reads directly from the PyPI API and updates in real time
(badge.fury.io has been unreliable for years, frequently serving
503s or stale data)
- Docs label changed from "GitHub Pages" to "selectools.dev" — the
old label was technically still accurate but confusing post-domain
migration
- Python badge switched from static "python-3.9+" to dynamic
shields.io/pypi/pyversions/selectools, which auto-updates when the
supported Python range changes in future releases
- Added CI status badge pointing at .github/workflows/ci.yml
- Added PyPI downloads/month badge from pepy.tech
- All cyan-accented badges now use consistent #06b6d4 (brand cyan)
- Evaluators badge kept (50 is still accurate)
README stale count fix:
- "Examples Gallery" badge said examples-76_scripts but there are
actually 88 .py files in examples/. Updated to 88_scripts.
Caught via `find examples -maxdepth 1 -name '*.py' | wc -l`.
pyproject.toml:
- Homepage URL fixed: was https://nichevlabs.com (parent company),
now https://selectools.dev (the actual project home). This is what
PyPI displays as the "Homepage" link on the package page, so the
old value sent users to the wrong place.
- Description tightened from 268 chars to 207 chars. Same
information density, less run-on. Aligns with the cleaner GitHub
repo description.
- Keywords expanded and reformatted: added multi-agent,
agent-framework, agent, agents, guardrails, evals, evaluators,
visual-builder, ollama, langchain-alternative. These match what
users actually search for on PyPI.
- Added Builder and Examples entries to [project.urls], plus a
NichevLabs attribution link. PyPI renders these as clickable
sidebar links on the package page.
GitHub repo metadata (via `gh repo edit`, applied separately):
- homepageUrl fixed: was johnnichev.github.io/selectools (pre-domain
migration URL), now https://selectools.dev
- Deduplicated redundant plural topics: removed multi-agents,
multi-agents-orchestration, multi-agents-system, langchain-
alternatives (keeping the canonical singular forms which match
LangChain/CrewAI/AutoGen conventions)
- Removed apache-2-0-license topic (GitHub shows license
automatically in the sidebar; topics aren't the right channel)
- Added tool-calling, agent-framework, visual-builder, evals —
high-traffic search terms that also differentiate selectools from
other agent frameworks
- Final topic count: 18 (down from 19, but canonicalized)
What's NOT in this PR:
- No content changes to docs/*.md (no stale external links found)
- No CHANGELOG entry since this is repo hygiene, not a user-facing
code change
- No version bump
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
General cleanup pass across README, pyproject.toml, and GitHub repo metadata. Fixes one genuinely broken item (stale example count) and aligns the project's public identity across all three sources of truth (PyPI page, GitHub landing page, README).
What was broken
Example count was wrong. The README "Examples Gallery" badge said
examples-76_scriptsbut the actual count inexamples/is 88 .py files. Caught viafind examples -maxdepth 1 -name '*.py' | wc -l. This is the most common form of documentation drift — static numbers in badges are where stale info hides.Homepage URL was inconsistent across three places:
pyproject.tomlHomepagehttps://nichevlabs.comhttps://selectools.devhttps://johnnichev.github.io/selectoolshttps://selectools.devThree sources of truth, three different values. Someone clicking "Homepage" on the PyPI package page ended up at the parent company site instead of the project docs. Fixed.
What changed
README.md(+8 / -6)Badge row reorganized and upgraded:
Before:





```markdown
```
After:







```markdown
```
Per-badge rationale:
Stale count fixed:

```diff
-
+
```
`pyproject.toml` (+13 / -4)
Description tightened (268 → 207 chars):
```diff
-description = "Production-ready AI agents with tool calling, structured output, execution traces, and RAG. Provider-agnostic (OpenAI, Anthropic, Gemini, Ollama) with fallback chains, batch processing, tool policies, streaming, caching, and cost tracking."
+description = "Production-ready Python framework for AI agents with multi-agent graphs, hybrid RAG, guardrails, audit logging, 50 evaluators, and a visual builder. Supports OpenAI, Anthropic, Gemini, Ollama. By NichevLabs."
```
Keywords expanded and reformatted (16 → 23 keywords, now multi-line):
URLs restructured:
```diff
[project.urls]
-Homepage = "https://nichevlabs.com"
+Homepage = "https://selectools.dev"
+Documentation = "https://selectools.dev"
Repository = "https://github.com/johnnichev/selectools"
Issues = "https://github.com/johnnichev/selectools/issues"
-Documentation = "https://selectools.dev"
Changelog = "https://github.com/johnnichev/selectools/blob/main/CHANGELOG.md"
+Builder = "https://selectools.dev/builder/"
+Examples = "https://selectools.dev/examples/"
+"NichevLabs" = "https://nichevlabs.com"
```
GitHub repo metadata (via `gh repo edit`, applied to origin directly)
Homepage URL fixed:
Topics canonicalized (19 → 18):
Final 18 topics: `ai-agents, ai-safety, anthropic, enterprise-ai, gemini, guardrails, llm, ollama, openai, python, rag, tool-calling, langchain-alternative, multi-agent, agent-framework, evals, multi-agent-orchestration, visual-builder`
All plural variants eliminated — GitHub topic search is exact-match, so plural dups fragment searches and make the repo discoverable under more terms but less consistently. The canonical singular forms (matching LangChain/CrewAI/AutoGen conventions) are the right home.
Verification
What's NOT in this PR
The next release will naturally pick up the new `pyproject.toml` metadata on PyPI without any extra steps.