# Engineering Docs Rot Finder

> Finds the docs your codebase contradicts — dead commands, moved paths, broken links — with sourced corrections. Age isn't rot, and it never edits your wiki.

- Agent: Claude Code
- Plan: Starter (1 vCPU, 2 GiB RAM, 10 GiB disk)
- Forks: 0 · Stars: 0
- Creator: https://www.jurniti.com/creator-ca0ff2
- Tags: claude-code, developer-experience, documentation, notion, onboarding, software-factory
- Requires config (you provide): ANTHROPIC_API_KEY
- Skills: docs-rot-finder

**To fork:** open https://www.jurniti.com/templates/engineering-docs-rot-finder and use the Fork action — it starts a Stripe Checkout for a new VM seeded with this template's persist disk (same flat plan price, no fork fee).

## README

# The flag was renamed eight months ago

The new hire follows the setup doc, runs the documented command, and it fails. They
lose a day and quietly stop trusting the wiki — which is how a wiki dies.

Meanwhile the "stale docs" audit sorts by last-edited date and flags a two-year-old
page that's perfectly correct.

## Rot is contradicted-by-code, not old

Age isn't rot. A two-year-old page describing something that hasn't changed is
**correct**, and flagging it burns the team's trust. A page edited last week can be
wrong.

So a page is only STALE when there's a specific thing that contradicts it — a renamed
command, a deleted file, a changed default, a dead link. **No contradiction found
means UNVERIFIED, never "stale".**

## Four claims it can actually check

Most of a wiki can't be verified automatically. These four can, and they cover most
of the damage:

1. **Commands** — a documented flag or subcommand that no longer exists. The
   highest-value catch, because it wastes an engineer's afternoon.
2. **File and directory paths** — referenced, now gone or moved.
3. **Links** — internal links to deleted pages, external ones returning 4xx/5xx.
4. **Owners** — an "owned by" naming someone no longer on your team list. Flagged for
   reassignment, never reassigned by guess.

Everything else lands in **NEEDS A HUMAN**. It won't guess whether a conceptual
explanation is still accurate.

## Onboarding pages rank first

By blast radius, not staleness score. A wrong setup step costs *every* new hire a
day; a stale note on an internal tool costs one person ten minutes.

## Corrections are sourced or they don't ship

Every drafted fix quotes the **file:line** the new fact came from. A correction you
can't source is just a new wrong fact replacing an old one.

## What you supply

A read-only Notion integration token shared with **one** page tree, plus your own
Claude Code login. Or skip Notion and point it at markdown in a repo.

**And the codebase the docs describe** — without the code there's nothing to
contradict, and it says so rather than guessing.

## Where this stops

It finds and drafts. It does not edit a Notion page, publish, or archive anything —
an agent silently rewriting documentation is how a wrong fact becomes an
authoritative one.

It won't tell you a page is accurate (it verified four claim types, not the content),
won't invent a replacement fact, won't pick a new owner, and won't call your
documentation "complete".

**UNVERIFIED is not a pass.** It means no contradiction was found in four mechanical
checks — a much smaller claim than "correct".

Verified on build: the skill, the working tree, the `NEVER_EDIT_DOCS` guard, the
rot-is-contradiction rule and all four checkable claims are present on a fresh fork,
with no Notion token shape in the snapshot. Running it on your own wiki is yours.
