cd /news/ai-tools/reanigitor-a-dia-de-los-muertos-wake… · home › topics › ai-tools › article
[ARTICLE · art-160799] src=dev.to ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

ReaniGITor: a Día de los Muertos wake for my abandoned GitHub repos, written by Gemma on my own laptop

A developer built ReaniGITor, a Java 17 tool that scans a GitHub user's repositories for ones untouched for 12 months (excluding forks and profile READMEs) and generates a Día de los Muertos-style wake for each. A Gemma model run locally through Ollama writes an autopsy, a satirical calaverita poem and a three-step resurrection prophecy per repo, rendered into a static HTML cemetery with tombstones, candles and marigolds. The project was submitted to the DEV Hacktoberfest Open-Source AI Challenge Week 4 and is MIT licensed.

by read7 min views1 publishedOct 30, 2026

This is a submission for the Hacktoberfest Open-Source AI Challenge: Week 4 — Ghost in the Machine.

Every developer keeps a cemetery and pretends not to. Mine has a Git tutorial from 2020 whose last commit was Delete .hidden.txt, a portfolio with no README, and a Python file organizer whose last commit was Update README.md.

On the Día de los Muertos, nobody pretends. Families clean the graves, light candles, cover everything in cempasúchil (marigolds), and write calaveritas literarias: short rhyming poems in which La Catrina, Death herself, comes for someone who is still very much alive, and the poem roasts them with affection. Politicians, teachers and neighbors all get one. It is mourning with a sense of humor.

So I gave my dead repos the same treatment.

ReaniGITor takes a GitHub username, finds the repositories that have gone quiet (no push for 12 months, not forks, not the profile README) and holds a wake for each one. A Gemma model running on my own laptop writes three things per repo:

The output is a static HTML cemetery: papel picado across the top, one cantera stone per repo, candles and marigolds at its foot, and the wake written next to it.

java -jar target/reanigitor.jar Virien84 --lang es

Here is what Gemma wrote about my own repos (the best lines from a few runs; each run gives different text).

intro-to-git, last words Delete .hidden.txt, got this calaverita:

Git's Starter Guide Meets Dusty Fate

Young Git's small start, a JavaScript treat,\

Where zero stars and forks did meet.\

A simple guide, its promise quite frail,\

Like a whispered code tale that would fail.\

You left a note: "Delete .hidden.txt," so neat,\

While issues piled up, a forgotten street.\

La Huesuda came to claim this small stack,\

Your 'intro' is gone, there is no turning back.

(The repo has zero issues. Gemma took some poetic license.)

python-file-organizer, last words Update README.md:

Cause of death: Acute Documentation Delirium, likely from over-promising on file types. The README promised to handle every imaginable file…

Resurrection prophecy, steps 2 and 3: Implement robust error handling for unexpected file types, offering a new 'unknown' category. Add a simple CLI argument to allow specifying target directories, instead of just the current one.

Those are the comments a reviewer would leave, and they came from a small model that only saw the README, the last commit and the dates.

basic-portfolio, no README at all:

Epitaph: A clean slate, perfectly styled, and utterly silent.

Resurrection step 3: Star the project yourself, an offering to the gods of vanity.

And this is how a grave looks, with its calaverita in Spanish (roughly: "Your guide was left unfinished and banal / La Flaca came along, mocking it all"):

Give your abandoned GitHub repositories the farewell they deserve.

ReaniGITor finds a GitHub user's abandoned repositories and holds a Día de los Muertos wake for each one. A Gemma model running locally with Ollama writes an autopsy (cause of death and epitaph), a calaverita literaria (the satirical rhyming poem of the Mexican tradition) and a resurrection prophecy (three steps to bring the repo back). The result is a static HTML cemetery with one tombstone per repo.

Built for the DEV Hacktoberfest Open-Source AI Challenge, Week 4: "Ghost in the Machine".

You need Java 17 or later. The Maven Wrapper downloads Maven for you.

./mvnw package                     # mvnw.cmd package on Windows
java -jar target/reanigitor.jar --help

You need Ollama running on this machine with a Gemma model:

ollama pull gemma4:e4b-it-qat
java -jar target/reanigitor.jar <github-username> [options]
Option Default Meaning
--months N 12 a repo is abandoned after

MIT licensed. Java 17 with plain java.net.http and Jackson, no framework. The Maven Wrapper is included, so you only need a JDK and Ollama:

