Repo Revival Agent banner
Selliksss Selliksss

Repo Revival Agent

Development community

Description

Autonomous agent that revives dead open-source repos — or tells you to let them rest. Built with Claude Opus 4.7.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

repo-revival-agent

Autonomous agent that classifies dead Python repos and either opens a modernization PR, files a polite "use this instead" issue, or **refuses to do anything** — whichever the evidence supports.

The most useful thing this agent did during the build was refuse to open a PR. Not because it crashed — because it ran the test suite, compared signatures against the baseline, and correctly concluded its changes would make things worse.

Live artifact

**[rholder/retrying#101](https://github.com/rholder/retrying/issues/101)** — agent opened this issue on a real abandoned repo, pointing to `tenacity` as the maintained successor.

Demo

![demo](demo.gif)

Agent classifies `rholder/retrying` as `let_rest`, generates a polite issue suggesting `tenacity` as the maintained successor, and stops in dry-run mode.

What it does

**Scan.** Collects GitHub metadata: stars, days inactive, issue counts, license, CI, dependencies, README excerpt. No clone needed at this stage.

**Classify.** A Claude Opus tool-use agent searches GitHub for modern alternatives and emits one of: `revive` (deps need bumping, repo is otherwise fine), `fork` (worth porting, open a modernization PR), `let_rest` (superseded — point users to the successor). Runs three times; only emits a verdict if all three agree. Otherwise: `uncertain`. The agent refuses to act when it doesn't know.

**Act.** `let_rest` opens a polite GitHub issue. `revive` clones the repo into a bot-owned fork, runs the dependency bumper and codemods, runs the test suite in an isolated venv before *and* after changes, compares failure signatures between the two runs, and only opens a PR if no regressions were introduced. All actions run under a separate bot account (`@repo-revival-agent`), not under a personal identity.

What it explicitly won't do

  • Open a PR if tests regress against the baseline. Comparison is by signature (file_path::ExceptionType for collection errors, full nodeid for test failu