project-directory-migration | Skill Performance & Reviews | TopRankSkills

TopRank Skills

Home / Skills / tools / project-directory-migration

project-directory-migration

maintained by terrylica

star 17 account_tree 4 verified_user MIT License
bolt View GitHub

name: project-directory-migration description: Migrate Claude Code project sessions when renaming directories. TRIGGERS - directory rename, move project, migrate sessions, project path change, workspace reorganization, rename folder. allowed-tools: Read, Bash, Glob, Grep, AskUserQuestion

Project Directory Migration

Safely migrate Claude Code project context (sessions, memory, history) when renaming a project directory.

When to Use This Skill

Use this skill when:

  • Renaming a project directory (e.g., my-old-name/ to my-new-name/)
  • Moving a project to a different path
  • User says "No conversations found" after a directory rename
  • Reorganizing workspace directories
  • Package rename requires matching directory name to GitHub repo name
  • Recovering sessions that became orphaned after a directory move

Interactive Workflow

Phase 1: Gather Facts

Use AskUserQuestion to collect source and target paths.

Question 1 (header: "Source"): "What is the current project directory path?"
  Options:
    - "Use current directory: $PWD" (Recommended)
    - "Specify a different path"

Question 2 (header: "Target"): "What should the new directory path be?"
  Options:
    - (User provides via "Other" free text)

Phase 2: Dry-Run Audit

Run the migration script in --dry-run mode to discover what needs migrating:

bash "<skill-scripts>/claude-code-migrate.sh" --dry-run "$OLD_PATH" "$NEW_PATH"

Present findings to user:

  • Number of session files found
  • Number of history.jsonl entries to rewrite
  • Whether auto-memory (MEMORY.md) exists
  • Environment tooling detected (mise, uv, direnv, asdf)

Phase 3: Scope and Confirm

Question 3 (header: "Scope", multiSelect: true):
  "What should be included in migration?"
  Options:
    - "Claude Code sessions + history (Recommended)"
    - "Auto-memory (MEMORY.md) (Recommended)"
    - "Backward-compatibility symlink (Recommended)"
    - "Auto-fix environment: mise trust, venv recreate (Recommended)"

Question 4 (header: "Execute"):
  "Ready to migrate? The script creates a timestamped backup first."
  Options:
    - "Execute migration now (Recommended)"
    - "Export copy-paste commands for manual execution"
    - "Cancel"

If user chooses "Export copy-paste commands": Generate the exact commands they can paste into their terminal after closing Claude Code. This is the safest option since Claude Code won't be accessing the project files during migration.

Phase 4: Post-Migration Report

After migration completes, report:

  • Sessions migrated, history entries rewritten
  • Environment fixups applied (mise trust, venv recreated)
  • Remaining manual steps (git remote update, etc.)
  • Rollback command if anything goes wrong

Quick Reference

Claude Code Path Encoding

Claude Code encodes directory paths by replacing / with -:

/Users/alice/projects/my-app  -->  -Users-alice-projects-my-app

Storage Locations

Asset Location
Sessions ~/.claude/projects/{encoded-path}/*.jsonl
Memory ~/.claude/projects/{encoded-path}/memory/MEMORY.md
Session index ~/.claude/projects/{encoded-path}/sessions-index.json
History ~/.claude/history.jsonl
Subagents ~/.claude/projects/{encoded-path}/{session-id}/subagents/

What Contains Path References

File Fields with paths Needs rewriting?
sessions-index.json originalPath, entries[].projectPath, entries[].fullPath Yes
history.jsonl project field per entry Yes
Session .jsonl files None No
MEMORY.md None (content only) No

Migration Script

Located at scripts/claude-code-migrate.sh.

Usage

# Dry run (preview what would happen)
bash scripts/claude-code-migrate.sh --dry-run /old/path /new/path

# Execute migration
bash scripts/claude-code-migrate.sh /old/path /new/path

# Rollback from most recent backup
bash scripts/claude-code-migrate.sh --rollback

# Show help
bash scripts/claude-code-migrate.sh --help

9-Phase Execution

  1. Pre-flight validation — 7 checks (paths, Claude Code dir, python3, no running sessions)
  2. Backup — Timestamped copy to ~/.claude/migration-backup-YYYYMMDD-HHMMSS/
  3. Move project directory — Rename in ~/.claude/projects/
  4. Rewrite sessions-index.json — Update projectPath, fullPath, originalPath
  5. Rewrite history.jsonl — Update project field (JSON-safe, preserves Unicode)
  6. Backward-compatibility symlink — Old encoded path symlinks to new
  7. Rename repo directorymv /old/path /new/path
  8. Environment fixups — mise trust, venv recreate, direnv/asdf warnings
  9. Post-flight verification — Sessions count, memory, symlink, env health

Reference Documentation


Troubleshooting

Issue Auto-fixed? Manual Solution
mise trust error after rename Yes (Phase 8) mise trust <new-path>
(old-name) in shell prompt Yes (Phase 8) Restart terminal or uv sync
VIRTUAL_ENV path mismatch Yes (Phase 8) uv sync --dev recreates venv
"No conversations found" Yes (Phase 4) Re-run migration script
.envrc not allowed Warned (Phase 8) direnv allow
Git push auth fails No Update credential helper or remote URL
Session subdirs missing No Use --rollback, retry

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!

Skill Details

GitHub Stars 17
GitHub Forks 4
Created Mar 2026
Last Updated 3 months ago
tools tools automation tools

Related Skills

specs-gen
chevron_right
glm-coding-agent
chevron_right
creating-pr
chevron_right
writing-skills
chevron_right
reviewing-pr
chevron_right

Build your own?

Join 12,000+ developers contributing to the Claude ecosystem.