The README freshness guarantee for vibe coders. Auto-syncs README.md with live data before every push.
Project description
๐ก๏ธ readme-guardian
The README freshness guarantee for vibe coders.
One command. Zero config. Every push.
Auto-syncs your README with live test counts, API routes, and modules.
Works with every AI agent, every language, every project.
Quick Start โข Install โข How It Works โข The Badge โข For AI Agents โข CI โข Comparison
npm install -g readme-guardian โข
brew install readme-guardian โข
pipx install readme-guardian
| Metric | Value |
|---|---|
| Language | python |
| Version | 1.0.0 |
| Tests | โ |
| Lint | โ |
| Docker | no |
| Monorepo | no |
| Latest commit | 205361a cleanup: remove VS Code extension, update Homebrew install cmd |
๐ The Freshness Badge
This is the status symbol of the vibe coding era.
Once you install readme-guardian, your repo gets a readme-badge.svg that updates on every push:

What it tells the world:
| Badge color | Meaning | Trust level |
|---|---|---|
| README is fresh, tests pass | โ High | |
| README synced but no tests | โ ๏ธ Medium | |
| README is stale | โ Low |
Why this matters: When a developer visits your repo and sees a green badge, they know instantly:
- The docs are accurate
- Tests were run recently
- This project is actively maintained
When they see a red badge, they know to be cautious. The badge doesn't lie because it's generated from live data on every push.
It's also self-promoting. Every repo with the badge advertises readme-guardian. The more repos use it, the more it becomes the standard for README freshness.
๐ค The Problem
You're vibe coding with an AI agent. You ship fast. PRs land. Push to GitHub.
The code is perfect. The README still says "hello world" from day one.
Your project looks abandoned. Contributors bounce. Users leave. Nobody trusts a project with a stale README.
"The README is the first thing people see. If it's wrong, they assume the code is too."
๐ก๏ธ The Solution
npx readme-guardian --install
That's it. One command. Now before every git push, readme-guardian:
- ๐ Detects your stack (Node, Python, Go, Rust โ monorepos too)
- ๐งช Runs your tests and live-counts passes
- ๐บ๏ธ Scans for API routes
- ๐ฆ Lists source modules and frontend components
- ๐ Updates the README with verified data
- โ Only if something actually changed
Your README is always accurate. You never think about it.
๐ Quick Start
# Try it right now โ no install needed
npx readme-guardian
# Then install for every push
npx readme-guardian --install-hook
๐ฆ Install
Pick your poison:
npm / npx (recommended for JS/TS projects)
# Run without installing (auto-installs Python CLI)
npx readme-guardian
# Install globally
npm install -g readme-guardian
readme-guardian --install-hook
pipx (recommended for Python projects)
pipx install readme-guardian
readme-guardian --install-hook
Homebrew (macOS)
brew install jeevesh2515/homebrew-tap/readme-guardian
readme-guardian --install-hook
Commands
| Command | What it does |
|---|---|
readme-guardian |
Interactive preview โ see what would change |
readme-guardian --apply |
Apply changes immediately |
readme-guardian --check |
CI mode โ exit 1 if README is stale |
readme-guardian --install-hook |
Install pre-push hook (runs automatically) |
readme-guardian --uninstall-hook |
Remove the pre-push hook |
readme-guardian --version |
Show version |
๐ง How It Works
Zero-config detection
readme-guardian auto-detects your project by looking at your config files:
| File | What we learn |
|---|---|
package.json |
Name, version, scripts, frontend deps, workspaces |
pyproject.toml |
Name, version, test/lint tooling |
go.mod |
Module name, test command |
Cargo.toml |
Name, version, test command |
No configuration files. No API keys. No setup.
What we collect
๐ Project root
โโโ Stack type โ Node / Python / Go / Rust
โโโ Test count โ Live from pytest / npm test / go test / cargo test
โโโ API routes โ FastAPI, Express, Next.js App Router, Go Chi/Gin
โโโ Source modules โ Python packages, Node modules, Go packages
โโโ UI components โ React, Vue, Svelte files
โโโ Lint status โ ruff, ESLint
โโโ Git state โ Last commit hash and message
What we generate
A clean, beautiful README with:
- Live badges โ test count, version, lint status, Docker support
- The freshness badge โ
โ a status symbol that tells the world your docs are accurate - Quick start โ framework-aware install instructions
- API route table โ all detected endpoints with methods
- Module list โ source code directory structure
- Component inventory โ frontend UI components
- Test suite status โ live count, not a hardcoded number
Non-destructive by design
If your README has <!-- readme-guardian:stats --> markers, only content between markers is replaced. Everything else โ your narrative, architecture docs, contribution guidelines โ stays intact.
If no markers exist, readme-guardian generates a complete README and asks first.
๐ค For AI Agents
This repo ships a companion skill file (SKILL.md) that turns any AI coding agent into a documentation partner.
Installation
# Claude Code, OpenCode
cp SKILL.md ~/.agents/skills/readme-guardian/SKILL.md
# Codex CLI
cp SKILL.md ~/.codex/skills/readme-guardian/SKILL.md
# Cursor
# Add SKILL.md to .cursor/skills/
How agents use it
You: "Update the README"
Agent: [runs readme-guardian, reviews diff, adds context about
the architecture decisions made during this session,
verifies the freshness badge matches test count]
The CLI handles facts (test counts, routes, versions). The agent handles context (why decisions were made, architectural rationale). Together they produce documentation that's both accurate and insightful.
Compatible with
Claude Code โข Codex CLI โข OpenCode โข Cursor โข GitHub Copilot โข Continue.dev โข Antigravity โข Windsurf
๐ CI Enforcement
Add to any GitHub Actions workflow:
# .github/workflows/readme-check.yml
on: pull_request
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- run: pip install readme-guardian
- run: readme-guardian --check
Any PR with a stale README fails automatically. No more merging docs that don't match reality.
๐ Comparison
| Feature | Manual | CI-only | readme-guardian |
|---|---|---|---|
| Auto-detect project type | โ | โ | โ |
| Live test count on push | โ | โ | โ |
| Scan for API routes | โ | โ | โ |
| List UI components | โ | โ | โ |
| Pre-push hook (zero effort) | โ | โ | โ |
| CI enforcement | โ | โ | โ |
| AI agent companion | โ | โ | โ |
| Freshness badge | โ | โ | โ |
| Works offline | โ | โ | โ |
| Zero config | โ | โ | โ |
๐ Security
- Zero network calls. No telemetry, no API keys, no phone home.
- No credential access. Does not read
.env, secrets, or config files. - Reads only source structure. Scans for patterns, not content.
- Suppressed build output. All commands redirect stdout to logs.
- Git-local. Only modifies
README.md. Never touches source code. - Ask-first mode. Interactive mode shows diff before applying.
๐ Why You'll Love It
If you use AI agents, you know the pain: agents ship code at machine speed but documentation stays human-slow. readme-guardian closes the gap. Your README becomes a build artifact โ verified at push time, not remembered at documentation time.
If you maintain open source, the freshness badge is a trust signal. Projects with README: fresh attract contributors. Projects with stale READMEs repel them.
If you're a team lead, enforce README freshness in CI. Block PRs with stale docs. Make documentation a first-class citizen.
๐งฐ For Maintainers
.
โโโ README.md # This file โ hand-crafted with markers
โโโ SKILL.md # AI agent companion skill
โโโ pyproject.toml # Python package (pipx installable)
โโโ readme_sync/
โ โโโ __init__.py # CLI implementation
โ โโโ __main__.py # python -m entry point
โโโ .github/workflows/ # CI enforcement (copy to your repo)
โ โโโ readme-check.yml
โโโ LICENSE # MIT
โโโ .gitignore
๐ License
MIT โ do whatever you want. Fork it, modify it, use it in proprietary projects, include it in your own AI agent toolchains. Attribution appreciated but not required.
Built for the vibe coding era.
Documentation shouldn't be an afterthought โ it should be a build artifact.
Star this repo. Your future self will thank you.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file readme_guardian-1.0.0.tar.gz.
File metadata
- Download URL: readme_guardian-1.0.0.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6306290c62cf6fe818d9ffdd5ffcc27b9a7756c488f4cb8f0627f25254403b1f
|
|
| MD5 |
f48439f6f9c1a3cc791e21ed9948131e
|
|
| BLAKE2b-256 |
8569b7bc1eb27c5f6ff62eb82bf7f67a9e28b3bacc819b927ddfd92260c89a65
|
File details
Details for the file readme_guardian-1.0.0-py3-none-any.whl.
File metadata
- Download URL: readme_guardian-1.0.0-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50657248149cfc56d7ce9600da91a188acd2e8496eaa003d6e07cbe211bb609f
|
|
| MD5 |
7c152fd849c9cf37cd6a4d90e347a367
|
|
| BLAKE2b-256 |
25914114a65494a5329efd9e3bc814b22d632ce56f6a04e8885e79fe8c764a49
|