Game Mode
SkillAI & modelsTrack your Claude Code feature usage, earn levels, and see your stats. Gamified learning mode.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Game Mode skill
What this skill tells your AI
The instructions your AI receives, as published by orinachum/claude-code-guide in skills/game-mode/SKILL.md and read by ahel’s review.
You are managing the game-mode feature for the guide plugin.
Prerequisite — jq
Before any game-mode operation, run: command -v jq >/dev/null 2>&1 && echo "ok" || echo "missing"
If jq is missing, tell the user:
Game mode tracking requires jq (a JSON processor). Install it, then re-run this command:
Platform Install command macOS brew install jqLinux (apt) sudo apt install jqLinux (yum) sudo yum install jqWindows (Git Bash) mkdir -p ~/bin && curl -sL https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-windows-amd64.exe -o ~/bin/jq.exe && chmod +x ~/bin/jq.exeOr just ask me: "install jq"
Then stop — do not proceed with game mode until jq is available.
Branch on $ARGUMENTS:
help
Present the available commands:
| Command | What it does |
|---|---|
/guide:game-mode | Enable game mode and start tracking |
/guide:game-mode stats | Show your dashboard with scores and levels |
/guide:game-mode help | Show this help |
/guide:game-mode off | Pause tracking (data preserved) |
/guide:game-mode reset | Delete all game data |
/guide:level-up | Show your feature roadmap and next-step hint |
on (or empty arguments)
Migration check (runs first if data file already exists)
- If
${CLAUDE_PLUGIN_ROOT}/.local/game-data.jsonexists, read it and read the current version from${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json - If
pluginVersionis missing or doesn't match the plugin version: a. Snapshot: Copygame-data.jsonto.local/game-data.pre-<new-version>.jsonas a backup b. Migrate: Add any missing feature categories with{"count": 0, "lastUsed": null}, add missing top-level fields (pluginVersion,migrations,sessionCount,suggestedFeatures,tokens,skillUsage,mcpUsage,agentUsage) with defaults, setpluginVersionto the current plugin version c. Record: Append{"from": "<old-version-or-unknown>", "to": "<new-version>", "date": "<UTC date YYYY-MM-DD>"}to themigrationsarray d. Inform: Tell the user their data was migrated and a backup was saved at the snapshot path e. Setenabledtotrueand proceed (skip creating a fresh file) - If versions match: set
enabledtotrueand proceed (skip creating a fresh file)
Fresh install (no existing data file)
- Create the directory
${CLAUDE_PLUGIN_ROOT}/.local/if it doesn't exist - Read the current version from
${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json - Write
${CLAUDE_PLUGIN_ROOT}/.local/game-data.jsonwith this initial content:
{
"pluginVersion": "<version from plugin.json>",
"enabled": true,
"startDate": "<current UTC date in YYYY-MM-DD format>",
"sessionCount": 0,
"suggestedFeatures": [],
"migrations": [],
"features": {
"shell": { "count": 0, "lastUsed": null },
"editing": { "count": 0, "lastUsed": null },
"reading": { "count": 0, "lastUsed": null },
"search": { "count": 0, "lastUsed": null },
"agents": { "count": 0, "lastUsed": null },
"skills": { "count": 0, "lastUsed": null },
"plugins": { "count": 0, "lastUsed": null },
"web": { "count": 0, "lastUsed": null },
"planning": { "count": 0, "lastUsed": null },
"mcp": { "count": 0, "lastUsed": null },
"notebooks": { "count": 0, "lastUsed": null },
"loop": { "count": 0, "lastUsed": null },
"btw": { "count": 0, "lastUsed": null },
"tasks": { "count": 0, "lastUsed": null },
"worktrees": { "count": 0, "lastUsed": null },
"introspection": { "count": 0, "lastUsed": null }
},
"tokens": {
"read": 0,
"write": 0,
"total": 0
},
"skillUsage": {},
"mcpUsage": {},
"agentUsage": {}
}
- Tell the user game mode is now active. Mention:
- Tool usage is being tracked across 16 feature categories
- Use
/guide:game-mode statsto see their dashboard - Use
/guide:game-mode offto pause tracking - Data is stored locally and never transmitted
stats or status
Migration check (runs first)
- Read
${CLAUDE_PLUGIN_ROOT}/.local/game-data.json - If the file doesn't exist or
enabledis false, tell the user game mode is not active and suggest/guide:game-modeto enable it - Read the current version from
${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json - If
pluginVersionis missing or doesn't match the plugin version: a. Snapshot: Copygame-data.jsonto.local/game-data.pre-<new-version>.jsonas a backup b. Migrate: Add any missing feature categories with{"count": 0, "lastUsed": null}, add missing top-level fields (skillUsage,mcpUsage,agentUsage, etc.) with defaults, setpluginVersionto current c. Record: Append{"from": "<old-version-or-unknown>", "to": "<new-version>", "date": "<UTC date YYYY-MM-DD>"}to themigrationsarray d. Inform: Tell the user their data was migrated and a backup was saved - If versions match: proceed normally
Calculate and display
- Calculate scoring using these tier multipliers:
| Tier | Multiplier | Features |
|---|---|---|
| Beginner | x1 | shell, editing, reading, search, btw |
| Intermediate | x10 | skills, plugins, web, planning, notebooks, mcp, loop, tasks |
| Expert | x100 | agents, worktrees, introspection |
- Compute:
raw_points = sum(feature.count * multiplier)andscore = sqrt(raw_points)to 2 decimal places - Count unique features (count > 0)
- Determine level (highest where BOTH criteria are met):
| Level | Title | Min Score | Min Unique Features |
|---|---|---|---|
| 1 | Novice | 0 | 0 |
| 2 | Apprentice | 5.00 | 3 |
| 3 | Practitioner | 15.00 | 5 |
| 4 | Expert | 30.00 | 8 |
| 5 | Master | 55.00 | 10 |
- Present a formatted dashboard like this:
+=======================================================+
| GAME MODE -- Level 4: Expert |
| Score: 32.45 | Active since: 2026-03-08 |
+=======================================================+
| Feature Tier Count Points Last Used |
| --------------- ----- ------ ------- ---------- |
| 🟠 Shell Commands B 45 45 2h ago |
| 🟠 Code Editing B 32 32 1h ago |
| 🟡 File Reading B 28 28 30m ago |
| 🟡 Code Search B 18 18 1h ago |
| ⚪ Quick Aside B 0 0 never |
| ⚪ Skills I 5 50 1d ago |
| ⚪ Plugins I 2 20 3d ago |
| ⚪ Web Research I 3 30 2d ago |
| ⚪ Planning I 2 20 5d ago |
| ⚪ Notebooks I 0 0 never |
| ⚪ Sub Agents E 8 800 3h ago |
| ⚪ MCP Tools I 1 10 7d ago |
| ⚪ Loop/Schedule I 0 0 never |
| ⚪ Task Mgmt I 0 0 never |
| ⚪ Worktrees E 0 0 never |
| ⚪ Introspection E 0 0 never |
+=======================================================+
| Raw: 1053 pts | Score: sqrt(1053) = 32.45 |
| Features: 10/16 unlocked |
| Tokens: ~12.4K read, ~3.1K write |
| Next level: Master (score 55+, 10+ features) |
| Migrated: unknown → 2.2.0 (2026-03-09) |
+=======================================================+
- For "Last Used", show relative time (e.g., "2h ago", "1d ago") or "never"
- For tokens, use human-friendly formatting (e.g., "12.4K")
- Show progress toward the next level, or "MAX LEVEL" if at level 5
- If the
migrationsarray is non-empty, show each migration asMigrated: <from> → <to> (<date>)in the dashboard footer. Omit the line if there are no migrations.
off
- Read
${CLAUDE_PLUGIN_ROOT}/.local/game-data.json - Set
enabledtofalse - Write the file back
- Tell the user tracking is paused. Their data is preserved — they can resume with
/guide:game-modeanytime.
reset
- Ask the user to confirm: "This will delete all your game mode data. Type 'yes' to confirm."
- If confirmed, delete
${CLAUDE_PLUGIN_ROOT}/.local/game-data.json - Confirm the reset is complete
Signals
- GitHub stars
- 122
- Forks
- 4
- Last commit
- Jun 2026
Advanced
- Catalog kind
- skill
- Gateway key
game-mode- Source
- github.com/orinachum/claude-code-guide