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

cli-continues

v2.4.3

Published

Never lose context. Resume any AI coding session across Claude, Copilot, Gemini, Codex & OpenCode.

Readme

continues

Pick up where you left off — seamlessly continue AI coding sessions across Claude, Copilot, Gemini, Codex & OpenCode.

npm version License: MIT

Why?

Have you ever hit your daily limit on Claude Code mid-debug? Or burned through your Gemini quota right when things were getting interesting?

You've built up 30 messages of context — file changes, architecture decisions, debugging history. And now you either wait hours for the limit to reset, or start fresh in another tool and explain everything from scratch.

continues reads your session from any supported tool, extracts the context, and injects it into whichever tool you switch to. Your conversation history, file changes, and working directory all come along.

Features

  • 🔄 Cross-tool handoff — Move sessions between Claude, Copilot, Gemini, Codex & OpenCode
  • 🔍 Auto-discovery — Scans all 5 tools' session directories automatically
  • 🛠️ Tool activity extraction — Parses shell commands, file edits, MCP tool calls, patches, and more from every session
  • 🧠 AI reasoning capture — Extracts thinking blocks, agent reasoning, and model info for richer handoffs
  • 📋 Interactive picker — Browse, filter, and select sessions with a beautiful TUI
  • Quick resumecontinues claude / continues codex 3 — one command, done
  • 🖥️ Scriptable — JSON/JSONL output, TTY detection, non-interactive mode
  • 📊 Session statscontinues scan to see everything at a glance

Installation

npm install -g cli-continues

Or run directly without installing:

npx cli-continues

Both continues and cont work as commands after global install.

Quick Start

# Interactive session picker — browse, pick, switch tools
continues

# List all sessions across every tool
continues list

# Grab a Claude session and continue it in Gemini
continues resume abc123 --in gemini

# Quick-resume your latest Claude session (native resume)
continues claude

Usage

Interactive Mode (default)

Just run continues. It walks you through:

  1. Filter by directory, CLI tool, or browse all
  2. Pick a session
  3. Choose which CLI tool to continue in (only shows other tools — the whole point is switching)

When you run continues from a project directory, it prioritizes sessions from that directory first:

┌  continues — pick up where you left off
│
│  ▸ 12 sessions found in current directory
│  Found 904 sessions across 5 CLI tools
│    claude: 723  codex: 72  copilot: 39  opencode: 38  gemini: 31
│
◆  Filter sessions
│  ● This directory (12 sessions)
│  ○ All CLI tools (904 sessions)
│  ○ Claude (723)
│  ○ Codex (72)
│  ○ Copilot (39)
│  ○ Opencode (38)
│  ○ Gemini (31)
└

◆  Select a session (12 available)
│  [claude]    2026-02-19 05:28  my-project    Debugging SSH tunnel config   84a36c5d
│  [copilot]   2026-02-19 04:41  my-project    Migrate presets from Electron c2f5974c
│  [codex]     2026-02-18 23:12  my-project    Fix OpenCode SQLite parser    a1e90b3f
│  ...
└

◆  Continue claude session in:
│  ○ Gemini
│  ○ Copilot
│  ○ Codex
│  ○ OpenCode
└

If no sessions are found for the current directory, all sessions are shown automatically.

Non-interactive

continues list                          # List all sessions
continues list --source claude --json   # JSON output, filtered
continues list --jsonl -n 10            # JSONL, limit to 10
continues scan                          # Session discovery stats
continues rebuild                       # Force-rebuild the index

list output:

Found 894 sessions (showing 5):

[claude]   2026-02-19 05:28  dev-test/SuperCmd     SSH tunnel config debugging         84a36c5d
[copilot]  2026-02-19 04:41  migrate-to-tauri      Copy Presets From Electron          c2f5974c
[codex]    2026-02-18 23:12  cli-continues         Fix OpenCode SQLite parser          a1e90b3f
[gemini]   2026-02-18 05:10  my-project            Tauri window management             96315428
[opencode] 2026-02-14 17:12  codex-session-picker  Where does Codex save JSON files    ses_3a2d

Quick Resume

Resume the Nth most recent session from a specific tool using native resume (no context injection — fastest, preserves full history):

continues claude        # Latest Claude session
continues codex 3       # 3rd most recent Codex session
continues copilot       # Latest Copilot session
continues gemini 2      # 2nd most recent Gemini session
continues opencode      # Latest OpenCode session

Cross-tool Handoff

This is the whole point. Start in one tool, finish in another:

# You were debugging in Claude, but hit the rate limit.
# Grab the session ID from `continues list` and hand it off:
continues resume abc123 --in gemini

# Or pick interactively — just run `continues`, select a session,
# and choose a different tool as the target.

continues extracts your conversation context (messages, file changes, pending tasks) and injects it as a structured prompt into the target tool. The target picks up with full awareness of what you were working on.

How It Works

1. Discovery    → Scans session directories for all 5 tools
2. Parsing      → Reads each tool's native format (JSONL, JSON, SQLite, YAML)
3. Extraction   → Pulls recent messages, file changes, tool activity, AI reasoning
4. Summarizing  → Groups tool calls by type with concise one-line samples
5. Handoff      → Generates a structured context document
6. Injection    → Launches target tool with the context pre-loaded

Tool Activity Extraction

Every tool call from the source session is parsed, categorized, and summarized. The handoff document includes a Tool Activity section so the target tool knows exactly what was done — not just what was said.

Shared formatting helpers (SummaryCollector + per-tool formatters in src/utils/tool-summarizer.ts) keep summaries consistent across all 5 CLIs. Adding support for a new tool type is a one-liner.

What gets extracted per CLI:

| Tool | Extracted | |:-----|:----------| | Claude Code | Bash commands (with exit codes), Read/Write/Edit (file paths), Grep/Glob, WebFetch/WebSearch, Task/subagent dispatches, MCP tools (mcp__*), thinking blocks → reasoning notes | | Codex CLI | exec_command/shell_command (grouped by base command: npm, git, etc.), apply_patch (file paths from patch format), web_search, write_stdin, MCP resources, agent_reasoning → reasoning notes, token usage | | Gemini CLI | read_file/write_file (with diffStat: +N -M lines), thoughts → reasoning notes, model info, token usage (accumulated) | | Copilot CLI | Session metadata from workspace.yaml (tool calls not persisted by Copilot) | | OpenCode | Messages from SQLite DB or JSON fallback (tool-specific parts TBD) |

Example handoff output:

## Tool Activity
- **Bash** (×47): `$ npm test → exit 0` · `$ git status → exit 0` · `$ npm run build → exit 1`
- **Edit** (×12): `edit src/auth.ts` · `edit src/api/routes.ts` · `edit tests/auth.test.ts`
- **Grep** (×8): `grep "handleLogin" src/` · `grep "JWT_SECRET"` · `grep "middleware"`
- **apply_patch** (×5): `patch: src/utils/db.ts, src/models/user.ts`

## Session Notes
- **Model**: claude-sonnet-4
- **Tokens**: 45,230 input, 12,847 output
- 💭 Need to handle the edge case where token refresh races with logout
- 💭 The middleware chain order matters — auth must come before rate limiting

Session Storage

continues reads session data from each tool's native storage. Read-only — it doesn't modify or copy anything.

| Tool | Location | Format | |:-----|:---------|:-------| | Claude Code | ~/.claude/projects/ | JSONL | | GitHub Copilot | ~/.copilot/session-state/ | YAML + JSONL | | Google Gemini CLI | ~/.gemini/tmp/*/chats/ | JSON | | OpenAI Codex | ~/.codex/sessions/ | JSONL | | OpenCode | ~/.local/share/opencode/ | SQLite |

Session index cached at ~/.continues/sessions.jsonl. Auto-refreshes when stale (5 min TTL).

Commands

continues                           Interactive TUI picker (default)
continues list                      List all sessions
continues resume <id>               Resume by session ID
continues resume <id> --in <tool>   Cross-tool handoff
continues scan                      Session discovery statistics
continues rebuild                   Force-rebuild session index
continues <tool> [n]                Quick-resume Nth session from tool

continues / continues pick

Interactive session picker. Requires a TTY.

| Flag | Description | |:-----|:------------| | -s, --source <tool> | Pre-filter to one tool | | --no-tui | Disable interactive mode | | --rebuild | Force-rebuild index first |

continues list (alias: ls)

| Flag | Description | Default | |:-----|:------------|:--------| | -s, --source <tool> | Filter by tool | all | | -n, --limit <number> | Max sessions to show | 50 | | --json | Output as JSON array | — | | --jsonl | Output as JSONL | — | | --rebuild | Force-rebuild index first | — |

continues resume <id> (alias: r)

| Flag | Description | Default | |:-----|:------------|:--------| | -i, --in <tool> | Target tool for cross-tool handoff | — | | --no-tui | Skip interactive prompts | — |

continues scan

| Flag | Description | |:-----|:------------| | --rebuild | Force-rebuild index first |

continues <tool> [n]

Quick-resume using native resume (same tool, no context injection).
Tools: claude, copilot, gemini, codex, opencode. Default n is 1.

Conversion Matrix

All 20 cross-tool paths are supported and tested:

| | → Claude | → Copilot | → Gemini | → Codex | → OpenCode | |:--|:--------:|:---------:|:--------:|:-------:|:----------:| | Claude | — | ✅ | ✅ | ✅ | ✅ | | Copilot | ✅ | — | ✅ | ✅ | ✅ | | Gemini | ✅ | ✅ | — | ✅ | ✅ | | Codex | ✅ | ✅ | ✅ | — | ✅ | | OpenCode | ✅ | ✅ | ✅ | ✅ | — |

Same-tool resume is available via continues <tool> shortcuts (native resume, not shown in matrix).

Requirements

  • Node.js 22+ (uses built-in node:sqlite for OpenCode parsing)
  • At least one of: Claude Code, GitHub Copilot, Gemini CLI, Codex, or OpenCode

Development

git clone https://github.com/yigitkonur/cli-continues
cd cli-continues
pnpm install

pnpm run dev          # Run with tsx (no build needed)
pnpm run build        # Compile TypeScript
pnpm test             # Run 122 tests
pnpm run test:watch   # Watch mode

License

MIT © Yigit Konur