"pan conversations scan/search/list/show/current/cost/enrich/embed/move/link-pr — discover, index, search, reassign, and link PRs to Claude Code session history"
Install
npx skillscat add eltmon/overdeck/pan-conversations Install via the SkillsCat registry.
SKILL.md
Pan Conversations
pan conversations (alias pan conv) discovers, indexes, and searches Claude Code
session history recorded in the discovered_sessions index, and reads/writes the
live conversations table (the same store the dashboard uses).
Commands
pan conversations scan [dirs...] [--watched] [--system] [--dry-run] [--max-parallel <n>]
pan conversations search [query] [--workspace <path>] [--model <name>] [--since <time>] [--after <time>] [--before <time>] [--min-cost <n>] [--max-cost <n>] [--min-messages <n>] [--managed] [--unmanaged] [--enriched] [--not-enriched] [--tag <value>] [--tool <name>] [--file <path>] [--issue <id>] [--similar <id>] [--semantic <query>] [--format <fmt>] [--limit <n>] [--offset <n>]
pan conversations list [--workspace <path>] [--model <name>] [--since <time>] [--managed] [--enriched] [--format <fmt>] [--limit <n>] [--offset <n>]
pan conversations show <id> [--json]
pan conversations jsonl <conv-id> [--json]
pan conversations move <query> <projectKey>
pan conversations link-pr <query> <url|#42|owner/repo#42> [--source agent|manual]
pan conversations unlink-pr <query> <url|#42|owner/repo#42>
pan conversations prs <query> [--json]
pan conversations auto-archive-on-merge [on|off]
pan conversations current [--json]
pan conversations cost [--since <time>] [--workspace <path>] [--by <field>] [--json]
pan conversations embed [ids...] [--regenerate] [--status] [--provider <name>] [--model <name>] [--max-parallel <n>]
pan conversations enrich [ids...] [--tier <n>] [--deep] [--full] [--upgrade] [--with <model>] [--prompt <text>] [--limit <n>] [--workspace <path>] [--since <time>] [--ids <ids>] [--max-parallel <n>] [--yes]jsonl aliases transcript; current aliases whoami.
Notes
scanindexes~/.claude/projects/(or configured watch directories with--watched) intodiscovered_sessions. Run it beforesearch/list/costreturn
anything for sessions not yet seen.--dry-runpreviews without writing.searchis the full-text + filterable query surface;--semantic <query>
and--similar <id>need embeddings generated first viaembed.--format ids
is useful for piping session IDs into another command.listissearchwithout the free-text query — structured filters only.show <id>resolves<id>as a conversation id first (the same/conv/<N>namespace the dashboard uses), falling back to thediscovered_sessionsscan-order index if no conversation matches.jsonl <conv-id>prints the on-disk transcript path for a conversation id,
or reportsexpired(path derivable but file missing) /unknown(noclaude_session_idrecorded) — use--jsonto read thestatusfield
programmatically.move <query> <projectKey>(PAN-1577) reassigns a conversation's project
via theproject_keyoverride, without touching its cwd, tmux session, or
backing JSONL file.<query>resolves by exact conversation name first, then
a fuzzy match against conversation titles — an ambiguous fuzzy match (more than
one title contains the query) or no match at all exits non-zero listing the
candidates.<projectKey>is the project's yaml key (fromprojects.yaml),
not its display name. Requires the dashboard running (pan up) — the command
PATCHes/api/conversations/:name/move.link-pr/unlink-pr/prs(PAN-3822) link a pull request to a
conversation so its row and header show the PR badge.<query>resolves likemove;pan conv currentnames your own conversation. Only a repository
configured for the conversation's project is accepted (#42= that repo).
Inside an agent the source isagent. Branch detection links a PR on its
own only for a conversation in a linked git worktree, or an agent
conversation, never one in the primary checkout. Unlinking hides the PR from
branch detection too. Works with the dashboard down (writes the link directly).auto-archive-on-merge(default off) archives an operator conversation once
all its linked PRs are merged or closed; never agent conversations, never a
live session.enrich/embedcall out to an LLM/embedding provider and cost money;enrichprompts for confirmation unless--yesis passed.--tier 3
(--deep) and--fullare the expensive, most-thorough options.currentis deterministic — it reads the current process's own recorded
session identity, it does not scan or guess.