This is a follow-up to my first Streak post where I introduced the Claude Code skill for tracking personal challenges.
A few weeks ago, I shared the Streak skill - a Claude Code skill for tracking any personal challenge. The response was better than I expected. People actually found it useful. I saw some started to try it out and raise for features.
More importantly, I just completed my first 30-day challenge using it.
What 30 Days of Tracking Taught Me
After the challenge ended, I asked Claude Code to do a retrospective analysis. Not just "here's what you did" - but a comprehensive review of patterns, habits, what worked, what didn't.
The insights were... humbling.
Claude actually analyzed thoroughly and proactively surfaced many aspects of retrospective insights - without me prompting or guiding it through. It covered things I built, impact and wins to measure performance and results over time (Win Rate even! Claude was brutal on that one). It also automatically did Tech Stack Analysis without me asking, identifying patterns of tools I use, projects I built, things I left in backlog lists dusted but forgot, and Emerging Patterns that were new and surprising to me - stuff I picked up outside my comfort zone that I hadn't consciously noticed.
There was a Top 10 Learnings section ranked by impact, work-related insights like product decisions, feature prioritization, inspiration and new ideas that cross-influenced from my builds. And of course, What Worked, What Didn't Work, and Recommendations for Next Steps.
All this from the data I'd been logging daily. For someone who's the least planned and structured person, having Claude surface these patterns was eye-opening.
My experiment has been on technical work I did, but I'm excited to double down on effort with more aspects of life - fitness, habits, learning - and do more cross-analysis to understand how each area impacts and affects the others.
But... there was a small challenge.
The Problem: Friction
Here's what started bothering me after week 2.
Some days got busy. Really busy. And even with the best intentions, I'd forget to check in. Not because I didn't want to - but because the friction was too high.
To log a check-in, I had to:
- Open terminal
- Navigate to the right directory
- Start Claude Code
- Remember the command
- Actually do the check-in
That's 4 steps before the actual work. On a hectic day, steps 1–4 just… didn't happen. And those I have to track back and log to fill up the days , which was okay and I still managed to do all 30-days logging in the end, but is not ideal.
I had a calendar reminder option, but that just reminded me to open terminal. The friction was still there.
I wanted something that could:
- Ping me when a check-in was due
- Let me check in right there, without opening anything else
- Work from my phone (because that's always in my hand)
Exploring Options
I started thinking about chat-based notifications. Something that lives where I already am:
| Platform | Pros | Cons |
|---|---|---|
| Slack | Already use it for work | Paid for full API, mixes with work |
| Everyone has it | Business API is complex, costs money | |
| Discord | Free, good bot support | Don't use it daily |
| Telegram | Free, excellent bot API | Need to install app |
Telegram won. Free API, easy bot creation, works on all devices, and the bot API is surprisingly good.
So I built it.
Added: Claude Code Streak Skill Telegram Bot
The bot does everything the Claude Code skill does - but from your phone or laptop chat app:
┌─────────────────────────────────────────────┐
│ @mystreak_bot │
│ │
│ /list → See all your challenges │
│ /switch → Change active challenge │
│ /streak → Interactive check-in │
│ /stats → View progress & streaks │
│ /insights → Cross-challenge patterns │
│ /new → Create new challenge │
└─────────────────────────────────────────────┘
What It Looks Like
Main Menu:
Welcome to Streak Bot!
Your active challenge: morning-workout
Status: 5-day streak
[Check In] [List Challenges]
[Stats] [Insights]
Check-in Flow:
Check In: morning-workout
How did it go today?
[Great] [Good] [Okay] [Struggled]
What did you work on?
> Push day - bench press, overhead press, tricep dips
Any notes or learnings?
> Finally hit 60kg bench! Form felt solid.
Session 15 logged!
Current streak: 6 days
List Challenges:
Your Challenges:
ACTIVE:
* morning-workout (Fitness) - 6 day streak
learn-rust (Learning) - 3 day streak
read-12-books (Learning) - due today
PAUSED:
meditation-habit (Habit) - paused 2 weeks ago
Use /switch [name] to change active challenge
One Bot, All Challenges
Here's an important design decision: one bot manages ALL your challenges.
Not one bot per challenge. Not separate bots for fitness vs learning vs work.
Why? Because your challenges are interconnected.
Your morning workout affects your coding productivity. Your learning enables your building. Your meditation habit influences your creative work.
By keeping everything in one place, the bot can detect patterns across challenges:
Cross-Challenge Insight:
Your "morning-workout" sessions correlate with
higher productivity in "learn-rust".
Sessions where you worked out first show 40%
more concepts covered.
This is the whole point of Streak - not just tracking individual things, but understanding how they connect.
How It Works: Both Stay in Sync
The Telegram bot and Claude Code skill read/write the same files:
┌─────────────────────────────────────────────────────────────┐
│ .streak/ folder │
│ (Source of Truth) │
└─────────────────────┬───────────────────────┬───────────────┘
│ │
reads/writes reads/writes
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ Claude Code │ │ Telegram Bot │
│ (Terminal) │ │ (Phone) │
│ │ │ │
│ Deep work: │ │ Quick check-ins: │
│ - Planning │ │ - Log progress │
│ - Research │ │ - View stats │
│ - Analysis │ │ - Switch context │
└─────────────────────┘ └─────────────────────┘
Check in from Telegram in the morning. Do deep analysis in Claude Code later. They see the same data.
Optional GitHub sync: If you want to access from multiple devices, commit your .streak/ folder and enable git sync. The bot can auto-pull before reading and auto-push after check-ins.
Push Notifications
This is the feature that I wanted to test out
The bot doesn't just wait for you to message it - it proactively pings you when challenges are due:
🔔 Streak Check-in Reminder
❗ Overdue:
• morning-workout (2d overdue)
📅 Due Today:
• learn-rust (streak: 5 days)
• read-24-books (weekly check-in)
Tap /streak to check in
[✓ Check In Now] [📋 List All]
No more forgetting. No more "I'll do it later." The notification lands on your phone at your configured time (default 9 AM), and you can check in right there with two taps.
Configure your notification time:
# In your .env file
TIMEZONE=Asia/Singapore # Your timezone
NOTIFICATION_HOUR=9 # 9 AM
NOTIFICATION_MINUTE=0 # On the hour
This is the friction-killer I was looking for. Bot runs 24/7 in Docker, pings me every morning, I tap "Check In Now", done in 30 seconds.
Setup: Easier Than You Think
Prerequisites (5 minutes, manual by you, one-time)
1. Create a Telegram bot:
- Open Telegram, message
@BotFather - Send
/newbot - Pick a name:
My Streak Bot - Pick a username:
mystreak_bot(must end inbot) - Save the token it gives you
2. Get your chat ID:
- Message
@userinfoboton Telegram - Save the number it returns
3. Message your bot:
- Find your bot by username
- Send
/start(required before it can message you)
4. Create .env file in your project folder:
cat > .env << EOF
TELEGRAM_BOT_TOKEN=your-token-here
ALLOWED_USERS=your-chat-id-here
TIMEZONE=Asia/Singapore
EOF
Deploy Automatically(One Command)
/streak-telegram
That's it. The command:
- Verifies your credentials
- Copies the bot files
- Adds
.envto.gitignore - Starts Docker container
- Shows you management commands
The bot runs in the background and auto-restarts on reboot.
Management
docker-compose logs -f # View logs
docker-compose restart # Restart bot
docker-compose down # Stop bot
Real Examples
Example 1: Sarah's Reading Challenge
Sarah wants to read 24 books this year. She created a Learning challenge:
Challenge: read-24-books
Type: Learning
Goal: 2 books per month
Cadence: Weekly check-in
Her typical week in Telegram:
Sunday evening:
/streak
How's the reading going?
> Finished "Atomic Habits" - great stuff on habit
> stacking. Started "Deep Work" yesterday.
Progress on milestone?
> 4/24 books done
Session 8 logged!
Current streak: 8 weeks
Mid-week reminder (from bot):
Streak Reminder
Your challenge "read-24-books" is due for
check-in in 2 days.
Current streak: 8 weeks
[Check In Now] [Remind Later]
Example 2: Mike's Fitness Journey
Mike's tracking a strength training habit:
Challenge: strength-training
Type: Fitness
Goal: Consistent 4x/week lifting
Cadence: Daily
Morning check-in:
/streak
What workout today?
> Pull day - deadlifts, rows, pull-ups, bicep curls
How did your body feel?
> Good energy. Deadlift felt heavy but form was solid.
> Hit 100kg for 3 reps - new PR!
Any notes?
> Need more sleep. Was yawning between sets.
Session logged! PR detected - nice work!
Stats view:
/stats
strength-training Statistics
Sessions: 23
Current Streak: 12 days
Longest Streak: 12 days (current!)
Average: 4.2 sessions/week
Best Days: Tuesday, Thursday, Saturday
Common Notes: "energy", "form", "sleep"
Achievements:
First Flame (3-day streak)
On Fire (7-day streak)
Dedicated (10 sessions)
Example 3: Cross-Challenge Insights
Alex runs three challenges: morning-meditation (Habit), learn-python (Learning), and side-project (Building).
After a month, the /insights command surfaces:
Cross-Challenge Patterns:
1. Meditation → Productivity Link
Days with morning meditation show 35% longer
coding sessions in both learn-python and
side-project.
2. Skill Transfer Detected
Your "learn-python" Session 12 (learned async/await)
directly enabled "side-project" Session 8
(built async API client).
3. Best Sequence
Your most productive days follow this pattern:
meditation → workout → coding
Consider making this your default routine.
My New Workflow
Here's how I use both together now:
Morning (phone):
- Wake up, check Telegram
- Quick
/streakcheck-in for morning routine - See what's due today
During work (terminal):
- Claude Code for deep work sessions
- Research, planning, analysis
- Detailed check-ins with context
Evening (phone):
- Quick log of what got done
-
/statsto see progress - Plan tomorrow's focus
The friction is gone. I haven't missed a check-in in 2 weeks.
Try It Out
If you're already using Streak:
# Update the skill
/plugin update ccc-skills@ccc
# Set up Telegram (5 min)
# 1. @BotFather → /newbot → save token
# 2. @userinfobot → save chat ID
# 3. Create .env file
# Deploy
/streak-telegram
If you're new to Streak:
# Install
/plugin marketplace add ooiyeefei/ccc
/plugin install ccc-skills@ccc
# Create your first challenge
/streak-new
# Add Telegram (optional but recommended)
/streak-telegram
What's Next
A few things I'm thinking about:
- Notification timing - Smart reminders based on your check-in patterns, not just fixed schedules
- Voice check-ins - Telegram supports voice messages. Could be useful for quick logs
- Weekly digests - Automated summary sent every Sunday
- Multi-device sync - Better GitHub integration for teams or multiple devices
But for now, the basics work. And that's enough.
The goal was simple: reduce friction so much that checking in becomes automatic.
Telegram on my phone. Always there. One tap to log progress. No terminal, no directory navigation, no startup time.
For someone as unstructured as me, that's the difference between a system that sticks and another forgotten tool.
Give it a try. Let me know what breaks - or what features you'd love to see!
Got ideas? Found a bug? Want a feature that would make this work better for your use case? Open an issue on GitHub - I'd love to hear what challenge types you're tracking and how the tool can better support them. The best features come from real users with real needs.
Links:


Top comments (0)