Generate and maintain README files for Python repositories from static analysis.
Project description
AutoReadme
Generate and maintain a README for your Python repo from static analysis — no source code ever leaves your machine.
uvx --from 'autoreadme-ai' autoreadme .
AutoReadme walks your repo with the stdlib ast module, extracts structured
metadata (signatures, docstrings, project config, CLI parsers), and sends only
that metadata to an LLM to write prose. The payload schema has no field for
function bodies, so source code transmission isn't prevented by policy — it's
prevented by the shape of the data.
Installation
uv tool install autoreadme-ai[anthropic,openai]
Install the tool as a command-line application using uv. The extras include optional dependencies for Anthropic and OpenAI providers. For one-shot usage without persistent installation, use uvx autoreadme-ai[all]. You can also install with pipx install autoreadme-ai[all] or pip install autoreadme-ai.
Quick start
export ANTHROPIC_API_KEY=sk-...
autoreadme .
That's the whole flow: extract → pre-flight token check → single LLM call →
colored diff → approve (Y/n/d/q) → write with .bak backup.
Preview without writing:
autoreadme --dry-run
Inspect exactly what would be sent to the LLM (no network call):
autoreadme --show-payload
How it protects your code
Three layers:
- Schema.
RepoMetadata,FileMetadata,FunctionSignatureetc. have nobody/source/rawfield. There is no code path that can attach one. - Pre-flight disclosure. Before every LLM call, stderr shows exactly how
many KB are about to leave your machine and where they're going:
→ Sending 14KB of structured metadata to anthropic (claude-sonnet-4-...). No source code included. --show-payload. Dumps the full JSON to stdout and exits without making the call. Diff it, grep it, paste it into an issue.
Secret files (.env*, *.key, *.pem, credentials.*) are unconditionally
excluded from extraction regardless of config.
Staying in sync
Generated sections are wrapped in HTML comment markers:
<!-- autoreadme:install:start -->
(generated content)
<!-- autoreadme:install:end -->
## Docker Setup
(your content — never touched)
On subsequent runs, only content between markers is replaced. Manual sections between, before, or after markers are preserved verbatim.
Providers
| Provider | Default model | Env var |
|---|---|---|
| anthropic | claude-sonnet-4-20250514 |
ANTHROPIC_API_KEY |
| openai | gpt-4o |
OPENAI_API_KEY |
| ollama | llama3.1 |
OLLAMA_HOST |
If no --provider is set, AutoReadme picks the one whose env var is
populated. Override the model with --model or .autoreadme.toml.
Config file
Drop .autoreadme.toml at your repo root:
[llm]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
[extract]
exclude = ["tests/**", "docs/**"]
Resolution precedence: CLI flags > .autoreadme.toml > env vars > defaults.
GitHub Action
- uses: atharvakadam/autoreadme-ai@v1
with:
provider: anthropic
api-key: ${{ secrets.ANTHROPIC_API_KEY }}
The action runs with --force (non-interactive). Pair it with a PR-opening
step if you want review before merge.
CLI Reference
autoreadme [PATH] [OPTIONS]
Arguments:
PATH- Path to the repo root (default:.)
Options:
--provider- LLM provider: anthropic | openai | ollama--model- Model override--dry-run- Write result to stdout instead of disk--force- Apply without interactive approval--show-payload- Dump JSON payload to stdout and exit--verbose- Verbose log output--output- Output path (default:--version- Print version and exit
Exit codes: 0 success · 1 user rejected diff · 2 config/usage/non-TTY ·
3 extraction failed · 4 LLM failed.
Scope
v0.1 is deliberately narrow. No monorepo handling, no section-level approval, no custom prompt templates, no non-Python languages, no telemetry. See SPEC.md §15 for the full non-goals list and §16 for the v0.2 plan.
Contributing
See CONTRIBUTING.md. TL;DR: uv sync --all-extras, then
uv run pytest / uv run ruff check / uv run mypy src/ before opening a
PR.
License
MIT — see LICENSE.
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 autoreadme_ai-0.1.0.tar.gz.
File metadata
- Download URL: autoreadme_ai-0.1.0.tar.gz
- Upload date:
- Size: 86.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd9dbffec0053274afb0420933e0c3427bb691086e6726b4679c2c1400d5e9d1
|
|
| MD5 |
4e5e9ccad182d62838b53a1e684f9923
|
|
| BLAKE2b-256 |
ce417d0d54761875f8adbf072649952f0d34264d0110ceea6cb1808a08a0baed
|
Provenance
The following attestation bundles were made for autoreadme_ai-0.1.0.tar.gz:
Publisher:
release.yml on atharvakadam/autoreadme-ai
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
autoreadme_ai-0.1.0.tar.gz -
Subject digest:
bd9dbffec0053274afb0420933e0c3427bb691086e6726b4679c2c1400d5e9d1 - Sigstore transparency entry: 1341701727
- Sigstore integration time:
-
Permalink:
atharvakadam/autoreadme-ai@0b72537ac0447964a9b09858666d645b40150582 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/atharvakadam
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0b72537ac0447964a9b09858666d645b40150582 -
Trigger Event:
push
-
Statement type:
File details
Details for the file autoreadme_ai-0.1.0-py3-none-any.whl.
File metadata
- Download URL: autoreadme_ai-0.1.0-py3-none-any.whl
- Upload date:
- Size: 39.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41d1c4c830ee50afd5c767514dc7e1b1f1226b851d026f6b2af1d7aa5fbe53ea
|
|
| MD5 |
dab5819b4877f267139a7d10a9d8a004
|
|
| BLAKE2b-256 |
cfa508ba968561b70b6053ac523fe9cf47e09b31892f20b4b40b56e10af35b6b
|
Provenance
The following attestation bundles were made for autoreadme_ai-0.1.0-py3-none-any.whl:
Publisher:
release.yml on atharvakadam/autoreadme-ai
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
autoreadme_ai-0.1.0-py3-none-any.whl -
Subject digest:
41d1c4c830ee50afd5c767514dc7e1b1f1226b851d026f6b2af1d7aa5fbe53ea - Sigstore transparency entry: 1341701728
- Sigstore integration time:
-
Permalink:
atharvakadam/autoreadme-ai@0b72537ac0447964a9b09858666d645b40150582 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/atharvakadam
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0b72537ac0447964a9b09858666d645b40150582 -
Trigger Event:
push
-
Statement type: