Mod Claude Code: apa itu, dan mod yang kami pasang di setiap agen

Mod adalah plugin yang JavaScript-nya berjalan di dalam Claude Code. Apa yang bisa dilakukannya, tiga filenya, cara memuat dan mengujinya, dan mod yang kami pasang di setiap agen.

Pada 1 Oktober 2026, Claude Code 2.1.287 dirilis dengan satu baris changelog: "Added Claude Mods". Empat hari kemudian, AgentsRoom mulai memuat salah satu mod kami ke agen Claude yang dijalankannya.

Artikel ini menjelaskan apa itu mod, apa yang bisa dilakukannya yang tidak bisa dilakukan titik ekstensi lama, cara menulis, memuat, dan mengujinya, serta apa yang kami pelajari saat memasang mod di setiap agen Claude yang dijalankan AgentsRoom. Fakta tentang Claude Code diambil dari dokumentasi dan changelog-nya, dibaca pada 9 November 2026, dengan Claude Code 2.1.318 terpasang.

Jawaban singkatnya. Mod adalah plugin Claude Code dengan hooks module: file JavaScript atau TypeScript yang fungsinya dipanggil Claude Code dari dalam prosesnya sendiri ketika sebuah event terjadi. Sebuah fungsi bisa meloloskan event itu, mengubahnya, atau menjawabnya sebagai pengganti Claude Code. Begitulah cara mod menggambar panel, menambahkan perintah, atau menghentikan perintah shell sebelum dijalankan.

Apa itu mod

Claude Code sudah punya plugin: folder dengan manifest di .claude-plugin/plugin.json yang mengemas skill, subagent, hook settings, dan server MCP agar bisa dipasang sebagai satu kesatuan. Mod adalah satu hal lagi yang bisa dimuat sebuah plugin. Ketika hooks/hooks.json milik plugin menyebut sebuah file kode di bawah kunci modules, Claude Code memuat file itu dan memanggil fungsi register yang diekspornya. Plugin itu kemudian disebut mod.

Di dalam register, setiap pemanggilan on(event, hook) mengaitkan sebuah fungsi ke sebuah event: tool.call sebelum alat dijalankan, prompt.submit saat Anda mengirim prompt, session.start, command.run untuk perintah slash, ui.render saat Claude Code menggambar bagian layarnya, dan masih banyak lagi. Setiap hook menerima tiga hal:

  • $, API mod: semua yang bisa dilakukan mod di luar kodenya sendiri, seperti $.ui, $.command, $.fs, $.process, atau $.http.
  • e, event-nya, sebagai data biasa: untuk pemanggilan alat, nama alat dan argumennya.
  • next, yang meneruskan event ke mod lain lalu ke perilaku Claude Code sendiri, dan mengembalikan hasilnya.

Apa yang dilakukan hook dengan next menentukan apa yang terjadi. Kembalikan next(e) dan Anda hanya mengamati. Panggil next dengan salinan e yang sudah diubah dan Anda menulis ulang event itu. Kembalikan hasil Anda sendiri tanpa memanggil next dan Anda menjawabnya: alat tidak pernah berjalan, atau Claude Code tidak pernah menggambar versinya sendiri.

Dokumentasinya juga menyebut fungsi-fungsi ini hook. Ini bukan hook yang Anda tulis di settings.json, yang kini disebut Claude Code sebagai settings hooks.

Mod, hook settings, skill, atau server MCP

Keempatnya saling tumpang tindih, dan mod adalah yang paling berat. Pilih yang paling ringan yang bisa menyelesaikan pekerjaannya.

Anda inginGunakan
Memberi Claude instruksi yang terus Anda tempelkan ke chatSebuah skill (SKILL.md)
Memberi Claude alat yang menjangkau sistem luarSebuah server MCP
Memblokir, mengizinkan, atau mencatat sebuah event dengan skrip yang sudah Anda punyaSebuah hook settings
Menggambar panel atau pita di atas prompt, menambahkan perintah yang berjalan tanpa giliran Claude, menulis ulang atau menjawab pemanggilan alat, menyimpan state antar-eventSebuah mod

