Generate useful notes for any code repository from one command
Project description
repo-notes
Generate useful notes for any code repository from one command.
repo-notes scans a project and creates a readable summary of what is inside: languages, structure, dependencies, git info, architecture hints, security notes, TODOs, scripts, environment variables, type coverage, complexity, duplicate files, and API routes.
It is useful when you:
- open a new repository and want to understand it quickly
- want a compact
REPO_NOTES.mdfor yourself or teammates - want an
AGENTS.mdfile for AI coding agents - want JSON output for automation
- want a quick static-health snapshot before working on a project
It runs locally. No hosted service required.
Installation
Requires Python 3.10 or newer.
pip install repo-notes
If you are contributing locally:
git clone https://github.com/GiftKNdlovu/repo-notes.git
cd repo-notes
pip install -e .
Quick start
Scan the current directory:
repo-notes .
This creates:
REPO_NOTES.md
Scan another project:
repo-notes /path/to/project
Force a fresh scan without using the cache:
repo-notes . --no-cache
Write to a custom file:
repo-notes . --output docs/project-notes.md
Common commands
Generate normal project notes
repo-notes .
Creates REPO_NOTES.md.
Generate notes quietly for scripts or CI
repo-notes . --quiet
Routine output is suppressed. Errors still go to stderr.
Generate HTML output
repo-notes . --format html
Creates REPO_NOTES.html.
Generate JSON output
repo-notes . --format json --output repo-notes.json
Useful for automation and downstream tools.
Generate AI-agent context
repo-notes . --agents
Creates AGENTS.md, a compact summary designed for coding agents.
Generate a starter README
repo-notes . --format readme
Creates:
rnREADME.md
README.md is treated as hand-written documentation and is not overwritten by default.
To intentionally replace README.md, use the explicit destructive form:
repo-notes . --format readme --replace-readme --force
Generate both notes and a starter README
repo-notes . --format both
Creates:
REPO_NOTES.md
rnREADME.md
Output formats
| Goal | Command | Output |
|---|---|---|
| Markdown notes | repo-notes . |
REPO_NOTES.md |
| Starter README | repo-notes . --format readme |
rnREADME.md |
| Notes + starter README | repo-notes . --format both |
REPO_NOTES.md + rnREADME.md |
| HTML report | repo-notes . --format html |
REPO_NOTES.html |
| JSON data | repo-notes . --format json |
REPO_NOTES.json |
| Agent context | repo-notes . --agents |
AGENTS.md |
What repo-notes detects
repo-notes can include sections for:
- project structure
- languages and line counts
- dependency files
- git branch, remotes, contributors, and recent commits
- architecture hints, import relationships, entry points, coupling, and low-reachability candidates
- possible secrets and sensitive files
- TODO, FIXME, HACK, BUG, and similar comments
- package scripts, Makefile targets, and other build commands
- environment variables used by the project
- CI/CD configuration
- database schemas, migrations, and ORM usage
- rough type-coverage signals
- code complexity hotspots
- duplicate files
- API endpoints from common frameworks
The output is intentionally practical rather than perfect. It gives you a useful first map of a repository, not a full static-analysis platform.
Configuration
Generate a starter config:
repo-notes . --init
This creates .repo-notes.yaml.
Example:
exclude_patterns:
- "*.log"
- "build/"
- "dist/"
include_hidden: false
min_file_size: 0
security:
entropy_threshold: 4.5
exclude_test_fixtures: false
patterns: []
structure:
max_depth: 3
show_hidden: false
output:
format: notes
order:
- structure
- project_intelligence
- stats
- deps
- git
- arch
- security
- todos
- scripts
- env_vars
- cicd
- database
- type_coverage
- complexity
- duplicates
- api_endpoints
Use config when you want repeatable output across a team or CI job.
CLI reference
repo-notes [OPTIONS] [PATH]
| Option | Meaning |
|---|---|
PATH |
Directory to scan. Defaults to the current directory. |
-c, --config FILE |
Use a specific config file. |
-o, --output PATH |
Write output to a custom path. |
--max-depth INTEGER |
Control depth of the directory tree section. |
--include-hidden |
Include hidden files and directories. |
--format notes|readme|both|html|json |
Choose output format. |
--force |
Overwrite existing generated output files. |
-q, --quiet |
Suppress routine output. Useful in CI. |
--no-cache |
Bypass incremental cache and re-scan everything. |
--init |
Create a starter .repo-notes.yaml. |
--replace-readme |
Write generated README output to README.md. Use carefully. |
--agents |
Generate AGENTS.md for coding agents. |
--version |
Show installed version. |
--help |
Show help. |
Notes on safety
README.mdis preserved by default.- Generated starter README output goes to
rnREADME.md. - Existing output files are not silently overwritten unless
--forceis used where required. - Security findings mask secret previews.
- Test-fixture/sample secrets are labelled separately from real findings when detected.
Development
For contributors:
git clone https://github.com/GiftKNdlovu/repo-notes.git
cd repo-notes
pip install -e ".[dev]"
./scripts/check.sh
Run the CLI locally:
python -m repo_notes . --no-cache
License
MIT
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 repo_notes-0.3.1.tar.gz.
File metadata
- Download URL: repo_notes-0.3.1.tar.gz
- Upload date:
- Size: 89.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd033d09dc1fb41f1ed4c4d49bc6040c471fe433b8abaa6605ddae500058061b
|
|
| MD5 |
c8643fdc6ad4853b8ae57e0da3c08ade
|
|
| BLAKE2b-256 |
91ccb4aafdadeaea2113711aad647bc91eb4362142d50c9b2d608b54bc9b3a9c
|
Provenance
The following attestation bundles were made for repo_notes-0.3.1.tar.gz:
Publisher:
publish.yml on GiftKNdlovu/repo-notes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_notes-0.3.1.tar.gz -
Subject digest:
bd033d09dc1fb41f1ed4c4d49bc6040c471fe433b8abaa6605ddae500058061b - Sigstore transparency entry: 1929316928
- Sigstore integration time:
-
Permalink:
GiftKNdlovu/repo-notes@06abd61c2b77411a71a45dd3a954eda85460ea27 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/GiftKNdlovu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@06abd61c2b77411a71a45dd3a954eda85460ea27 -
Trigger Event:
release
-
Statement type:
File details
Details for the file repo_notes-0.3.1-py3-none-any.whl.
File metadata
- Download URL: repo_notes-0.3.1-py3-none-any.whl
- Upload date:
- Size: 78.7 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 |
ce150b154e5ab937f4a56afce3b85155560e91eff01b5c7a73f4662756b45c25
|
|
| MD5 |
63641f5aea1972332a49c57422d97343
|
|
| BLAKE2b-256 |
09d0db7ac0018aecbc04b662e00a88e4b46a3e9a0ba066d3e66fabfb0a3f6bd7
|
Provenance
The following attestation bundles were made for repo_notes-0.3.1-py3-none-any.whl:
Publisher:
publish.yml on GiftKNdlovu/repo-notes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_notes-0.3.1-py3-none-any.whl -
Subject digest:
ce150b154e5ab937f4a56afce3b85155560e91eff01b5c7a73f4662756b45c25 - Sigstore transparency entry: 1929317010
- Sigstore integration time:
-
Permalink:
GiftKNdlovu/repo-notes@06abd61c2b77411a71a45dd3a954eda85460ea27 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/GiftKNdlovu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@06abd61c2b77411a71a45dd3a954eda85460ea27 -
Trigger Event:
release
-
Statement type: