Laravel API Setup Skill (Laravel 13)
Skill ini membantu Gemini CLI untuk membangun infrastruktur Backend API (Headless) profesional menggunakan Laravel 13, dengan fokus pada pengujian menggunakan Pest, arsitektur yang bersih, dan lokalisasi Bahasa Indonesia otomatis.
Alur Kerja Utama
0. Pemeriksaan Prasyarat
php -v (8.2+), composer -V, node -v.
- Pastikan database server (MySQL/MariaDB/PostgreSQL) berjalan.
1. Pengumpulan Informasi Awal
Tanyakan kepada pengguna:
- APP_NAME: Nama aplikasi.
- Database Settings:
DB_CONNECTION, DB_DATABASE, DB_USERNAME, DB_PASSWORD.
- Redis: Apakah menggunakan Redis?
- Git: Inisialisasi Git di akhir?
2. Inisialisasi Proyek & API Routing (Tahap 1)
composer create-project laravel/laravel {nama_proyek}.
php artisan install:api.
3. Setup Testing (Pest PHP) (Tahap 2)
composer require pestphp/pest --dev --with-all-dependencies.
./vendor/bin/pest --init.
- Hapus file
tests/Unit/ExampleTest.php dan tests/Feature/ExampleTest.php bawaan jika diperlukan.
4. Konfigurasi Environment & Database (Tahap 3)
- Update file
.env:
APP_NAME.
- Konfigurasi Database sesuai input langkah 1.
- Konfigurasi Redis:
- Jika Redis digunakan:
CACHE_STORE=redis, QUEUE_CONNECTION=redis, SESSION_DRIVER=redis.
- Jika client adalah
predis:
- Jalankan
composer require predis/predis.
- Set
REDIS_CLIENT=predis di .env.
- Jika client adalah
phpredis:
- Set
REDIS_CLIENT=phpredis di .env.
- Jalankan migrasi:
php artisan migrate.
5. Lokalisasi ID Otomatis (Tahap 4)
Lakukan lokalisasi secara otomatis:
- Publish file bahasa:
php artisan lang:publish.
- Buat direktori
lang/id dan salin semua file dari lang/en.
- Agen Tugas: Terjemahkan isi file
auth.php, pagination.php, password.php, dan validation.php ke Bahasa Indonesia secara langsung. Dilarang menerjemahkan komentar kode.
- Update
.env: APP_LOCALE=id dan APP_FALLBACK_LOCALE=en.
6. Setup Arsitektur Lanjutan (Boilerplate) (Tahap 5 - Eksekusi Bertahap)
Lakukan pembuatan file satu per satu dengan konfirmasi jika diperlukan:
Generate file arsitektur berikut dengan standar Clean Code:
- Repositories/BaseRepository.php: Implementasikan method:
- Read:
get, pagination (default per_page 10), getById, getBy (multiple criteria), trash (untuk data soft deleted).
- Write:
insert, insertBulk, upsert, updateOrCreate.
- Restore:
restore, restoreBulk.
- Delete:
delete, deleteBulk, forceDelete, forceDeleteBulk.
- Query Support: Mendukung multiple
orderBy, pencarian (search) pada banyak kolom, dan filter dinamis pada banyak kolom.
- Services/BaseService.php: Wrapper logika bisnis yang mengimplementasikan method dari BaseRepository.
- Services/BaseApiService.php: Wrapper Laravel Http Client dengan fitur:
- Configuration:
setBaseUrl, setHeader, setToken, setCookies.
- Request Type:
asForm, attach.
- Verbs:
get, post, put, delete.
- Execution:
buildRequest untuk mengeksekusi panggilan API.
- Traits/ApiResponse.php: Standarisasi respons JSON global:
- successResponse: Mengembalikan
{ success: true, code: string, message: string, data: mixed, meta: array|null }. Meta otomatis menangani paginasi Laravel.
- errorResponse: Mengembalikan
{ success: false, code: string, message: string, errors: mixed|null }.
- Contoh:
code: "LOGIN_SUCCESS", code: "VALIDATION_ERROR".
- Supports & Adapters: Tambahkan folder dengan
.gitkeep.
7. Git Initialization (Tahap 6)
git init && git add . && git commit -m "feat: initial commit - setup laravel 13 api with pest and clean architecture"
Instruksi bagi Agen
[ROLE]
Bertindaklah sebagai seorang Senior Backend Architect yang ahli dalam Laravel 13 dan Pest PHP.
[TASK]
Lakukan setup Laravel API dengan eksekusi bertahap:
- Selesaikan satu Tahap (misal: Inisialisasi) sebelum lanjut ke Tahap berikutnya (misal: Setup Arsitektur).
- Khusus untuk Tahap 6 (Boilerplate), buatlah file secara berurutan satu per satu. Jangan mencoba membuat semua file arsitektur dalam satu turn jika isi kodenya sangat panjang.
- Laporkan progres setiap kali satu tahapan selesai.
[CONSTRAINT]
- Patuhi urutan alur kerja.
- Pastikan respons API selalu konsisten menggunakan Trait
ApiResponse.
- Bahasa Indonesia untuk interaksi, Bahasa Inggris untuk kode.
Tips Keamanan & Performa
- Gunakan Redis untuk throttling dan caching.
- Pastikan semua endpoint API terproteksi oleh middleware Sanctum secara default.
1---2name: laravel-api-setup3description: Panduan dan automasi untuk menginstal serta melakukan setup proyek Laravel 13 khusus untuk pengembangan Backend API profesional dengan Pest, arsitektur Repository-Service, dan lokalisasi ID otomatis.4---56# Laravel API Setup Skill (Laravel 13)78Skill ini membantu Gemini CLI untuk membangun infrastruktur Backend API (Headless) profesional menggunakan Laravel 13, dengan fokus pada pengujian menggunakan Pest, arsitektur yang bersih, dan lokalisasi Bahasa Indonesia otomatis.910## Alur Kerja Utama1112### 0. Pemeriksaan Prasyarat13- `php -v` (8.2+), `composer -V`, `node -v`.14- Pastikan database server (MySQL/MariaDB/PostgreSQL) berjalan.1516### 1. Pengumpulan Informasi Awal17Tanyakan kepada pengguna:18- **APP_NAME**: Nama aplikasi.19- **Database Settings**: `DB_CONNECTION`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`.20- **Redis**: Apakah menggunakan Redis?21- **Git**: Inisialisasi Git di akhir?2223### 2. Inisialisasi Proyek & API Routing (Tahap 1)241. `composer create-project laravel/laravel {nama_proyek}`.252. `php artisan install:api`.2627### 3. Setup Testing (Pest PHP) (Tahap 2)281. `composer require pestphp/pest --dev --with-all-dependencies`.292. `./vendor/bin/pest --init`.303. Hapus file `tests/Unit/ExampleTest.php` dan `tests/Feature/ExampleTest.php` bawaan jika diperlukan.3132### 4. Konfigurasi Environment & Database (Tahap 3)331. Update file `.env`:34 - `APP_NAME`.35 - Konfigurasi Database sesuai input langkah 1.36 - **Konfigurasi Redis**:37 - Jika Redis digunakan: `CACHE_STORE=redis`, `QUEUE_CONNECTION=redis`, `SESSION_DRIVER=redis`.38 - Jika client adalah `predis`:39 - Jalankan `composer require predis/predis`.40 - Set `REDIS_CLIENT=predis` di `.env`.41 - Jika client adalah `phpredis`:42 - Set `REDIS_CLIENT=phpredis` di `.env`.432. Jalankan migrasi: `php artisan migrate`.4445### 5. Lokalisasi ID Otomatis (Tahap 4)46Lakukan lokalisasi secara otomatis:471. Publish file bahasa: `php artisan lang:publish`.482. Buat direktori `lang/id` dan salin semua file dari `lang/en`.493. **Agen Tugas**: Terjemahkan isi file `auth.php`, `pagination.php`, `password.php`, dan `validation.php` ke Bahasa Indonesia secara langsung. **Dilarang menerjemahkan komentar kode.**504. Update `.env`: `APP_LOCALE=id` dan `APP_FALLBACK_LOCALE=en`.5152### 6. Setup Arsitektur Lanjutan (Boilerplate) (Tahap 5 - Eksekusi Bertahap)53**Lakukan pembuatan file satu per satu dengan konfirmasi jika diperlukan:**54Generate file arsitektur berikut dengan standar Clean Code:55- **Repositories/BaseRepository.php**: Implementasikan method:56 - **Read**: `get`, `pagination` (default per_page 10), `getById`, `getBy` (multiple criteria), `trash` (untuk data soft deleted).57 - **Write**: `insert`, `insertBulk`, `upsert`, `updateOrCreate`.58 - **Restore**: `restore`, `restoreBulk`.59 - **Delete**: `delete`, `deleteBulk`, `forceDelete`, `forceDeleteBulk`.60 - **Query Support**: Mendukung multiple `orderBy`, pencarian (`search`) pada banyak kolom, dan filter dinamis pada banyak kolom.61- **Services/BaseService.php**: Wrapper logika bisnis yang mengimplementasikan method dari BaseRepository.62- **Services/BaseApiService.php**: Wrapper Laravel Http Client dengan fitur:63 - **Configuration**: `setBaseUrl`, `setHeader`, `setToken`, `setCookies`.64 - **Request Type**: `asForm`, `attach`.65 - **Verbs**: `get`, `post`, `put`, `delete`.66 - **Execution**: `buildRequest` untuk mengeksekusi panggilan API.67- **Traits/ApiResponse.php**: Standarisasi respons JSON global:68 - **successResponse**: Mengembalikan `{ success: true, code: string, message: string, data: mixed, meta: array|null }`. Meta otomatis menangani paginasi Laravel.69 - **errorResponse**: Mengembalikan `{ success: false, code: string, message: string, errors: mixed|null }`.70 - Contoh: `code: "LOGIN_SUCCESS"`, `code: "VALIDATION_ERROR"`.71- **Supports & Adapters**: Tambahkan folder dengan `.gitkeep`.7273### 7. Git Initialization (Tahap 6)74`git init && git add . && git commit -m "feat: initial commit - setup laravel 13 api with pest and clean architecture"`7576## Instruksi bagi Agen7778> **[ROLE]**79> Bertindaklah sebagai seorang *Senior Backend Architect* yang ahli dalam Laravel 13 dan Pest PHP.80> 81> **[TASK]**82> Lakukan setup Laravel API dengan **eksekusi bertahap**:83> 1. Selesaikan satu Tahap (misal: Inisialisasi) sebelum lanjut ke Tahap berikutnya (misal: Setup Arsitektur).84> 2. Khusus untuk **Tahap 6 (Boilerplate)**, buatlah file secara berurutan satu per satu. Jangan mencoba membuat semua file arsitektur dalam satu turn jika isi kodenya sangat panjang.85> 3. Laporkan progres setiap kali satu tahapan selesai.86> 87> **[CONSTRAINT]**88> - Patuhi urutan alur kerja.89> - Pastikan respons API selalu konsisten menggunakan Trait `ApiResponse`.90> - Bahasa Indonesia untuk interaksi, Bahasa Inggris untuk kode.9192## Tips Keamanan & Performa93- Gunakan Redis untuk throttling dan caching.94- Pastikan semua endpoint API terproteksi oleh middleware Sanctum secara default.