migrate

Installation
SKILL.md

migrate

Initialize or repair the codevoyant shared context store, then apply any store-layout migrations between the version the store was last migrated to and the current codevoyant version. The canonical per-project store is ~/.codevoyant/<project-slug>/, and the in-repo .codevoyant is a gitignored symlink to it, so every git worktree of the same project shares one store. This skill is the ONLY place that knows about .codevoyant residency and migration — every other skill just uses ordinary relative .codevoyant/... paths that resolve transparently through the symlink.

This is an agent-driven skill: you (the agent) run the bash below and apply the selected migration files' instructions in order. There is no bundled program. SKILL.md is a thin dispatcher — the actual per-transition procedures live in flat references/migrate-v<A>-to-v<B>.md files.

Critical rules

  • The slug must match cv_init_store. The slug computation in Step 1 is byte-identical to the inline cv_init_store used by the other skills so the symlink target agrees.
  • Migrations are non-destructive. Each migration file keeps its own "never clobber / never touch worktrees / union the registry" rules; the dispatcher only selects and orders them.
  • Version compare is numeric, not string. Versions are compared as integer tuples (1.10.0 > 1.9.0), never as plain strings.
  • Apply in ascending numeric order, never string order. Selected migrations are applied in strictly ascending numeric <to>-tuple order — the exact order select_migrations.py prints them (migrate-v9-to-v10.md sorts before migrate-v10-to-v11.md by version, not lexicographically).
  • Confirmation gate before applying. The dispatcher lists every selected migration (filename + <from><to>) and asks the author for confirmation before applying anything. --yes / -y (or MIGRATE_YES=1) skips the prompt for unattended runs. A declined confirmation aborts before any store change and no version is recorded.
  • Markdown output: soft-wrap prose, never hard-wrap — when writing markdown, write each paragraph as one continuous line; do not insert manual newlines to wrap prose at a fixed column width. Newlines still separate paragraphs, list items, headings, and code fences.

Step 0: Parse invocation flags

The raw invocation args (filled by Claude Code / OpenCode slash commands): $ARGUMENTS. If this line is not filled in, read the args from the user's current message.

Installs
9
First Seen
Aug 17, 2026
migrate — cloudvoyant/codevoyant