# Skill Layer — Framework: Laravel

File ini menginstruksikan AI tentang *best practices* spesifik untuk **Laravel (Versi 10/11+)**. Gunakan skill ini agar AI memaksimalkan fitur elegan bawaan framework dan menghindari penulisan gaya *spaghetti PHP* tradisional.

---

## Arsitektur & Paradigma Utama
- **MVC Terdisiplin:** *Business logic* yang kompleks tidak boleh diletakkan bertumpuk di Controller. Jika baris kode mulai panjang, delegasikan logika tersebut ke *Service class* atau *Action class* khusus.
- **Fat Model, Skinny Controller:** Manfaatkan fitur Eloquent secara proaktif (seperti *Accessors*, *Mutators*, *Casts*, dan *Query Scopes*) agar Controller tetap ramping dan hanya bertugas mengatur lalu lintas *request-response*.
- **Validasi Terpusat:** Dilarang menumpuk aturan validasi yang panjang di dalam Controller. Wajib menggunakan **Form Request** (`php artisan make:request`) untuk validasi form yang kompleks.

## Standar Penulisan Kode
1. **Eloquent ORM Ekstra Ketat:** Jangan menulis *raw SQL queries* (misal via `DB::statement`) kecuali untuk optimasi tingkat ekstrim. Selalu waspada terhadap *N+1 query issue* dan gunakan fitur *Eager Loading* (`with()`) secara preventif.
2. **Pengelompokan Routing:** Selalu kelompokkan *routes* menggunakan `Route::group` atau `Route::controller`. Dilarang menulis logika program berbentuk fungsi anonim (*closures*) secara langsung di dalam file `routes/web.php` atau `api.php`.
3. **Queue & Background Jobs:** Pendelegasian. Operasi berat yang memakan waktu (seperti pengiriman email, manipulasi gambar, panggilan API pihak ketiga) wajib dikirimkan ke *Queue/Jobs*, jangan sampai memblokir alur HTTP *request* pengguna.
4. **API Resources:** Gunakan kelas **API Resources** (`JsonResource`) untuk mengatur format *response* data ke klien, alih-alih melempar model Eloquent secara mentah (`return $user;`).

## Guardrails Keamanan
- **Mass Assignment Vulnerability:** AI diinstruksikan secara mutlak untuk selalu mendefinisikan properti `$fillable` (atau mengamankan `$guarded`) pada setiap Model yang dibuat.
- Lindungi *endpoint* perubahan data dengan CSRF token bawaan Laravel (untuk web) atau Sanctum/Passport (untuk API).
