DEV Community

Cover image for ClaudeCode Streak Skill Got a Telegram Bot: Check In From Your Phone
Ooi Yee Fei
Ooi Yee Fei

Posted on

ClaudeCode Streak Skill Got a Telegram Bot: Check In From Your Phone

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:

  1. Open terminal
  2. Navigate to the right directory
  3. Start Claude Code
  4. Remember the command
  5. 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
WhatsApp 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            │
└─────────────────────────────────────────────┘
Enter fullscreen mode Exit fullscreen mode

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]
Enter fullscreen mode Exit fullscreen mode

Check-in Flow:

Check In: morning-workout

How did it go today?

[Great]  [Good]  [Okay]  [Struggled]
Enter fullscreen mode Exit fullscreen mode
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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.
Enter fullscreen mode Exit fullscreen mode

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  │
        └─────────────────────┘   └─────────────────────┘
Enter fullscreen mode Exit fullscreen mode

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]
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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 in bot)
  • Save the token it gives you

2. Get your chat ID:

  • Message @userinfobot on 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
Enter fullscreen mode Exit fullscreen mode

Deploy Automatically(One Command)

/streak-telegram
Enter fullscreen mode Exit fullscreen mode

That's it. The command:

  • Verifies your credentials
  • Copies the bot files
  • Adds .env to .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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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]
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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!
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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.
Enter fullscreen mode Exit fullscreen mode

My New Workflow

Here's how I use both together now:

Morning (phone):

  • Wake up, check Telegram
  • Quick /streak check-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
  • /stats to 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

What's Next

A few things I'm thinking about:

  1. Notification timing - Smart reminders based on your check-in patterns, not just fixed schedules
  2. Voice check-ins - Telegram supports voice messages. Could be useful for quick logs
  3. Weekly digests - Automated summary sent every Sunday
  4. 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)