Skip to content

Automated daily standup generator with ZERO manual input - built with OpenAI Agents SDK

License

Notifications You must be signed in to change notification settings

aetheronhq/standup-zero

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Standup Zero

Automated daily standup generator with ZERO manual input.

Analyzes your GitHub commits, Jira tickets, and generates a standup update, then posts it to Slack automatically.

Features

  • 🤖 Powered by OpenAI AgentKit
  • 📊 Fetches real data from GitHub & Jira
  • 💬 Posts formatted standup to Slack
  • ⚡ Zero manual input required

Setup

1. Install Dependencies

pip install -r requirements.txt

2. Configure Environment

Copy .env.example to .env and fill in your credentials:

cp .env.example .env

Required credentials:

3. Run

python main.py

Configuration

Edit .env to customize:

  • GITHUB_USERNAME: Your GitHub username (fetches ALL repos you work on)
  • JIRA_EMAIL: Your Atlassian account email (fetches ALL tickets assigned to you)
  • SLACK_CHANNEL: Target channel (default: #dev-standup)

Note: Both GitHub and Jira integrations automatically fetch ALL your activity - no need to specify individual repos or projects.

Agent Workflow Explained

GitHub Analyst Agent

Purpose: Transforms raw GitHub API data into natural language summaries

Process:

  1. Calls get_github_activity() tool
  2. Receives commits, PRs, reviews from ALL repos (last 24h)
  3. Gets README snippets for project context
  4. Summarizes: "Merged PR #234 to api-service (backend API), made 5 commits on feature/dashboard"
  5. Returns summary to Coordinator

Jira Analyst Agent

Purpose: Transforms raw Jira API data into natural language summaries

Process:

  1. Calls get_jira_activity() tool
  2. Receives tickets updated in last 24h
  3. Summarizes: "Completed AUTH-456, moved DASH-789 to Code Review"
  4. Returns summary to Coordinator

Standup Coordinator Agent

Purpose: Orchestrates the entire workflow

Process:

  1. Hands off to GitHub Analyst (receives code summary)
  2. Hands off to Jira Analyst (receives project summary)
  3. Synthesizes both into Yesterday/Today/Blockers format
  4. Calls post_to_slack() to post final standup

Testing

Test Full Workflow

python main.py

Test Individual Tools

from tools.github_tools import get_github_activity
print(get_github_activity())

from tools.jira_tools import get_jira_activity
print(get_jira_activity())

from tools.slack_tools import post_to_slack
print(post_to_slack("Test message"))

Test Individual Agents

from agents import Runner
from main import github_analyst, jira_analyst

# Test GitHub Analyst alone
result = await Runner.run(github_analyst, "Summarize my GitHub activity")
print(result.final_output)

# Test Jira Analyst alone
result = await Runner.run(jira_analyst, "Summarize my Jira activity")
print(result.final_output)

Automation

Cron (Mac/Linux)

crontab -e

Add line to run daily at 9am:

0 9 * * * cd /path/to/standup-zero && /path/to/python main.py

GitHub Actions

See .github/workflows/daily-standup.yml for cloud automation setup.

How It Works

This project showcases AgentKit's multi-agent architecture with specialized agents working together:

  1. Standup Coordinator (main agent) orchestrates the workflow
  2. GitHub Analyst Agent fetches and summarizes code activity
  3. Jira Analyst Agent fetches and summarizes project activity
  4. Coordinator synthesizes summaries into final standup and posts to Slack

Each analyst agent is an expert in its domain, transforming raw API data into AI-digestible summaries before the coordinator weaves everything together.

Architecture

Standup Coordinator Agent
├─ Hands off to → GitHub Analyst Agent
│                  └─ Tool: get_github_activity()
│                  └─ Returns: Natural language code summary
│
├─ Hands off to → Jira Analyst Agent  
│                  └─ Tool: get_jira_activity()
│                  └─ Returns: Natural language project summary
│
├─ Synthesizes both summaries into Yesterday/Today/Blockers format
│
└─ Tool: post_to_slack()
   └─ Posts formatted standup to channel

Why this approach?

  • Modularity: Each agent has a single, clear responsibility
  • Reusability: Analyst agents can be used independently or in other workflows
  • Maintainability: Easy to add new data sources (Calendar, Linear, etc.)
  • Showcases AgentKit: Demonstrates handoffs and multi-agent orchestration

License

MIT

About

Automated daily standup generator with ZERO manual input - built with OpenAI Agents SDK

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages