Launching Describe
Published 2025-2-14
I am releasing Describe, a CLI to generate a single markdown file from a directory of
source files, in the spirit of creating open-source development tools for AI. The idea
is to facilitate sharing and feeding the codebase information to AI tools. What
differentiates this tool from others is that it emphasizes the usage of a
.gitignore
-like file, called .describeignore
, which spells out what not to include
in the output file. Check out https://github.com/rodlaf/describe for exact details. The
README.md fron the repo is presented below:
Describe
Describe is a command-line tool that scans a directory, embeds file contents, and generates a structured Markdown file (codebase.md
). It respects a .describeignore
file, which follows the same format as .gitignore
, allowing precise control over which files and directories are included. This makes it useful for chatbot integrations and AI-assisted workflows, ensuring only relevant content is extracted while keeping unnecessary files out of the output.
Installation Guide
Option 1: Install via Homebrew (Recommended)
If you use Homebrew, you can install describe
with:
brew tap rodlaf/describe
brew install describe
Homebrew will automatically select the correct binary based on your system architecture (Apple Silicon or Intel).
Option 2: Download Executable
If you don't have Go installed, you can download a precompiled binary:
- Visit the Releases page.
- Download the correct binary for your system:
- macOS (Apple Silicon):
describe-macos-arm64.tar.gz
- macOS (Intel):
describe-macos-amd64.tar.gz
- Linux (x86_64):
describe-linux-amd64.tar.gz
- Linux (ARM64):
describe-linux-arm64.tar.gz
- macOS (Apple Silicon):
- Extract and move it to
/usr/local/bin
:tar -xvzf describe-macos-arm64.tar.gz mv describe /usr/local/bin/ chmod +x /usr/local/bin/describe
- Run:
describe --help
Option 3: Install with Go
If you already have Go 1.23+ installed, you can install describe
with:
go install github.com/rodlaf/describe@latest
This will install describe
in Go’s bin directory (e.g., $HOME/go/bin/describe
).
If you get a "command not found" error after running describe
, add Go’s bin directory to your system’s PATH.
For macOS/Linux
Add this to your ~/.bashrc
, ~/.bash_profile
, or ~/.zshrc
:
export PATH=$HOME/go/bin:$PATH
Then run:
source ~/.zshrc # or source ~/.bashrc
For Windows
Add %USERPROFILE%\go\bin
to your System Environment Variables:
- Open Control Panel → System → Advanced system settings.
- Click Environment Variables.
- Under System variables, find Path, then click Edit.
- Add
C:\Users\YourUsername\go\bin
(ReplaceYourUsername
). - Click OK, restart your terminal, and run:
describe --help
Now describe
should work globally! 🎉
Usage
Basic Usage
describe <input-directory>
- Scans
<input-directory>
. - Uses
.describeignore
(if present). - Outputs
codebase.md
.
Custom Output File
describe <input-directory> -output docs.md
- Saves Markdown to
docs.md
.
Custom Ignore File
describe <input-directory> -ignore .gitignore
- Uses
.gitignore
instead of.describeignore
.
Help
describe --help
How .describeignore
Works
The .describeignore
file works just like .gitignore
, specifying files or directories to exclude from the output.
Example .describeignore
# Ignore all `.log` and `.tmp` files
*.log
*.tmp
# Ignore entire directories
node_modules/
build/
- Wildcards (
*
) match patterns. - Folder names exclude whole directories.
- Specific file names can be ignored.
If .describeignore
is missing, one will be created automatically with .git/
as a default entry.
License
This project is licensed under the MIT License.