Keep your coding skills sharp while using AI. A Claude Code plugin that periodically assigns manual coding challenges with gamification features.
AI assistants like Claude Code make us incredibly productive, but there's a risk: if we never write code ourselves, our skills atrophy. GitGud ensures you practice regularly while still benefiting from AI assistance.
- Periodic Challenges: Every N requests, you'll get a coding task related to your current work
- Smart Categorization: Tasks match your context (API, auth, testing, database, etc.)
- Gamification:
- Streaks: Track consecutive days of completed tasks
- Achievements: Unlock badges as you progress
- Skip System: Skip tasks when you're in a hurry (limited per day)
- Persistent Progress: Your data is stored in
~/.gitgud/and persists across plugin updates - Fully Configurable: Adjust frequency, difficulty, and daily skips
/plugin marketplace add MissingPackage/gitgud
/plugin install gitgudclaude --debug --plugin-dir /path/to/gitgudGitGud now supports Cursor IDE! The same repository works for both Claude Code and Cursor, with shared data between them.
- Node.js 14+ installed
- Cursor IDE 1.7+ (with hook support)
- Git (for cloning the repository)
# Clone and run installer
git clone https://github.com/MissingPackage/gitgud.git ~/.gitgud-cursor
cd ~/.gitgud-cursor
./install-cursor.shThe installer adds command aliases (e.g. gg-stats) to your primary/login shell config file:
- zsh →
~/.zshrc - bash →
~/.bashrc - fish →
~/.config/fish/config.fish - other →
~/.profile
If you want to override the target file explicitly:
GITGUD_SHELL_RC="$HOME/.zshrc" ./install-cursor.sh# Run in PowerShell
git clone https://github.com/MissingPackage/gitgud.git $env:USERPROFILE\.gitgud-cursor
cd $env:USERPROFILE\.gitgud-cursor
.\install-cursor.ps1Unlike Claude Code which can inject context directly, Cursor's beforeSubmitPrompt hook only supports { continue: boolean }. Therefore, GitGud for Cursor uses a different approach:
- Hook: Processes prompts and writes task state to files
- Cursor Rule: Reads task state and instructs the AI to enforce training mode
- Shared Data: Both Claude Code and Cursor use
~/.gitgud/for data storage
This means your streak, achievements, and settings are synchronized between both IDEs!
Cursor does NOT support global rules that apply automatically across all projects. You must manually configure GitGud rules for each project where you want to use it.
📖 Official documentation: Cursor Rules
For each project where you want GitGud active:
# From your project root:
mkdir -p .cursor/rules
cp ~/.gitgud-cursor/cursor/rules/gitgud.mdc .cursor/rules/Or append to an existing .cursorrules file:
cat ~/.gitgud-cursor/cursor/rules/gitgud.cursorrules >> .cursorrulesThe GitGud rule should always be active, but sometimes you may need to enable it once, the first time you want to activate GitGud in a project.
- Open the project in Cursor
- Open the Command Palette (
Cmd+Shift+P/Ctrl+Shift+P) - Run "Reload Window" to detect new rules
- Go to Cursor Settings → Rules (or open the Context panel → Rules)
- Verify that the GitGud rule appears and is enabled (toggle ON)
Without enabling the rule, Cursor's AI will not enforce training mode even if tasks are assigned!
To check if GitGud is working in Cursor:
- Open a project with the rule configured and enabled
- Run
node ~/.gitgud-cursor/cursor/validate-cursor.jsto verify setup - Check if pending tasks appear when you interact with Cursor AI
# macOS/Linux
~/.gitgud-cursor/uninstall-cursor.sh
# Windows (PowerShell)
~\.gitgud-cursor\uninstall-cursor.ps1The uninstaller will ask if you want to keep your data for future reinstallation.
| Command | Description |
|---|---|
/gg-complete |
Mark current task as completed |
/gg-stats |
View statistics, achievements, and streak |
/gg-reset [counter|stats|all] |
Reset data |
/gg-config |
View current configuration |
/gg-config <setting> <value> |
Change a setting |
- Every N requests (default: 10), you'll receive a coding challenge
- The task is related but not identical to your request
- Claude guides you but won't write the code for you
- Complete the task and run
/gg-completeto update your stats - Or type "skip" to use a skip (limited per day)
Tasks are automatically matched to your work context:
| Category | Triggered by |
|---|---|
| Security | auth, login, password, jwt, token, oauth |
| API | endpoint, route, request, response, http, graphql |
| Database | query, sql, model, schema, migration, orm |
| Debug | bug, fix, error, problem, crash, issue |
| Test | test, spec, assert, pytest, jest, mock |
| Architecture | refactor, pattern, structure, interface |
| Frontend | component, react, vue, css, form, modal |
| Function | implement, create, add, write, build |
/gg-config # View current configuration
/gg-config frequency 15 # Set task frequency to every 15 requests
/gg-config daily_skips 5 # Allow 5 skips per day
/gg-config difficulty hard # Set difficulty to hard
/gg-config enabled false # Disable the plugin| Setting | Description | Options | Default |
|---|---|---|---|
frequency |
Requests between tasks | Any number | 10 |
daily_skips |
Max skips per day | Any number | 3 |
difficulty |
Task complexity | easy, medium, hard, adaptive | adaptive |
enabled |
Plugin active | true, false | true |
Your progress is stored in ~/.gitgud/ (cross-platform):
- Windows:
C:\Users\<username>\.gitgud\ - macOS:
/Users/<username>/.gitgud/ - Linux:
/home/<username>/.gitgud/
This ensures your achievements and streaks persist even when updating the plugin.
- 🎯 First Steps - Complete your first task
- ✋ Getting Hands Dirty - Complete 5 tasks
- 📚 Apprentice - Complete 10 tasks
- 🔨 Craftsman - Complete 25 tasks
- 🎓 Master - Complete 50 tasks
- 🏆 Legend - Complete 100 tasks
- 🔥 Three in a Row - 3 day streak
- 📅 Perfect Week - 7 day streak
- 💪 Two Weeks Strong - 14 day streak
- 🥇 Golden Month - 30 day streak
- Don't skip too often - The challenges are designed to keep your skills sharp
- Take your time - Quality practice beats rushing through tasks
- Use hints wisely - Ask Claude for conceptual help, but write the code yourself
- Build a streak - Consistency is key to maintaining skills
This is v1.0, built in a couple hours on a Friday night. It works, but has room for improvement. Most of these limitations can be overcome with a much higher token usage but this would make no-sense for this kind of plugins:
- Keyword matching is basic - Categories are detected via simple regex patterns, not semantic understanding
- Tasks are generic - They don't deeply analyze your specific code context, but are rather based on the conversation context.
- No difficulty progression - Tasks don't automatically become more difficult but if you select the adaptive difficulty, Claude will assign them based on what it thinks is your skill level
- Limited task variety - 3 tasks per category, could use more
- English only - Tasks and achievements are only in English
This plugin was built to scratch my own itch - I wanted to keep my skills sharp while using AI. If you have ideas for improvements, I'd love your help!
Areas that need love:
- Better task categorization (maybe using embeddings?)
- More diverse and specific tasks
- Difficulty progression system
- Localization support
- More achievements and gamification features
- Better integration with specific frameworks/agents
Feel free to open issues, submit PRs, or fork and make your own version!
Built with ❤️ (and some AI assistance) by MissingPackage
MIT