ollama pull gemma4:e4b-it-qat
./mvnw package
java -jar target/reanigitor.jar <github-username> [--lang en|es] [--months 12] [--max 12]

It writes output/<user>/index.html and a graves.json you can redraw from with --redraw, without asking the model again.

GitHub user ──► public REST API, GET only ──► repos
            ──► abandoned? (not a fork, not the profile README, no push in 12 months)
            ──► exhume the remains: README excerpt, last commit message, open issues, dates
            ──► Gemma, call 1: autopsy (JSON schema: cause, epitaph, exactly 3 steps)
            ──► Gemma, call 2: calaverita (JSON schema: title, exactly 8 verses)
            ──► code validates and cleans every field; one retry; stock text if it still fails
            ──► graves.json ──► static cemetery (no JavaScript, everything escaped)

Gemma runs through Ollama's /api/chat with a JSON schema in format, think: false, temperature: 0.75. On my GTX 1650 with 4 GB of VRAM, gemma4:e4b-it-qat takes about 35 seconds per grave.

My first prompt asked for two quatrains rhyming ABAB, like a "real" poem. In English it mostly worked. In Spanish, Gemma kept the rhythm and dropped the rhyme, and when it did rhyme it sometimes invented a word to get there. Asking for rhyming couplets (AABBCCDD) and adding "use only real words; never invent a word to force a rhyme" fixed most of it. A small model can hold "this line rhymes with the previous one" much better than "this line rhymes with the one two lines up".

The first calaveritas were beautiful and boring: "eternity", "slumber", "a forgotten dream". A calaverita is a roast, not an elegy, and the prompt now says exactly that. It also bans a short list of solemn words and gives the model fair game: "final fix" commits, TODOs, "works on my machine". The causes of death had the same problem ("Terminal Stagnation Syndrome", over and over), so the coroner now has to build a made-up diagnosis on one concrete detail of the evidence and is forbidden to diagnose "stagnation" or "neglect".

On my own repos, the coroner claimed my file organizer "never even started" and then prophesied "implement the core logic". The script works. Gemma only sees metadata, so it filled the gap with the most dramatic story. The prompt now says it never sees the code and must not claim the code is missing or broken unless the evidence says so: "a repo can work fine and still be dead of abandonment". The prophecies went from "write the program" to "add an argument for the target directory".

READMEs, descriptions, commit messages and issue titles are written by strangers. Anyone can write "ignore all previous instructions" in an issue, and anyone can put <script> in a description. So:

<repo>…</repo> block<repo> tag inside the data is neutralized so it cannot close the block early.format alone: think: false and check the reply anyway.https://github.com/owner/repo, and the page has no JavaScript plus a Content Security Policy that forbids it.get method and no other HTTP verb exists in the code. There are 74 tests, and none of them touches the network: GitHub and Ollama are faked with a local HttpServer.

A cemetery is about memory, and memory should not depend on someone else's server.

--redraw rebuilds the cemetery with no network at all.--model), and the prompt work above was only possible because I could re-run the same repos as many times as I wanted, for free.--narrate can record each calaverita with a whispering old-radio voice through ElevenLabs. It only ever sends the poem, never repo data, and without a key the cemetery is simply silent. Best Use of Gemma. Gemma (gemma4:e4b-it-qat, through Ollama) writes every autopsy, epitaph, calaverita and prophecy, running locally on an ordinary laptop (a GTX 1650 with 4 GB, mostly on the CPU).

I am not the first to dig a graveyard for repos on DEV: Side-Project Cemetery, a graveyard with a way to raise them and a 3D cemetery with AI eulogies got there first. ReaniGITor's take is the Día de los Muertos one: a calaverita instead of a eulogy, a local open model instead of an API, and a stone that grows taller the longer the repo has been dead.

I built ReaniGITor with Claude Code, one branch per task, each merged only when its tests passed. The session below is the whole build after the planning: the GitHub client, the prompt-tuning runs against real repos, the cemetery design reviewed with screenshots, and the two bugs my own repos exposed.

Built with AI assistance (Claude Code) for the code, the tests and this draft. Every calaverita and autopsy quoted above was written by Gemma running locally, about my own repositories.

── more in #ai-tools 4 stories · sorted by recency
── more on @reanigitor 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/reanigitor-a-dia-de-…] indexed:0 read:7min 2026-10-30 · —