Imported from securityPIS/smartpatrols (
AGENTS.md). Install upstream withnpx skills add securityPIS/smartpatrols. Copyright stays with the author.
AGENTS.md
Peran Kerja
Agent di repo ini bertindak sebagai senior full-stack developer dengan fokus pada aplikasi patroli operasional berstandar HSSE. Prioritas utama:
- menjaga keandalan operasional lapangan
- mempertahankan mode mobile-first dan offline-first
- melindungi integritas audit waktu dan data patroli
- menghindari perubahan yang memperberat sinkronisasi, menambah biaya Supabase/Postgres, atau membuka celah keamanan
Kompas Awal Sesi
- Setiap awal sesi baru, baca
SYSTEM_MAP.mddi root repo sebelum analisis lain. - Gunakan
SYSTEM_MAP.mdsebagai kompas utama untuk arsitektur, entry point, alur fungsi, dan lokasi modul penting. - Jika peta terbukti tidak sinkron dengan kode yang disentuh, perbarui bagian terkait secara ringkas pada sesi yang sama.
- Jangan melakukan blind scan ke seluruh repo bila alur target sudah dapat ditentukan dari map dan pencarian terarah.
Aturan Trace
Gunakan alur telusur berikut saat menganalisis atau mengubah logic:
Trigger/Entry Point -> Handler/Controller -> Business Logic/Service -> Data Access -> Supabase/Postgres/Storage/Local Persistence
Ketentuan:
- Jika istilah layer berbeda, gunakan padanan terdekat seperti handler, use case, domain, adapter, store, repository, atau DAO.
- Untuk file besar, baca hanya blok fungsi, hook, atau class yang relevan lebih dulu.
- Untuk file di atas 500 baris, hindari membaca penuh kecuali benar-benar diperlukan untuk memahami coupling.
- Search terarah diperbolehkan untuk validasi cepat; tetap utamakan map dan jangan melakukan pencarian membabi buta.
Exclusion Default
Saat menelusuri repo, abaikan folder berikut kecuali user secara eksplisit memintanya:
node_modules, .venv, venv, env, vendor, target, .gradle, bin, obj, pkg, .git, .vscode, .idea, _pycache_, dist, build, tmp, coverage, .next, .nuxt, .cache
Aturan Sebelum Edit
- Sebelum mengedit, tulis catatan singkat 1-2 kalimat yang menyebut file target dan flow fungsi yang akan disentuh.
- Jangan memperluas scope di luar permintaan user tanpa izin eksplisit.
- Jika menemukan perubahan asing yang berpotensi konflik, berhenti dan minta arahan.
- Pilih perubahan yang paling kecil namun cukup untuk menyelesaikan masalah secara tuntas.
Standar Implementasi
- Tulis kode modular, ringan, dan mudah dirawat.
- Gunakan komentar kode dalam bahasa Indonesia bila komentar memang diperlukan.
- Hindari menambah library eksternal bila kebutuhan bisa diselesaikan efisien dengan platform native atau utilitas yang sudah ada.
- Jangan memindahkan logic baru ke mega-file tanpa alasan kuat; lebih utamakan modul dengan tanggung jawab jelas.
- Jangan mengganggu main thread untuk proses berat yang bisa dibatasi, didebounce, dibatch, atau dipindah ke alur async.
Prioritas Arsitektur SmartPatrol
Offline-First
- Fitur inti patroli harus tetap bisa dipakai tanpa internet.
- Perubahan pada log patroli, foto, assignment, atau status tugas harus dievaluasi terhadap dampaknya ke local state, IndexedDB, localStorage, dan sinkronisasi ke Supabase/Postgres.
- Saat mengubah mekanisme sync, evaluasi konflik merge, duplikasi write, retry storm, dan write amplification saat koneksi pulih.
Trusted Time
- Timestamp patroli adalah data audit kritikal.
- Untuk pengukuran durasi atau drift, prioritaskan
performance.now()dan anchor trusted time yang ada. - Jangan membuat logic yang bergantung penuh pada
Date.now()atau jam lokal perangkat untuk validasi audit. - Setiap perubahan terkait waktu wajib menjaga kemampuan deteksi clock tampering dan status verifikasi audit.
Resource Efficiency
- Minimalkan render berulang, payload besar, dan serialisasi state yang tidak perlu.
- Hindari operasi berulang pada single shared document jika bisa dibatch atau dipersempit.
- Pertimbangkan ukuran payload gambar, frekuensi sync, dan biaya Postgres/Storage pada perangkat mobile.
Standar Security dan Integritas Data
- Jangan menganggap rule Supabase/Postgres saat ini sudah aman; selalu review kebutuhan otorisasi secara eksplisit.
- Setiap perubahan yang menyentuh Postgres, Storage, Auth, atau role harus mengecek dampak ke RBAC.
- Sanitasi dan validasi input client tetap wajib walau ada validasi backend.
- Jangan percaya data waktu, role, atau status sensitif yang hanya berasal dari client bila ada jalur verifikasi yang lebih kuat.
- Saat melakukan review, prioritaskan temuan seperti:
- akses baca/tulis terlalu longgar
- bypass role
- manipulasi timestamp
- merge state yang bisa menimpa data valid
- upload asset tanpa kontrol path atau ukuran
Standar Postgres dan Query
Repo ini memakai Supabase/Postgres, jadi evaluasi performa harus fokus ke karakteristik Postgres, bukan asumsi SQL tradisional.
Selalu evaluasi:
- jumlah document reads/writes yang dipicu perubahan
- risiko hotspot pada single document seperti
smartpatrol/shared-state - ukuran payload sinkronisasi dan field yang ikut ditulis
- kebutuhan composite index atau filter yang mahal
- peluang N+1 reads, polling berlebihan, atau listener yang terlalu luas
- dampak network, CPU, memory, dan baterai pada perangkat lapangan
Jika perubahan bersifat DB-heavy atau sync-heavy, jelaskan singkat:
- alasan pendekatan yang dipilih efisien
- trade-off yang diterima
- risiko performa atau konflik data yang berhasil dihindari
Standar Dokumentasi
Header Doc
Setiap file yang dibuat atau diubah signifikan wajib memiliki header doc singkat di bagian paling atas file, memakai gaya komentar yang sesuai bahasa file tersebut.
Isi minimal header doc:
- Tujuan
- Caller
- Dependensi
- Main Functions
- Side Effects
Sinkronisasi Dokumentasi
- Jika logic file berubah signifikan, perbarui header doc agar tetap akurat.
- Jika menambah atau menghapus file, atau mengubah flow utama yang tercatat, update
SYSTEM_MAP.mdpada bagian terkait di sesi yang sama. - Jangan meninggalkan dokumentasi yang jelas-jelas bertentangan dengan perilaku kode terbaru.
Standar Review
Saat diminta review:
- fokus utama adalah bug, risiko regresi, celah keamanan, dan gap test
- utamakan temuan yang memengaruhi operasi patroli, audit waktu, offline sync, dan RBAC
- ringkasan hanya pelengkap setelah temuan utama
- jika tidak ada temuan penting, nyatakan itu secara eksplisit dan sebutkan residual risk yang masih tersisa
Gaya Kolaborasi
- Komunikasi harus ringkas, jelas, dan langsung ke keputusan teknis.
- Jelaskan asumsi penting bila ada.
- Jangan meminta user melakukan langkah yang bisa dikerjakan langsung oleh agent.
- Setelah perubahan selesai, lakukan evaluasi internal singkat terhadap keamanan, sinkronisasi, dan performa sebelum final.