Bookshelf

Bookshelf for Codex + Claude Code

Let the terminal widen your world while it works.

Instead of staring at another tool call, meet one useful thought every few completed turns—a quiet quote chosen to add perspective without stealing your focus.

5completed turns
1widening thought
0model calls

Useful waiting, by design

A small literary reset between agent turns.

Bookshelf counts completed turns locally and stays quiet until its cadence is due. Then it surfaces one compact quote through the same Stop-hook path packaged for Codex and Claude Code.

$ bookshelf quote --intent refactor

“Do nothing which is of no use.” — Miyamoto Musashi, The Book of Five Rings

$ bookshelf feedback up|down
  • Intent → tags, locally. For example, refactor maps to simplicity, discipline, and focus.
  • Feedback stays local. bookshelf feedback up|down adjusts a future local pick; it does not report a task back to a service.

Bounded by design

Enough context to be useful. Nothing else.

Bookshelf accepts an explicit intent or a bounded host metadata label only. It does not accept or inspect commands, paths, prompts, transcripts, code, tool arguments, model output, or network calls.

  • Ambient delivery is optional and off by default.
  • If the host cannot provide the bounded signal safely, matching fails closed.
  • Adapters keep their own errors contained; this is not a guarantee about a host turn.

The library behind the moment

Thousands of possible encounters, selected with clear boundaries.

The interactive terminal library, search, reading lists, and on-demand quote command are there when you want them. They support the ambient moment; they are not the point of it.

3,124quote records
3,111normalized unique texts
1,117catalogued books
949quoted works
585v2 primary-source-linked records pending human review
2,539legacy records explicitly unverified

Where it meets you

Inside the coding session. Not in another tab.

The plugin packages the same fail-soft Stop hook for Codex Desktop, Codex CLI, and Claude Code. Pi and Hermes adapters are included too, but the central experience is simple: while your agent works, the waiting gives something back.

Codex Desktop + CLI

One plugin surface

Install the packaged Codex plugin and let its systemMessage appear at the Stop boundary.

Claude Code

The same cadence

The validated plugin declares the same optional Stop adapter for Claude Code sessions.

Pi + Hermes

Broader agent support

Both install the canonical skill and their native end-of-turn adapter.

Private by default

Local and bounded

No prompt, transcript, code, command, path, tool argument, or model output is sent anywhere.

Actual Claude Code 2.1.217 session · Opus 4.8

A real edit, real tests, and a real Bookshelf Stop hook.

A 10.6-second cut accelerates the setup, then zooms and holds the quote for four seconds.

Bookshelf · Claude CodeActual quote at the Stop boundary
Accessible transcript

In the disposable rewrite-prod-in-rust-by-lunch Rust project, an authenticated Claude Code 2.1.217 session with Opus 4.8 reads the real README and source, changes rollback_window_minutes from zero to 30 minutes for risky deploys, and runs the real Cargo test suite with both tests passing. Claude adds its own dry rollback joke. The actual Bookshelf Stop hook then displays: “The darker the night, the brighter the stars.” — Fyodor Dostoevsky, Crime and Punishment. The source capture is played at 1.25× with long waits capped; the hero edit further compresses the work and gives the quote a four-second highlighted hold. Because the public plugin is Stop-only, the demo truthfully shows one quote per completed response; no extra quotes are synthesized.

Make the waiting useful

Let every few turns leave you a little less narrow.