Satu plugin bisa memuat keempatnya, jadi sebuah mod bisa disertakan bersama skill dan server MCP yang bekerja dengannya.

Tiga file sebuah mod

my-mod/
├── .claude-plugin/
│   └── plugin.json
└── hooks/
    ├── hooks.json
    └── register.ts

plugin.json adalah manifest plugin yang biasa: nama, versi, deskripsi. hooks.json menunjuk ke kode, { "modules": ["./register.ts"] }, satu path yang relatif terhadap file itu. register.ts adalah hooks module-nya. Claude Code memuat .js dan .ts secara langsung, tanpa bundler dan tanpa langkah build, dan satu-satunya import polos yang diizinkan adalah claude-code, untuk tipe dan beberapa helper.

Mod yang kami pasang: siapa yang mengubah file ini?

AgentsRoom menjalankan beberapa agen coding di repositori yang sama dan menampilkan, di tab Perubahan, agen mana yang mengubah file mana, agar Anda bisa meninjau dan meng-commit pekerjaan setiap agen secara terpisah. File yang ditulis dengan alat Edit dan Write milik Claude itu mudah: Claude Code melaporkannya lewat hook settings. File yang ditulis oleh perintah shell tidak. Sebuah sed -i, heredoc, codemod, atau rm tidak pernah lewat alat file.

Sebelum ada mod, kami menebak. AgentsRoom membaca transkrip sesi agen untuk mengetahui kapan setiap perintah Bash dimulai dan selesai, lalu mencocokkan waktu modifikasi file dengan rentang waktu tersebut. Cara ini berhasil hampir sepanjang waktu, dan gagal dengan tiga cara yang bisa kami sebutkan:

  • file yang dihapus tidak punya waktu modifikasi, jadi penghapusan tidak pernah dikaitkan ke agen mana pun;
  • perintah baca-saja seperti grep membuka rentang waktu ketika agen bisa saja menulis apa pun;
  • semuanya bergantung pada format transkrip, yang bebas diubah oleh Claude Code.

Mod menghilangkan tebakan itu. Mod agentsroom-changes kami mengaitkan hook ke tool.call untuk kedua alat shell. Tepat sebelum perintah berjalan, mod mengambil snapshot repositori (git status ditambah ukuran dan waktu modifikasi setiap path yang berubah). Tepat setelahnya, mod mengambil snapshot kedua. Path yang berbeda adalah apa yang diubah perintah itu, termasuk penghapusan, dan mod mengirimkannya ke aplikasi desktop AgentsRoom lewat endpoint HTTP lokal. Pemanggilan yang ditandai baca-saja oleh Claude Code sendiri tidak mengklaim perubahan apa pun.

Inilah hook-nya, dalam versi singkat. File lengkapnya 177 baris, sebagian besar untuk snapshot dan batas-batasnya.

import type { Register } from 'claude-code';

const SHELL_TOOLS = new Set(['Bash', 'PowerShell']);

export const register: Register = (on) => {
  on('tool.call', async ($, e, next) => {
    if (!SHELL_TOOLS.has(e.tool)) return next(e);
    const ready = await prepare($).catch(() => null); // agent id, repo root, snapshot
    if (!ready) return next(e);                        // outside AgentsRoom: do nothing
    const callId = e.tool_use_id;
    post($, ready.agentId, { kind: 'start', callId });
    const ran = await next(e);                         // the command runs here
    const wroteNothing = ran.deny !== undefined || ran.isReadOnly === true;
    await reportEnd($, { ...ready, callId }, wroteNothing)
      .catch(() => post($, ready.agentId, { kind: 'end', callId, paths: [] }));
    return ran;                                        // Claude sees the normal result
  });
};

Aplikasi desktop menyalin mod ke foldernya sendiri dan memulai setiap agen Claude dengan claude --plugin-dir <that folder>, hanya jika Claude Code yang terpasang adalah versi 2.1.287 atau lebih baru. Kami merilisnya di AgentsRoom 1.201.0 pada 5 Oktober 2026.

