Productive Vibe Coder
Stop losing precious coding time! This VS Code extension detects when GitHub Copilot Chat finishes a task or is waiting for your response, then actively brings you back — even if you've switched to another app, started doom-scrolling, or are watching a video.
Features
🪟 Window Focus Stealing
When Copilot finishes, VS Code is brought to the foreground — stealing focus from whatever you're doing (Chrome, YouTube, Spotify, etc.).
🔔 System Notifications
OS-level toast notifications that appear even when VS Code is minimized:
- Windows: Native toast notifications + taskbar flashing
- macOS: Notification Center alerts with sound
- Linux:
notify-send with critical urgency
🔊 Alert Sounds
Plays a system sound to get your attention. Configurable volume.
🐙 GitHub Notifications (Optional)
Sends a notification to your GitHub account by creating an issue in a designated repo. This means the alert appears in:
- GitHub.com notification bell
- GitHub Mobile app on your phone
- Email (if GitHub email notifications are enabled)
This catches you even during phone doom-scrolling! 📱
📊 Status Bar
Shows current monitoring status in the VS Code status bar. Click to toggle.
💬 Chat Participant
Use @productiveVibeCoder in Copilot Chat to:
test — Test the alert system
status — Check monitoring status
github — Configure GitHub notifications
- Create a private GitHub repo (e.g.,
vscode-notifications)
- Create a Personal Access Token with
repo scope
- Run command:
Productive Vibe Coder: Configure GitHub Notifications
- Follow the prompts
⚙️ Settings
| Setting |
Default |
Description |
productiveVibeCoder.enabled |
true |
Enable/disable monitoring |
productiveVibeCoder.soundEnabled |
true |
Play alert sounds |
productiveVibeCoder.soundVolume |
0.7 |
Sound volume (0.0–1.0) |
productiveVibeCoder.notificationEnabled |
true |
Show OS notifications |
productiveVibeCoder.focusWindowEnabled |
true |
Steal window focus |
productiveVibeCoder.flashTaskbar |
true |
Flash taskbar (Windows) |
productiveVibeCoder.pollingIntervalMs |
2000 |
Poll interval in ms |
productiveVibeCoder.cooldownMs |
10000 |
Min time between alerts |
productiveVibeCoder.statusBarEnabled |
true |
Show status bar item |
productiveVibeCoder.githubNotification.enabled |
false |
GitHub notifications |
productiveVibeCoder.githubNotification.pat |
"" |
GitHub PAT |
productiveVibeCoder.githubNotification.repoOwner |
"" |
GitHub repo owner |
productiveVibeCoder.githubNotification.repoName |
"" |
GitHub repo name |
🔧 Commands
| Command |
Description |
Productive Vibe Coder: Enable Monitoring |
Start monitoring |
Productive Vibe Coder: Disable Monitoring |
Stop monitoring |
Productive Vibe Coder: Test Alert |
Send a test alert (3s delay) |
Productive Vibe Coder: Configure GitHub Notifications |
Set up GitHub integration |
🏗️ Architecture
src/
├── extension.ts # Entry point — orchestrates all modules
├── config.ts # Configuration management
├── chatMonitor.ts # Detects Copilot Chat state changes
├── notifier.ts # System notifications & sound alerts
├── focusManager.ts # Window focus management (OS-level)
└── githubNotifier.ts # GitHub notification integration
How Detection Works
- Chat Participant API: Registers
@productiveVibeCoder chat participant
- Window State Monitoring: Tracks when VS Code loses/gains focus
- Task/Terminal Completion: Detects when Copilot-triggered tasks finish
- File Change Events: Monitors when Copilot Agent mode modifies files
- Polling: Periodic checks as a fallback mechanism
🧪 Development
# Install dependencies
npm install
# Compile
npm run compile
# Watch mode
npm run watch
# Launch extension (F5 in VS Code)
# Or press F5 with the "Run Extension" debug configuration
📝 License
MIT
🤝 Contributing
Contributions welcome! Key areas for improvement:
- Better Copilot Chat state detection as APIs evolve
- Custom sound file support
- Slack/Discord webhook integration
- Media pause integration (Spotify, YouTube, etc.)