An open API service indexing awesome lists of open source software.

https://github.com/naamanu/bragbot

Generate brag documents from your git history
https://github.com/naamanu/bragbot

brag-document cli devtools

Last synced: 19 days ago
JSON representation

Generate brag documents from your git history

Awesome Lists containing this project

README

          

# bragbot

Generate brag documents from your git history. Inspired by [Julia Evans' blog post on brag documents](https://jvns.ca/blog/brag-documents/).

![Demo](demo.gif)

## Installation

```bash
npm install -g @naamanu/bragbot
```

## Usage

### One-time Generation

Generate a brag document for any git repository:

```bash
# Current directory, last month
bragbot

# Specific repo and date range
bragbot /path/to/repo --since "2025-01-01" --until "2025-06-30"

# Output to specific file
bragbot -o my-brag.md

# Output to stdout (for piping)
bragbot --stdout | less

# Filter by author
bragbot --author "jane@example.com"
```

#### Options

| Option | Description |
|--------|-------------|
| `-s, --since ` | Start date (default: "1 month ago") |
| `-u, --until ` | End date (default: "today") |
| `-a, --author ` | Filter by author name/email |
| `-o, --output ` | Output file (default: `brag--to-.md`) |
| `--stdout` | Output to stdout instead of file |

### Background Daemon

Run bragbot as a background service to automatically collect daily brag documents.

#### Add Repositories to Watch

```bash
# Add a repo with auto-detected settings
bragbot daemon add /path/to/repo

# Add with custom name and author filter
bragbot daemon add /path/to/repo --name "My Project" --author "me@example.com"

# Add with custom output directory
bragbot daemon add /path/to/repo --output-dir ~/brags
```

#### Manage Watched Repos

```bash
# List all watched repositories
bragbot daemon list

# Remove a repository
bragbot daemon remove /path/to/repo
```

#### Configure Schedule

```bash
# Run daily at 9 AM (default)
bragbot daemon schedule daily

# Run weekly (Mondays at 9 AM)
bragbot daemon schedule weekly

# Run at specific hour (0-23)
bragbot daemon schedule 17 # 5 PM
```

#### Start/Stop Daemon

```bash
# Start background daemon
bragbot daemon start

# Check status
bragbot daemon status

# Stop daemon
bragbot daemon stop

# Run collection once (without daemon)
bragbot daemon run
```

#### Configuration

All daemon configuration is stored in `~/.bragbot/`:

| File | Description |
|------|-------------|
| `config.json` | Watched repos and schedule |
| `daemon.pid` | Process ID of running daemon |
| `daemon.log` | Daemon logs |
| `brags/` | Default output directory for collected brags |

## Output Format

Bragbot generates a structured markdown document with:

- **Summary** - Total commits, branches, and identified themes (features, bug fixes, etc.)
- **Work by Branch/Feature** - Grouped commits with full commit descriptions
- **Detailed Commit Log** - Table of all commits with dates, hashes, and messages

All data is read from local git history - no external requests are made.

## Development

```bash
# Install dependencies
bun install

# Run in development
bun run dev

# Build for production
bun run build
```

## License

MIT