Yang kami pelajari saat merilisnya

Mod tidak boleh membuat pengguna kehilangan satu pun pemanggilan alat. Hook kami berada di depan setiap perintah shell yang dijalankan Claude. Jika hook itu melempar error, atau menunggu jaringan, pekerjaan Claude berhenti. Setiap langkah dijaga, setiap kiriman ke aplikasi desktop dilepas tanpa menunggu jawaban, dan satu-satunya penantian yang kami terima adalah dua snapshot git status, masing-masing dibatasi 15 detik. Kiriman yang hilang hanya membuat satu atribusi hilang, tidak pernah perintahnya.

Jangan lakukan apa pun saat tidak dibutuhkan. Mod membaca variabel lingkungan yang disetel AgentsRoom untuk agen-agennya. Saat variabel itu tidak ada, misalnya karena seseorang menyalin folder tersebut ke konfigurasinya sendiri, setiap hook langsung lanjut ke next(e).

Folder yang dimuat dengan --plugin-dir dipantau. Claude Code memuat ulang mod saat ada file di folder itu yang berubah, dan pemuatan ulang menjalankan register sekali lagi. Hal itu menentukan cara kami memasangnya: aplikasi desktop hanya menulis file mod jika isinya berubah, karena penulisan ulang membabi buta setiap kali agen dijalankan akan memuat ulang mod di setiap konsol Claude yang sudah terbuka.

Bersiaplah API-nya berubah. Event dan metode bisa berubah antarrilis, dan dokumentasinya sendiri mengatakan demikian. Saat mod dimuat dari --plugin-dir, Claude Code menulis deklarasi tipe dari versi yang sedang berjalan ke .claude-plugin/types/; kami memeriksa tipe terhadap deklarasi itu, bukan terhadap halaman web. Dan jika sebuah build tidak lagi memuat mod kami, tidak ada yang rusak: mod tidak pernah melaporkan dirinya siap, dan AgentsRoom kembali ke metode lama lewat transkrip.

Tulis mod Anda sendiri

Ada dua cara untuk memulai.

Minta Claude. Di sesi Claude Code interaktif, jelaskan mod yang Anda inginkan ("tampilkan branch git saat ini di atas prompt"). Claude memakai skill bawaan, plugin-authoring, menulis mod ke folder khusus untuk sesi itu, dan Claude Code bertanya sekali kepada Anda apakah mod yang ditulis Claude boleh diaktifkan. Jawab ya, dan mod dimuat saat giliran berakhir, lalu dimuat ulang setelah setiap giliran yang mengubahnya.

Tulis sendiri ketiga file itu, lalu:

claude --plugin-dir ./my-mod       # load it for one session, hot reload on save
claude plugin validate ./my-mod    # what Claude Code reads from it, without running it
claude plugin test                 # run the mod's *.test.ts files, no session needed

claude plugin validate mencetak baris hooks: berisi event yang ditangani module Anda dan baris calls: berisi setiap metode API mod yang dipanggilnya. Jika event yang ingin Anda tangani tidak ada, Claude Code juga tidak akan memanggil hook itu. Analisis statis punya aturan: tulis setiap pemanggilan secara lengkap ($.ui.toast(...), jangan pernah const ui = $.ui), berikan nama event sebagai string literal, dan import hanya file Anda sendiri lewat path relatif.

Untuk membagikan mod, perlakukan mod sebagai plugin, karena memang itulah dia: kirim foldernya, atau daftarkan di sebuah marketplace (repositori dengan .claude-plugin/marketplace.json) agar orang bisa memasangnya dengan /plugin install <name>@<marketplace>.

