Advanced · multi-step · destructive ck uninstall ak kit init backup first

Gỡ hẳn ClaudeKit, cài AgentKit

Không có lệnh “một phát xong”. Liệt kê → sao lưu → gỡ CK từng chỗ → cài AgentKit.

Nếu muốn giữ setting cũ

Chuyển dần

Xem trước rồi mới đổi. Thường giữ file bạn đã chỉnh. Phù hợp khi chưa muốn gỡ hết ClaudeKit.

Xem hướng dẫn chuyển dần →

Bạn đang ở đây

Gỡ hẳn rồi cài mới

Gỡ ClaudeKit từng bước, rồi cài AgentKit. Nhiều bước hơn, nhưng gọn hơn nếu bạn muốn dứt điểm.

Làm theo các phase bên dưới.

Tổng quan

Sáu phase

Complete clean = pipeline. Không có lệnh one-shot được hỗ trợ trên stable CLI đã audit để wipe toàn runtime home / purge-ck.

  1. 1

    Freeze + inventory

    Đóng app/session đang ghi chung file; liệt kê ck, project, thư mục cấu hình.

  2. 2

    Sao lưu

    Tự copy mọi thư mục đã liệt kê ra chỗ an toàn — có secret, đừng chia sẻ.

  3. 3

    ck uninstall

    Dry-run rồi apply theo scope — lặp mỗi project; --all ≠ fleet. Dừng nếu legacy / thiếu metadata.

  4. 4

    Cài AgentKit (stable)

    Installer → doctor --exit-on-fail → login tường minh → kit init (không --remote).

  5. 5

    Portable + leftovers

    Review portable-registry và artifact CK-owned trước khi gỡ binary / purge state.

  6. 6

    Gỡ binary + postflight

    Gỡ claudekit-cli bằng đúng manager; restart session; doctor/audit scoped.

00

Freeze + inventory

Unix

macOS / Linux

bash
bash
command -v ck || true
type -a ck 2>/dev/null || true
ck --version 2>/dev/null || true
ck projects list 2>/dev/null || true

# Preview cho cwd HIỆN TẠI + global thôi (có thể chạm lock — không phải pure read)
ck uninstall --all --dry-run

# Fallback tùy chọn nếu projects list không có:
# cat ~/.claudekit/projects.json 2>/dev/null || true

Windows

PowerShell

pwsh
powershell
Get-Command ck -All -ErrorAction SilentlyContinue
ck --version
ck projects list
# Preview cwd hiện tại + global (có thể chạm lock)
ck uninstall --all --dry-run

ck uninstall --all chỉ phủ project hiện tại (cwd) + global — không gỡ mọi repo đã đăng ký. Ưu tiên ck projects list hơn raw projects.json. Dry-run không nên coi là pure read-only nếu lock có thể bị chạm. Cũng ghi lại custom homes (AGENTKIT_HOME, AGENTKIT_CLAUDE_HOME, CODEX_HOME), alias/function, và symlink/reparse points.

01

Sao lưu (bắt buộc)

Unix

macOS / Linux

bash
bash
set -Eeuo pipefail
umask 077

STAMP=$(date +%Y%m%d-%H%M%S)
DEST=$(mktemp -d "$HOME/agentkit-pre-cutover-backup-$STAMP.XXXXXX")

copy_tree() {
  src=$1
  name=$2
  [ -d "$src" ] || return 0
  [ ! -e "$DEST/$name" ] || {
    echo "Refusing existing destination: $DEST/$name" >&2
    return 1
  }
  cp -a "$src" "$DEST/$name"
  [ -d "$DEST/$name" ] || {
    echo "Backup verification failed: $DEST/$name" >&2
    return 1
  }
}

# Home mặc định. Sau inventory, thêm mọi project/custom root khác trước khi uninstall.
copy_tree "${AGENTKIT_CLAUDE_HOME:-$HOME/.claude}" claude
copy_tree "$HOME/.claudekit" claudekit
copy_tree "${AGENTKIT_HOME:-$HOME/.agentkit}" agentkit
copy_tree "${CODEX_HOME:-$HOME/.codex}" codex
copy_tree "$HOME/.agents" agents

# Project hiện tại nếu có — lặp copy_tree cho từng path project đã inventory.
copy_tree ".claude" project-claude
copy_tree ".claudekit" project-claudekit

echo "Safety copy completed at: $DEST"

Windows

PowerShell

pwsh
powershell
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'

$stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
$dest = Join-Path $env:USERPROFILE "agentkit-pre-cutover-backup-$stamp-$([guid]::NewGuid().ToString('N').Substring(0, 8))"
if (Test-Path -LiteralPath $dest) {
  throw "Refusing existing destination: $dest"
}
New-Item -ItemType Directory -Path $dest -ErrorAction Stop | Out-Null

$items = @(
  @{ Src = (Join-Path $env:USERPROFILE '.claude'); Name = 'claude' }
  @{ Src = (Join-Path $env:USERPROFILE '.claudekit'); Name = 'claudekit' }
  @{ Src = (Join-Path $env:USERPROFILE '.agentkit'); Name = 'agentkit' }
  @{ Src = (Join-Path $env:USERPROFILE '.codex'); Name = 'codex' }
  @{ Src = (Join-Path $env:USERPROFILE '.agents'); Name = 'agents' }
)

foreach ($item in $items) {
  if (Test-Path -LiteralPath $item.Src -PathType Container) {
    $target = Join-Path $dest $item.Name
    if (Test-Path -LiteralPath $target) {
      throw "Refusing existing destination: $target"
    }
    Copy-Item -LiteralPath $item.Src -Destination $target -Recurse -Force -ErrorAction Stop
    if (-not (Test-Path -LiteralPath $target -PathType Container)) {
      throw "Backup verification failed: $target"
    }
  }
}

# Project hiện tại nếu có — lặp cho từng project đã inventory.
if (Test-Path -LiteralPath '.claude' -PathType Container) {
  Copy-Item -LiteralPath '.claude' -Destination (Join-Path $dest 'project-claude') -Recurse -Force -ErrorAction Stop
}
if (Test-Path -LiteralPath '.claudekit' -PathType Container) {
  Copy-Item -LiteralPath '.claudekit' -Destination (Join-Path $dest 'project-claudekit') -Recurse -Force -ErrorAction Stop
}

Write-Host "Safety copy completed at: $dest"

Chạy trong PowerShell (không phải CMD). Bản copy này đủ để phòng hờ; không phải bản sao “siêu chính xác” của Windows.

02

Gỡ nội dung ClaudeKit

Global

shell
# Luôn dry-run trước
ck uninstall --global --dry-run
# Chỉ apply sau khi đã verify backup + review preview:
# Nếu preview báo legacy mode, thiếu metadata, hoặc xóa cả thư mục — DỪNG.
# Inspect/copy các thư mục đó thủ công trước.
ck uninstall --global --force-overwrite -y

Mỗi project (lặp lại)

shell
cd /exact/project/path
ck uninstall --local --dry-run
# Cùng điều kiện dừng: legacy / thiếu metadata / xóa thư mục bất thường
ck uninstall --local --force-overwrite -y

# Hoặc cwd + global cho đúng thư mục này thôi (vẫn không phải cả fleet):
# ck uninstall --all --dry-run
# ck uninstall --all --force-overwrite -y

Sau uninstall, vẫn có thể còn

USR

File của bạn

File bạn tự tạo thường được giữ. File ClaudeKit đã sửa: chỉ xóa thêm khi dùng --force-overwrite. Install cũ thiếu danh sách file: xem dry-run kỹ — có thể xóa cả thư mục.

CFG

File cấu hình hay gặp

Thường giữ: .gitignore, .repomixignore, .mcp.json, .ckignore, .ck.json, CLAUDE.md (khi cài đặt còn “nhớ” file nào là của CK).

CTL

~/.claudekit/

Thư mục state ClaudeKit: config, danh sách project, cache, bản phục hồi sau uninstall. Không biến mất chỉ vì ck uninstall.

BIN

Lệnh ck trên máy

Gói claudekit-cli (npm/pnpm/yarn/bun) vẫn còn. ck uninstall không gỡ gói — gỡ bằng đúng package manager đã cài.

03

Cài AgentKit (stable)

shell
curl -fsSL https://agentkit.best/install.sh | sh
# Windows PowerShell: irm https://agentkit.best/install.ps1 | iex

ak --version
ak doctor --exit-on-fail

# Email/OTP tương tác (stable bắt buộc có flag tường minh)
ak login --email you@example.com
# Hoặc non-interactive (đừng dán key thật vào chat/screenshot):
# ak login --license-key "$AGENTKIT_LICENSE_KEY" --no-interactive
# ak login --api-key "$AGENTKIT_API_KEY" --no-interactive

# Remote registry là mặc định bản release — không truyền --remote
ak kit init engineer --yes --no-interactive
# + marketing kit nếu có license

