Skip to content
Back to skills

Star History Chart

BSecurity

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 wa...

  • 30,495 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 2, 2026
ai-agentspythongobashexpressgit

Works with

  • cli

Security analysis

B80/100
  • criticalSends environment variables or credentials to an external URL
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 3 files and shows the line behind each finding

Scanned September 2, 2026

npx -y skills add davila7/claude-code-templates --skill star-history-chart --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Star History Chart?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Star History Chart
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/davila7-star-history-chart/badge)](https://www.skillsdirectory.com/skills/davila7-star-history-chart)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: star-history-chart
description: 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 a star history that never breaks.
---

# Star History Chart (self-hosted, never breaks)

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.

## Why this exists

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.

## What this skill sets up

1. `scripts/generate_star_history.py` — fetches stargazers (authenticated),
   renders a clean, light/dark-adaptive SVG.
2. `.github/workflows/star-history.yml` — weekly cron + manual trigger that
   regenerates and commits `docs/star-history.svg`.
3. A README section pointing at the local SVG.

## Workflow

### Step 1: Copy the script and workflow into the repo

```bash
mkdir -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.

### Step 2: Generate the SVG once, locally

Use a token that can read the repo's stargazers (as owner/collaborator). The
GitHub CLI provides one:

```bash
GITHUB_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`

### Step 3: Add it to the README

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
[![Stargazers over time](docs/star-history.svg)](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.

### Step 4: Commit

```bash
git 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
```

### Step 5: (Optional) Trigger the auto-refresh now

The workflow runs every Monday at 04:00 UTC. To refresh immediately without
waiting: **GitHub → Actions → "Update Star History" → Run workflow**.

## Customization

- **Output path** — set `STAR_HISTORY_OUTPUT` (default `docs/star-history.svg`).
- **Different repo** — set `STAR_HISTORY_REPO=owner/name`.
- **Colors / size** — edit the `.line`, `.area`, `.dot` CSS and `WIDTH`/`HEIGHT`
  constants 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.
- **Refresh cadence** — edit the `cron` expression in the workflow.

## Notes

- No secrets to add: the workflow uses the automatic `GITHUB_TOKEN`.
- Private repos work too, as long as the token can read the repo.
- The script uses only `requests` plus the Python standard library.

Files in this skill

  • SKILL.md4.3 KB
  • assets/star-history.yml1.7 KB
  • scripts/generate_star_history.py7.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…