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`. - 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). - 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 ### Kerapian
- Format sesuai Prettier (titik koma, baris tidak terlalu panjang, newline di akhir file). - 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. 1. **Bug**: perilaku salah yang bisa dialami user. Sertakan skenario konkretnya.
2. **Tidak sesuai aturan proyek**: pelanggaran CLAUDE.md. 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 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. dua kalimat. Tutup dengan daftar singkat hal yang sudah benar, lalu saran urutan perbaikan.

Loading…
Cancel
Save