cktovdlisted
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 feature-first `.workbench` umbrella via local `<git-root>/.vd.json` and physically move `plans/` artifacts into per-feature folders.
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 `hooks/lib/vd_paths.py`)
| Artifact | Legacy (no umbrella) | Feature-first `.workbench` |
|---|---|---|
| Plans | `<cwd>/plans/` | `<git-root>/.workbench/features/<feature>/plans/` |
| Reports | `plans/reports/` | `<git-root>/.workbench/features/<feature>/reports/` |
| Journals | `plans/journals/` | `<git-root>/.workbench/features/<feature>/journals/` |
| Visuals | `plans/visuals/` | `<git-root>/.workbench/features/<feature>/visuals/` |
| State | `plans/goals/` | `<git-root>/.workbench/features/<feature>/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 (`.workbench`, not `.vd`) because multiple agents share the repo. Git worktrees are a separate top-level `<git-root>/.worktrees/` (not under `.workbench`); artifacts writte