skills/lovstudio/skills/lovstudio:cc-migrate-session

lovstudio:cc-migrate-session

Installation
SKILL.md

lovstudio:cc-migrate-session

Moves the session store ~/.claude/projects/<slug>/ from the old path-slug to the new one and rewrites every "cwd" field inside the jsonl files. After this, claude --resume from the new directory will see all prior sessions.

When to Trigger

YES — invoke this skill when:

  • User says the project folder moved / was renamed at the filesystem level
  • User mentions both FROM and TO paths, OR mentions one and the current cwd implies the other
  • User complains that claude --resume no longer shows history after moving a folder
  • User wants to "recover" sessions from a path they used to work in

NO — don't invoke when:

  • User is renaming a file, function, variable, or branch (not the project root)
  • User is asking a general question about CC's storage model (just explain, don't migrate)
  • Paths are ambiguous — ask first

Workflow

Step 1 — Gather FROM and TO

Infer from the conversation first. Typical patterns:

User said FROM TO
"我把项目从 /a 搬到了 /b" /a /b
"this project used to be at /old" (in new cwd) /old process.cwd() (current)
"本项目已迁移到 /new" (in old cwd) process.cwd() (current) /new
"I renamed ~/foo to ~/bar" ~/foo ~/bar

If either side is ambiguous, ask once with AskUserQuestion. Don't guess.

Always expand ~ and resolve to absolute paths before running the CLI.

Step 2 — Run dry-run + json to preview

npx -y @lovstudio/cc-migrate-session <FROM> <TO> --dry-run --json

Parse the JSON. Tell the user:

  • How many sessions were found
  • Total size
  • Warn if toDirExists is true (destination slug dir already exists — merge risk)
  • Show the FROM and TO slugs so the user can sanity-check the path mapping

If sessionCount === 0, stop. Tell the user either (a) the FROM path is wrong, or (b) CC never ran there. Do NOT proceed.

Step 3 — Confirm with user

Use AskUserQuestion (or inline yes/no) asking: "Migrate N sessions from to ?"

Only proceed on explicit yes.

Step 4 — Execute

npx -y @lovstudio/cc-migrate-session <FROM> <TO> --yes --json

Parse phase: "done" output. Extract:

  • rewrites (total cwd lines changed)
  • restartHint.cd and restartHint.command

Step 5 — Tell user to restart CC

Output something like:

✓ Migrated N session(s), rewrote M cwd lines.

To load them, restart Claude Code in the new location:

  cd <TO>
  claude --resume

(The original session dir at ~/.claude/projects/<old-slug>/ is untouched —
you can delete it after verifying the new location works.)

IMPORTANT: The CURRENT Claude Code session (the one running this skill) cannot "switch" its own cwd mid-session. The user must exit and re-invoke claude from the new directory. State this clearly.

CLI Reference

npx -y @lovstudio/cc-migrate-session <FROM> <TO> [options]

Option Purpose
-y, --yes Skip confirmation prompt
--dry-run Show plan, don't write
--json Machine-readable output (use this from the skill)
--projects-dir <dir> Override CC projects dir (default ~/.claude/projects)

Slug Rule (FYI)

CC computes the slug by replacing every non-alphanumeric character with -. So:

  • /Users/mark/my-project-Users-mark-my-project
  • /Users/mark/.claude-Users-mark--claude (double - because . is non-alnum)
  • /Users/mark/@手工川-Users-mark----- (one per @ and each CJK char)

The CLI handles this automatically — don't try to hand-compute it.

Safety

  • The old dir is NEVER deleted by this skill. It's a copy-then-rewrite, not a move.
  • Tell the user to verify claude --resume works in the new location before rm'ing the old slug dir.
  • If destination slug dir already exists, the CLI merges (overwriting conflicting jsonls). Warn the user.
Weekly Installs
9
GitHub Stars
40
First Seen
2 days ago
Installed on
amp9
cline9
opencode9
cursor9
kimi-cli9
warp9