npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

claude-overtime

v1.3.0

Published

Warns when approaching Claude rate limit and auto-continues your session overnight using /overtime

Readme

claude-overtime

Stop losing your late-night Claude sessions to rate limits.

claude-overtime does three things:

  1. Warns you at ~95% of your hourly token limit — a desktop notification + terminal banner so you always see it coming.
  2. /overtime command — captures your current task context, spawns a manager agent that waits for the rate limit to reset, then actively continues your work unattended. Auto-retries on subsequent rate limits (up to 5×). Crash-safe: permissions are cleaned up automatically even if the session dies.
  3. Rate limit tracker — a status bar showing your current usage % right in the Claude Code CLI.

Install

npm install -g claude-overtime

postinstall automatically runs claude-overtime install, which:

  • Copies the /overtime slash command to ~/.claude/commands/
  • Installs the rate-limit warning hook to ~/.claude/hooks/
  • Installs the status line script for usage % display
  • Registers the Stop hook and status line in ~/.claude/settings.json

Or install manually:

claude-overtime install

Usage

/overtime

Run this in any Claude Code session when you're about to (or have just) hit your rate limit:

/overtime

Defaults to resuming in 5 hours. Claude will:

  • Capture your current task context (reads the active plan file, or summarizes the conversation)
  • Ask you to choose an abort-on-failure behavior (stop, warn-and-continue, or cleanup-and-exit)
  • Snapshot the current task as a drift anchor
  • Write session rules to .claude/overtime-rules.md
  • Grant temporary project-scoped permissions (so it doesn't stall on approval prompts overnight)
  • Keep your machine awake
  • Spawn a manager agent that picks up exactly where you left off
  • Auto-retry if the agent hits another rate limit — up to 5 times

You can specify a custom delay:

/overtime 1h
/overtime 90m
/overtime 2h30m

Supported formats: Nh (hours), Nm (minutes), NhMm (combined), Ns (seconds, useful for testing), plain number = minutes.

Rate limit tracker (status bar)

After installation, your Claude Code status bar shows your current rate limit usage:

OT: 72% [==============      ]

This updates automatically after each assistant response. Uses Claude Code's built-in rate_limits.five_hour.used_percentage data when available, falling back to the token tracking hook.

Rate limit warning

The warning fires automatically — you don't need to do anything. When you approach your limit you'll see:

╔══════════════════════════════════════════════════════╗
║  ⚠️  claude-overtime: rate limit ~95% reached        ║
║  Run /overtime to continue your session overnight.  ║
╚══════════════════════════════════════════════════════╝

Plus a desktop notification (macOS: Notification Center, Linux: notify-send).


Configuration

Set a custom warning threshold (default: 90,000 tokens ≈ 95% of a typical hourly limit):

export CLAUDE_OVERTIME_WARN_AT=80000

Add this to your .zshrc / .bashrc to persist it.


How it works

| Component | What it does | |---|---| | hooks/rate-limit-warn.sh | Runs on every Claude Stop event, tracks cumulative token usage for the session, fires warning at threshold, and auto-cleans stale overtime permissions | | hooks/overtime-statusline.sh | Status line script showing rate limit usage % in the CLI footer | | commands/overtime.md | The /overtime slash command — captures context, writes session rules, grants permissions, sleeps, then spawns a manager agent with auto-retry | | bin/claude-overtime.js | CLI for install / uninstall / status |

Token usage is accumulated in ~/.claude/overtime-token-state.json and resets each new session.

The manager agent

When /overtime fires, it doesn't just set a timer and hope. It:

  1. Captures task context — reads the active plan file (~/.claude/plans/*.md) or summarizes the current conversation into 3-5 bullet points
  2. Spawns a manager agent after the delay — a focused Agent subagent that receives the full task context and systematically works through the remaining tasks
  3. The manager does the work — reads files, edits code, runs tests, and spawns worker subagents for complex sub-tasks
  4. Cleans up when done — kills caffeinate, removes temporary permissions

Unattended permissions

When you run /overtime, Claude writes a temporary .claude/settings.local.json in the project with broad tool permissions (Bash(*), Edit, Write, etc.) so the resumed session can work without prompts.

Safety rails:

  • Destructive commands are still denied (rm -rf /, git reset --hard, git clean -f)
  • All git push commands are blocked — unreviewed overnight code never reaches remote
  • Claude is scoped to only finish the in-progress task — no new work, no changes outside the project
  • Permissions are automatically removed when the task completes
  • If the file already existed, only the permissions key is removed on cleanup — your other settings are preserved

Crash safety: /overtime writes a state file to /tmp/claude-overtime-state.json containing the path to the settings file and an expiry timestamp (delay + 1 hour buffer). The rate-limit-warn.sh Stop hook checks this on every session stop. If the overtime session crashed without cleaning up, the next time you use Claude Code the stale permissions are detected and removed automatically.

Session rules

When you activate /overtime, Claude writes .claude/overtime-rules.md with 10 behavioral rules the resumed session must follow:

| Rule | What it enforces | |---|---| | Git checkpoint | Commits all uncommitted work before writing any new code | | Incremental commits | Commits after each logical unit — never batches 3+ files | | Final commit | Clean commit when all work is done | | Session log | Appends structured entries to .claude/overtime-log.md (gitignored) after each module | | Architecture consistency | Reads existing files first, matches their patterns (async style, exports, error handling) | | Structural integrity | Every function handles null/empty/error cases — no dead code or placeholder TODOs | | Dependency audit | Verifies packages exist in the manifest before using them | | Flight proxy | Optional — routes HTTP through Flight proxy when FLIGHT_PROXY=true | | Context drift prevention | Every 3 commits, re-checks the task snapshot to stay on-scope | | Git push blocked | All pushes denied — you review and push manually in the morning |

The rules file also contains a task snapshot (2-3 sentence summary of what you were working on) that acts as the drift anchor, and your chosen abort behavior for handling checkpoint failures.


Uninstall

claude-overtime uninstall

Removes the commands, hooks, status line, and settings.json entries cleanly.


Requirements

  • Claude Code CLI
  • Node.js 18+
  • macOS (uses caffeinate) or Linux with systemd-inhibit

The typical workflow

  1. It's 11pm. You're deep in a feature.
  2. You glance at the status bar: OT: 87% — getting close.
  3. You see the ⚠️ 95% warning.
  4. You type /overtime (or /overtime 1h if you know your limit).
  5. Claude asks your abort preference, snapshots the task, and writes session rules.
  6. Claude starts caffeinate and sets a timer.
  7. You go to sleep.
  8. Timer fires. Claude reads .claude/overtime-rules.md, checkpoints git, and resumes.
  9. It commits incrementally, logs progress to .claude/overtime-log.md, and checks for scope drift every 3 commits.
  10. You wake up in the morning. The feature is done. caffeinate has been killed. You review the log and push when ready.