A theme-aware hero
A hand-drawn SVG banner served through <picture> with
media="(prefers-color-scheme: dark)" — the right artwork for each GitHub
theme, with no JavaScript at all.
profile-kit packages the hero banner, the stats card and the README generator behind drsamonline's GitHub profile into one small, reusable kit — so anyone, including an AI agent, can lift it and get the same theme-aware, self-updating result.
Each stands on its own; take one, two, or all three.
A hand-drawn SVG banner served through <picture> with
media="(prefers-color-scheme: dark)" — the right artwork for each GitHub
theme, with no JavaScript at all.
lowlighter/metrics with the classic template, rendered once
per theme into assets/metrics-light.svg and metrics-dark.svg.
Each render pins its own palette through extras_css.
A small Python script regenerates only the marked regions — a badge row and a categorised project list — from the GitHub API, and a workflow commits the result daily. Everything outside the markers is untouched.
Small on purpose — a handful of files you can read in one sitting.
README.md what it is, how to use it, and the credits assets/hero-light.svg hero banner template (light) — edit the placeholders assets/hero-dark.svg hero banner template (dark) — edit the placeholders metrics.yml the metrics workflow — copy to .github/workflows/ profile-generator/ update_profile.py regenerates the marked README regions profile-data.json owner + markers + categories + curated repos update-profile.yml the workflow that runs it daily README.md how the generator works and how to configure it docs/ this page (GitHub Pages, served from /docs)
Create a username/username repo, then lift the three pieces in.
A public repo named exactly
username/username with a README.md.
Copy the two assets/hero-*.svg files in, replace the
YOUR KICKER, YOUR NAME, YOUR TAGLINE and monogram
YN placeholders in both, and embed them with a <picture> block.
Copy metrics.yml to
.github/workflows/, set your username, and run it once. It commits the two SVGs.
Copy profile-generator/ into place, put the
four comment markers in your README, and curate profile-data.json.
Settings → Pages → Deploy from a branch →
main / /docs to publish a landing page like this one.
GITHUB_TOKENlowlighter/metrics works with the default token, but its languages plugin
renders empty because the token cannot read a field the base query asks for:
GITHUB_TOKEN is not permitted to read it, and the
call returns FORBIDDEN: Resource not accessible by integration;The fix: a classic personal access token with no scopes, saved as the secret
METRICS_TOKEN, is allowed to read stargazers. Switch the
token: input to it and re-enable plugin_languages.
Also: config_theme is not a real metrics option — it is copied
around the web often, but it silently does nothing. Light/dark has to be done with
extras_css and two renders.
This profile is assembled from other people's work, and it deserves the credit.
classic template with
the base (header, activity) and calendar plugins, and its
extras_css option to produce a matched light and dark pair from one
configuration. Worth knowing: config_theme is not a real option and silently
does nothing, despite how often it is copied around — light/dark has to be done with
extras_css and two renders.