What’s Next
Congratulations — you built a working Slack bot without writing a single line of code yourself. Let’s recap what you achieved, explore where to take it next, and reflect on the experience.What You Built
A daily report bot that:- Collects your git commits automatically
- Distributes them across the working week using commit banking
- Summarises them into a friendly daily update using AI
- Posts the update to your Slack channel every morning
What You Actually Learned
The code is useful, but the real skills you practised are transferable to any project: Here’s what you practised:- Setting context — giving Claude Code the big picture before diving into details
- Breaking work into steps — tackling one piece at a time instead of everything at once
- Describing business logic — explaining what you want in plain language, not code
- Specifying integrations — being clear about which APIs, formats, and tools to use
- Building incrementally — each step builds on the previous one
- Requesting testing — always asking for a safe way to verify before going live
- Debugging with AI — describing errors clearly and letting the AI help diagnose
The Commit Banking Algorithm
For those curious about the maths behind commit banking:Deep dive: How commit banking distributes commits
Deep dive: How commit banking distributes commits
The algorithm is simple but effective:Rule: Each day, divide the total banked commits by the number of remaining weekdays (including today), and round up. On Friday, use everything.Here’s a full week example with 15 commits made on Monday:
Another example — commits arrive throughout the week:
The bank always empties by Friday, so Monday starts fresh.
| Day | Banked | Remaining days | Batch size | Sent | Left |
|---|---|---|---|---|---|
| Monday | 15 | 5 | ceil(15/5) = 3 | 3 | 12 |
| Tuesday | 12 | 4 | ceil(12/4) = 3 | 3 | 9 |
| Wednesday | 9 | 3 | ceil(9/3) = 3 | 3 | 6 |
| Thursday | 6 | 2 | ceil(6/2) = 3 | 3 | 3 |
| Friday | 3 | 1 | 3 (all) | 3 | 0 |
| Day | New | Banked | Batch | Sent | Left |
|---|---|---|---|---|---|
| Monday | 4 | 4 | ceil(4/5) = 1 | 1 | 3 |
| Tuesday | 0 | 3 | ceil(3/4) = 1 | 1 | 2 |
| Wednesday | 6 | 8 | ceil(8/3) = 3 | 3 | 5 |
| Thursday | 0 | 5 | ceil(5/2) = 3 | 3 | 2 |
| Friday | 1 | 3 | 3 (all) | 3 | 0 |
Ideas to Try Next
Add a weekly summary
Ask Claude Code to create a separate workflow that runs on Friday and posts a summary of the entire week’s work — a “weekly digest” instead of a daily update.
Post to Microsoft Teams
Replace the Slack webhook with a Teams incoming webhook. The message format is slightly different, but Claude Code can handle the conversion.
Include Jira or Trello tasks
Extend the bot to pull in your recent Jira tickets or Trello card movements alongside git commits, giving a fuller picture of your day.
Add a motivational quote
Ask Claude Code to add a random motivational quote at the end of each report. A small touch that makes daily updates more fun.
Pitfalls and Lessons Learned
Shell interprets || as an OR operator
Shell interprets || as an OR operator
If you use
|| as a separator in git log --pretty=format, the shell will treat it as a logical OR. Use a safe separator like <SEP> instead. This is a classic gotcha that trips up even experienced developers.GitHub Actions cron is not precise
GitHub Actions cron is not precise
Scheduled workflows can be delayed by up to 15 minutes during periods of high demand. Don’t rely on exact timing — design your bot to work regardless of when it runs.
state.json must be committed
state.json must be committed
The commit bank state needs to persist between runs. Since GitHub Actions starts fresh each time,
state.json must be committed to the repository. That’s why the workflow includes a step to commit and push it after each run.fetch-depth: 0 is required
fetch-depth: 0 is required
By default,
actions/checkout only fetches the latest commit (shallow clone). Your bot needs the full git history to find recent commits. Always set fetch-depth: 0.Never commit webhook URLs or API keys
Never commit webhook URLs or API keys
Store all secrets in GitHub Secrets, not in your code. If you accidentally commit a secret, revoke it immediately and generate a new one. Git history keeps deleted content — removing a secret from the latest commit doesn’t remove it from history.
Reflect
Take a few minutes to think about your experience:What surprised you about working with Claude Code?
What surprised you about working with Claude Code?
Many people are surprised by how much can be accomplished just by describing what they want clearly. Was there a moment where Claude Code’s output exceeded your expectations? What about a moment where you had to refine your prompt?
How could you use this approach at work?
How could you use this approach at work?
Vibe coding isn’t just for building bots. Think about repetitive tasks in your job — reports, data formatting, email templates. Could you use Claude Code to automate any of them?
What would you build next?
What would you build next?
Now that you know the workflow — describe, build, review, iterate — what else could you create? A Slack bot that answers FAQs? A script that organises your files? A tool that generates meeting notes?
Resources
| Resource | Description | Link |
|---|---|---|
| Claude Code docs | Official documentation for Claude Code | docs.anthropic.com |
| GitHub Actions docs | Learn more about workflows, triggers, and secrets | docs.github.com/actions |
| OpenAI API reference | API documentation for chat completions | platform.openai.com/docs |
| Slack API — Webhooks | How incoming webhooks work | api.slack.com/messaging/webhooks |
| Crontab Guru | Test and understand cron schedule expressions | crontab.guru |
Thank you for completing this tutorial! You’ve gone from zero to a fully automated daily report bot — and more importantly, you’ve learned how to communicate effectively with AI tools. Take these skills with you into your next project.