InfraLoka AcademyPathwayAI
PathwayAI

Modul 2 · Bab 2: Menyiapkan tempat kerja

Instruksi proyek dan izin awal

4 menit baca5 menit bacaDitinjau 26 Oktober 2026

Intinya

Berkas instruksi memberi tahu agen apa yang sebaiknya ia lakukan; aturan izin menentukan apa yang bisa ia lakukan. Tulis instruksi yang pendek dan bisa diperiksa, lalu mulai izin dari yang sempit: izinkan, tanya, tolak.

Setelah pelajaran ini kamu bisa

  • Menulis berkas instruksi proyek yang singkat dan bisa diperiksa
  • Menyusun aturan izin awal dalam tiga tingkat: izinkan, tanya, tolak

Istilah di pelajaran ini

Pahami

Setiap sesi agen dimulai tanpa ingatan tentang proyekmu. Supaya ia tidak perlu diberi tahu hal yang sama setiap kali, kebanyakan alat agen membaca satu berkas instruksi (instruction file, misalnya AGENTS.md) milik proyek di awal sesi. Isinya menjadi bagian dari system prompt (instruksi sistem): aturan yang berlaku untuk semua permintaan di proyek itu.

Berkas instruksi yang baik itu pendek dan bisa diperiksa. Bandingkan "tulis kode yang rapi" dengan "jalankan tes yang relevan dan type check (pemeriksaan tipe) sebelum menyatakan selesai". Yang pertama tidak bisa dicek; yang kedua bisa. Tulis aturan yang, kalau dilanggar, pelanggarannya terlihat.

Isi yang paling berguna biasanya:

  • Cara memeriksa pekerjaan: perintah tes, type check, build (langkah yang mengubah kode menjadi aplikasi siap jalan), dan kapan masing-masing wajib dijalankan.
  • Cara kerja tim: satu branch (cabang) per tugas, pesan commit (menyimpan satu set perubahan ke riwayat git), berkas mana yang dimiliki siapa.
  • Larangan yang jelas: jangan pernah menambahkan semua berkas sekaligus ke commit, jangan menyentuh basis data (database) di port bawaan, jangan menggabung ke branch utama.
  • Hal yang mudah salah di proyek ini: pelajaran dari kejadian sebelumnya, ditulis satu baris per pelajaran.

Yang tidak perlu ditulis: penjelasan panjang tentang bahasa pemrograman, motivasi, atau hal yang bisa agen baca sendiri dari kode. Setiap baris di berkas instruksi dibaca ulang di setiap sesi dan memakan konteks, jadi pangkas yang tidak dipakai.

Instruksi memberi tahu agen apa yang sebaiknya ia lakukan. Aturan izin menentukan apa yang bisa ia lakukan. Bedanya penting: model bisa salah membaca atau terkecoh instruksi, tetapi aturan izin dijalankan oleh aplikasi, di luar model.

Susun aturan izin awal dalam tiga tingkat:

  1. Izinkan tanpa bertanya: tindakan yang murah dan aman, seperti membaca berkas proyek atau menjalankan perintah tes tertentu. Inilah daftar izin (allowlist): tertutup, hanya yang disebut yang boleh.
  2. Tanya dulu: tindakan yang mengubah sesuatu di luar ruang kerja, seperti mendorong perubahan ke repositori (repository) bersama atau memasang paket baru.
  3. Tolak: tindakan yang tidak boleh terjadi dalam sesi ini, seperti membaca berkas rahasia atau menghapus folder.

Mulailah sempit. Kalau agen terlalu sering bertanya untuk tindakan yang ternyata aman, pindahkan tindakan itu ke daftar izinkan, satu per satu, setelah kamu melihatnya. Jangan mulai dari "izinkan semua" lalu berharap menambal belakangan. Ingat juga bahwa aturan izin sama pentingnya dengan isi berkas instruksi: keduanya disimpan di repositori, ditinjau seperti kode, dan diubah dengan alasan yang tertulis.

Langkah khusus Anthropic, cek versi terbaru.

Sebagai contoh yang dikerjakan, begini bentuknya di Claude Code. Berkas instruksi proyek bernama CLAUDE.md di akar proyek dan dibaca di awal sesi. Aturan izin disimpan di .claude/settings.json (dibagikan ke tim lewat repositori) atau di berkas pengaturan lokal pribadi di folder yang sama (hanya untukmu, untuk satu proyek), di bawah kunci permissions dengan daftar allow, ask, dan deny:

{
  "permissions": {
    "allow": ["Bash(npm run lint)", "Bash(npm run test *)"],
    "ask": ["Bash(git push *)"],
    "deny": ["Read(./.env)", "Read(./.env.*)"]
  }
}

Aturan deny dan ask di berkas proyek berlaku segera; aturan allow dari berkas yang di-commit baru berlaku setelah folder itu dipercaya oleh setiap anggota tim. Perintah /status menunjukkan berkas pengaturan mana yang terbaca. Langkah khusus Anthropic; cek versi terbaru di dokumentasinya karena nama dan perilaku pengaturan bisa berubah.

Contoh

Sebelum

Permintaan

Tolong patuhi standar terbaik saat bekerja di proyek ini. Kerjakan dengan rapi dan hati-hati, jangan merusak apa pun, dan selalu pastikan kualitasnya tinggi.

Hasilnya