Mod yang bisa Anda baca hari ini

  • Bawaan Claude Code: /plugin, tab Installed, bagian Built-in. Di antaranya ada panel /diff dan pemuat yang membaca AGENTS.md sebagai instruksi proyek, yang kode sumbernya dipublikasikan Anthropic di folder mods repositori anthropics/claude-code, lengkap dengan tesnya. Juga bawaan, dan nonaktif sampai Anda menyalakannya: You should know, agen sampingan yang menandai apa yang mungkin terlewat oleh Anda atau Claude.
  • Contoh dari Anthropic, di repositori claude-code-playground: prakiraan jendela konteks yang digambar di atas prompt, penjaga yang menahan perintah shell berisiko dan menunjukkan apa yang akan diubahnya, dan perintah /replay yang menelusuri langkah demi langkah suntingan giliran terakhir.
  • Milik kami, yang dijelaskan di atas: mod tanpa antarmuka sama sekali, hanya satu hook tool.call, bentuk yang bagus untuk ditiru jika yang Anda butuhkan adalah data, bukan panel.

Sebelum memasang mod buatan orang lain

Mod tidak berjalan di dalam sandbox. Mod berjalan dengan izin Anda: mod bisa membaca dan menulis file Anda, membaca variabel lingkungan dan pengaturan Anda (termasuk kunci API), menjalankan program, membuat permintaan jaringan, melihat setiap prompt dan pemanggilan alat, serta menyetujui pemanggilan alat sebelum Anda ditanya. Jika Anda mengaktifkan sandbox Claude Code, sandbox itu mencakup perintah Bash yang dijalankan Claude, bukan proses yang dimulai oleh mod.

Jadi baca dulu sebelum memasang. Clone mod-nya dan jalankan claude plugin validate pada foldernya: baris hooks: dan calls: memberi tahu Anda apa yang didengarkannya dan apa yang dijangkaunya, tanpa menjalankan apa pun. Mod yang hanya menggambar pita di atas prompt tidak punya alasan untuk memanggil $.http atau $.process. Untuk menghentikan semua mod yang Anda pasang, mulai dengan --safe-mode untuk satu sesi, atau setel "disableAllHooks": true di ~/.claude/settings.json.

Di mana mod berjalan

Tempat Anda menjalankan Claude CodeHook berjalanGambar dari mod tampil
claude di terminalYaYa
Tab Code di aplikasi Claude Desktop (bukan di sesi WSL)Ya, sejak 2.1.286Ya
Ekstensi VS CodeYaSejak ekstensi 2.1.299
claude -p dan Agent SDKYaTidak
Sesi cloudYa, jika plugin sampai ke sesi tersebutTidak

Mod yang menggambar sebaiknya memeriksa di mana ia berjalan dan beralih ke teks di tempat yang tidak menampilkan gambar apa pun.

Di AgentsRoom

Anda tidak perlu memasang apa pun: sejak Claude Code 2.1.287, setiap agen Claude dimulai dengan mod ini, dan tab Perubahan menampilkan file yang dibuat, diubah, atau dihapus oleh setiap perintah shell-nya, di samping agen yang melakukannya. Pada Claude Code yang lebih lama, AgentsRoom tetap mencocokkan penulisan shell dari transkrip, seperti sebelumnya.

Ide yang sama berjalan di CLI lain jika memungkinkan: oh-my-pi mendapat ekstensi dengan kontrak yang sama, dan CLI lainnya tetap mencocokkan penulisan shell seperti sebelumnya. Jika Anda ingin melangkah lebih jauh dengan apa yang diekspos Claude Code di setiap langkah, panduan hook Claude Code kami membahas hook settings yang berdampingan dengan mod.

Pertanyaan yang sering diajukan

Apa itu mod di Claude Code?

Mod adalah plugin Claude Code yang berisi hooks module: file JavaScript atau TypeScript yang fungsinya dipanggil Claude Code dari dalam prosesnya sendiri ketika sesuatu terjadi, seperti pemanggilan alat, prompt yang dikirim, atau bagian layar yang sedang digambar. Setiap fungsi bisa meloloskan event tersebut, mengubahnya, atau menanganinya sendiri. Itulah yang memungkinkan mod menggambar panel, menambahkan perintah, atau menahan perintah shell yang berisiko.

Versi Claude Code berapa yang saya perlukan untuk mod?

