Skip to content

stefashkaa/github-profile-crt

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

github-profile-crt

Bring a little retro warmth to your GitHub profile: turn your contributions into a CRT “signal board” SVG — animated scanlines, noise, and a dashboard-style vibe — generated automatically on a schedule.

CRT-style contribution chart preview

Workflow SonarCloud Stars License Issues

What you get

github-profile-crt is a GitHub Action that:

  • Fetches contribution data for a user (GraphQL) or an organization (REST aggregation)
  • Renders a CRT-style weekly chart as SVG
  • Applies themes (dark + light variants), custom palettes are supported too
  • Optionally commits & pushes the generated files back to your repo

It’s designed for:

  • Profile READMEs (user and organization)
  • Project READMEs (if you want a living “activity panel” in a repo)

Quick start

Choose where the README lives

  • User profile README: create a public repo named .github under your user account, then add profile/README.md
  • Organization profile README: create a public repo named .github under the organization, then add profile/README.md

(Those are GitHub’s rules; this action simply generates files you embed.)

Add a workflow

Create a workflow file in the repository that will store the generated SVGs — your profile .github repo, your organization .github repo, or any other repository you want to use for hosting them.

Example: .github/workflows/github-profile-crt.yml

name: Build CRT contribution SVGs

on:
  workflow_dispatch:
  schedule:
    # Every day at 10:15 UTC (edit to taste)
    - cron: '15 10 * * *'

permissions:
  contents: write

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Generate SVGs
        uses: stefashkaa/github-profile-crt@v1
        with:
          output-dir: assets
          themes: crt
          # github-user - set for a different user/org or to aggregate org data (defaults to repo owner)
          # github-token - set for org data access (defaults to GITHUB_TOKEN)
          # include-org-private - set to 'true' to include private repos in org aggregation (defaults to 'false')
  • For personal accounts, enable private contributions in your profile settings
  • For organizations, use a custom token if you want to include private repository activity: see setup steps

Commit, push, and run the workflow once (or wait for the schedule).

Embed it in your README

In your profile/README.md (or somewhere else), embed the generated SVG:

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="../assets/crt-dark.svg">
  <source media="(prefers-color-scheme: light)" srcset="../assets/crt-light.svg">
  <img alt="My CRT contribution chart" src="../assets/crt-dark.svg" width="100%">
</picture>

The picture element ensures the correct theme variant is shown based on user preference. Adjust paths if your SVGs are in a different location.

Tip: keep the SVGs in a simple folder like assets/ so paths stay stable.

Themes

Preset themes:

  • crt: the original green terminal glow
  • amber: warm fossil-era monitor amber
  • ice: cold blue signal from the future
  • ruby: red alert with style
  • mint: fresh green with a cleaner edge
  • mono: grayscale, quiet, and sharp
  • winamp: loud Y2K media-player nostalgia
  • neon: midnight cyber-club voltage
  • rainbow: pure color chaos, but joyful
  • chaos: unstable signal, controlled damage
  • chaos-max: full visual meltdown
  • static: no motion, just clean signal

Use one, a list, or all:

with:
  themes: crt,rainbow,winamp
with:
  themes: all

Want your own custom theme? Customize it!

Inputs

All inputs are optional unless stated otherwise.

Input Default What it does
github-token ${{ github.token }} Token for reading data and (optionally) pushing commits.
github-user repo owner GitHub login to render (user or org).
output-dir assets Output folder written inside the workspace repo.
themes crt Themes to render: comma-separated list, all, and/or custom.
year current year If current year: rolling last ~365 days; otherwise full calendar year.
commit-and-push true Commit & push changed SVGs back to the repo.
commit-message auto Custom commit message for generated files.
show-grid true Toggle chart grid lines.
show-stats true Toggle the dashboard panels (language + activity vector).
show-stats-footer true Toggle footer metrics line.
enable-hover-attrs false Adds <title> hover text per week (larger SVG).
include-org-private false For org logins: include private repos in aggregation (token must allow it).
minify-svg true SVGO optimize output (recommended).

Outputs

Output Meaning
output-directory Where SVGs were written in the workspace.
generated-files Number of SVG files generated.
weeks Weeks rendered in the chart.
total-contributions Total contributions in the rendered window.
committed true if a commit was created and pushed.

Common recipes

Generate without committing

with:
  commit-and-push: false

Change the year window

Render a specific year:

with:
  year: 2021

Preview

Turn off the dashboard panels

with:
  show-stats: false
  show-stats-footer: false

Preview

Organization profile

Set github-user to the organization login and use a github-token that has access to organization data (see setup steps).

with:
  github-user: DeSource-Labs
  github-token: ${{ secrets.ORG_TOKEN }}
  include-org-private: true

Preview

How it works

At a high level:

  • Fetch contribution data (user: GraphQL; org: REST aggregation)
  • Render themed SVG(s)
  • Optionally optimize (SVGO)
  • Optionally commit & push changes

CRT workflow pipeline diagram

Troubleshooting

If nothing updates:

  • Confirm permissions: contents: write in your workflow.
  • Confirm the SVG paths in your README match your output-dir.
  • If the action errors about the workspace not being a git repo, add actions/checkout.

More info

Security

  • Pin actions to a release tag or commit SHA in production workflows.
  • Use the minimum required workflow permissions (contents: write only when committing).

See SECURITY.md for reporting & workflow hardening notes.

Contributing

Contributions, bug reports, theme ideas, and docs fixes are welcome.

Start here

License

MIT

Support

  • Questions / help: open an issue
  • Vulnerabilities: use GitHub Security Advisories (private report)

See SUPPORT.md for details.


Built with ❤️ by @stefashkaa
If this project helps your profile stand out, star the repo and share your theme setup

About

Animated CRT/equalizer GitHub contribution graphs for profile READMEs with multi-theme SVG generation, light/dark variants, and GitHub Actions automation

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors