vscode-xp
Earn XP as you code in VS Code.
vscode-xp adds a live XP/level indicator to your status bar and awards XP when you save meaningful file changes. It is lightweight, configurable, and designed to reward real work while reducing easy XP farming.
Features
- Status bar level indicator (
LVL N) with live XP progress
- XP earned on file save when enough changes were made
- RuneScape-style level curve for progression
- Optional level-up info messages
- Optional status bar confetti celebration on level-up
- Daily streak tracking shown in the status bar hover
- First meaningful save of each day grants +100 XP when level is above 10
- Quick commands for stats, settings, toggles, and reset
How XP Is Earned
XP is awarded when you save a document and all of these conditions pass:
- The file is not ignored by built-in filters.
- The save contains at least 5 accumulated text-change units.
- The saved content is not considered a duplicate of very recent content.
XP formula per save:
effectiveChanges = min(changes, 2500)
baseXp = ceil(effectiveChanges / 10)
gainedXp = ceil(baseXp * xpMultiplier)
dailyBonus = +100 on the first meaningful save of the day if your current level is greater than 10
This keeps rewards proportional to effort while preventing extreme spikes.
Daily Streak
- Your streak increases when you make at least one XP-eligible save on consecutive days.
- Missing a day resets the streak to 1 on your next XP-eligible save.
- The status bar hover shows:
- Current streak length
- Whether the daily bonus is still available today or already claimed
Anti-Farming Safeguards
The extension includes several protections to keep progression fair:
- Minimum change threshold before XP is awarded
- Per-save change cap (
2500)
- Duplicate-content cooldown window (
2 minutes)
- Ignored files and folders (for generated/bulk files)
Ignored by default includes common lockfiles and paths such as:
node_modules, dist, build, coverage, .next, out, target
- lockfiles like
package-lock.json, pnpm-lock.yaml, yarn.lock
- minified and sourcemap files (
*.min.js, *.map)
But you can always change the xp multiplier if you feel like it.
Commands
Open the Command Palette and run:
vscode-xp: Show XP Stats
vscode-xp: Configure XP Settings
vscode-xp: Toggle Info Messages
vscode-xp: Toggle Status Bar Confetti
vscode-xp: Reset XP bar
Settings
All settings live under the vscode-xp namespace:
vscode-xp.xpMultiplier (number, default: 1, min: 0.1, max: 100)
vscode-xp.showInfoMessages (boolean, default: true)
vscode-xp.showStatusBarConfetti (boolean, default: true)
Installation
Install from the VS Code Marketplace and reload the editor if prompted.
After activation:
- Start editing files normally.
- Save meaningful changes.
- Watch your level progress in the status bar.
Known Notes
- XP is awarded on save, not on each keystroke.
- Unsaved/untitled documents do not grant XP.
- Progress and config are persisted globally by the extension.
License
MIT