The stars refresh reads the repository keys already tracked in data/github-stars.json, queries the GitHub repository API, and updates their raw star counts. Product associations are derived separately from the githubUrl fields in IDE, CLI, desktop, and extension manifests.
Use a token for the normal GitHub API rate limit:
GITHUB_TOKEN=your_token pnpm fetch:github-starsUnauthenticated runs are supported but are limited to 60 requests per hour:
pnpm fetch:github-starsThe implementation is scripts/fetch/fetch-github-stars.ts; the category runner is scripts/fetch/index.ts.
The file follows manifests/$schemas/github-stars.schema.json:
interface GitHubStarsData {
observedAt: string
repositories: Record<string, number | null>
}Repository keys use GitHub's owner/repository form and values are raw stargazer counts. The UI converts them to compact thousands when needed. A null value means no trustworthy count is currently available. Transient API failures retain the previous cached value instead of replacing it with null.
Product names, product surfaces, repository roles, licenses, and source-code coverage do not belong in the Stars snapshot. They come from product manifests; use the manifest sourceCode override when a repository contains only part of the product source or is used only for feedback or documentation.
.github/workflows/update-github-stars.yml runs weekly and can also be dispatched manually. It:
- installs the locked dependencies;
- runs
pnpm fetch:github-starswithGITHUB_TOKEN; - validates the manifest data;
- opens a pull request when
data/github-stars.jsonchanged.
There is only one scheduled owner for this refresh. General scheduled URL checks live in .github/workflows/scheduled-checks.yml.
403: provideGITHUB_TOKENor wait for the API limit to reset.404: check the manifest'sgithubUrland repository visibility.- Validation failure: ensure every non-null product
githubUrlmaps to a repository key and no repository key is orphaned. - No pull request: confirm the workflow checked
data/github-stars.jsonand that the refreshed values actually differ.
Last reviewed: 2026-08-01.