A simple and efficient CLI tool for managing daily standup updates via GitHub. The bot streamlines team communication by collecting standup information and committing it to a shared repository, where GitHub-Slack integration broadcasts updates to your team channel.
- 🚀 Simple CLI interface - Quick daily standup entries with minimal friction
- 🔄 GitHub integration - Uses GitHub CLI (
gh) for all Git operations - 👥 Team collaboration - Shared daily branches for all team standups
- 📢 Slack visibility - Full standup content visible in Slack via PR descriptions
- 🎯 Smart workflows - Automatic branch management and PR creation
- 💾 Local configuration - Stores preferences for quick daily use
- 🛡️ Error recovery - Saves standups locally if push fails
- 🤖 MCP Server - Model Context Protocol server for AI assistant integration
- Go 1.21+ (for building from source)
- GitHub CLI (
gh) installed and authenticated - Git repository for storing standups (must be created beforehand)
- GitHub-Slack integration configured for your repository (optional)
Before using standup-bot, you must:
-
Create the standup repository first:
# Create a new repository on GitHub (replace with your org/repo name) gh repo create your-org/standup-notes --public --description "Daily standup notes" # Or use an existing repository
-
Ensure GitHub CLI has access:
# Authenticate GitHub CLI if not already done gh auth login # Verify you have access to the standup repository gh repo view your-org/standup-notes
-
Configure standup-bot with your repository details (see Quick Start below)
The easiest way to install standup-bot is via Homebrew:
# Add the tap (only needed once)
brew tap livelabs-ventures/tap
# Install standup-bot
brew install standup-botDownload the pre-built binary for your platform from the releases page.
# Clone the repository
git clone https://github.com/livelabs-ventures/go-bot.git
cd go-bot
# Build the binary
make build
# Optional: Install to $GOPATH/bin
make installIf you have Go installed, you can use:
go install github.com/standup-bot/standup-bot/cmd/standup-bot@latestPrerequisites: Make sure you've completed the setup requirements above (repository created, GitHub CLI authenticated).
Run the bot for the first time to configure:
standup-botYou'll be prompted for:
- GitHub Repository: The repo where standups will be stored (e.g.,
org/standup-repo)⚠️ This repository must already exist and you must have write access
- Your Name: Used for your standup file and commit attribution
Configuration is saved to ~/.standup-bot/config.json.
Run the bot each day to record your standup:
standup-botYou'll answer three questions:
- What did you do yesterday? (multi-line, empty line to finish)
- What will you do today? (multi-line, empty line to finish)
- Any blockers? (single line, can be empty)
At the end of the day, anyone can merge all standups:
standup-bot --mergeThe default workflow creates a shared daily PR containing all team standups:
- First person creates branch
standup/YYYY-MM-DDand opens a PR - Subsequent team members add their standups to the same branch
- PR description automatically updates with all standups
- Single merge notification in Slack when PR is merged
Benefits:
- Full standup content visible in Slack
- One PR per day instead of one per person
- Reduced notification noise
- Clear daily boundaries
For simpler setups, use direct commits with multi-line messages:
standup-bot --directThis creates individual commits with the full standup in the commit message.
| Command | Description |
|---|---|
standup-bot |
Record your daily standup (uses PR workflow) |
standup-bot --direct |
Record standup using direct commit workflow |
standup-bot --merge |
Merge today's standup pull request |
standup-bot --config |
Reconfigure the bot (repository, name) |
standup-bot --name alice |
Override configured name (useful for testing) |
standup-bot --json '{"yesterday":["item1"], "today":["item2"], "blockers":"None"}' |
Provide standup content as JSON |
standup-bot --output json |
Return results in JSON format for parsing |
standup-bot mcp-server |
Run the MCP server for AI assistant integration |
standup-bot --help |
Show help information |
stand-ups/
├── alice.md # Alice's standup history
├── bob.md # Bob's standup history
└── charlie.md # Charlie's standup history
Each person's standups are appended to their markdown file:
# Alice's Standups
## 2025-07-31
**Yesterday:**
- Completed user authentication API endpoints
- Fixed bug in password reset flow
**Today:**
- Start frontend integration for auth
- Write unit tests for auth endpoints
**Blockers:**
None
---
## 2025-07-30
**Yesterday:**
- Set up project structure
- Created database schema
**Today:**
- Work on authentication endpoints
**Blockers:**
Waiting for API design approval
---The standup-bot includes an MCP (Model Context Protocol) server for integration with AI assistants like Claude.
# Add the MCP server using Claude Code CLI
claude mcp add standup-bot /path/to/standup-bot mcp-serverThat's it! Now you can ask Claude to "submit my standup" and it will use the standup-bot directly.
See MCP Server Documentation for full details.
~/.standup-bot/config.json
{
"repository": "org/standup-repo",
"name": "Alice",
"localRepoPath": "~/.standup-bot/repo"
}Currently, no environment variables are used. All configuration is file-based.
go-bot/
├── cmd/standup-bot/ # Main application entry point
├── internal/cli/ # CLI implementation
├── pkg/ # Public packages
│ ├── config/ # Configuration management
│ ├── git/ # Git operations wrapper
│ └── standup/ # Standup business logic
├── Makefile # Build automation
├── go.mod # Go module definition
└── README.md # This file
# Build binary
make build
# Run tests
make test
# Check test coverage
make coverage
# Clean build artifacts
make cleanThe project includes comprehensive unit tests with mocked external dependencies:
# Run all tests
make test
# Run tests with coverage
make coverage
# Run tests for a specific package
go test ./pkg/git/...GitHub CLI not found
Error: GitHub CLI not found. Please install it from https://cli.github.com/
Solution: Install GitHub CLI and ensure it's in your PATH.
Not authenticated
Error: not authenticated with GitHub. Please run 'gh auth login'
Solution: Run gh auth login to authenticate with GitHub.
Repository not found
Error: repository not found at ~/.standup-bot/repo. Please run 'standup-bot --config' to set up
Solution: Run standup-bot --config to reconfigure.
Push failed
If pushing fails, your standup is saved locally to /tmp/standup-{name}-{date}.txt. You can manually add it later or retry when network is available.
To start fresh:
rm -rf ~/.standup-bot
standup-bot --config- Run daily: Make it part of your morning routine
- Be concise: Bullet points work well
- Merge regularly: Designate someone to merge at day's end
- Review together: Use merged PRs for team standup meetings
- Keep history: The markdown files serve as a searchable archive
The standup bot can be used programmatically by LLMs, scripts, and other automation tools.
Provide standup content as JSON instead of interactive prompts:
standup-bot --json '{
"yesterday": ["Implemented user authentication", "Fixed login bug"],
"today": ["Write unit tests", "Start on user profile feature"],
"blockers": "None"
}'Get machine-readable output for parsing:
standup-bot --output json --json '{
"yesterday": ["Completed API endpoints"],
"today": ["Frontend integration"],
"blockers": "None"
}'Output example:
{
"success": true,
"message": "Standup recorded successfully",
"date": "2025-07-31",
"user": "alice",
"yesterday": ["Completed API endpoints"],
"today": ["Frontend integration"],
"blockers": "None",
"file_path": "/home/alice/.standup-bot/repo/stand-ups/alice.md",
"pr_number": "42",
"pr_url": "https://github.com/org/standup-repo/pull/42"
}CI/CD Pipeline:
# Include in GitHub Actions to track deployment activities
standup-bot --json '{
"yesterday": ["Deployed version 1.2.3 to production"],
"today": ["Monitor metrics", "Address any issues"],
"blockers": "None"
}' --output jsonErrors are returned in JSON format when using --output json:
{
"success": false,
"error": "failed to parse JSON input: unexpected end of JSON input",
"date": "2025-07-31"
}The standup-bot includes a Model Context Protocol (MCP) server that allows AI assistants like Claude to interact with standup functionality.
standup-bot mcp-server- submit_standup - Submit daily standup with yesterday/today/blockers
- create_standup_pr - Create or manage standup pull requests
- get_standup_status - Check if today's standup is complete
For Claude Desktop, add to your configuration:
{
"mcpServers": {
"standup-bot": {
"command": "/path/to/standup-bot",
"args": ["mcp-server"]
}
}
}See MCP Server Documentation for detailed information.
To test the bot with multiple users without changing your configuration:
# Record standup as yourself
standup-bot
# Record standup as Alice (for testing)
standup-bot --name alice
# Record standup as Bob (for testing)
standup-bot --name bobThis is useful for:
- Testing the shared daily PR workflow
- Demonstrating the tool to your team
- Debugging multi-user scenarios
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Cobra for CLI management
- Integrates with GitHub CLI for Git operations
- Designed for teams using GitHub-Slack integration