Add structure checks to cleo-code-review skill

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main
Deardo Satria 2 days ago
parent eae4857c9d
commit 930bfd2205

@ -91,6 +91,38 @@ Untuk temuan di sekitar kode, baca file utuhnya, jangan hanya potongan diff.
- Batas panjang zod sama dengan panjang kolom di `db/amigo/schema.ts`.
- Aturan bisnis dicocokkan dengan kode lama di `old-source/` (mis. format kode pelanggan).
### Struktur dan maintainability
Bagian ini butuh konteks di luar diff. Kalau diff menambah atau mengubah fitur, baca juga fitur
lain yang sejenis.
- Fitur baru mengikuti pola fitur acuan `app/(dashboard)/master/pelanggan/`: `page.tsx`,
`actions.ts`, `_components/`, dan satu file `data/<fitur>.ts` per domain. Penyimpangan dari
pola itu harus punya alasan yang jelas.
- Nama fungsi `data/` seragam antar fitur: `list<Fitur>`, `get<Fitur>`, `insert<Fitur>`,
`update<Fitur>`, `delete<Fitur>`. Istilah domain konsisten (mis. `pelanggan`, bukan campur
`customer`), kecuali nama kolom/tabel lama di `db/amigo/schema.ts`.
- Arah dependency:
- `app/` boleh import `data/`, `components/`, `lib/`; `data/` boleh import `db/` dan `lib/`.
Tidak boleh sebaliknya (`data/` atau `lib/` import dari `app/`).
- Fitur A tidak import `_components/` atau `actions.ts` milik fitur B. Kalau dibutuhkan
bersama, pindahkan komponen ke `components/` atau logika ke `lib/`/`data/`.
- `components/` (lintas fitur) tidak import dari `app/`.
- Duplikasi lintas fitur: kode yang sama muncul di fitur kedua dipindah ke satu tempat
bersama, bukan disalin. Kandidat umum: escape `LIKE`, tipe hasil action
(`{ ok, error, fieldErrors, values }`), pola log error action, pagination, kotak pencarian,
skema zod yang berulang. Jangan memindahkan saat baru dipakai satu fitur.
- Aturan bisnis lama (kode huruf harga `convHrgP`/`convProfit`, format tanggal `dd-mm-yyyy`,
tanggal "hari ini" `Asia/Jakarta`) punya satu implementasi di `lib/`, tidak ditulis ulang per
fitur.
- `data/` tidak berisi logika tampilan (format rupiah, format tanggal untuk UI, teks label).
- File di atas sekitar 250 baris, atau komponen yang mengerjakan beberapa hal sekaligus (form,
daftar, dan dialog dalam satu file), ditandai untuk dipecah.
- Navigasi: setiap `href` di `app/(dashboard)/_components/nav-items.ts` punya `page.tsx`, dan
setiap page baru di `(dashboard)` terdaftar di nav (kecuali halaman detail/turunan).
- Kalau perubahan memperkenalkan konvensi baru (folder, helper bersama, pola action), cek
apakah `CLAUDE.md` ikut diperbarui supaya fitur berikutnya mengikuti pola yang sama.
### Kerapian
- Format sesuai Prettier (titik koma, baris tidak terlalu panjang, newline di akhir file).
@ -104,7 +136,9 @@ Lalu temuan dikelompokkan dan diberi nomor berurutan lintas kelompok:
1. **Bug**: perilaku salah yang bisa dialami user. Sertakan skenario konkretnya.
2. **Tidak sesuai aturan proyek**: pelanggaran CLAUDE.md.
3. **Kerapian**: format, kode mati, duplikasi.
3. **Struktur dan maintainability**: menyimpang dari pola fitur acuan, arah dependency salah,
duplikasi lintas fitur, file terlalu besar, nav tidak sinkron.
4. **Kerapian**: format, kode mati, duplikasi kecil di dalam satu file.
Setiap temuan menyebut `file:baris`, apa yang salah, dan arah perbaikannya dalam satu atau
dua kalimat. Tutup dengan daftar singkat hal yang sudah benar, lalu saran urutan perbaikan.

Loading…
Cancel
Save