Automated GitHub Actions system that tracks daily activity, builds consistency, and sends personalized messages based on user behavior.
This project is not just automation — it’s a lightweight behavioral companion that reacts to your coding habits over time.
ExFavorite Workflows is a collection of GitHub Actions that:
- Tracks daily commit activity
- Detects streak consistency
- Differentiates behavior based on time of day
- Sends personalized Telegram messages
- Adjusts tone based on user activity (active / inactive)
Instead of generic reminders, this system reacts to your behavior:
- Did you commit yesterday?
- Are you consistent or skipping days?
- What time are you active?
- Are you building momentum or losing it?
Each condition changes how the system talks to you.
Runs every midnight and generates a morning message based on yesterday’s activity.
- If no commit yesterday → motivational / restart tone
- If committed yesterday → continuation / momentum tone
Runs hourly to check activity:
- Warning (sore)
- Last warning (malam)
- Final warning (larut malam)
Each stage adjusts urgency and tone.
Prevents duplicate messages in a single day using GitHub labels.
Triggered when user has committed at least once in the current day.
This system sends appreciation messages based on time and consistency.
- Detects today's commit activity
- Only runs if
no_commit=false - Uses time-based mood system:
- Ambitious (12–16)
- Productive (16–21)
- Consistent (21–07)
- Appreciates consistency
- Reinforces momentum
- Avoids over-praising
- Keeps tone natural and slightly personal
- Light encouragement during daytime
- Reflective appreciation in evening
- Calm reinforcement at night
- Check today's GitHub activity
- If commit exists → enable appreciation mode
- Pick message based on time + mode
- Send Telegram message
- Set lock to prevent duplicate sends
.github
├── ISSUE_TEMPLATE
│ ├── bug.md
│ ├── config.yml
│ ├── feature.md
│ └── improvement.md
├── messages
│ ├── appreciation.json
│ ├── daily.start.json
│ └── reminder.json
├── scripts
│ ├── get.message.sh
│ └── send.telegram.sh
└── workflows
├── cycle.reset.yml
├── cycle.start.yml
├── git.commit.message.yml
├── streak.lock.yml
└── streak.reminder.ymlMessages are designed to feel:
- Personal, not robotic
- Context-aware, not random
- Light emotional pressure (not forcing)
- Reflective rather than aggressive
The system doesn’t just remind — it responds.
- GitHub Actions
- Bash scripting
- jq (JSON processing)
- GitHub API
- Telegram Bot API
Required secrets:
TELEGRAM_TOKEN, TELEGRAM_CHANNEL_ID, ACTIVITY_GITHUB_TOKEN
- Memory system (track streak & behavior history)
- Personality shift based on consistency
- Weekly summary recap
- Adaptive message tone system
- Burnout detection mode
This project is built around one simple idea:
Consistency is not about pressure, but about returning.
Even small progress matters. Even pauses are part of the process.
Built with automation, curiosity, and a quiet obsession with consistency.