Skip to main content

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.md for yourself or teammates
  • want an AGENTS.md file 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.md is preserved by default.
  • Generated starter README output goes to rnREADME.md.
  • Existing output files are not silently overwritten unless --force is 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

repo_notes-0.3.1.tar.gz (89.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

repo_notes-0.3.1-py3-none-any.whl (78.7 kB view details)

Uploaded Python 3

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

Hashes for repo_notes-0.3.1.tar.gz
Algorithm Hash digest
SHA256 bd033d09dc1fb41f1ed4c4d49bc6040c471fe433b8abaa6605ddae500058061b
MD5 c8643fdc6ad4853b8ae57e0da3c08ade
BLAKE2b-256 91ccb4aafdadeaea2113711aad647bc91eb4362142d50c9b2d608b54bc9b3a9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for repo_notes-0.3.1.tar.gz:

Publisher: publish.yml on GiftKNdlovu/repo-notes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for repo_notes-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ce150b154e5ab937f4a56afce3b85155560e91eff01b5c7a73f4662756b45c25
MD5 63641f5aea1972332a49c57422d97343
BLAKE2b-256 09d0db7ac0018aecbc04b662e00a88e4b46a3e9a0ba066d3e66fabfb0a3f6bd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for repo_notes-0.3.1-py3-none-any.whl:

Publisher: publish.yml on GiftKNdlovu/repo-notes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page