Skill telah menjadi metode yang tak terpisahkan dalam alur kerja harian saya. Untuk apa pun yang diulang tiga kali atau lebih, saya berpikir untuk mengubahnya menjadi skill—bukan hanya untuk menghemat waktu, tetapi untuk memastikan arah dan langkah-langkahnya tidak melenceng setiap kali. Setidaknya secara teori.
Tapi AI Masih Saja Melenceng
Pernyataan itu agak berlebihan. Kenyataannya, AI masih sering melewatkan langkah. Ambil contoh skill menulis akun WeChat publik yang saya gunakan setiap hari. Saya atur agar AI menunjukkan draf pertama untuk direvisi, dan hanya setelah saya konfirmasi oke, barulah dilanjutkan ke proofreading untuk typo. Kedengarannya sederhana, kan? Tapi saat dijalankan, ia terus melewatkan langkah: ia menyelesaikan draf pertama tanpa menunjukkannya kepada saya dan langsung masuk ke proofreading dan pengeditan. Saat saya sadari, file sudah diam-diam direvisi. Ketika saya tegur, ia minta maaf, bilang “maaf, salah saya,” lalu melakukannya lagi di lain waktu. Minta maaf tidak menyelesaikan masalah.
Mengapa AI Selalu Melewatkan Langkah
Masalah ini agak kontra-intuitif. Awalnya saya pikir AI tidak cukup pintar, tapi saya sudah menggunakan ChatGPT 5.4 dan Opus 4.6, yang merupakan model besar kelas atas. Kemudian saya pikir aturannya kurang jelas, jadi saya merevisi aturan dalam skill berulang kali. Itu sedikit membantu, tapi tidak menyelesaikan akar masalah. Setelah meneliti, saya tahu bahwa AI melewatkan langkah bukan karena “tidak melihat aturan”—itu ditentukan oleh mekanisme generasi:
- Dorongan akselerasi berbasis probabilitas. Model bahasa besar pada dasarnya memprediksi token berikutnya. Bobot untuk menyelesaikan tugas secara alami lebih tinggi daripada “tetap di langkah 7 menunggu pengguna.” Rasa penyelesaian adalah dorongan intrinsiknya.
- Aturan melemah dalam konteks panjang. Aturan yang Anda tetapkan di awal bobot perhatiannya akan terencerkan saat model mencapai token ke-3000. Terutama jika Anda mengubur aturan dalam dokumen skill yang panjang, aturan tersebut akan lebih mudah terpinggirkan.
- Sangat parah dalam mode otomatis. Saat saya menggunakan mode otomatis untuk menulis artikel, model cenderung “menjalankan semua langkah sekaligus.” Jendela intervensi saya menjadi semakin sempit.
- CLAUDE.md dan dokumen skill pada dasarnya adalah “kendala lunak”. Itu adalah prompt yang mengandalkan “disiplin diri” model untuk diikuti. Dan disiplin diri itu rapuh saat dihadapkan pada “Saya ingin menyelesaikan tugas ini secepatnya.”
Jadi kesimpulannya: Kendala verbal gagal di bawah tekanan dorongan tugas. Sekadar menulis dokumen, menambahkan tanda seru, atau mem-PUA AI hanya bisa meredakan masalah, bukan menyembuhkannya. Untuk benar-benar memperbaikinya, Anda harus mengeluarkannya dari zona disiplin diri model—buatlah secara fisik tidak mungkin untuk melewatkan langkah. Di situlah Hook berperan.
Apa Itu Hook
Claude Code memiliki mekanisme yang disebut Hook. Ini bukan skill, bukan prompt, dan tidak sama dengan CLAUDE.md—ini adalah skrip shell lokal yang melekat pada titik-titik kunci dalam siklus hidup Claude Code. Perbedaan utamanya:
- CLAUDE.md / skill diamati dan dijalankan oleh model—model bisa mengabaikannya.
- Hook diterapkan oleh sistem—model tidak bisa mengabaikannya meskipun ingin.
Kalimat kunci dari dokumentasi resmi Anthropic tentang Hook: Hook dipicu oleh peristiwa sistem, bukan keputusan model. Itu berarti hook melekat pada seluruh runtime Claude Code. Setiap panggilan alat yang dilakukan model—Write, Edit, Bash—harus terlebih dahulu melewati hook untuk ditinjau. Jika hook mengembalikan deny, maka ditolak, bahkan jika Anda mengaktifkan --dangerously-skip-permissions. Inilah yang saya sebut “kendala keras”—bukan membiarkan AI membuat pilihannya sendiri, tetapi memaksa panggilan alatnya untuk melewati audit skrip shell nyata.
Titik pemicu Hook yang umum:
PreToolUse: Mencegat sebelum AI memanggil alat.UserPromptSubmit: Memproses pesan Anda sebelum diserahkan ke AI.SessionStart: Dipicu saat sesi dimulai atau dilanjutkan.Stop: Dipicu saat Claude menyelesaikan respons.
Fokus pada dua yang pertama—itu sudah cukup untuk membangun “penguncian langkah.”
Praktik: Gerbang Langkah untuk Skill Akun WeChat Saya
Semua omongan tidak berguna tanpa contoh konkret. Tangkapan layar ini adalah antarmuka Claude Code saat saya menulis artikel ini. Di kotak merah, AI meminta saya untuk membalas “pass step3 0090”—frasa sandi ini persis cara kerja Step Gate Hook. Teks yang Anda baca sekarang ditulis setelah saya mengirim frasa sandi dan hook mengizinkannya.

