cc-swap 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +30 -0
- package/README.md +416 -0
- package/dist/cli.js +275 -0
- package/docs/superpowers/plans/2026-03-22-cc-switch.md +55 -0
- package/docs/superpowers/specs/2026-03-22-cc-switch-design.md +117 -0
- package/package.json +31 -0
- package/src/accounts.ts +105 -0
- package/src/cli.ts +158 -0
- package/src/index.ts +4 -0
- package/src/items.ts +57 -0
- package/src/paths.ts +11 -0
- package/src/symlink.ts +34 -0
- package/src/validate.ts +10 -0
- package/tests/accounts.test.ts +186 -0
- package/tests/cli.test.ts +76 -0
- package/tests/symlink.test.ts +127 -0
- package/tests/validate.test.ts +33 -0
- package/tsconfig.json +15 -0
- package/tsup.config.ts +9 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(curl -s https://raw.githubusercontent.com/kaitranntt/ccs/main/README.md)",
|
|
5
|
+
"Bash(curl:*)",
|
|
6
|
+
"Bash(git:*)",
|
|
7
|
+
"WebFetch(domain:api.github.com)",
|
|
8
|
+
"WebFetch(domain:raw.githubusercontent.com)",
|
|
9
|
+
"WebFetch(domain:registry.npmjs.org)",
|
|
10
|
+
"Bash(sudo chown:*)",
|
|
11
|
+
"Bash(npm install:*)",
|
|
12
|
+
"Bash(npx vitest:*)",
|
|
13
|
+
"Bash(npm test:*)",
|
|
14
|
+
"Bash(npm run:*)",
|
|
15
|
+
"Bash(npm link:*)",
|
|
16
|
+
"Bash(cc-switch --help)",
|
|
17
|
+
"Bash(npm bin:*)",
|
|
18
|
+
"Bash(/usr/local/bin/cc-switch --help 2>&1)",
|
|
19
|
+
"WebFetch(domain:api.anthropic.com)",
|
|
20
|
+
"WebFetch(domain:mcp.vercel.com)",
|
|
21
|
+
"WebFetch(domain:http-intake.logs.us5.datadoghq.com)",
|
|
22
|
+
"WebFetch(domain:mcp-proxy.anthropic.com)",
|
|
23
|
+
"Bash(gh repo:*)"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"sandbox": {
|
|
27
|
+
"enabled": true,
|
|
28
|
+
"autoAllowBashIfSandboxed": true
|
|
29
|
+
}
|
|
30
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
# cc-swap
|
|
2
|
+
|
|
3
|
+
Switch between multiple Claude Code accounts instantly.
|
|
4
|
+
|
|
5
|
+
[English](#english) | [Tiếng Việt](#tiếng-việt) | [日本語](#日本語) | [한국어](#한국어) | [中文](#中文)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## English
|
|
10
|
+
|
|
11
|
+
### What is cc-swap?
|
|
12
|
+
|
|
13
|
+
`cc-swap` lets you run multiple Claude Code accounts on one machine. Each account has its own settings, plugins, and session history — while sharing your base `~/.claude` config.
|
|
14
|
+
|
|
15
|
+
### How it works
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
~/.claude/ ← Your base config (never modified)
|
|
19
|
+
~/.cc-swap/accounts/
|
|
20
|
+
├── work/ ← Symlinks to ~/.claude + custom overrides
|
|
21
|
+
└── personal/ ← Symlinks to ~/.claude + custom overrides
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
When you switch, `cc-swap` launches Claude Code with `CLAUDE_CONFIG_DIR` pointing to your account folder.
|
|
25
|
+
|
|
26
|
+
### Install
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install -g cc-swap
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Quick Start
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# 1. Create your first account
|
|
36
|
+
cc-swap add work
|
|
37
|
+
|
|
38
|
+
# 2. Create another
|
|
39
|
+
cc-swap add personal
|
|
40
|
+
|
|
41
|
+
# 3. Switch and launch Claude Code
|
|
42
|
+
cc-swap # Auto-switch to next account
|
|
43
|
+
cc-swap switch work # Switch to specific account
|
|
44
|
+
|
|
45
|
+
# 4. See all accounts
|
|
46
|
+
cc-swap list
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Commands
|
|
50
|
+
|
|
51
|
+
| Command | Description |
|
|
52
|
+
|---------|-------------|
|
|
53
|
+
| `cc-swap` | Switch to next account + launch `claude --continue` |
|
|
54
|
+
| `cc-swap add <name>` | Create a new account |
|
|
55
|
+
| `cc-swap switch <name>` | Switch to specific account + launch |
|
|
56
|
+
| `cc-swap list` | Show all accounts |
|
|
57
|
+
| `cc-swap remove <name>` | Delete an account |
|
|
58
|
+
|
|
59
|
+
### Custom overrides
|
|
60
|
+
|
|
61
|
+
By default, each account shares everything with `~/.claude`. To customize an account:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Example: custom settings for "work" account
|
|
65
|
+
cd ~/.cc-swap/claude-accounts/work
|
|
66
|
+
rm settings.json # Remove the symlink
|
|
67
|
+
cp ~/.claude/settings.json settings.json # Copy and customize
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Configuration
|
|
71
|
+
|
|
72
|
+
`~/.cc-swap/config.json` is auto-created on first use. Edit it to customize:
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"syncItems": [
|
|
77
|
+
"agents", "commands", "file-history", "hooks", "plugins",
|
|
78
|
+
"projects", "rules", "session-env", "sessions",
|
|
79
|
+
"settings.json", "skills", "tasks"
|
|
80
|
+
],
|
|
81
|
+
"autoContinue": true
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- **syncItems** — folders/files symlinked when creating an account. Add or remove items as needed.
|
|
86
|
+
- **autoContinue** — `true`: launch with `claude --continue` (resume session). `false`: launch fresh `claude`.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Tiếng Việt
|
|
91
|
+
|
|
92
|
+
### cc-swap là gì?
|
|
93
|
+
|
|
94
|
+
`cc-swap` cho phép bạn chạy nhiều tài khoản Claude Code trên cùng một máy. Mỗi tài khoản có settings, plugins và lịch sử session riêng — trong khi vẫn dùng chung config gốc từ `~/.claude`.
|
|
95
|
+
|
|
96
|
+
### Cách hoạt động
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
~/.claude/ ← Config gốc (không bao giờ bị sửa)
|
|
100
|
+
~/.cc-swap/accounts/
|
|
101
|
+
├── work/ ← Symlinks trỏ về ~/.claude + file riêng
|
|
102
|
+
└── personal/ ← Symlinks trỏ về ~/.claude + file riêng
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Khi switch, `cc-swap` khởi chạy Claude Code với `CLAUDE_CONFIG_DIR` trỏ đến thư mục account.
|
|
106
|
+
|
|
107
|
+
### Cài đặt
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npm install -g cc-swap
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Bắt đầu nhanh
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# 1. Tạo account đầu tiên
|
|
117
|
+
cc-swap add work
|
|
118
|
+
|
|
119
|
+
# 2. Tạo thêm account
|
|
120
|
+
cc-swap add personal
|
|
121
|
+
|
|
122
|
+
# 3. Switch và mở Claude Code
|
|
123
|
+
cc-swap # Tự động chuyển sang account tiếp theo
|
|
124
|
+
cc-swap switch work # Chuyển sang account cụ thể
|
|
125
|
+
|
|
126
|
+
# 4. Xem danh sách accounts
|
|
127
|
+
cc-swap list
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Các lệnh
|
|
131
|
+
|
|
132
|
+
| Lệnh | Mô tả |
|
|
133
|
+
|-------|--------|
|
|
134
|
+
| `cc-swap` | Chuyển sang account tiếp + mở `claude --continue` |
|
|
135
|
+
| `cc-swap add <tên>` | Tạo account mới |
|
|
136
|
+
| `cc-swap switch <tên>` | Chuyển sang account cụ thể + mở |
|
|
137
|
+
| `cc-swap list` | Hiển thị tất cả accounts |
|
|
138
|
+
| `cc-swap remove <tên>` | Xóa account |
|
|
139
|
+
|
|
140
|
+
### Tùy chỉnh riêng cho từng account
|
|
141
|
+
|
|
142
|
+
Mặc định, mỗi account dùng chung mọi thứ với `~/.claude`. Để tùy chỉnh:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Ví dụ: settings riêng cho account "work"
|
|
146
|
+
cd ~/.cc-swap/claude-accounts/work
|
|
147
|
+
rm settings.json # Xóa symlink
|
|
148
|
+
cp ~/.claude/settings.json settings.json # Copy và chỉnh sửa
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Cấu hình
|
|
152
|
+
|
|
153
|
+
`~/.cc-swap/config.json` được tự động tạo khi sử dụng lần đầu. Chỉnh sửa để tùy chỉnh:
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"syncItems": [
|
|
158
|
+
"agents", "commands", "file-history", "hooks", "plugins",
|
|
159
|
+
"projects", "rules", "session-env", "sessions",
|
|
160
|
+
"settings.json", "skills", "tasks"
|
|
161
|
+
],
|
|
162
|
+
"autoContinue": true
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
- **syncItems** — các folders/files được symlink khi tạo account. Thêm hoặc bớt tùy ý.
|
|
167
|
+
- **autoContinue** — `true`: chạy `claude --continue` (tiếp tục session). `false`: chạy `claude` mới.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 日本語
|
|
172
|
+
|
|
173
|
+
### cc-swapとは?
|
|
174
|
+
|
|
175
|
+
`cc-swap`を使えば、1台のマシンで複数のClaude Codeアカウントを切り替えられます。各アカウントは独自のsettings、plugins、セッション履歴を持ちながら、`~/.claude`の基本設定を共有します。
|
|
176
|
+
|
|
177
|
+
### 仕組み
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
~/.claude/ ← 基本設定(変更されません)
|
|
181
|
+
~/.cc-swap/accounts/
|
|
182
|
+
├── work/ ← ~/.claudeへのシンボリックリンク + カスタム設定
|
|
183
|
+
└── personal/ ← ~/.claudeへのシンボリックリンク + カスタム設定
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
切り替え時、`cc-swap`は`CLAUDE_CONFIG_DIR`をアカウントフォルダに設定してClaude Codeを起動します。
|
|
187
|
+
|
|
188
|
+
### インストール
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
npm install -g cc-swap
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### クイックスタート
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# 1. 最初のアカウントを作成
|
|
198
|
+
cc-swap add work
|
|
199
|
+
|
|
200
|
+
# 2. もう1つ作成
|
|
201
|
+
cc-swap add personal
|
|
202
|
+
|
|
203
|
+
# 3. 切り替えてClaude Codeを起動
|
|
204
|
+
cc-swap # 次のアカウントへ自動切替
|
|
205
|
+
cc-swap switch work # 特定のアカウントに切替
|
|
206
|
+
|
|
207
|
+
# 4. アカウント一覧を表示
|
|
208
|
+
cc-swap list
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### コマンド一覧
|
|
212
|
+
|
|
213
|
+
| コマンド | 説明 |
|
|
214
|
+
|---------|------|
|
|
215
|
+
| `cc-swap` | 次のアカウントへ切替 + `claude --continue`起動 |
|
|
216
|
+
| `cc-swap add <名前>` | 新しいアカウントを作成 |
|
|
217
|
+
| `cc-swap switch <名前>` | 特定のアカウントに切替 + 起動 |
|
|
218
|
+
| `cc-swap list` | 全アカウントを表示 |
|
|
219
|
+
| `cc-swap remove <名前>` | アカウントを削除 |
|
|
220
|
+
|
|
221
|
+
### アカウントごとのカスタマイズ
|
|
222
|
+
|
|
223
|
+
デフォルトでは各アカウントは`~/.claude`の設定を共有します。カスタマイズするには:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
# 例:「work」アカウント用のsettingsをカスタマイズ
|
|
227
|
+
cd ~/.cc-swap/claude-accounts/work
|
|
228
|
+
rm settings.json # シンボリックリンクを削除
|
|
229
|
+
cp ~/.claude/settings.json settings.json # コピーして編集
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### 設定
|
|
233
|
+
|
|
234
|
+
`~/.cc-swap/config.json`は初回使用時に自動作成されます。編集してカスタマイズ:
|
|
235
|
+
|
|
236
|
+
```json
|
|
237
|
+
{
|
|
238
|
+
"syncItems": [
|
|
239
|
+
"agents", "commands", "file-history", "hooks", "plugins",
|
|
240
|
+
"projects", "rules", "session-env", "sessions",
|
|
241
|
+
"settings.json", "skills", "tasks"
|
|
242
|
+
],
|
|
243
|
+
"autoContinue": true
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
- **syncItems** — アカウント作成時にシンボリックリンクされるフォルダ/ファイル。自由に追加・削除可能。
|
|
248
|
+
- **autoContinue** — `true`: `claude --continue`で起動(セッション再開)。`false`: 新規`claude`で起動。
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 한국어
|
|
253
|
+
|
|
254
|
+
### cc-swap란?
|
|
255
|
+
|
|
256
|
+
`cc-swap`를 사용하면 한 컴퓨터에서 여러 Claude Code 계정을 전환할 수 있습니다. 각 계정은 고유한 settings, plugins, 세션 기록을 가지면서 `~/.claude`의 기본 설정을 공유합니다.
|
|
257
|
+
|
|
258
|
+
### 작동 방식
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
~/.claude/ ← 기본 설정 (수정되지 않음)
|
|
262
|
+
~/.cc-swap/accounts/
|
|
263
|
+
├── work/ ← ~/.claude로의 심볼릭 링크 + 커스텀 설정
|
|
264
|
+
└── personal/ ← ~/.claude로의 심볼릭 링크 + 커스텀 설정
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
전환 시 `cc-swap`는 `CLAUDE_CONFIG_DIR`을 계정 폴더로 설정하고 Claude Code를 실행합니다.
|
|
268
|
+
|
|
269
|
+
### 설치
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
npm install -g cc-swap
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### 빠른 시작
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
# 1. 첫 번째 계정 생성
|
|
279
|
+
cc-swap add work
|
|
280
|
+
|
|
281
|
+
# 2. 추가 계정 생성
|
|
282
|
+
cc-swap add personal
|
|
283
|
+
|
|
284
|
+
# 3. 전환 후 Claude Code 실행
|
|
285
|
+
cc-swap # 다음 계정으로 자동 전환
|
|
286
|
+
cc-swap switch work # 특정 계정으로 전환
|
|
287
|
+
|
|
288
|
+
# 4. 계정 목록 보기
|
|
289
|
+
cc-swap list
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### 명령어
|
|
293
|
+
|
|
294
|
+
| 명령어 | 설명 |
|
|
295
|
+
|--------|------|
|
|
296
|
+
| `cc-swap` | 다음 계정으로 전환 + `claude --continue` 실행 |
|
|
297
|
+
| `cc-swap add <이름>` | 새 계정 생성 |
|
|
298
|
+
| `cc-swap switch <이름>` | 특정 계정으로 전환 + 실행 |
|
|
299
|
+
| `cc-swap list` | 전체 계정 표시 |
|
|
300
|
+
| `cc-swap remove <이름>` | 계정 삭제 |
|
|
301
|
+
|
|
302
|
+
### 계정별 커스터마이징
|
|
303
|
+
|
|
304
|
+
기본적으로 각 계정은 `~/.claude`의 설정을 공유합니다. 커스터마이징하려면:
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
# 예: "work" 계정의 settings 커스터마이징
|
|
308
|
+
cd ~/.cc-swap/claude-accounts/work
|
|
309
|
+
rm settings.json # 심볼릭 링크 삭제
|
|
310
|
+
cp ~/.claude/settings.json settings.json # 복사 후 편집
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### 설정
|
|
314
|
+
|
|
315
|
+
`~/.cc-swap/config.json`은 처음 사용할 때 자동으로 생성됩니다. 편집하여 커스터마이징:
|
|
316
|
+
|
|
317
|
+
```json
|
|
318
|
+
{
|
|
319
|
+
"syncItems": [
|
|
320
|
+
"agents", "commands", "file-history", "hooks", "plugins",
|
|
321
|
+
"projects", "rules", "session-env", "sessions",
|
|
322
|
+
"settings.json", "skills", "tasks"
|
|
323
|
+
],
|
|
324
|
+
"autoContinue": true
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
- **syncItems** — 계정 생성 시 심볼릭 링크되는 폴더/파일. 자유롭게 추가・삭제 가능.
|
|
329
|
+
- **autoContinue** — `true`: `claude --continue`로 실행 (세션 재개). `false`: 새 `claude`로 실행.
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## 中文
|
|
334
|
+
|
|
335
|
+
### 什么是 cc-swap?
|
|
336
|
+
|
|
337
|
+
`cc-swap` 让你在一台电脑上运行多个 Claude Code 账户。每个账户拥有独立的 settings、plugins 和会话记录,同时共享 `~/.claude` 的基础配置。
|
|
338
|
+
|
|
339
|
+
### 工作原理
|
|
340
|
+
|
|
341
|
+
```
|
|
342
|
+
~/.claude/ ← 基础配置(永不修改)
|
|
343
|
+
~/.cc-swap/accounts/
|
|
344
|
+
├── work/ ← 指向 ~/.claude 的符号链接 + 自定义配置
|
|
345
|
+
└── personal/ ← 指向 ~/.claude 的符号链接 + 自定义配置
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
切换时,`cc-swap` 将 `CLAUDE_CONFIG_DIR` 设置为账户目录并启动 Claude Code。
|
|
349
|
+
|
|
350
|
+
### 安装
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
npm install -g cc-swap
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### 快速开始
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
# 1. 创建第一个账户
|
|
360
|
+
cc-swap add work
|
|
361
|
+
|
|
362
|
+
# 2. 创建另一个账户
|
|
363
|
+
cc-swap add personal
|
|
364
|
+
|
|
365
|
+
# 3. 切换并启动 Claude Code
|
|
366
|
+
cc-swap # 自动切换到下一个账户
|
|
367
|
+
cc-swap switch work # 切换到指定账户
|
|
368
|
+
|
|
369
|
+
# 4. 查看所有账户
|
|
370
|
+
cc-swap list
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### 命令列表
|
|
374
|
+
|
|
375
|
+
| 命令 | 说明 |
|
|
376
|
+
|------|------|
|
|
377
|
+
| `cc-swap` | 切换到下一个账户 + 启动 `claude --continue` |
|
|
378
|
+
| `cc-swap add <名称>` | 创建新账户 |
|
|
379
|
+
| `cc-swap switch <名称>` | 切换到指定账户 + 启动 |
|
|
380
|
+
| `cc-swap list` | 显示所有账户 |
|
|
381
|
+
| `cc-swap remove <名称>` | 删除账户 |
|
|
382
|
+
|
|
383
|
+
### 账户自定义
|
|
384
|
+
|
|
385
|
+
默认情况下,每个账户与 `~/.claude` 共享所有配置。如需自定义:
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
# 例:为 "work" 账户自定义 settings
|
|
389
|
+
cd ~/.cc-swap/claude-accounts/work
|
|
390
|
+
rm settings.json # 删除符号链接
|
|
391
|
+
cp ~/.claude/settings.json settings.json # 复制并编辑
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### 配置
|
|
395
|
+
|
|
396
|
+
`~/.cc-swap/config.json` 在首次使用时自动创建。编辑以自定义:
|
|
397
|
+
|
|
398
|
+
```json
|
|
399
|
+
{
|
|
400
|
+
"syncItems": [
|
|
401
|
+
"agents", "commands", "file-history", "hooks", "plugins",
|
|
402
|
+
"projects", "rules", "session-env", "sessions",
|
|
403
|
+
"settings.json", "skills", "tasks"
|
|
404
|
+
],
|
|
405
|
+
"autoContinue": true
|
|
406
|
+
}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
- **syncItems** — 创建账户时进行符号链接的文件夹/文件。可自由添加或删除。
|
|
410
|
+
- **autoContinue** — `true`:以 `claude --continue` 启动(恢复会话)。`false`:启动新的 `claude`。
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
## License
|
|
415
|
+
|
|
416
|
+
MIT
|