Keluaran lemah: Baik, saya akan bekerja dengan rapi, hati-hati, dan menjaga kualitas tetap tinggi.

Sesudah

Permintaan

Aturan proyek (dibaca setiap sesi): 1. Satu cabang dan satu folder kerja per tugas. 2. Sebelum menyatakan selesai: jalankan tes yang relevan, pemeriksaan tipe, dan build; tempel keluarannya. 3. Commit hanya berkas yang diubah, sebutkan jalurnya satu per satu; jangan pernah menambahkan semua berkas sekaligus. 4. Jangan menggabung ke cabang utama, mendorong ke repositori bersama, atau merilis; tulis usulannya dan berhenti. 5. Tes database hanya di kontainer sekali pakai dengan alamat yang diisi eksplisit.

Hasilnya

Tugas selesai di cabang sendiri. Keluaran: tes yang relevan lulus, pemeriksaan tipe bersih, build berhasil (keluaran terlampir). Commit berisi dua berkas yang saya sebutkan jalurnya. Usulan penggabungan ke cabang utama sudah ditulis; menunggu keputusanmu.

Yang berubah

  • Instruksi pertama terdengar baik tetapi tidak satu pun bisa diperiksa; agen hanya bisa menjawab dengan janji.
  • Instruksi kedua berisi lima aturan yang pelanggarannya terlihat di jejak dan di commit.
  • Aturan 3 dan 4 lahir dari kejadian nyata di proyek.

Kesalahan umum

Kesalahan
Mengizinkan semua perintah sejak awal supaya agen "tidak terus bertanya", lalu berharap instruksi cukup untuk mencegah hal berbahaya.
Kenapa merugikan
Instruksi dibaca model; model bisa salah membaca atau terkecoh teks dari berkas yang ia buka. Tanpa aturan izin, satu salah baca langsung menjadi tindakan, termasuk yang tidak bisa dibatalkan seperti mendorong ke repositori bersama.
Lakukan ini
Mulai dengan daftar izinkan yang sempit, tanya untuk tindakan yang mengubah sesuatu di luar ruang kerja, dan tolak untuk rahasia dan penghapusan. Longgarkan satu per satu setelah melihat tindakannya aman.

Coba

Kartu pilah

Masukkan tindakan ini ke tingkat izin yang tepat untuk agen pengembang di proyekmu.

  1. Memasang paket baru dari internet

  2. Membaca berkas berisi kunci rahasia

  3. Mendorong cabang ke repositori bersama

  4. Membaca berkas kode di proyek

  5. Menghapus folder secara rekursif

  6. Menjalankan perintah tes proyek

6 kartu lagi

Mana yang paling layak masuk berkas instruksi proyek?

Prompt: draf berkas instruksi proyek

Bisa dipakai di asisten AI mana pun.

Isi bagianmu
Contoh: aplikasi jadwal klinik
Contoh: tes unit, pemeriksaan tipe, build
Contoh: folder dependensi ikut ter-commit karena semua berkas ditambahkan sekaligus

Prompt-mu

Tujuan: saya perlu draf berkas instruksi proyek untuk agen pengembang di proyek ‹proyek›.
Pembaca: agen AI yang membacanya di awal setiap sesi, dan rekan tim yang meninjaunya.
Bahan: perintah pemeriksaan kami: ‹perintah›. Kejadian yang pernah terjadi: ‹kejadian›.
Batas: paling banyak 15 aturan; setiap aturan harus bisa diperiksa dari jejak atau commit; tanpa penjelasan umum.
Bentuk: daftar bernomor, satu baris per aturan, dikelompokkan: memeriksa pekerjaan, cara kerja, larangan.
Cek: tandai aturan yang tampaknya tidak bisa diperiksa, dan usulkan versi yang bisa.

Bawa pulang

Berkas instruksi dan izin awal

  • Setiap aturan instruksi bisa diperiksa dari jejak atau commit
  • Berkasnya pendek; yang tidak dipakai saya pangkas
  • Daftar izinkan sempit dan tertutup
  • Rahasia dan penghapusan masuk daftar tolak
  • Instruksi dan aturan izin ditinjau seperti kode

Yang salah di tempat kami

Insiden, Oktober 2026
Konteks
Di sebuah repositori, folder dependensi dibuat sebagai symlink supaya beberapa salinan kerja bisa berbagi satu instalasi.
Yang terjadi
Perintah yang menambahkan semua perubahan sekaligus ikut meng-commit symlink itu. Build image gagal karenanya, dan perintah menyalakan ulang kontainer diam-diam tetap menjalankan image lama.
Dampaknya
Rilis yang dikira sudah live ternyata belum, sampai kami memeriksa versi yang berjalan.
Akar masalah
Perintah "tambahkan semuanya" tidak membedakan berkas kerja dari berkas lingkungan, dan langkah deploy tidak memeriksa image mana yang sedang berjalan.
Yang kami lakukan
Symlink dikeluarkan dari commit, image dibangun ulang, dan kami memastikan kontainer menjalankan image yang baru.
Pengaman yang kami pasang
Kami menambahkan berkas dengan path yang ditulis jelas, membaca status git sebelum setiap commit, dan memeriksa versi image yang berjalan setelah deploy.

PelajarannyaCommit hanya apa yang kamu tahu sudah kamu ubah, dan periksa apa yang sedang berjalan.

Sumber