← ClaudeAtlas

cktovdlisted

Migrate from claudekit (ck) to the vd-cli control plane — install clean-room hooks, convert .ck.json to .vd.json, audit CK_*→VD_* env consumers, and move a repo's plans/ artifacts into the .work umbrella (plans, reports, journals, visuals, state as siblings under <git-root>/.work/). Use when the user says 'cktovd', 'migrate to vd', 'migrate plans to .work', 'enable the .work umbrella', or 'switch this repo off claudekit'.
vanducng/skills · ★ 0 · Data & Documents · score 76
Install: claude install-skill vanducng/skills
# cktovd — claudekit → vd-cli migration Migrate two layers, in order: 1. **Machine** (once): vd-cli owns the Claude Code control plane — clean-room hooks in `~/.claude/hooks/`, config in `~/.claude/.vd.json`. 2. **Repo** (per project): opt into the `.work` umbrella via `<git-root>/.vd.json` and physically move `plans/` artifacts. Detect scope from the argument: `--machine` → machine layer only; a repo path (default: cwd git root) → repo layer (runs a machine preflight first); `--check` → verify only, change nothing. ## Layout contract (source of truth: vd-cli `internal/hooks/assets/lib/paths.cjs`) | Artifact | Legacy (no umbrella) | Umbrella on (`.work`) | |---|---|---| | Plans | `<cwd>/plans/` | `<git-root>/.work/plans/` | | Reports | `plans/reports/` | `<git-root>/.work/reports/` (**sibling** of plans, not nested) | | Journals | `plans/journals/` | `<git-root>/.work/journals/` | | Visuals | `plans/visuals/` | `<git-root>/.work/visuals/` | | State | `plans/goals/` | `<git-root>/.work/state/` (**renamed**: goals → state) | | Docs | `<cwd>/docs/` | `<cwd>/docs/` — **never moves**: git-tracked team deliverables, umbrella-blind by design | The umbrella dir is named tool-neutrally (`.work`, not `.vd`) because multiple agents share the repo. Config precedence: DEFAULT ← global `~/.claude/.vd.json` ← project `<git-root>/.vd.json`. At each layer, if `.vd.json` is absent, `.ck.json` is read as a legacy fallback — **read-only, one-way**: vd never writes `.ck.json`, so migration