Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Add a self-hosted "Stargazers over time" chart to any GitHub repo's README. GitHub now restricts the stargazers endpoint to a repo's own admins/collaborators, so third-party live services (star-history free tier, starchart.cc) return "Requires authentication" for everyone. This generates a static, theme-aware SVG in-repo and auto-refreshes it weekly with a GitHub Action using the repo's own GITHUB_TOKEN. Use when the star chart in a README is broken, shows "Requires authentication", or you want
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | -15% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -52% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -50% | 0% |
Add a "Stargazers over time" chart that renders from a static SVG committed to the repo and refreshes itself weekly — no external chart service, no broken images.
GitHub now restricts the /stargazers endpoint to a repository's own admins and collaborators. Unauthenticated requests return {"message":"Requires authentication"}, which breaks every third-party live-chart service (star-history.com free tier, starchart.cc, etc.) for all repos. The only reliable fix is to generate the chart yourself with an authenticated token and commit a static image. Inside GitHub Actions, the repo's own GITHUB_TOKEN can read its own stargazers, so the whole thing runs with zero secrets to configure.
scripts/generate_star_history.py — fetches stargazers (authenticated),renders a clean, light/dark-adaptive SVG.
.github/workflows/star-history.yml — weekly cron + manual trigger thatregenerates and commits docs/star-history.svg.
bashmkdir -p scripts .github/workflows docs cp skills/git/star-history-chart/scripts/generate_star_history.py scripts/generate_star_history.py cp skills/git/star-history-chart/assets/star-history.yml .github/workflows/star-history.yml
> The script needs the requests package: pip install requests. > It resolves the repo from STAR_HISTORY_REPO, then GITHUB_REPOSITORY > (set automatically in Actions), then the origin git remote — so no edits > are required for it to work in a different repo.
Use a token that can read the repo's stargazers (as owner/collaborator). The GitHub CLI provides one:
bashGITHUB_TOKEN=$(gh auth token) python scripts/generate_star_history.py
This writes docs/star-history.svg. For a repo with many thousands of stars the first run paginates the whole stargazer list and can take a couple of minutes.
Verify it rendered (optional, macOS): qlmanage -t -s 800 -o . docs/star-history.svg
Add or replace the star chart section. Point the image at the local SVG. Set the link target to wherever you want clicks to go (the repo, a docs page, or your own site):
markdown## Stargazers over time [](https://github.com/OWNER/REPO/stargazers)
If replacing a broken star-history.com / starchart.cc embed, swap only the image URL to docs/star-history.svg and keep or update the link target.
bashgit add scripts/generate_star_history.py .github/workflows/star-history.yml docs/star-history.svg README.md git commit -m "feat(readme): self-hosted stargazers chart with weekly auto-refresh" git push
The workflow runs every Monday at 04:00 UTC. To refresh immediately without waiting: GitHub → Actions → "Update Star History" → Run workflow.
STAR_HISTORY_OUTPUT (default docs/star-history.svg).STAR_HISTORY_REPO=owner/name..line, .area, .dot CSS and WIDTH/HEIGHTconstants near the top of generate_star_history.py. The chart is theme-aware via a prefers-color-scheme: dark block, so it looks right in both GitHub light and dark modes.
cron expression in the workflow.GITHUB_TOKEN.requests plus the Python standard library.Other measured skills in the registry, with their headline benchmark lift.