Platane /snk

🟩⬜ Generates a snake game from a github user contributions graph and output a screen capture as animated svg or gif

★ 6,172⑂ 2,314👁 17⑃ 95● 100▤ 43
TypeScriptCreated 2020-07-16platane.github.io/snk
6,172
stars
+0+4+51
2,314
forks
17
watchers
95
prs
100
issues
43
releases
–
discussions

README

snk




!type definitions
!code style

Generates a snake game from a github user contributions graph


  
  
  


Pull a github user's contribution graph.
Make it a snake Game, generate a snake path where the cells get eaten in an orderly fashion.

Generate a gif or svg image. Colors can be customized.

Available as github action. It can automatically generate a new image each day. Which makes for great github profile readme

 Usage

 github action

yaml
- uses: Platane/snk@v3
  with:
     github user name to read the contribution graph from (required)
     using action context var github.repository_owner or specified user
    github_user_name: ${{ github.repository_owner }}

     list of files to generate.
     one file per line. Each output can be customized with options as query string.
    
      supported options:
      - palette:           A preset of color, one of [github, github-dark, github-light]
      - color_snake:       Color of the snake
      - color_dots:        Coma separated list of dots color.
                           The first one is 0 contribution, then it goes from the low contribution to the highest.
                           Exactly 5 colors are expected.
      - color_background:  Color of the background (for gif only)
    outputs: |
      dist/github-snake.svg
      dist/github-snake-dark.svg?palette=github-dark
      dist/ocean.gif?color_snake=orange&color_dots=bfd6f6,8dbdff,64a1f4,4b91f1,3c7dd9&color_background=aaaaaa


example with cron job

 svg

If you are only interested in generating a svg (not a gif), consider using this faster action: uses: Platane/snk/svg-only@v3

 dark mode

!dark mode

For dark mode support on github, use this special syntax in your readme.

html

  
  
  



 interactive demo


  


platane.github.io/snk

 npm package

ts
import { generateSnakeAnimation } from "generate-snake-animation";

const outputs = [
  {
    format: "svg",
    drawOptions: {
      // ..
    },
  },
];

const results = await generateSnakeAnimation(
  {
    platform: "github", // supports github, gitlab and forgejo (codeberg)
    username: "platane",
    githubToken: process.env.GITHUB_TOKEN,
  },
  outputs,
);

fs.writeFileSync("snake.svg", results[0]);


or with npx

sh
npx generate-snake-animation@3 --forgejo_user codeberg.org/JasterV --output snake.svg?palette=codeberg


 Implementation

solver algorithm

 Contribution Policy

This project does not accept pull request.

Reporting or fixing issues is appreciated, but change in the API or implementation should be discussed in issue first and is likely not going be greenlighted.

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON