WorkingDirectory icon
Clone icon
Commands icon
Docker icon
Responses icon
SlackIncomingWebhook icon
Schedule icon

Summarize Weekly Git Commits with AI and Send a Development Report to Slack

Use Kestra to clone a repo, collect 7 days of Git commits, summarize them with OpenAI, and post a plain-text weekly development report to Slack.

Categories
AI

Writing the weekly engineering update by hand is repetitive and easy to skip. This blueprint reads the last seven days of Git history from any repository and branch, uses OpenAI to turn raw commit messages into a clear, plain-text development summary, and posts it to Slack on a fixed schedule. It gives engineering teams consistent visibility into shipped work, combining Git commit summarization, AI text generation, and Slack notifications in one orchestrated pipeline.

How it works

  1. A io.kestra.plugin.core.trigger.Schedule trigger fires every Friday at 15:00 UTC via the cron 0 15 * * 5.
  2. A io.kestra.plugin.core.flow.WorkingDirectory task wraps the Git steps so cloned files persist across tasks.
  3. io.kestra.plugin.git.Clone checks out the branch input from the repository input (defaults to the public kestra-io/blueprints repo on main).
  4. io.kestra.plugin.scripts.shell.Commands, running on a Docker task runner with the bitnami/git:latest image, sets safe.directory, unshallows and fetches the branch, then runs git log --since="7 days ago" to write the commits to commits.txt as an output file.
  5. io.kestra.plugin.openai.Responses reads commits.txt with the read() function and prompts the gpt-4o model to produce a plain-text weekly update with no markdown formatting.
  6. io.kestra.plugin.slack.notifications.SlackIncomingWebhook posts the generated outputText to Slack via an incoming webhook.

What you get

  • A weekly, plain-text development summary suitable for posting directly in Slack.
  • Automatic collection of the last 7 days of commits from any branch.
  • A hands-off cadence: the report is generated and delivered without manual effort.
  • Support for both public and private repositories.

Who it's for

  • Engineering teams and technical leads who need recurring progress visibility.
  • Engineering managers reporting status upward to product or leadership.
  • Open-source maintainers publishing regular changelogs.

Why orchestrate this with Kestra

Git can log commits, but it cannot schedule the report, call an AI model, and deliver to Slack as one reliable, observable unit of work. Kestra adds an event-driven Schedule trigger, automatic retries on transient clone, network, or API failures, full execution logs and lineage across every step, and a declarative YAML definition you can version-control alongside your code. The whole cron-to-Slack flow lives in one auditable place instead of scattered cron jobs and shell scripts.

Prerequisites

  • A Kestra instance.
  • Docker available on the Kestra worker for the shell task runner.
  • An OpenAI account with API access for the gpt-4o model.
  • A Slack incoming webhook URL for the target channel.

Secrets

  • OPENAI_API_KEY: API key used by the summarize_commits task to call OpenAI.
  • SLACK_WEBHOOK_URL: Slack incoming webhook URL (swap in for the mock URL on the slack task in production).
  • GITHUB_ACCESS_TOKEN: Git password or token, needed only when cloning a private repository.

Quick start

  1. Add the secrets above to your Kestra instance.
  2. Set the repository and branch inputs to the repo and branch you want to track.
  3. Replace the mock webhook URL on the slack task with {{ secret('SLACK_WEBHOOK_URL') }}.
  4. For private repos, uncomment the username and password lines on the clone_repo task.
  5. Execute the flow once to confirm the Slack message arrives, then let the Friday trigger run it weekly.

How to extend

  • Adjust the cron expression to change the reporting day or frequency (daily, biweekly).
  • Swap gpt-4o for another model or tune the prompt for a different tone or audience.
  • Fan out across multiple repositories with a ForEach task and one summary per repo.
  • Route the output to email, Microsoft Teams, or a documentation page instead of Slack.
  • Filter the git log by author or path to scope the summary to a team or service.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.