reSkill
A terminal companion for Claude Code. While Claude thinks for 23 seconds, reSkill hands you a quiz about the exact code it's working on.
Zero network. No Claude slowdown. Local state, single flag file. MIT, alpha. Landing: https://amitsubhash.github.io/reskill/.
Claude is thinking... reSkill Q1
╭── think about this ──╮
· Reading 3 files │ Most Pythonic way to │
· Analyzing scheduler.py │ read a UTF-8 JSON? │
│ │
Actioning... 16s │ 1) open(...) │
│ 2) Path(...).read_ │
│ text(utf-8) ✓ │
│ 3) codecs.open() │
│ 4) io.open() │
╰──────────────────────╯
Install
# 1. install the package (the PyPI name is reskill-cli; the CLI binary is `reskill`)
pip install reskill-cli
# 2. see it work, no settings touched
reskill demo
# 3. wire it into Claude Code (reversible; backs up your settings.json)
reskill install
reskill doctor
Prefer editable? git clone https://github.com/AmitSubhash/reskill.git && cd reskill && pip install -e .
Or install straight from GitHub: pip install git+https://github.com/AmitSubhash/reskill.git.
Use
Live during Claude sessions (the main one):
reskill claude # opens claude + a quiz pane alongside
If you have tmux: splits the current window. If not: pops a second
Terminal.app or iTerm2 window. Click the quiz pane (or Ctrl+B →) to
focus it, press 1 to 4 to answer.
Anytime, anywhere:
reskill next # one context-matched quiz, right now
reskill next --concept torch # target a specific topic
reskill session # commit-driven deck (last 7 days)
reskill review # drill your recently-missed questions
reskill topics # learning map: every concept + mastery
reskill doctor # diagnose anything that feels off
reskill status # one-liner: 0 mastered, 3/5 today, 5 streak
reskill stats # level, XP, per-concept mastery
reskill streak # 12-week heatmap of your answered days
How it works
- Hooks fire on
UserPromptSubmit,PreToolUse,PostToolUse,Stopto toggle a flag file at~/.reskill/state/thinking. - Quiz pane watches the flag (or falls back to transcript-mtime polling if hooks aren't installed) and serves a question whenever Claude is mid-thought.
- Scheduler picks questions matched to what Claude is writing. Tiers: live transcript > recent git commits > cumulative cache. Within a tier: SM-2 overdue > new > not-due. Across concepts: interleaved within confusable clusters (Rohrer & Taylor 2007). Within a concept: format diversity (Roediger & Karpicke 2006). Targets a 15% error rate per Wilson 2019.
- Pacing gate rate-limits with sensible defaults, tunable via
RESKILL_*env vars. - In-session re-queue pushes wrong answers back 3 items later (Butler & Roediger 2008).
- Hypercorrection cue: wrong answers given in under 5 seconds get a sticky flag. Research says these stick hardest.
Controls
| Key | Action |
|---|---|
1 to 4 |
Answer |
x, esc |
Skip this question |
b |
Later, requeue after 5 items |
B |
Bury, gone for today |
q |
Quit the pane (idle card only) |
Themes
export RESKILL_THEME=everforest # default on truecolor terminals
export RESKILL_THEME=mono # BOLD/DIM only
export NO_COLOR=1 # standard, also forces mono
Auto-falls-back to mono when COLORTERM is not truecolor or
24bit (Apple Terminal.app, many ssh contexts).
Tuning
export RESKILL_MIN_GAP=10 # seconds between quizzes
export RESKILL_MAX_PER_HOUR=20
export RESKILL_MAX_PER_DAY=60
export RESKILL_THINKING_DEBOUNCE=3 # skip first N seconds
export RESKILL_SAME_CONCEPT_COOLDOWN=90
What's inside
- 74 hand-written questions across 50 concepts
- Python (async, typing, numpy / pandas / torch, stdlib gotchas, packaging, testing) plus shell, git, SQL, React and TypeScript essentials
- 8 question formats: output, bug, tradeoff, scenario, why, gotcha, refactor, cloze
- LLM-generated questions from your live transcript or real commit
diffs via
reskill gen --live
Uninstall
reskill uninstall # removes hooks + statusline, keeps a backup
Your existing settings.json hooks and statusLine are preserved. We
only touch entries we own.
Status
Alpha. Data model stable, scheduler is evidence-based. The template bank is hand-written; LLM-generated questions from novel diffs are the next major milestone.
License
MIT. See LICENSE.
Credits
Built by Amit Subhash (@AmitSubhash). Scheduler grounded in the spaced-repetition literature: Bjork & Bjork 2011 (desirable difficulties), Rohrer & Taylor 2007 (interleaving), Butler & Roediger 2008 (delayed feedback), Wilson et al. 2019 (85% rule), Butterfield & Metcalfe 2001 (hypercorrection). Mistakes are mine.
Release files for reskill-cli 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| reskill_cli-0.2.2.tar.gz | 131.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reskill_cli-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 261.4 kB
Release files / reskill_cli-0.2.2.tar.gz
| Download URL | reskill_cli-0.2.2.tar.gz |
|---|---|
| Size | 131.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d97dac3684ec350bf1c723d8ba682a50aa96cc51aa566a7234cb4e902d93bac2
|
|
BLAKE2b-256 checksum How to use checksums |
715af7724966092052c7f3f987b80ea9e2b774d351eb0e59678b075c8c7e9cd6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / reskill_cli-0.2.2-py3-none-any.whl
| Download URL | reskill_cli-0.2.2-py3-none-any.whl |
|---|---|
| Size | 129.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bec2a9aeb1fceb7df473e3082ec0070244f6842e21f3bdbbfd0415626e06ac05
|
|
BLAKE2b-256 checksum How to use checksums |
d3c4c59d8eaf1b422cf8e6ac85dfa13962c79d2382f774f653459186a8cfd7be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|