Awesome
<p align="center"> <img src="https://img.icons8.com/?size=512&id=55494&format=png" width="99"> <img src="https://img.icons8.com/?size=512&id=kTuxVYRKeKEY&format=png" width="99"> </p> <h1 align="center">README-AI</h1> <p align="center"> <em>Automated <code>README</code> file generator, powered by large language model APIs</em> </p> <p align="center"> <a href="https://github.com/eli64s/readme-ai/actions"> <img src="https://img.shields.io/github/actions/workflow/status/eli64s/readme-ai/release-pipeline.yml?logo=githubactions&label=CICD&logoColor=white&color=c125ff" alt="github-actions"> </a> <a href="https://app.codecov.io/gh/eli64s/readme-ai"> <img src="https://img.shields.io/codecov/c/github/eli64s/readme-ai?logo=codecov&logoColor=white&label=Coverage&color=c125ff" alt="codecov"> </a> <a href="https://pypi.python.org/pypi/readmeai/"> <img src="https://img.shields.io/pypi/v/readmeai?logo=Python&logoColor=white&label=PyPI&color=c125ff" alt="pypi-version"> </a> <a href="https://www.pepy.tech/projects/readmeai"> <img src="https://img.shields.io/pepy/dt/readmeai?logo=PyPI&logoColor=white&label=Downloads&color=c125ff" alt="pepy-total-downloads"> </a> <a href="https://opensource.org/license/mit/"> <img src="https://img.shields.io/github/license/eli64s/readme-ai?logo=opensourceinitiative&logoColor=white&label=License&color=c125ff" alt="license"> </a> </p><details><summary>Documentation</summary> </details> <details><summary>Quick Links</summary> </details>
๐ Overview
Objective
Readme-ai is a developer tool that auto-generates README.md files using a combination of data extraction and generative ai. Simply provide a repository URL or local path to your codebase and a well-structured and detailed README file will be generated for you.
Motivation
Streamlines documentation creation and maintenance, enhancing developer productivity. This project aims to enable all skill levels, across all domains, to better understand, use, and contribute to open-source software.<br>
<!-- > [!IMPORTANT] > > <sub>Readme-ai is currently under development with an opinionated configuration and setup. It is vital to review all generated text from the LLM API to ensure it accurately represents your project.</sub> -->๐พ Demo
CLI
Streamlit
<!-- > [!TIP] > > <sub>Offline mode is useful for generating a boilerplate README at no cost. View the offline README.md example [here!](https://github.com/eli64s/readme-ai/blob/main/examples/markdown/readme-offline.md)</sub> -->[!TIP]
<sub>Check out this YouTube tutorial created by a community member!</sub>
๐งฌ Features
- Flexible README Generation: Robust repository context extraction engine combined with generative AI.
- Customizable Output: Dozens of CLI options for styling/formatting, badges, header designs, and more.
- Language Agnostic: Works across a wide range of programming languages and project types.
- Multi-LLM Support: Compatible with
OpenAI
,Ollama
,Google Gemini
andOffline Mode
.- Offline Mode: Generate a boilerplate README without calling an external API.
See a few examples of the README-AI customization options below:
<table> <!-- row 0 --> <tr> <td colspan="2" align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/project-logo-custom.png" alt="default-header" width="900"/><br> <code>--emojis --image custom --badge-color DE3163 --header-style compact --toc-style links</code> </td> </tr> <!-- row 1 --> <tr> <td colspan="2" align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/header-minimal.png" width="900"/><br> <code>--image cloud --header-style compact --toc-style fold</code> </td> </tr> <!-- row 2 --> <tr> <td align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/header-cloud.png" alt="cloud-db-logo" width="450"/><br> <code>--align left --badge-style flat-square --image cloud</code> </td> <td align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/header-gradient.png" alt="gradient-markdown-logo" width="450"/><br> <code>--align left --badge-style flat --image gradient</code> </td> </tr> <!-- row 3 --> <tr> <td align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/header-custom.png" alt="custom-logo" width="450"/><br> <code>--badge-style flat --image custom</code> </td> <td align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/header-skills.png" alt="skills-light" width="450"/><br> <code>--badge-style skills-light --image grey</code> </td> </tr> <tr> <!-- row 4 --> <td align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/header-flat-square.png" alt="readme-ai-header" width="450"/><br> <code>--badge-style flat-square</code> </td> <td align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/header-black.png" alt="black-logo" width="450"/><br> <code>--badge-style flat --image black</code> </td> </tr> <!-- row 5 --> <tr> <td colspan="2" align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/header-default-v2.png" alt="default-header" width="900"/><br> <code>--image custom --badge-color 00ffe9 --badge-style flat-square --header-style classic</code> </td> </tr> <!-- row 6 --> <tr> <td colspan="2" align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/project-logo-dalle.png" alt="default-header" width="900"/><br> <code>--image llm --badge-style plastic --header-style classic</code> </td> </tr> <!-- row 7 --> <tr> <td colspan="2" align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/header-padded.png" alt="default-header" width="900"/><br> <code>--image custom --badge-color BA0098 --badge-style flat-square --header-style modern --toc-style fold</code> </td> </tr> </table>See the <a href="https://github.com/eli64s/readme-ai?tab=readme-ov-file#-configuration">Configuration</a> section for a complete list of CLI options.
<details closed> <summary><strong>๐ Overview</strong></summary><br> <table> <tr> <td><b>Overview</b><br> <p> <ol> - High-level introduction of the project, focused on the value proposition and use-cases, rather than technical aspects. </ol> </td> </tr> <tr> <td align="center"><img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/llm-overview.png" alt="llm-overview" width="700" /></td> </tr> </table> </details> <details closed> <summary><strong>๐งฉ Features</strong></summary><br> <table> <tr> <td><b>Features Table</b><br> <p> <ol> - Generated markdown table that highlights the key technical features and components of the codebase. This table is generated using a structured <a href="https://github.com/eli64s/readme-ai/blob/main/readmeai/config/settings/prompts.toml#L18">prompt template.</a> </ol> </p> </td> </tr> <tr> <td align="center"><img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/llm-features.png" alt="llm-features" width="700" /></td> </tr> </table> </details> <details closed> <summary><strong>๐ Codebase Documentation</strong></summary><br> <table> <tr> <td><b>Repository Structure</b><br> <p> <ol> - Directory tree structure is generated using pure Python <a href="https://github.com/eli64s/readme-ai/blob/main/readmeai/generators/tree.py">(tree.py)</a> and embedded in the README. </ol> </p> </td> </tr> <tr> <td align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/directory-tree.png" alt="directory-tree" width="700" /> </td> </tr> <tr> <td style="padding-top:20px;"> <b>File Summaries</b><br> <p> <ol> - Summarizes key files in the codebase, and also used as context for additional <a href="https://github.com/eli64s/readme-ai/blob/main/readmeai/config/settings/prompts.toml">prompts!</a> </ol> </p> </td> </tr> <tr> <td align="center"> <img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/llm-summaries.png" alt="llm-summaries" width="700" /> </tr> </table> </details> <details closed> <summary><strong>๐ Quickstart Commands</strong></summary> <br> <table> <tr> <td><b>Getting Started</b><br> <p> <ol> - Auto-generated setup guides based on <em>language</em> and <em>dependency</em> analysis. </ol> <ol> - <code>Install</code>, <code>Usage</code>, and <code>Test</code> guides are supported for many languages. </ol> <ol> - The <a href="https://github.com/eli64s/readme-ai/tree/main/readmeai/parsers">parsers</a> module is a collection of tool-specific parsers that extract dependencies and metadata. </ol> </p> </td> </tr> <tr> <td align="center"><img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/quickstart.png" alt="quick-start" width="700" /> </td> </tr> </table> </details> <details closed> <summary><strong>๐ฐ Contributing Guidelines</strong></summary> <br> <table> <tr> <td><b>Contributing Guide</b><br> <p> <ol>- Dropdown section that outlines general process for contributing to your project.</ol> <ol>- Provides links to your contributing guidelines, issues page, and more resources.</ol> <ol>- Graph of contributors is also included.</ol> </p> </td> </tr> <tr> <td align="center"><img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/contributing_guidelines.png" alt="contributing-guidelines" width="700" /></td> </tr> <tr> <td><b>Additional Sections</b><br> <p> <ol> - <code>Project Roadmap</code>, <code>Contributing Guidelines</code>, <code>License</code>, and <code>Acknowledgements</code> are included by default. </ol> </p> </td> </tr> <tr> <td align="center"><img src="https://raw.githubusercontent.com/eli64s/readme-ai/main/examples/images/additional-sections.png" alt="contributing-and-more" width="700" /></td> </tr> </table> </details>๐ Getting Started
System Requirements:
- Python 3.9+
- Package manager/Container:
pip
,pipx
,docker
- LLM service:
OpenAI
,Ollama
,Google Gemini
,Offline Mode
Anthropic
andLiteLLM
coming soon!
Repository URL or Local Path:
Make sure to have a repository URL or local directory path ready for the CLI.
Select an LLM API Service:
- OpenAI: Recommended, requires an account setup and API key.
- Ollama: Free and open-source, potentially slower and more resource-intensive.
- Google Gemini: Requires a Google Cloud account and API key.
- Offline Mode: Generates a boilerplate README without making API calls.
โ๏ธ Installation
Using pip
โฏ pip install readmeai
Using pipx
โฏ pipx install readmeai
[!TIP]
<sub>Use pipx to install and run Python command-line applications without causing dependency conflicts with other packages!</sub>
Using docker
โฏ docker pull zeroxeli/readme-ai:latest
<!--
#### Using `conda`
[![conda](https://img.shields.io/badge/Anaconda-44A833.svg?style=flat&logo=Anaconda&logoColor=white)](https://anaconda.org/zeroxeli/readmeai)
```sh
โฏ conda install -c conda-forge readmeai
```
-->
From source
<details closed><summary><i>Build readme-ai</i></summary><br>
Clone repository and navigate to the project directory:
โฏ git clone https://github.com/eli64s/readme-ai
โฏ cd readme-ai
Using bash
โฏ bash setup/setup.sh
Using poetry
โฏ poetry install
</details>
๐ค Usage
Environment Variables
OpenAI
Generate a OpenAI API key and set it as the environment variable OPENAI_API_KEY
.
# Using Linux or macOS
โฏ export OPENAI_API_KEY=<your_api_key>
# Using Windows
โฏ set OPENAI_API_KEY=<your_api_key>
Ollama
Pull model of your choice from the Ollama registry as follows:
# i.e. mistral, llama3, gemma2, etc.
โฏ ollama pull mistral:latest
Start the Ollama server:
โฏ export OLLAMA_HOST=127.0.0.1 && ollama serve
<sub>For more details, check out the Ollama repository.</sub>
Google Gemini
Generate a Google API key and set it as the environment variable GOOGLE_API_KEY
.
โฏ export GOOGLE_API_KEY=<your_api_key>
Running README-AI
Using pip
With OpenAI API:
โฏ readmeai --repository https://github.com/eli64s/readme-ai \
--api openai \
--model gpt-3.5-turbo
With Ollama:
โฏ readmeai --repository https://github.com/eli64s/readme-ai \
--api ollama \
--model llama3
With Gemini:
โฏ readmeai --repository https://github.com/eli64s/readme-ai \
--api gemini
--model gemini-1.5-flash
Advanced Options:
โฏ readmeai --repository https://github.com/eli64s/readme-ai \
--output readmeai.md \
--api openai \
--model gpt-4-turbo \
--badge-color A931EC \
--badge-style flat-square \
--header-style compact \
--toc-style fold \
--temperature 0.1 \
--tree-depth 2
--image LLM \
--emojis
Using docker
โฏ docker run -it \
-e OPENAI_API_KEY=$OPENAI_API_KEY \
-v "$(pwd)":/app zeroxeli/readme-ai:latest \
-r https://github.com/eli64s/readme-ai
Using streamlit
<sub>Try directly in your browser on <a href="https://streamlit.io/">Streamlit</a>, no installation required! For more details, see the <a href="https://github.com/eli64s/readme-ai-streamlit">readme-ai-streamlit</a> repository.</sub>
From source
<details closed><summary><i>Using readme-ai</i></summary><br>
Using bash
โฏ conda activate readmeai
โฏ python3 -m readmeai.cli.main -r https://github.com/eli64s/readme-ai
Using poetry
โฏ poetry shell
โฏ poetry run python3 -m readmeai.cli.main -r https://github.com/eli64s/readme-ai
</details>
๐งช Testing
Using pytest
โฏ make test
Using nox
โฏ make test-nox
[!TIP]
<sub>Use nox to test application against multiple Python environments and dependencies!</sub>
๐ง Configuration
Customize your README generation using these CLI options:
Option | Description | Default |
---|---|---|
--align | Text align in header | center |
--api | LLM API service (openai, ollama, offline) | offline |
--badge-color | Badge color name or hex code | 0080ff |
--badge-style | Badge icon style type | flat |
--base-url | Base URL for the repository | v1/chat/completions |
--context-window | Maximum context window of the LLM API | 3999 |
--emojis | Adds emojis to the README header sections | False |
--header-style | Header template style | classic |
--image | Project logo image | blue |
--model | Specific LLM model to use | gpt-3.5-turbo |
--output | Output filename | readme-ai.md |
--rate-limit | Maximum API requests per minute | 5 |
--repository | Repository URL or local directory path | None |
--temperature | Creativity level for content generation | 0.9 |
--toc-style | Table of contents template style | bullet |
--top-p | Probability of the top-p sampling method | 0.9 |
--tree-depth | Maximum depth of the directory tree structure | 2 |
<!-- > See the official documentation for more details on [CLI options](https://eli64s.github.io/readme-ai/cli-options). -->[!TIP] For a full list of options, run
readmeai --help
in your terminal.
Project Badges
The --badge-style
option lets you select the style of the default badge set.
When providing the --badge-style
option, readme-ai does two things:
- Formats the default badge set to match the selection (i.e. flat, flat-square, etc.).
- Generates an additional badge set representing your projects dependencies and tech stack (i.e. Python, Docker, etc.)
Example
โฏ readmeai --badge-style flat-square --repository https://github.com/eli64s/readme-ai
Output
{... project logo ...}
{... project name ...}
{...project slogan...}
<img src="https://img.shields.io/github/license/eli64s/readme-ai?style=flat-square&color=0080ff&logo=opensourceinitiative&logoColor=white"> <img src="https://img.shields.io/github/last-commit/eli64s/readme-ai?style=flat-square&color=0080ff&logo=git&logoColor=white"> <img src="https://img.shields.io/github/languages/top/eli64s/readme-ai?style=flat-square&color=0080ff"> <img src="https://img.shields.io/github/languages/count/eli64s/readme-ai?style=flat-square&color=0080ff"> <br>Developed with the software and tools below.
<img src="https://img.shields.io/badge/GNU%20Bash-4EAA25.svg?style=flat-square&logo=GNU-Bash&logoColor=white"> <img src="https://img.shields.io/badge/tqdm-FFC107.svg?style=flat-square&logo=tqdm&logoColor=black"> <img src="https://img.shields.io/badge/Pydantic-E92063.svg?style=flat-square&logo=Pydantic&logoColor=white"> <img src="https://img.shields.io/badge/YAML-CB171E.svg?style=flat-square&logo=YAML&logoColor=white" alt="YAML"> <img src="https://img.shields.io/badge/Poetry-60A5FA.svg?style=flat-square&logo=Poetry&logoColor=white"> <img src="https://img.shields.io/badge/OpenAI-412991.svg?style=flat-square&logo=OpenAI&logoColor=white"> <br> <img src="https://img.shields.io/badge/Python-3776AB.svg?style=flat-square&logo=Python&logoColor=white"> <img src="https://img.shields.io/badge/AIOHTTP-2C5BB4.svg?style=flat-square&logo=AIOHTTP&logoColor=white"> <img src="https://img.shields.io/badge/Docker-2496ED.svg?style=flat-square&logo=Docker&logoColor=white"> <img src="https://img.shields.io/badge/GitHub%20Actions-2088FF.svg?style=flat-square&logo=GitHub-Actions&logoColor=white"> <img src="https://img.shields.io/badge/Pytest-0A9EDC.svg?style=flat-square&logo=Pytest&logoColor=white"> <br>{... end of header ...}
Project Logo
Select a project logo using the --image
option.
For custom images, see the following options:
- Use
--image custom
to invoke a prompt to upload a local image file path or URL. - Use
--image llm
to generate a project logo using a LLM API (OpenAI only).
๐จ Examples
Language/Framework | Output File | Input Repository | Description |
---|---|---|---|
Python | readme-python.md | readme-ai | Core readme-ai project |
TypeScript & React | readme-typescript.md | ChatGPT App | React Native ChatGPT app |
PostgreSQL & DuckDB | readme-postgres.md | Buenavista | Postgres proxy server |
Kotlin & Android | readme-kotlin.md | file.io Client | Android file sharing app |
Streamlit | readme-streamlit.md | readme-ai-streamlit | Streamlit UI for readme-ai app |
Rust & C | readme-rust-c.md | CallMon | System call monitoring tool |
Docker & Go | readme-go.md | docker-gs-ping | Dockerized Go app |
Java | readme-java.md | Minimal-Todo | Minimalist todo Java app |
FastAPI & Redis | readme-fastapi-redis.md | async-ml-inference | Async ML inference service |
Jupyter Notebook | readme-mlops.md | mlops-course | MLOps course repository |
Apache Flink | readme-local.md | Local Directory | Example using a local directory |
[!NOTE] See additional README file examples here.
๐ Roadmap
- v1.0 release with new features, bug fixes, and improved performance.
- Develop
readmeai-vscode
extension to generate README files (WIP). - Add new CLI options to enhance README file customization.
-
--audit
to review existing README files and suggest improvements. -
--template
to select a README template style (i.e. ai, data, web, etc.) -
--language
to generate README files in any language (i.e. zh-CN, ES, FR, JA, KO, RU)
-
- Develop robust documentation generator to build full project docs (i.e. Sphinx, MkDocs)
- Create community-driven templates for README files and gallery of readme-ai examples.
- GitHub Actions script to automatically update README file content on repository push.
๐ Changelog
๐ค Contributing
To grow the project, we need your help! See the links below to get started.
<br> <p align="left"> <a href="https://github.com{/eli64s/readme-ai/}graphs/contributors"> <img src="https://contrib.rocks/image?repo=eli64s/readme-ai"> </a> </p>