Sinkronisasi konfigurasi Claude Code (CLAUDE.md, skills, plugin, MCP) di beberapa komputer dengan cclayer, identitas git terpisah per tim
Kalau sudah lama pakai Claude Code, isi ~/.claude lama-lama menumpuk: CLAUDE.md global, macam-macam rules, skills, hooks, izin dan plugin di settings.json, plus segerombol MCP server. Saya biasa memakai Claude Code di beberapa komputer, dan tiap komputer harus dikonfigurasi ulang. Kalau saya mengubah sedikit aturan di satu komputer, komputer lain juga harus diubah manual, dan lama-lama konfigurasi di tiap komputer jadi tidak sama lagi.
Yang lebih repot, proyek saya datang dari tim yang berbeda-beda. Tiap tim punya identitas commit git (nama dan email) sendiri, dan sebagian tim punya rules dan hook sendiri. Semua itu seharusnya hanya berlaku di proyek tim tersebut, tidak boleh tercampur ke proyek lain, apalagi sampai email kantor ikut ter-commit ke repositori open source pribadi saya.
Memasukkan ~/.claude langsung ke repositori git juga tidak bisa: di dalamnya ada status login, riwayat sesi, dan pengaturan izin lokal, sedangkan barang milik tim tidak boleh masuk ke repositori publik. Karena itu saya menulis cclayer khusus untuk masalah ini.
Apa itu cclayer
cclayer memecah konfigurasi Claude Code menjadi dua jenis “lapisan” (layer):
- Lapisan dasar (base): hal-hal yang sama di semua komputer, yaitu
CLAUDE.md,rules/,skills/,output-styles/,agents/, skrip hook, key bersama disettings.json, daftar plugin dan marketplace, serta definisi MCP. Tidak ada informasi identitas sama sekali di dalamnya, jadi aman ditaruh di repositori publik. - Lapisan overlay: satu per tim, berisi identitas git tim tersebut, hook, aturan alamat repositori (misalnya
github.com/acme-inc/*), serta.claude/settings.local.jsondanCLAUDE.local.mdyang akan ditulis ke proyek-proyek itu. Overlay hanya berlaku di proyek yang cocok dan tidak menulis apa pun ke~/.claude.
Tiap komputer hanya menarik lapisan dasar ditambah overlay yang dibutuhkannya. Satu perintah cclayer apply untuk memasang semuanya, satu perintah cclayer push untuk mengirim balik perubahan dari komputer ini.
Lapisan bisa berupa repositori git, bisa juga langsung berupa folder di dalam folder sinkronisasi cloud storage, jadi tetap bisa dipakai tanpa menyentuh git.
Instalasi
Di macOS pakai Homebrew:
brew install --cask zhaojiannet/tap/cclayerUntuk upgrade nanti:
brew upgrade --cask cclayerUntuk Linux dan Windows, unduh binary dari halaman Releases. git harus sudah terpasang; langkah plugin dan MCP butuh Claude Code 2.1.288 ke atas.
Cara paling sederhana: satu orang, beberapa komputer
Kalau tidak ada tim yang perlu dipisahkan, satu lapisan dasar sudah cukup.
Komputer pertama
cclayer setupsetup adalah layar konfigurasi layar penuh. Kolom kiri berisi lapisan-lapisan dan pengaturan lokal, kolom kanan berisi penjelasan item yang dipilih dan field yang bisa diubah. Tidak ada file yang ditulis sebelum Anda menekan simpan. Teks antarmuka tersedia dalam bahasa Mandarin Sederhana, Inggris, dan Jepang, dan secara default mengikuti bahasa sistem.

Cukup isi dua hal:
- Lapisan dasar: isi sebuah direktori (misalnya
~/Dropbox/cclayer/basedi cloud storage) atau alamat repositori git privat. Kalau direktorinya belum ada,layer.tomlawal akan dibuat otomatis saat menyimpan. - Direktori proyek: direktori tempat kode, misalnya
~/Projects.
Pilih “Save and apply”, lalu masukkan konfigurasi yang sudah ada di komputer ini ke dalam lapisan:
cclayer capture --add CLAUDE.md --add rules/ --add skills/Path-nya relatif terhadap ~/.claude. Sebelum dimasukkan, setiap file diperiksa dulu. Hal seperti secret key, email, dan path absolut yang menunjuk ke home directory lokal akan dicegat, lengkap dengan nomor barisnya. Kalau hanya Anda sendiri yang memakai dan lapisan disimpan di tempat privat, tambahkan satu baris private = true di bawah [layer] pada layer.toml, maka email tidak dicegat lagi.
Komputer lain
Pasang cclayer, jalankan juga cclayer setup, isi lapisan dasar dengan alamat yang sama, simpan dan terapkan, dan konfigurasi dari komputer pertama langsung masuk. File yang sudah ada di komputer ini tetapi isinya berbeda akan ditampilkan dan Anda ditanya apakah mau ditimpa. Sebelum ditimpa, file lama dicadangkan ke ~/.local/state/cclayer/backups/.
Sinkronisasi sehari-hari
Kalau lapisannya repositori git:
cclayer push # Unggah: kumpulkan perubahan lokal, tampilkan isi yang akan di-commit, commit dan push setelah dikonfirmasicclayer apply --pull # Unduh: tarik lapisan terbaru, lalu pasang ke komputer iniKalau lapisannya folder cloud storage, sinkronisasinya diurus cloud storage. Setelah mengubah sesuatu, jalankan cclayer capture, lalu di komputer lain jalankan cclayer apply.
Anda juga bisa menaruh SessionStart hook berikut di claude/settings.json milik lapisan dasar, lalu menyalakan “Auto pull” di setup. Setelah itu setiap kali membuka sesi Claude Code, lapisan akan ditarik dan diterapkan otomatis:
{ "hooks": { "SessionStart": [{ "matcher": "startup", "hooks": [{ "type": "command", "command": "command -v cclayer >/dev/null && cclayer apply --hook || true" }] }] }}Mengatur identitas git yang berbeda untuk tiap tim
Inilah alasan utama saya menulis cclayer. Pertama buat repositori privat untuk tim, lalu taruh layer.toml di root-nya yang menuliskan identitas dan repositori yang mau dicocokkan:
[layer]name = "acme"kind = "overlay"
[identity]name = "Full Name"email = "me@acme.example"
[[match]]remote = "github.com/acme-inc/*"Lalu tambahkan overlay ini di komputer yang membutuhkannya. cclayer akan menanyakan cara mengatur kredensial akses repositori, lalu meng-clone dan memeriksanya:
cclayer layer add acme git@github.com:you/cclayer-acme.gitSetelah apply, cclayer menambahkan blok include di akhir ~/.gitconfig dan memakai includeIf "hasconfig:remote.*.url:..." milik git agar identitas ini hanya berlaku di repositori yang alamat remote-nya cocok dengan github.com/acme-inc/*. Isi asli ~/.gitconfig sama sekali tidak diubah. Kalau identitas default (default_identity) dikosongkan, git akan menolak commit di repositori yang tidak cocok dengan overlay mana pun, jadi tidak akan ada lagi commit dengan email yang salah.
Aturan pencocokan wajib menuliskan host dan organisasi secara jelas, tidak boleh diganti wildcard, supaya overlay satu tim tidak mengklaim repositori tim lain.
Kalau ingin login, sesi, dan riwayat prompt Claude Code tiap tim juga benar-benar terpisah, nyalakan mode profiles. Tiap overlay akan punya direktori konfigurasi sendiri di ~/.claude-profiles/<nama-lapisan>, cclayer env mengeluarkan CLAUDE_CONFIG_DIR yang sesuai, dan dengan direnv setiap proyek otomatis memakai konfigurasinya masing-masing.
Soal keamanan
Hook dan skills yang disinkronkan akan dijalankan oleh Claude Code di komputer lokal, jadi cclayer cukup hati-hati dalam hal ini:
- Pengaturan yang menjalankan program atau mengaktifkan plugin seperti
hooks,statusLine,enabledPlugins, serta file di bawahhooks/danskills/dan file yang punya izin eksekusi, semuanya ditampilkan dulu untuk Anda konfirmasi sebelum ditulis. Isi yang sama hanya ditanyakan sekali. - Potongan konfigurasi git hanya meloloskan pengaturan umum seperti
pull.rebasedanpush.default. Key yang bisa menjalankan program seperti alias,core.hooksPath, dancredential.helperhanya diizinkan kalau lapisan itu secara eksplisit dipercaya di daftar perangkat. - Status login Claude Code,
history.jsonl, danprojects/tidak dibaca ke dalam lapisan;permissions.allowdanenvtetap di komputer lokal. - Symbolic link tidak diizinkan di dalam lapisan, dan saat menulis file pun symbolic link tidak diikuti.
Perintah yang sering dipakai
| Perintah | Fungsi |
|---|---|
cclayer setup | Layar konfigurasi layar penuh, dipakai untuk konfigurasi pertama dan perubahan berikutnya |
cclayer apply | Memasang semua lapisan ke komputer ini, --pull menarik dulu |
cclayer capture | Menulis perubahan lokal kembali ke lapisan, tanpa commit |
cclayer push | Setelah capture, commit dan push repositori tiap lapisan |
cclayer check | Memeriksa apakah ada isi yang tidak seharusnya ada di lapisan |
cclayer status | Status git tiap lapisan dan proyek yang cocok |
cclayer keys setup <lapisan> | Mengatur kredensial akses repositori lapisan di komputer ini (deploy key atau HTTPS token) |
cclayer layer add <nama> <alamat> | Menambahkan satu overlay ke komputer ini |
cclayer leave <lapisan> | Menghapus satu lapisan dari komputer ini dan membersihkan apa yang pernah ditulisnya |
cclayer doctor | Memeriksa masalah umum Claude Code dan git |
Untuk penggunaan yang lebih detail, termasuk cara membuat repositori git, kredensial repositori privat, dan pertanyaan umum, lihat tutorial cclayer (dalam bahasa Inggris).
Alamat proyek di GitHub: https://github.com/zhaojiannet/cclayer