Requirements

  • macOS (arm64 or amd64)
  • Google Chrome installed (used for browser automation during practice sessions)

Installation

brew install pricklywiggles/hone/hone

Requires Go 1.21+.

git clone https://github.com/pricklywiggles/hone
cd hone
go install .

First run

hone

This opens the dashboard and creates the database at ~/.local/share/hone/data.db on first launch. The config file lives at ~/.config/hone/config.yaml and is created automatically with sensible defaults.


Adding your first problem

Paste a LeetCode or NeetCode URL:

hone add https://neetcode.io/problems/two-sum/question

hone opens a headless browser, scrapes the problem title, difficulty, and topics, then adds it to your library. The problem is immediately due for review.

Batch import

If you have a list of URLs:

hone add -f problems.txt

Or use the playlist-aware import format (see Import & Export):

hone import my-list.txt

Starting a practice session

hone practice

hone picks the most-overdue problem, opens it in a visible Chrome window, and starts a timer. Solve the problem and submit it. hone detects the submission result automatically and records the attempt.

When you're done, the TUI shows:

  • Your result (pass/fail)
  • Solve time
  • Quality score derived from your speed
  • The next scheduled review date

The dashboard

Running hone with no arguments opens the tabbed dashboard:

Stats │ Problems │ Playlists │ Topics
  • Stats — overview counts, streak, progress bars by difficulty, per-topic breakdown
  • Problems — full list with SRS state, sortable and filterable
  • Playlists — create and manage playlists; press Enter to set as active filter
  • Topics — topic breakdown; press Enter to filter practice to that topic

Press p from any tab to start a practice session using the active filter.


What's stored

Path Contents
~/.local/share/hone/data.db SQLite database (problems, SRS state, attempts, playlists)
~/.config/hone/config.yaml Config (active filter, thresholds, platform URL templates)
~/.local/share/hone/browser-profile/ Persistent Chrome profile (keeps you logged in to problem sites)

Logging in to problem sites

The Chrome profile is reused across sessions, so you only need to log in once. Close Google Chrome before running auth:

hone auth neetcode   # opens a browser window — log in, then press Enter
hone auth leetcode

After authenticating, practice sessions will have access to your account (required for submission detection on some platforms).

Please note:

hone does not store or transmit any credentials. All authentication is handled exclusively through the browser, exactly as you would log in normally.