@arvoretech/pi-recap

PI extension that drafts a one-line recap of where you left off — on demand with /recap and automatically when you return to an idle session

Packages

Package details

extension

Install @arvoretech/pi-recap from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@arvoretech/pi-recap
Package
@arvoretech/pi-recap
Version
1.0.1
Published
Jul 9, 2026
Downloads
230/mo · 16/wk
Author
joao.barros.arvore
License
MIT
Types
extension
Size
28.9 KB
Dependencies
0 dependencies · 1 peer
Pi manifest JSON
{
  "extensions": [
    "./dist/index.js"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

@arvoretech/pi-recap

Drafts a one-line recap of where you left off in a Pi session — inspired by Claude Code's session recap.

What it does

  • On demand: run /recap any time to get a 1–2 line summary of what was being worked on, what's done, and the next pending step. Useful before a commit, before opening a PR, or after a long session.
  • Automatically on return: when you come back to a session that has been idle for a while, Pi drafts the recap and shows it before your next turn — so you don't have to scroll back to rebuild context.

The recap is generated by a background model call (via the host's completeSimple, same mechanism as smart-context) using the current session model. It's best-effort: if it can't run, it silently no-ops and never blocks your turn.

Auto-recap trigger

Pi has no native terminal focus/blur event, so instead of Claude Code's "unfocused ≥ 3 min" signal this extension uses idle wall-clock time since the last completed turn:

  1. At least 3 minutes elapsed since the last agent_end.
  2. Session has at least 3 user turns behind it.
  3. Never twice in a row — after a recap is shown, the next one waits for fresh activity.
  4. Interactive mode only (ctx.hasUI); skipped in print/headless mode.

The practical effect (a recap waiting when you return) is the same; the trigger is time-based rather than focus-based.

Configuration

Auto-recap is on by default. Disable it with an env var:

export PI_ENABLE_AWAY_RECAP=0

/recap always works regardless of this setting.

Install

.pi/settings.json:

{
  "packages": ["npm:@arvoretech/pi-recap"]
}