# Tùy chọn: cài global native Claude Code
# ak kit init engineer --global --yes --no-interactive
# Takeover hẹp: snapshot foreign home, rồi neutralize .ck.json, statusline.cjs,
# và một phần residue settings — không phải full cây skills/agents/hooks.
# Tránh --no-backup trừ khi cố ý để lại residue CK.

ak kit uninstall / ak uninstall chỉ gỡ thứ AgentKit đã cài — không thay ck uninstall để dọn ClaudeKit. Khi cài global Claude Code, AgentKit có thể dọn vài file lẻ ClaudeKit (vd. statusline) — không xóa hết cây skill/agent.

04

Rà leftover (trước khi gỡ lệnh ck)

bash
# Review provenance portable TRƯỚC khi gỡ binary ck hoặc purge ~/.claudekit
ls -la ~/.claudekit
ls -la ~/.claudekit/backups 2>/dev/null || true
# Ownership/provenance portable (archive bản sao nếu cần map rollback exact):
# cp -a ~/.claudekit/portable-registry.json "$DEST/portable-registry.json" 2>/dev/null || true
# cat ~/.claudekit/portable-registry.json 2>/dev/null || true

# Nếu từng chạy: ck migrate -a codex  (mặc định project scope; thêm -g cho Codex global)
# Chỉ review record CK-owned đã chứng minh trong registry, vd. ~/.codex và ~/.agents/skills.
# Không bao giờ: rm -rf ~/.claude   hoặc   rm -rf ~/.codex

# Purge state sau grace period (chỉ khi không còn cần rollback):
# Ưu tiên quarantine path exact (không phải symlink) thay vì xóa mù.
# vd. mv ~/.claudekit "$HOME/claudekit-quarantine-$(date +%Y%m%d)"
# Đừng copy-paste rm -rf blanket cho shared runtime/state home.
powershell
# Review provenance portable TRƯỚC khi gỡ binary ck hoặc purge state
Get-ChildItem -Force (Join-Path $env:USERPROFILE '.claudekit') -ErrorAction SilentlyContinue
# Get-Content (Join-Path $env:USERPROFILE '.claudekit\portable-registry.json') -ErrorAction SilentlyContinue

# Grace period: quarantine đúng path (không force-delete đệ quy shared home)
# $src = Join-Path $env:USERPROFILE '.claudekit'
# $q = Join-Path $env:USERPROFILE ("claudekit-quarantine-" + (Get-Date -Format 'yyyyMMdd'))
# if ((Test-Path -LiteralPath $src) -and -not (Get-Item -LiteralPath $src).LinkType) {
#   Move-Item -LiteralPath $src -Destination $q
# }

05

Gỡ binary ClaudeKit CLI

bash
type -a ck

# Xác định package manager sở hữu bản ClaudeKit, rồi chạy ĐÚNG MỘT lệnh:
# npm uninstall -g claudekit-cli
# pnpm remove -g claudekit-cli
# bun remove -g claudekit-cli
# Chỉ Yarn Classic: yarn global remove claudekit-cli

# Liệt kê lại PATH sau khi gỡ
type -a ck 2>/dev/null || true

# Entrypoint tương thích AgentKit tên "ck" (tùy chọn):
# Unix thường là symlink tới binary ak; Windows thường là bản copy executable.
# Đừng xóa entrypoint "ck" của AK nếu cố ý giữ.
powershell
Get-Command ck -All -ErrorAction SilentlyContinue
# Chạy đúng một lệnh uninstall của package manager sở hữu claudekit-cli, rồi:
Get-Command ck -All -ErrorAction SilentlyContinue
# Trên Windows, entrypoint "ck" cố ý của AgentKit thường là bản copy của ak, không phải symlink.

06

Kiểm tra sau cùng

shell
ak doctor --json --exit-on-fail
ak doctor --check residual_ck_content
ak doctor --check ck_shim_collision

# Cài kit project-native (mặc định sau kit init trong project):
ak audit engineer --project-dir . --json

# Chỉ khi dùng Claude Code project plugin delivery:
# ak audit engineer --plugin-mode --project-dir . --json

# Restart session Claude Code / Codex / AK cũ, rồi xác nhận trong session thật
# rằng /ck: skills và CK hooks đã hết ở nơi bạn kỳ vọng.

residual_ck_content chỉ cảnh báo (không tự sửa): tìm vài file ClaudeKit còn sót trong home Claude đã gắn AgentKit — không thay việc bạn tự rà project / portable / alias. ak doctor --json có thể báo “xong” (exit 0) dù còn cảnh báo; muốn script fail khi lỗi thì thêm --exit-on-fail. Giữ bản sao lưu vài ngày đến khi chắc không cần quay lại.

Tiếp theo