Templated everything
Filenames, file contents, and commit messages are all Nunjucks templates. One submission maps to one commit and can produce any number of files, in any directory layout.
A cookie-authenticated GitHub Action that syncs your LeetCode submissions into your repository using Nunjucks templates — one commit per submission, with markdown or Typst output.
leech logs into LeetCode with your session cookies and pulls your accepted submissions through LeetCode's GraphQL API. For each one it renders a set of files from a template you control, commits them with the submission's own timestamp, and pushes once. There is no state file, no database, and no checkout of the target repository.
It's designed for people who want their solved problems to show up in a repo — as a GitHub profile flex, a study log, a blog source tree, or a Typst/PDF workbook — without a bespoke sync script.
Try it safely first
Every run supports dry-run: "true", which renders and logs everything but creates no commits. Build the whole pipeline locally with the CLI before you wire up the workflow.
LeetCode GraphQL GitHub API (no checkout)
──────────────── ────────────────────────
submissionList ──► filters ──┐
│
for each submission: │
submissionDetails ─────┤
questionData ──────────┤
▼
Nunjucks render ──► files (+ assets)
│
[submission hook] ──► may rewrite the files
│
create commit (author.date = submission time)
│
...repeat oldest → newest...
│
[post hook] ──► optional extra commit
│
ONE ref update ◄── atomic pushpost hook.commit.prefix at your old sync tool's commit header and inherit its watermark, so only new submissions are pulled.Start with Getting started, then tune the output in Configuration and Templates. If something bites, check Limitations and the FAQ.