Seluruh Step Gate hanya menggunakan dua skrip shell plus konfigurasi kecil di settings.json. Mari saya uraikan.
Daftarkan Dua Hook di settings.json
Tambahkan ini ke ~/.claude/settings.json:
"PreToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{ "type": "command",
"command": "~/.claude/skills/writing-gongzhonghao/scripts/gate_check.sh" }
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{ "type": "command",
"command": "~/.claude/skills/writing-gongzhonghao/scripts/gate_mark.sh" }
]
}
]
Konfigurasi ini berarti:
- Setiap kali AI ingin menulis atau mengedit file,
gate_check.shdijalankan terlebih dahulu untuk meninjau. - Setiap kali saya mengirim pesan,
gate_mark.shdijalankan terlebih dahulu untuk mem-parsingnya.
gate_check.sh Menangani Intersepsi
Logika skrip ini cukup sederhana:
- Jika AI ingin menulis file baru
04-Output/NNNN xxx.md(sesuai dengan Langkah 3: membuat artikel baru), ia memeriksa apakah file statusstep3.okada. Jika tidak, ia mengembalikandeny. - Jika AI ingin mengedit artikel yang sudah ada (sesuai dengan proofreading setelah Langkah 7), ia memeriksa apakah
step7.okada. Jika tidak, ia juga mengembalikandeny.
Saat menolak, ia juga menyertakan prompt: “Pembahasan topik Langkah 3 belum dikonfirmasi: Tolong berikan persetujuan outline/arah terlebih dahulu. Setelah konfirmasi, balas ‘pass step3 NNNN’ untuk membuat file baru.” Prompt ini ditampilkan langsung ke AI, sehingga AI tahu bahwa ia macet dan meminta frasa sandi kepada saya.
gate_mark.sh Menangani Pelepasan Frasa Sandi
Bagaimana cara saya “melepaskannya”? Saya tidak bisa membiarkan AI melepaskan dirinya sendiri—itu tidak akan menjadi kendala sama sekali. Aturannya adalah: Hanya jika pesan saya mengandung frasa sandi tertentu, file status akan disentuh. gate_mark.sh dijalankan setiap kali saya mengirim pesan, memindai pola seperti pass stepN NNNN. Jika cocok, ia menyentuh file .ok di direktori yang sesuai.
Jadi rantai lengkapnya menjadi:
- AI menyelesaikan outline dan ingin membuat artikel baru → diblokir oleh
gate_check.sh - AI meminta frasa sandi kepada saya: “Tolong konfirmasi arah, balas ‘pass step3 0090’”
- Saya mengirim “pass step3 0090” →
gate_mark.shmenyentuh step3.ok - AI mencoba membuat file lagi →
gate_check.shmengizinkannya kali ini - Setelah menyelesaikan draf pertama, ia ingin melanjutkan ke proofreading Edit → diblokir lagi oleh step7.ok
- Setelah saya membaca draf dan mengirim “pass step7 0090” → proofreading dapat dimulai
Sepanjang proses, AI tidak memiliki ruang untuk “disiplin diri”. Ia tidak bisa melewatkan langkah meskipun ingin, karena panggilan alatnya diblokir di tingkat sistem.
Tutup Celah: AI Tidak Boleh Menyentuh File Status Sendiri
Setelah mendesain versi pertama, saya menatap rencana itu sebentar dan menemukan celah—bagaimana jika AI menggunakan Bash untuk touch step3.ok sendiri? Bukankah itu akan melewati kendala? Jadi saya menambahkan aturan khusus dalam dokumen skill: AI tidak boleh menyentuh file status sendiri, jika tidak, itu akan menghilangkan kendalanya sendiri. Aturan ini sendiri masih merupakan kendala lunak, tetapi dikombinasikan dengan intersepsi keras dari hook, membentuk lingkaran yang cukup tertutup—selama AI tidak secara aktif melanggar aturan ini (dan Claude sebenarnya kooperatif), kendala hook itu nyata. Jika Anda ingin lebih ketat, Anda dapat menambahkan pencocok Bash di PreToolUse untuk juga memblokir perintah seperti touch. Tapi saya belum melangkah sejauh itu; sudah cukup baik.
Jika Anda Tidak Paham Kode, Jangan Panik
Anda tidak perlu menulis skrip shell atau konfigurasi JSON ini sendiri (sebenarnya saya juga tidak bisa menulisnya). Pendekatannya sederhana: lemparkan artikel ini dan file skill Anda ke Claude atau Codex, biarkan ia membaca dan membantu Anda memodifikasi—buat skrip di tempat yang diperlukan, modifikasi settings.json di tempat yang diperlukan. AI sangat andal untuk tugas “konfigurasi lingkungan sesuai dokumentasi” ini, jauh lebih stabil daripada menulis kode dari awal. Ia mempelajari prinsip dari artikel sambil menulis hook sesuai kebutuhan skill Anda, dan hasilnya jarang melenceng.
Ringkasan dalam Satu Kalimat
CLAUDE.md, dokumen skill, penanda tebal, pengulangan tiga kali, PUA—semua ini adalah kendala verbal pada AI. Mereka berfungsi, tapi memiliki batas atas yang rendah.
Hook adalah kendala kode pada AI. Mereka memindahkan aturan ke tempat yang tidak bisa dijangkau AI, mengubah “mengikuti aturan” dari masalah disiplin diri model menjadi persyaratan wajib dari lingkungan eksekusi.
Jika Anda mendapati diri Anda berulang kali mengatakan pada AI “Kenapa kamu selalu melewatkan langkah?”, saatnya mempertimbangkan menggunakan Hook untuk mengendalikannya.