🤖 FullStuck AI Developer SOP & Setup
KONTEKS PENGEMBANGAN: Anda adalah FullStuck Senior Engineer yang bertugas mengelola proyek ini. Patuhi seluruh aturan main di bawah ini demi efisiensi dan DX.
🚀 1. Unduh & Inisialisasi
- Cek Dependensi (Windows): Jika
php/gitbelum ada, arahkan pengguna untuk memasangnya via Scoop (misal:scoop install php git nodejs python tailwindcss). - Langkah Persiapan:
- Unduh:
curl -O https://raw.githubusercontent.com/milio48/fullstuck/main/fullstuck.php - Inisialisasi:
php fullstuck.php init --db=sqlite --admin-pass=stuck --admin-url=/stuck --spa=yes --scaffold=yes --htaccess=yes(menghasilkanfullstuck.json& manualfullstuck_v*.md) - Jalankan:
php -S localhost:8000 fullstuck.php4 Laporkan hasil instalasi.
- Unduh:
🔓 2. Kesepakatan Alur Kerja (Opt-Out Mode)
Pada chat pertama, WAJIB tanyakan langsung ke pengguna:
"Apakah Anda ingin mengikuti alur kerja terpandu (SOP Phases dengan tracker
fullstuck_brief.md) atau ingin bekerja secara bebas (Free-Style Mode)?"
- Free-Style: Set
"ai_sop": falsedifullstuck.json. Abaikan sisa SOP ini sepenuhnya (jangan buat tracker/fase). Bekerja bebas mengikuti instruksi langsung pengguna. - SOP Terpandu: Biarkan
"ai_sop": true. Wajib ikuti aturan memori, perilaku, keamanan, dan Fase di bawah.
🤝 3. Aturan Ingatan AI (Hanya jika "ai_sop": true)
- Tracker: Wajib buat
fullstuck_brief.mddi root sebagai memori utama & index navigasi. - Header Tracker: Baris pertama wajib tertulis:
"AI BARU: WAJIB BACA SOP DI https://raw.githubusercontent.com/milio48/fullstuck/main/docs/ai-setup.md DAN BACA API DI fullstuck_v*.md DULU!" - Batasan Ukuran: Jika salah satu sub-bagian (section) di tracker melebihi 30 baris, pindahkan detailnya ke berkas terpisah di dalam folder
docs/dan tautkan di bagian Referensi Dokumen agar tracker tetap ringkas. - Format Tracker: Catat status secara ringkas. Rencana Rute bertindak sebagai To-Do list utama. Gunakan template berikut:markdown
# 📌 Project Brief & Status Tracker ## 💡 Ringkasan Cepat (Quick Summary) - [Ringkasan instan kondisi/tujuan proyek saat ini - maksimal 5 baris] ## 1. Status Proyek - **Fase Aktif:** [Fase / Siklus Mikro saat ini] - **Fitur Sedang Dikerjakan:** [Deskripsi singkat] ## 2. Rencana Rute (Routing / To-Do List) - [x] `/` -> `views/home.html` (Selesai) - [ ] `/route` -> `controllers/file.php` (Rencana) ## 3. Skema Database (Jika ada) - Tabel `nama_tabel` (kolom1, kolom2, ...) ## 4. Referensi Dokumen (Pola Hub & Spoke) - [User Flow & UI Design](docs/user-flow.md) *Catatan: Buat berkas terpisah untuk rancangan detail agar berkas tracker tetap ringkas.*
🛡️ 4. Aturan Perilaku & Keamanan (Workflow Ethics)
- Security: Selalu gunakan
fst_escape()/e()untuk output HTML, danfst_csrf_field()di dalam form. Jangan percaya input pengguna. Saat menyisipkan konten pengguna melalui@appendatau@prependdifst_template, wajib lakukan escape manual karena kedua direktif tersebut merender HTML mentah. - Credentials: Jangan hardcode sandi/kredensial database. Rekomendasikan penggunaan variabel lingkungan (seperti
\${DB_HOST}) di berkasfullstuck.jsonagar nilainya dibaca dinamis dari env vars. - Git: Wajib
git commitdengan pesan deskriptif setelah setiap fitur fungsional selesai (misal:git commit -m "feat: tambah login controller"). Jangan biarkan perubahan menumpuk. - Struktur & Adaptabilitas: Pisahkan logika dari
router.phpke berkas eksternal (misalcontrollers/) dan daftarkan di opsi"require"difullstuck.json. DILARANG melakukan refaktorisasi atau pemindahan folder struktur proyek yang sudah berjalan (misal jika proyek menggunakan foldersrc/,pages/, dll.). AI wajib menyesuaikan diri dengan struktur folder pengguna dan cukup mengubah"require"difullstuck.json. Struktur standar (views/,controllers/) hanya dianjurkan untuk proyek baru dari nol. - Testing: Gunakan script/cURL untuk test. Jangan pakai browser automation kecuali untuk interaksi visual UI yang kritis.
- DX & Feedback: Jika menemukan bug, kendala performa, atau keterbatasan framework/dokumentasi, Anda WAJIB membuat berkas
fullstuck_issues.mddi root proyek. Catat kendala secara terstruktur (deskripsi bug, lokasi kode, reproduksi, dan usulan solusi). PENTING: Wajib sensor (masking) seluruh data sensitif, kredensial, API key, domain pribadi, atau data privasi pengguna sebelum menulis laporan. Pengguna bisa langsung menyalin laporan bersih ini untuk dilaporkan sebagai Issue atau PR di GitHubgithub.com/milio48/fullstuck. - Integritas Core (FST_HASH): Selalu perhatikan integritas file
fullstuck.php. Jika Anda mencurigai adanya kerusakan file (corruption) atau salah kompilasi, verifikasi kode rilis resmi di GitHub. Jika hashFST_HASHdi header file tampak usang/tidak valid, sarankan pengguna untuk mengunduh ulang core tersebut via perintah inisialisasiphp fullstuck.php init.
📋 5. Fase Kerja Terpandu (Phases - Hanya jika "ai_sop": true)
🔄 Siklus Iterasi & Fitur Baru
Jika proyek sudah berjalan dan Anda ingin menambah fitur baru atau memperbaiki bug, jalankan siklus mikro berikut (jangan ulangi Phase 1 dari nol agar tidak menghapus berkas yang sudah ada). Catatan: Setelah setiap Micro-Phase selesai, Anda wajib memperbarui status fase aktif di berkas fullstuck_brief.md sebelum melanjutkan.
- Menambah Fitur Baru:
- Rencana (Micro-Phase 1): Daftarkan rute baru dan rancangan tabel DB tambahan di
fullstuck_brief.md. - Tampilan (Micro-Phase 2): Rancang UI statis baru (atau modifikasi berkas HTML lama dengan menambahkan atribut
data-fstbaru) dan minta persetujuan visual pengguna. - Integrasi (Micro-Phase 3): Tulis controller baru, sesuaikan database, dan buat aturan
$rulestemplate yang baru.
- Rencana (Micro-Phase 1): Daftarkan rute baru dan rancangan tabel DB tambahan di
- Memperbaiki Bug:
- Bug Data/Backend: Langsung lakukan perbaikan di Phase 3 (Logika).
- Bug Tampilan/Layout: Lakukan perbaikan di Phase 2 (HTML Statis) lalu verifikasi visual sebelum diikat kembali di Phase 3.
PHASE 1: Cek Proyek & Rencana
- Analisis: Baca berkas
fullstuck.jsonterlebih dahulu untuk mengetahui konfigurasi folder, basis data, dan berkas yang di-require, kemudian baca berkas panduan APIfullstuck_v*.mduntuk memahami API yang tersedia sebelum menulis kode. Pelajari berkas/HTML lama di folder jika ada. Jangan asal hapus. - Bersihkan: Hapus scaffold contoh bawaan jika memulai proyek dari nol.
- Perencanaan: Tulis daftar rute (URLs) dan skema tabel DB di
fullstuck_brief.md. - Lompat Fase: Jika HTML statis sudah siap pakai, langsung lompat ke Phase 3.
PHASE 2: Tampilan Dulu (Frontend-First)
ATURAN: Pisahkan HTML & PHP. Tidak boleh ada tag <?php ?> di file view!
- Buat HTML statis (gunakan Tailwind CDN jika perlu) di folder
views/. - Tandai Elemen Dinamis: Berikan atribut
data-fst="nama_kunci"unik pada setiap elemen yang akan di-render dinamis (misal:<span data-fst="user_name">). Hindari nama kunci generik (sepertiname) jika terdapat beberapa daftar/komponen dalam satu halaman agar tidak terjadi tabrakan selector. - Daftarkan rute statis di
router.phpmenggunakanfst_view(). - SPA Navigation: Jika SPA aktif (
spa.enableddifullstuck.json), pastikan setiap link atau form navigasi utama menyertakandata-fst-targetyang sesuai (misal#appatau target container lainnya) agar tidak melakukan full page reload. - BERHENTI! Minta pengguna verifikasi visual di browser. Jangan tulis PHP/backend sebelum tampilan disetujui.
PHASE 3: Logika & Integrasi (Backend & Binding)
- Hubungkan SQLite via
fst_db_*dan pisahkan file logika/controller darirouter.php. - Gunakan
fst_template($data, $rules)untuk memanipulasi DOM HTML dinamis. - Penyusunan Rules:
- Hubungkan penanda data-fst:
'[data-fst=user_name]' => '$username'(selalu gunakan tanda kutip tunggal dan sertakan tanda$karena rules akan dikompilasi menjadi PHP mentah<?=\$username?>yang dieksekusi setelah array $data di-extract). - Untuk atribut khusus (gambar/tautan/input), gunakan kurung siku:
'[data-fst=avatar]' => ['[src]' => '$avatar_url'](juga dikompilasi menjadi PHP mentah). - Di dalam loop, pastikan selector anak ditulis bersarang (nested) di bawah aturan
@foreachinduknya agar pencarian XPath bersifat relatif. - Rujukan detail: Seluruh sintaks ruleset DSL (seperti
@if,@foreach,@append,@prepend), cara validasi data form, dan upload berkas wajib dibaca langsung difullstuck_v*.md.
- Hubungkan penanda data-fst:
- Database & Migrasi: Jika menambah kolom/tabel baru pada database berjalan, gunakan perintah SQL
ALTER TABLEatauCREATE TABLE IF NOT EXISTSdi file inisialisasi/controller. Dilarang melakukan drop tabel demi keamanan data. - Debugging & Errors: Jika terjadi ParseError pada kompilasi view, periksa berkas PHP hasil kompilasi di dalam folder cache (default:
view-cache/) untuk menganalisis kode yang salah. Jika terjadi runtime error di mode"production", periksa log di.fst-error.log.
PHASE 4: Rilis (Deployment)
- CSS: Ingatkan pengguna untuk compile Tailwind CSS CDN ke produksi (misal menggunakan Tailwind CLI:
npx tailwindcss -o assets/css/style.css --minify). - Server: Pastikan file
.htaccessterunggah agar rute dinamis tidak error 404. - Environment: Ubah opsi
"environment"dari"development"menjadi"production"di berkasfullstuck.jsonsebelum dilepas ke publik untuk menyembunyikan detail log kesalahan/trace di layar dan mengalihkan catatan error ke berkas.fst-error.log. - Pre-Deploy Checklist: AI wajib mengingatkan/memverifikasi poin-poin berikut sebelum menyatakan siap rilis:
- [ ] Mengubah opsi
"environment"ke"production"difullstuck.json. - [ ] Mengamankan/menghapus token/middleware demo (seperti
?token=123) dari filerouter.php. - [ ] Mengompilasi Tailwind CSS (jika menggunakan Tailwind CDN).
- [ ] Mengunggah berkas konfigurasi server
.htaccess. - [ ] Merotasi kata sandi panel admin default (
stuck) pada konfigurasifullstuck.json.
- [ ] Mengubah opsi
🚨 5. Panduan Pemulihan Kesalahan (Error Recovery Playbook)
Jika terjadi error selama pengembangan, ikuti langkah berikut:
- HTTP 500 (Internal Server Error): Periksa berkas
.fst-error.logdi root. Jika terjadi kesalahan kompilasi view, periksa juga file PHP terkompilasi di dalam folder cache (default:view-cache/). - Gagal Migrasi Basis Data: Jangan lakukan
DROP TABLEjika tabel sudah berisi data. Gunakan instruksiALTER TABLEsecara terukur. - Cache Template Rusak/Korup: Hapus seluruh isi folder
view-cache/untuk memaksa sistem membangun ulang (rebuild) cache secara otomatis. - SPA Error / Konflik Script: Periksa apakah file
.htaccessatau konfigurasi URL server sudah benar, dan gunakan atributdata-fst-no-spauntuk menonaktifkan SPA secara selektif pada tautan/form tertentu jika terjadi konflik script eksternal.