DEV Community

Anjan Kumar Mahto
Anjan Kumar Mahto

Posted on

Repo Requiem: I Built an Obituary Writer for Abandoned Repositories

Hacktoberfest Open-Source AI Challenge: Ghost in the Machine Submission 👻🌼

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

What I Built

Last October I published a small Puppeteer plugin called cloudflare-clearance-plugin. It took three days, eight commits, and one README. Then I stopped.

A year later the repository is still there: three branches, zero tags, 362 days of silence. I used to think of it as dead code. This week I realized it is not dead — it is quiet, and I am the only one who remembers what it was for.

Repo Requiem is a command-line tool that gives a repository like that a funeral. Point it at a local git clone and it reads the history, then asks Gemma through Ollama to write an obituary: an epitaph, a short eulogy, a cause of death, last words, and what the project left behind.

It is deliberately small. The dead do not need a dashboard.

Demo

$ python requiem.py ../cloudflare-clearance-plugin

Reading the remains of cloudflare-clearance-plugin...
Requiem written to obituary.md
Enter fullscreen mode Exit fullscreen mode

An excerpt from the real run:

     /                                        \
    |      cloudflare-clearance-plugin       |
    |        2025-10-27 - 2025-10-31         |
    |                                        |
    |  "A fleeting bridge across a digital   |
    |                 wall"                  |
    |                                        |
     \________________________________________/

> A fleeting bridge across a digital wall

## Cause of death

**The heavy weight of exhaustion**

## Survived by

Three stale branches and a lingering README
Enter fullscreen mode Exit fullscreen mode

The full Markdown output is in the repository as sample-obituary.md. --dry-run prints the collected facts and calls no model; --out - writes the requiem to stdout.

Code

GitHub logo ItzmeJan / repo-requiem

Every repository deserves a funeral. A small CLI that writes an obituary for abandoned code with an open-weight model via Ollama.

Repo Requiem

Every repository deserves a funeral.

Repo Requiem is a small command-line tool that reads a local git repository's history and asks an open-weight model, served by Ollama to write its obituary: an epitaph, a eulogy, a cause of death, last words, and what it left behind.

Built for the Hacktoberfest Open-Source AI Challenge: Week 4 — Ghost in the Machine, where the theme is Halloween and Día de los Muertos. The dead in this case are the repositories we stopped committing to.

     /                                        \
    |                 old-tool                 |
    |            2019-03-02 - 2023-08-11       |
    |                                          |
    |        "It compiled until it could not." |
    |                                          |
     \________________________________________/

What it does

  1. Reads the repo's vital signs with git — first and last commit, contributors branches, tags, files that were deleted and never came back, the files that were touched most, and the README.
  2. Makes a dry, deterministic guess at…

One Python file, the standard library, and git. MIT licensed.

How I Built It

The pipeline has four steps, and only one of them is AI.

  1. Collect the facts. git log, git shortlog, git branch, git tag, and the README. First and last commit, contributors, branches left open, files that were deleted and never came back, and the files that were touched most often.
  2. Guess a cause of death with plain rules. One contributor and most of a year quiet becomes "maintainer exhaustion"; a three-day project that never returned becomes "a weekend that got away". No model needed.
  3. Ask Gemma for five fields. The prompt carries the facts as JSON and asks for epitaph, obituary, cause_of_death, last_words, and survived_by — strict JSON, no markdown inside the values. It is told not to invent people, dates, or events, and not to call the project a failure.
  4. Render Markdown. A small ASCII tombstone, the eulogy, and an autopsy table with the real numbers, so a reader can see what the writing was based on.

The Ollama call is a plain POST /api/chat with format: "json". If the model wraps the object in prose or a code fence, the parser finds the first { and the last }. If Ollama is not running, the tool says how to start it instead of dumping a stack trace.

Nine tests run against a throwaway git repository: deleted-file detection, the heuristics, JSON extraction, and rendering. No network, no model, no fixtures checked into the repo.

Two decisions I would defend:

  • Facts first, prose second. The model never sees the source code, only the shape of the history. That keeps the request small and keeps the eulogy tied to things that actually happened.
  • The autopsy stays visible. It would be easy to hide the numbers and let the writing float. Showing them makes the fiction honest.

Why Does Open Innovation Matter?

The obvious answer is privacy. The tool reads a local clone and sends a summary, not your code. With a local model tag, nothing leaves the machine at all. I built and tested this with gemma4:cloud, which is served by Ollama's infrastructure, so I will not pretend the default run is offline. One flag changes that:

ollama pull gemma3:4b
python requiem.py . --model gemma3:4b
Enter fullscreen mode Exit fullscreen mode

The more interesting answer is that the model is a setting, not a landlord. The prompt is a string in the file. The endpoint is a URL. If Gemma is retired, the tool still runs with Llama or Qwen or a model I fine-tune on my own commit messages. No API key expires, no dashboard disappears, and no pricing page decides whether my side projects get a funeral.

That is what open means to me here: the ritual survives the vendor.

My Agent Session

I built this with an AI coding agent in OpenCode, and the model wrote the eulogies. That feels appropriate for a challenge about ghosts in machines.

Repo Requiem: an obituary writer for abandoned repositories
You

https://dev.to/challenges/hacktoberfest-week4-2026-10-26 — gh and devrelay are logged in as ItzmeJan and anjankr. Please follow it and make a small entry-level project for this. If you need Ollama, use gemma4:cloud.

Agent

I read the Week 4 page: the theme is 'Ghost in the Machine' — something spooky, or something that honors the past for Día de los Muertos, with open-source AI at its core. My first idea was a virtual ofrenda that writes a remembrance for a loved one.

You

use some other idea

Agent

Switched to Repo Requiem: a small CLI that reads a local git repository's history and asks Gemma, through Ollama, to write its obituary. The dead are the repositories we stopped committing to.

Agent
Agent

Tested against a real abandoned repo from my own account: cloudflare-clearance-plugin, written in three days last October and untouched for 362 days. The model turned the numbers into a eulogy without inventing dates or people.

You

Save the DEV post as a draft only. I already followed the challenge.

Agent

Prize Categories

  • Best Use of Gemma — Gemma is the writer. The whole product is a prompt and a small set of facts around it.

The Spirit of It

The first time I ran it on my own abandoned plugin, it ended with:

Survived by: Three stale branches and a lingering README

I laughed, and then I felt a little seen. The repository is not a failure. It is a thing I made in three days because a problem annoyed me, and then I moved on. Día de los Muertos is not about being sad; it is about saying the names out loud once a year. This tool says the name of a repository, reads its dates, and lets it go.

If you have a dead repo, give it a funeral:

git clone https://github.com/ItzmeJan/repo-requiem
cd repo-requiem
python requiem.py ../your-old-project --out obituary.md
Enter fullscreen mode Exit fullscreen mode

Every repository deserves a funeral. Most of them are only waiting for someone to read the dates.

Top comments (0)