Claude Code 2.1.287 atau lebih baru di terminal, dirilis pada 1 Oktober 2026, dengan changelog yang berbunyi "Added Claude Mods". Tab Code di aplikasi Claude Desktop mendukungnya sejak 2.1.286. Di ekstensi VS Code, hook-nya berjalan, dan apa yang digambar mod memerlukan ekstensi 2.1.299 atau lebih baru. Jalankan claude --version untuk memeriksanya.

Apa bedanya mod dengan hook Claude Code?

Hook di settings.json menjalankan perintah shell, permintaan HTTP, atau prompt ketika sebuah event terjadi, di luar Claude Code. Hook milik mod adalah fungsi yang berjalan di dalam Claude Code. Hook ini bisa melakukan apa yang tidak bisa dilakukan hook settings: menggambar di antarmuka, menambahkan perintah slash yang berjalan tanpa giliran Claude, menulis ulang pemanggilan alat atau menjawabnya tanpa menjalankan alat itu, dan berbagi state antar-hook.

Apakah mod Claude Code aman untuk dipasang?

Mod tidak berjalan di dalam sandbox. Mod berjalan dengan izin Anda, bisa membaca file dan variabel lingkungan Anda, menjalankan program, membuat permintaan jaringan, dan menyetujui pemanggilan alat. Pasang mod hanya dari pembuat yang Anda percayai, dan jalankan dulu claude plugin validate pada foldernya: perintah ini mencantumkan event yang dikaitkan mod dan pemanggilan yang dilakukannya, tanpa menjalankannya.

Di mana saya bisa menemukan contoh mod Claude Code?

Anthropic memublikasikan kode sumber beberapa mod bawaan, seperti panel /diff dan pemuat AGENTS.md, di folder mods repositori anthropics/claude-code, serta mod contoh di repositori anthropics/claude-code-playground. Mod AgentsRoom yang dijelaskan dalam artikel ini adalah jenis contoh keempat: mod tanpa antarmuka, hanya dengan satu hook tool.call.

Bisakah saya mematikan mod?

Bisa. Nonaktifkan satu mod dari tab Installed di /plugin, mulai satu sesi saja dengan --safe-mode, atau setel disableAllHooks ke true di ~/.claude/settings.json untuk menghentikan semua mod yang Anda pasang, bersama hook settings Anda. --safe-mode dan disableAllHooks tetap membiarkan mod bawaan berjalan: mod bawaan dimatikan satu per satu di /plugin.

Insinyur DevOpsPenulisPengembang FrontendTenaga PenjualanPengembang BackendCoach & PelatihArsitek Perangkat LunakPenasihat HukumInsinyur QAKeuangan & AdministrasiPengembang Full-StackDesainer KreatifPengembang MobilePenelitiInsinyur KeamananSDM & Rekrutmen
Manajer ProyekPenerjemahAhli GitAnalis DataSpesialis SEOAkuntanSpesialis LokalisasiKomunikasi & HumasPemikir KreatifOperasional & LogistikSpesialis PemasaranLayanan PelangganAsisten proyekStaf PengadaanManajer KomunitasAsisten Pribadi

Unduh AgentsRoom

Jalankan semua agen AI Anda, di semua proyek Anda, dari satu jendela.

Unduh AgentsRoomGratis

Aplikasi pendamping: pantau agen Anda saat bepergian

Gunakan Claude, Codex, Antigravity CLI, atau penyedia AI lainnya.

Dapatkan ekstensi
Chrome Web Store

Kirim bug dan permintaan langsung ke backlog publik Anda.

Agen yang dibaca seperti percakapan

Setiap agen punya peran, wajah, dan utas yang Anda baca seperti aplikasi pesan.

Tampilan percakapan

Tampilan percakapan AgentsRoom: pekerjaan agen AI coding ditampilkan sebagai utas obrolan
Beberapa proyek
Multi-penyedia
Beberapa agen
Status langsung
File diff & commit
Pendamping mobile
Pratinjau langsung
Tim agen
Otomatisasi browser
Dev berbasis backlog
Pustaka prompt
Pustaka skill
Lihat semua fitur

Lanjutkan membaca