Overview
GitHub Stats Forge renders GitHub stats as SVG cards: your contribution stats, the languages you write most, the repositories you contribute to, pinned repositories, gists, an organization’s totals and WakaTime coding time.
Every card on this site was rendered by the CLI from a saved configuration, so what you see is what the tool produces — not a screenshot.
The cards
Section titled “The cards”| Card | Describes | Handler | What it shows |
|---|---|---|---|
| Stats | A user | stats | Commits, PRs, issues, reviews, stars and a rank |
| Top languages | A user | topLangs | The languages you write most, by size or repository count |
| Contributed to | A user | contributedTo | The repositories you contribute to, ranked, and in which years |
| WakaTime | A user | wakatime | Coding time per language |
| Repository pin | One repository | pin | One repository, so a profile can pin more than six |
| Gist pin | One gist | gist | One gist |
| Organization | An organization | org | Its public repositories, and what they add up to |
Getting a card
Section titled “Getting a card”There are three ways in, and none of them needs a server.
From a workflow — the recommended one. The GitHub Stats Forge action renders your cards on a schedule and commits the SVGs, so your README points at files in your own repository. Nothing has to be up when someone reads your profile, and a failure lands in a job log rather than in a broken image. Its own README documents the inputs it takes.
From the terminal, which writes an SVG next to you:
npx @stats-forge/github-stats-forge-cliIt asks which card, asks for the options that card takes, and saves what you answered so the same card can be redrawn later. See The CLI.
From code, which is what the action and any self-hosted endpoint do underneath:
import { CardConfig, stats } from '@stats-forge/github-stats-forge-core/api';
const config = new CardConfig({ pats: [{ name: 'PAT_1', value: process.env.PAT_1 }] });const result = await stats({ username: 'octocat' }, config);See The library.
From your own server, which draws a card at the moment someone looks at it:
docker run -p 9000:9000 -e PAT_1=github_pat_... ghcr.io/stats-forge/github-stats-forge-serverThe image serves every card as an endpoint, and carries this documentation and the card builder with it — the builder drawing from your instance, with your real numbers. See Self-hosting.
Customizing one
Section titled “Customizing one”Every card takes the same colors, borders and title options, one of 79 built-in themes, and a locale where it has text to translate. Each card page lists what only that card accepts.