﻿> ## INI FILE BUAT AI BACA, BUKAN KAMU!
>
> **Halo staff baru!** Kalau kamu **bukan programmer**, JANGAN baca isi file ini - bikin pusing dan nggak perlu. Langsung buka **`MULAI_DI_SINI.md`** (1 halaman, bahasa awam).
>
> **Cara pakai file ini (4 langkah):**
> 1. Buka **Claude Code** (aplikasi AI-nya).
> 2. **Copy seluruh isi file ini**: tekan `Ctrl+A` (select all) lalu `Ctrl+C` (copy).
> 3. **Paste ke chat Claude Code**: tekan `Ctrl+V` lalu Enter.
> 4. **Selesai** - AI auto-execute semua langkah di bawah.
>
> **Total waktu**: ~5 menit kamu copy-paste + AI kerja sendiri.

---

> ## 📌 SUMBER TUNGGAL ISI POPUP
>
> File ini = **satu-satunya tempat** definisi popup setup (Setup Mode, Project Type,
> Audit, Split, Pending Action Items). Jalur `npx init` (`POST_SETUP_CHECKLIST_PROMPT_v1.md`)
> **TIDAK** mendefinisikan popup sendiri — ia **menjalankan popup yang didefinisikan DI SINI**.
> Tujuannya: isi popup mustahil melenceng antar-2 jalur (dulu sempat beda).
>
> - **Jalur utama** (staff non-programmer): `npx @ojokesusu/lintasai init` → closing kit
>   panggil `POST_SETUP_CHECKLIST_PROMPT_v1.md` → file itu menjalankan Bagian 2/3/5/6/7 file INI.
> - **Jalur cadangan** (kalau `npx` gagal / sesi putus): owner paste file ini manual → flow sama persis.

---

Tolong jalankan setup Pola B kit AI di proyek ini. Aku sudah copy folder `claude-ai-rules-kit/` (atau versi terbaru di-extract dari zip / di-clone dari GitHub) ke root proyek.

Eksekusi workflow ini end-to-end (rename folder, run script, write skeleton `docs/` + file tim `.github/`, scan struktur proyek read-only). AI proceed dengan defaults tanpa nanya tiap step REGULER. **Tampilkan PETA LANGKAH dulu (Bagian 0)**, lalu jalankan **beberapa popup utama** sesuai kondisi project (cara pasang, ukuran tim, catatan kode, audit, pecah-repo — yang relevan saja); tiap selesai langkah, umumkan kesimpulan + langkah berikutnya. Destructive ops tetap WAJIB konfirmasi 1x.

> **Confirmation Policy (auto-confirm mode)**: Sesuai user auto-confirm preference: AI proceed dengan defaults tanpa nanya tiap step REGULER. Beberapa popup utama (cara pasang, ukuran tim, catatan kode, audit, pecah-repo — yang relevan saja) yang require explicit input. Destructive ops (delete, force-push, rm -rf, DROP, prisma migrate prod) tetap WAJIB konfirmasi 1x walau auto-confirm aktif. Lihat `CLAUDE_universal_v1.md` section 8.1 (AI Anti-Prompt-Injection Rules) untuk detail.

> Catatan: Claude Code IDE mungkin tetap nanya YES/NO untuk tool call individu (PowerShell, Edit) tergantung permission setting kamu (centang "Always allow" kalau muncul). Itu IDE-level, bukan dari prompt ini.

---

## Klarifikasi Terminologi Popup (BACA DULU — Anti-Misinterpretation)

> v1 · 2026-06-08 · Lintasai punya **2 sistem popup** yang sering tertukar. Dokumen ini pakai keduanya — kenali bedanya supaya tidak salah expect.

### Tipe A — **AI Popup dalam chat** (pertanyaan dari AI di sesi Claude Code)

- **Apa**: pertanyaan pilihan dari AI ke user. **2 bentuk tampil (v1.11.0 — "popup klik dulu, teks cadangan")**:
  - **A-klik (UTAMA — WAJIB kalau tersedia)**: AI pakai tool popup-pilihan native Claude Code (`AskUserQuestion`) → muncul **kotak pilihan yang BISA DIKLIK**. User tinggal **klik** jawabannya — tidak perlu baca blok teks panjang, tidak perlu ketik angka.
  - **A-teks (CADANGAN)**: HANYA kalau tool popup tidak tersedia (harness non-Claude-Code / tool error) → AI tulis blok pertanyaan teks (markdown numbered list), user balas ketik **digit `1` / `2` / `3` / `Enter`** atau token seperti `[skip]` / `[cancel]`.
- **Medium**: dalam chat/IDE Claude Code — kotak pilihan klik (A-klik) atau teks (A-teks). **TIDAK ADA window Windows terpisah yang pop up**.
- **Trigger**: prompt MD yang AI execute (mis. `JALANKAN_KIT.md`, `AUDIT_POST_SETUP_PROMPT_v1.md`).
- **Contoh di kit**:
  - `JALANKAN_KIT.md` **Popup #1 / #2 / #3** (Setup Mode / Project Type / Audit Now)
  - `CLAUDE_universal_v1.md` section 4.4 Audit (popup tawar audit READ-ONLY — detail di `LINTASAI_WORKFLOWS_v1.md` §4.4)
  - `CLAUDE_universal_v1.md` section 4.5 Update Strategy (popup confirm 3-option ya/nanti/batal)
- **Headless-safe**: aman jalan via SSH / Server Core / CI — mode A-teks (fallback) cuma text di chat, tidak butuh display.
- **Auto-confirm mode**: AI **TETAP wajib tunggu user reply** untuk Tipe A (sesuai section 8.1 anti-prompt-injection). Cuma destructive ops yang force konfirmasi.

### Tipe B — **WPF GUI Popup** (Windows native dialog, mouse-click)

- **Apa**: PowerShell script (`setup-pola-b.ps1`, `install-windows.ps1`, helper di `lib/popup-helpers.ps1`) tampilkan **window Windows native** (WPF) → user **klik tombol mouse** atau ketik di text field GUI.
- **Medium**: Windows desktop window (visual dialog box), bukan chat text.
- **Trigger**: PS script eksekusi via `Show-LintasChoicePopup`, `Show-LintasYesNoPopup`, `Show-LintasInputPopup`, `Show-LintasNumberedChoicePopup`, `Show-LintasInfoPopup`, `Show-LintasSecurityChoicePopup`.
- **Contoh di kit**:
  - `setup-pola-b.ps1`: AGENTS.md choice (Skip/Overwrite/Backup), email input, "Buka VS Code?", Tip dialog
  - `docs/CLAUDE_CODE_MEDIATED_INSTALL.md` Step 3 "5x klik popup"
- **Auto-fallback**: kalau detect headless (no display) → **collapse ke `Read-Host` console mode** dengan **default safe choice** terpilih otomatis (`-NoGui` switch atau env detect). Lihat troubleshoot section "Popup tidak muncul" di `docs/CLAUDE_CODE_MEDIATED_INSTALL.md` L94.
- **Auto-confirm mode**: AI **tidak bisa bypass** Tipe B karena ini level OS dialog. User WAJIB klik manual (atau script jalan pakai default).

### Quick-Reference: di file ini "popup" merujuk ke yang mana?

| File | Default makna "popup" | Catatan |
|---|---|---|
| `JALANKAN_KIT.md` | **Tipe A** AI Popup dalam chat | Semua "Popup #1/#2/#3" = **popup klik** (`AskUserQuestion`) kalau tersedia; fallback teks ketik-angka. Tidak ada window Windows terpisah. |
| `CLAUDE_universal_v1.md` section 4.4 / 4.5 / 14 | **Tipe A** AI Popup dalam chat | Mis. popup audit/update = kotak klik (`AskUserQuestion`) kalau tersedia; fallback teks ketik-angka di chat. |
| `CLAUDE_universal_v1.md` section 14.1 | **Keduanya** (UNIFIED convention) | Aturan format konsisten untuk Tipe A + Tipe B. |
| `docs/CLAUDE_CODE_MEDIATED_INSTALL.md` | **Tipe B** WPF GUI | Semua "klik popup" = window Windows native (mouse-click). |
| `MULAI_DI_SINI.md` L119 | **Keduanya** (generic FAQ) | Aturan defensif: ragu = STOP, tanya owner Discord. |
| PS scripts (`setup-pola-b.ps1`, `install-windows.ps1`, `lib/popup-helpers.ps1`) | **Tipe B** WPF GUI dengan auto-fallback Read-Host | Headless = console mode, default safe. |

### Rule of Thumb (kalau ragu)

- **Lihat siapa yang execute** → AI execute prompt MD = Tipe A. PowerShell execute `.ps1` = Tipe B.
- **Lihat verb yang dipakai** → "klik opsi DI DALAM chat / ketik `1`/`2` balas chat" = Tipe A. "window Windows TERPISAH muncul, klik tombol" = Tipe B.
- **Lihat headless behavior** → "always works via SSH" = Tipe A. "auto-fallback ke Read-Host kalau headless" = Tipe B.
- **Lihat nama function** → `Show-Lintas*Popup` PS function = Tipe B selalu. `AskUserQuestion` / markdown numbered list di chat = Tipe A selalu.

### Owner-facing Expectation Setting

Saat owner paste `JALANKAN_KIT.md` ke Claude Code chat: AI akan menampilkan Popup #1 sebagai **kotak pilihan yang bisa DIKLIK** (fitur kotak-pilihan bawaan Claude Code) — owner tinggal klik jawaban. Kalau yang muncul justru blok teks `[1]/[2]/[3]`, itu mode cadangan — balas dengan ketik angka di chat. **JANGAN tunggu window Windows terpisah.** Popup Tipe B (jendela Windows terpisah, mirip kotak "Save As" di Word) baru muncul saat `setup-pola-b.ps1` jalan (Bagian 1 step 4) untuk AGENTS.md choice + email input + "Buka VS Code?" — itu dijalankan skrip PowerShell, bukan AI di chat.

### Cara Tampil Popup (WAJIB — berlaku untuk SEMUA popup Tipe A: Popup #1/#2/#3, popup Bagian 6 & 7, DAN popup Tipe A di file lain — audit / update / split-repo / lifecycle)

> v1.11.0 · Feedback owner 2026-06-12: blok teks panjang ketik-angka TIDAK terasa seperti "popup" buat staf non-programmer — yang diharapkan = kotak pilihan klik.

1. **Kalau tool popup-pilihan native tersedia** (di Claude Code: `AskUserQuestion`) → AI **WAJIB** render tiap popup lewat tool itu: 1 pertanyaan per popup, label singkat (detail panjang masuk description tiap opsi), **opsi recommended ditaruh PERTAMA + akhiran "(rekomendasi)"** — pakai kata yang SAMA dengan label blok teks (label IDENTIK antar mode, selaras RULE-7; JANGAN ganti jadi "(Recommended)" Inggris).
2. **Maks 4 opsi UTAMA per pertanyaan.** Opsi meta (`[skip]`/`[cancel]`/`[help]`) **TIDAK ikut dihitung dan JANGAN dijadikan opsi klik tersendiri** — di mode klik user memakai "Other" (ketik `skip`/`cancel`/`help`); sebut singkat di teks pertanyaan kalau perlu. Kalau opsi utama >4 → pecah jadi 2 pertanyaan. Pertanyaan **multi-pilih** (mis. sub-menu PILIH SENDIRI pilih kategori) → pakai mode multi-pilih tool; kalau daftarnya terbuka/panjang → tanya sebagai teks bebas (bukan popup pilihan).
3. **Blok teks `[1]/[2]/[3]` di tiap Bagian = ISI KANONIK + fallback** — sumber kebenaran label & makna opsi. Dipakai persis apa adanya HANYA kalau tool popup tidak tersedia. **JANGAN render dobel** (popup klik + blok teks sekaligus = membingungkan).
4. **Mode klik TIDAK punya tombol Enter/default** — user wajib klik salah satu. Konsekuensi: (a) baris "Default (Enter/kosong) → [N]" hanya berlaku di mode teks; (b) opsi yang jadi default di mode teks WAJIB dipindah ke posisi PERTAMA + "(rekomendasi)" saat dirender klik; (c) khusus **popup destruktif/berisiko** (yang di mode teks sengaja menaruh opsi aman BUKAN di [1] supaya user ketik angka eksplisit): di mode klik **opsi AMAN ditaruh PERTAMA + "(rekomendasi)"** dan opsi berisiko paling BAWAH — satu klik salah lebih gampang terjadi daripada salah ketik angka.
5. **Default dinamis MENANG atas urutan blok teks**: kalau popup punya auto-deteksi (RULE-4b — mis. Popup #2 "Enter = auto-deteksi"), jalankan deteksinya DULU sebelum popup, lalu taruh HASIL deteksi sebagai opsi pertama "(rekomendasi)". Urutan kanonik blok teks = cadangan kalau deteksi gagal.
6. **Bahasa tampilan WAJIB awam (per §2.1 CLAUDE_universal)**: SEMUA teks yang AI tampilkan ke user — pertanyaan popup, label & description opsi, pesan status, laporan — WAJIB bahasa non-programmer. Kalau blok kanonik masih mengandung jargon mentah (mis. "monorepo", "split repo", "business logic", "commit ke docs/"), AI WAJIB **menerjemahkannya saat merender** (jargon → padanan awam + analogi singkat kalau perlu) — **makna, jumlah, dan nomor opsi TIDAK berubah**. Contoh: "monorepo" → "1 repo berisi semua bagian aplikasi"; "split repo" → "pecah aplikasi jadi beberapa repo terpisah"; "business logic" → "logika bisnis (aturan main aplikasi)".

---

## WORKFLOW (lakukan otomatis tanpa konfirmasi tambahan AI-side, kecuali popup yang ditandai)

### Bagian 0 - Tampilkan PETA LANGKAH dulu (WAJIB — biar user tahu posisi)

> v1.16.0 · Feedback owner 2026-06-14: staf non-programmer bingung "sekarang di langkah mana + apa berikutnya". AI WAJIB tampilkan peta langkah SEBELUM mulai, lalu umumkan posisi tiap pindah bagian. Tujuan: alur terasa seperti rangkaian popup yang jelas (pilih → dikerjakan → ditawari lagi), bukan hal-hal yang jalan diam-diam.

0a. **Sebelum mulai**, AI tampilkan peta langkah ringkas (bahasa awam). Sesuaikan jumlah langkah dengan kondisi project — popup conditional yang TIDAK muncul (audit/pecah-repo) jangan dihitung:
```
🗺️ Pemasangan lintasAI - peta langkah (kira-kira X langkah):
  1. Pasang kit + aturan tim (otomatis, ~1 menit)
  2. POPUP: pilih cara pasang (lengkap / cepat / pilih-sendiri)
  3. POPUP: ukuran tim
  4. Kerja otomatis: scan project + bikin denah database
  5. POPUP: catatan kode dibuat sekarang atau nanti? (kalau project sudah ada kodenya)
  6. POPUP: audit menyeluruh? (kalau project sudah matang)
  7. POPUP: pecah-repo? (kalau cocok)
  8. Laporan daftar tugas-menunggu (tiap tugas ada popup-nya)
Kita mulai dari langkah 1. Aku kabari tiap pindah langkah.
```

0b. **Tiap selesai 1 langkah**, AI WAJIB tutup dengan kesimpulan 1-baris bahasa awam + sebut langkah berikutnya: *"✅ Selesai: <hasil singkat>. Berikutnya: <popup/kerja apa>."* JANGAN lompat langkah tanpa pemberitahuan, JANGAN biarkan ada tugas besar jalan tanpa user tahu sedang apa.

### Bagian 1 - Setup teknis (auto, no popup)

1. Konfirmasi folder kit (`claude-ai-rules-kit/` atau nama serupa, atau `.claude-kit/` kalau clone dari GitHub) ada di root proyek.
2. Rename folder jadi `.claude-kit/` kalau belum (PowerShell `Rename-Item`). Kalau hasil clone, biasanya sudah `.claude-kit/`.
3. **Kalau hasil clone**: hapus `.claude-kit/.git/` supaya tidak konflik dengan git proyek user (`Remove-Item .claude-kit\.git -Recurse -Force` di PowerShell).
4. Jalankan `.\.claude-kit\setup-pola-b.ps1 -Force` via PowerShell. Kalau kena Execution Policy: `Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass` dulu.
5. Tunjukkan output script (setup-pola-b.ps1 auto-copy file skeleton + 28 file tim profesional ke proyek by default).
6. Verifikasi: `AGENTS.md` di root tergenerate + 14 file inti `.claude-kit/` ada + 5 file skeleton `docs/` + 28 file tim (8 di `.github/` + 20 panduan di `docs/`).
7. Baca `AGENTS.md` + `.claude-kit/CLAUDE_universal_v1.md` (terutama seksi 4.1 Multi-Divisi + 4.2 Pattern-Driven + 4.3 Guided Step-by-Step + 7.1-7.5 dokumentasi) untuk load aturan.

### Bagian 2 - POPUP UTAMA #1: Setup Mode

> **Sebelum show popup**, AI auto-detect stack via `templates/STACK_DETECTION_PATTERN.md`. Hasil detection dipakai untuk auto-decide Popup #2 default + Popup #3 conditional.

8. **AI WAJIB tanya user** (Popup #1 — tampilkan sebagai **popup klik** per "Cara Tampil Popup" di atas; blok di bawah = isi kanonik + fallback teks):

```
🎯 Pemasangan lintasAI - Pilih cara (Enter = LENGKAP, disarankan):

[1] LENGKAP (rekomendasi) ⭐ DEFAULT — staff langsung dapat peta proyek + denah database yang akurat, tanpa celah catatan
    ✅ Pasang kit + aturan tim
    ✅ Bikin catatan project + denah database lengkap:
       • Project KOSONG/fresh    -> dibuat SEKARANG (~30-60 menit)
       • Project SUDAH ADA ISInya -> denah database SEKARANG; catatan KODE
         dibuat di AKHIR, setelah audit + rapikan/pecah (biar tidak cepat basi)
    ✅ Staff dapat peta lengkap yang AKURAT (cocok dengan kode final)
[2] CEPAT
    ✅ Pasang kit + aturan tim
    ✅ Catatan dibuat OTOMATIS saat dibutuhkan (~5 menit)
[3] PILIH SENDIRI
    Atur per bagian (untuk yang sudah paham)

Ketik angka: ___ (kosong/Enter = 1 LENGKAP)
```

9. Tunggu jawaban user (auto-confirm: kosong/Enter → "1" = LENGKAP, disarankan):
   - **"1" / Enter / kosong** ⭐ DEFAULT → Mode LENGKAP (dulu "Full"). Lanjut Popup #2 + auto-execute bulk-bootstrap SEMUA kandidat CRITICAL + schema scan setelah Popup #2 dijawab.
   - **"2"** → Mode CEPAT (dulu "Quick"). Lanjut Popup #2. Bulk-bootstrap di-defer (LAZY-GENERATE aktif).
   - **"3"** → Mode PILIH SENDIRI (dulu "Advanced"). Lanjut Popup #2, lalu sub-menu pilih per bagian (auth saja / DB saja / dst).

### Bagian 3 - POPUP UTAMA #2: Project Type & Future Plans

10. **AI WAJIB tanya user** (Popup #2 — tampilkan sebagai **popup klik** per "Cara Tampil Popup" di atas; blok di bawah = isi kanonik + fallback teks):

```
🏗️ Tim kamu berapa orang? (pilih sesuai RENCANA 3-6 bulan ke depan, bukan cuma kondisi hari ini — deteksi otomatis hanya melihat daftar staff SAAT INI)

[1] TIM KECIL (rekomendasi) ⭐ DEFAULT — pilihan teraman saat ragu; panduan tim aktif tanpa ribet, gampang naik level nanti
    → 1-5 orang (atau rencana rekrut dalam 3-6 bulan). Panduan tim aktif tanpa ribet.
[2] TIM BESAR / BERKEMBANG
    → 5+ orang (atau rencana tumbuh ke sana). Disiapkan untuk pecah-repo nanti (pecah aplikasi jadi beberapa repo / tempat-simpan-kode terpisah) + kerja banyak-peran.
[3] SENDIRI
    → kamu sendiri, belum ada rencana nambah staff.

Ketik angka: ___ (kosong/Enter = auto-deteksi; cadangan 1 TIM KECIL)
```

> **Kenapa cuma tanya ukuran tim?** "Project lama yang berantakan / mau dirapikan ke standar tim" **TIDAK ditanya di sini** — itu **dideteksi OTOMATIS** (Phase 5b hitung jumlah file). Dulu ada opsi `[4] MIGRATION` di sini, tapi **mubazir** (sudah terdeteksi) + mencampur 2 pertanyaan beda (ukuran tim vs keadaan project). Dihapus v1.6.6.
> **Dynamic re-order (RULE-4b)**: AI WAJIB auto-detect (staff-roster.yml, monorepo signal) lalu taruh yang paling relevan di [1]. **Default kit (keputusan owner 2026-06-12) = TIM KECIL**: daftar staff yang kosong BUKAN alasan menaruh SENDIRI di [1] — daftar kosong itu normal di install pertama (belum sempat diisi), jadi sinyalnya lemah; SENDIRI = pilihan manual user, jangan pernah jadi saran otomatis. Hanya sinyal KUAT 5+ orang (roster ≥5 / monorepo besar multi-tim) yang boleh menggeser TIM BESAR ke [1]. Untuk monorepo + code existing + sinyal 5+ orang → AI STRONGLY recommend pecah-repo di Bagian 6 (`lib/project-detect.ps1`).

11. Tunggu jawaban user (auto-confirm: kosong/Enter → auto-detect; cadangan "1" TIM KECIL):
   - **"1" TIM KECIL** ⭐ DEFAULT → file tim `.github/` + `docs/CLAUDE_TEAM_GUIDE.md` aktif. Pecah-repo = conditional (Bagian 6: muncul kalau monorepo + matang). Ingatkan isi CODEOWNERS dengan username asli.
   - **"2" TIM BESAR/BERKEMBANG** → semua fitur tim + auto-offer pecah-repo di akhir (kalau juga monorepo + matang).
   - **"3" SENDIRI** → skip pecah-repo offer. CODEOWNERS placeholder OK. Skip docs onboarding berat.
   - **Catatan pengaman (WAJIB AI sampaikan untuk [1] & [2])**: alur "minta persetujuan sebelum gabung" **BARU TERKUNCI** setelah owner mengaktifkan **branch protection** (pelindung jalur utama — pagar di GitHub yang menolak perubahan langsung tanpa review). Kit hanya MENDETEKSI + menyarankan, TIDAK bisa mengaktifkannya sendiri. Cara aktifkan: GitHub → Settings → Branches, atau skrip bantu `.github/scripts/setup-branch-protection.ps1`. Tanpa ini, siapa pun yang punya akses tetap bisa langsung mengubah versi utama. 🏢 Analogi: kit memasang papan "wajib lapor satpam" — palang pintunya owner yang menurunkan.

11b. **Ganti ukuran tim belakangan (alur resmi)**: kapan pun user chat *"ubah ukuran tim jadi SENDIRI / TIM KECIL / TIM BESAR"* → AI WAJIB: (1) terapkan ulang arahan step 11 + action items step 15 untuk level BARU — naik level = tagih CODEOWNERS + kunci API + branch protection; turun level = berhenti menagih, **JANGAN hapus file apa pun**; (2) catat perubahan 1 baris di `AGENTS.md`; (3) lapor ringkas apa yang berubah. File tim TIDAK perlu di-copy ulang — sudah terpasang sejak setup (anti-overwrite), tinggal "dibangunkan".
   - **TAMBAHAN (deteksi-otomatis, LEPAS dari ukuran tim)** → kalau Phase 5b mendeteksi project **SETENGAH JADI** (sudah ada code existing) → AI WAJIB tawarkan **"Rapikan ke Standar Tim"** (`PROJECT_LIFECYCLE_PROMPT_v1.md` Stage 4): scan code existing → nilai gap docs → rapikan bertahap. Ini **menggantikan opsi [4] MIGRATION lama** (yang dihapus karena mubazir).

12. **AI auto-execute file tim copy + scan + bulk-bootstrap berdasarkan combo Popup #1 + Popup #2** (tanpa popup tambahan):
- File tim ter-copy oleh setup script (anti-overwrite, **28 file**: 8 di `.github/` [4 robot workflow + 2 skrip + CODEOWNERS + PR template] + 20 panduan di `docs/` [panduan tim, glossary, playbook keamanan, peta ancaman, kontrol-akses, ADR template]). Daftar persisnya = variabel `$teamFiles` di `setup-pola-b.ps1` (sumber tunggal — jangan tulis ulang daftar di sini supaya tidak cepat basi).
- **UNIVERSAL ADAPTIVE SCAN** (read-only, no cap): auto-detect tech stack dari manifest, glob recursive folder source umum, pattern CRITICAL (auth / db / security / api / entry / feature domain), filter skip auto-generated, hitung total kandidat per kategori + per subfolder.
- **DB schema scan** (kalau detected): `prisma/schema.prisma`, `db/schema.ts`, `models/*`, `migrations/*`, `@Entity` annotation → generate `docs/db-schema.md` (denah database + ER diagram) via `templates/DB_SCHEMA_SCAN_PROMPT.md`. **Pagar aman**: hanya baca STRUKTUR (denah), JANGAN baca `.env`/secret, JANGAN salin data pribadi asli (PII) ke docs. Kalau tidak ada file schema → lapor "denah database tidak ditemukan; kalau project kamu pakai database, tunjukkan ke AI file schema-nya (file denah struktur database)" (jangan diam).
- **Auto-decide grouping strategy**: < 30 kandidat → flat di `docs/<basename>.md`; >= 30 → subfolder grouping (`docs/api/`, `docs/lib/`, `docs/security/`, `docs/features/<nama>/`, `docs/middleware/`).
- **Bulk-bootstrap derive dari Popup #1** (urutan SADAR-KONDISI — v1.7.1):
  - **WAJIB lapor progres** (jangan layar diam — v1.16.1): saat bulk-bootstrap jalan, AI kabari user per 5-10 berkas dengan bahasa awam, mis. "Lagi bikin catatan: `auth.ts`, `db.ts` ... (12 dari 50 berkas)". Tanpa ini user duduk lihat layar diam 2-3 menit → kira mogok lalu tutup sesi.
  - Popup #1 = "1" LENGKAP (DEFAULT/Enter):
    - **Project FRESH/kosong** (TIDAK match trigger maturity Popup #3) → execute bulk-bootstrap SEKARANG: `PROJECT_LIFECYCLE_PROMPT_v1.md` Stage 2 untuk SEMUA kandidat + schema scan + dependency audit.
    - **Project MATANG/setengah-jadi** (match trigger maturity: ≥90 file source + business logic) → **Tetap kerjakan DB schema scan SEKARANG** (struktur DB jarang berubah + berguna untuk audit). Untuk catatan KODE, **AI WAJIB TANYA dulu lewat POPUP #2C — JANGAN diam-diam menunda** (keputusan owner 2026-06-14; dulu ditunda diam-diam → user bingung "kok catatan kode tidak muncul"). Tampilkan sebagai **popup klik** (per "Cara Tampil Popup"); blok di bawah = isi kanonik + fallback teks:
      ```
      📝 Project kamu sudah ada kodenya. Catatan KODE (penjelasan tiap file penting) mau dibuat kapan?

      [1] Nanti, setelah dirapikan/dipecah (rekomendasi) ⭐ DEFAULT — biar catatan cocok dengan kode final, tidak cepat basi
          → catatan PASTI cocok dengan kode final, tidak cepat basi. Dibuat di langkah akhir.
      [2] Sekarang juga
          → langsung lihat hasilnya. Tapi kalau habis ini kode dirapikan/dipecah,
            sebagian catatan bisa agak basi + perlu dibuat ulang.
      Default (Enter/kosong) -> [1] Nanti (setelah rapikan)
      ```
      - **"1" / Enter / kosong** ⭐ DEFAULT → TUNDA catatan kode ke Bagian 6b (setelah audit + rapikan/pecah). Beri tahu user: "Oke — denah database sudah dibuat sekarang; catatan KODE dibuat di langkah akhir biar cocok dengan kode final (tidak cepat basi)." (🏢 Analogi: rapikan gudang dulu, baru bikin katalognya.)
      - **"2" Sekarang** → execute bulk-bootstrap catatan kode SEKARANG (`PROJECT_LIFECYCLE_PROMPT_v1.md` Stage 2) untuk SEMUA kandidat, pada kondisi kode saat ini. Catat di laporan: "catatan dibuat atas kode yang belum dirapikan — kalau nanti dirapikan/dipecah, sebagian perlu di-refresh."
  - Popup #1 = "2" CEPAT → SKIP bulk-bootstrap. LAZY-GENERATE per-file aktif.
  - Popup #1 = "3" PILIH SENDIRI → tampilkan sub-menu pilih kategori (auth saja / DB saja / security saja / dst).

### Bagian 4 - Sapa user + announce aturan (auto, no popup)

13. Sapa user Bahasa Indonesia ramah, sebut versi kit aktif + kondisi yang aktif (mode Popup #1 + project type Popup #2 + status bulk-bootstrap). **Kalau mode Full**: sebut TEGAS hasil yang dibuat dengan bahasa non-programmer, mis. "✅ Dokumentasi awal proyek dibuat (N file). ✅ Denah database dibuat: `docs/db-schema.md` (X tabel + diagram hubungan)." Supaya user tahu persis apa yang dia dapat — jangan diam-diam.
- **Kalau proyek masih nyaris-kosong** (setup melewati `docs/` + berkas tim karena belum ada isi — v1.16.1): AI WAJIB beri tahu user dengan JELAS, jangan diam: "Proyekmu masih kosong, jadi peta proyek + berkas tim belum dibuat sekarang — nanti otomatis dibuat begitu sudah ada kode. Aturan tim tetap aktif lewat `CLAUDE.md`." Jangan biarkan user mengira setup gagal hanya karena folder `docs/` / `.github/` belum muncul (pesannya cuma lewat di layar PowerShell yang sudah ke-scroll naik).

14. Umumkan **4 aturan dokumentasi tim profesional** (`CLAUDE_universal_v1.md` seksi 7.1-7.4) - **WAJIB untuk SEMUA kondisi**:
- **7.1 AUTO-SYNC** - tiap edit code yang punya `docs/<basename>.md`, AI WAJIB update `.md` di sesi yang sama.
- **7.2 LAZY-GENERATE** - tiap buat/edit file kode PENTING (auth/database/keamanan) yang belum ada catatan `.md`, AI **menawarkan** bikin catatannya satu-per-satu.
- **7.3 READ-MINIMAL** - AI baca peta proyek (`docs/architecture.md` + `docs/architecture_auto.md`) DULU, lalu pilih hanya catatan yang relevan (cherry-pick = ambil yang perlu saja).
- **7.4 ARCHITECTURE REGISTRY** - `docs/architecture.md` = peta makro user-edit + `docs/architecture_auto.md` = registry TOC AI-maintained.

15. Arahkan user ke action items berdasarkan ukuran tim (Popup #2):
- **TIM KECIL / TIM BESAR**: edit `.github/CODEOWNERS`: ganti placeholder (nama contoh sementara) dengan GitHub username asli. Setup `ANTHROPIC_API_KEY` di GitHub Secrets. **Aktifkan branch protection** (lihat "Catatan pengaman" step 11 — tanpa ini alur minta-persetujuan TIDAK terkunci). Baca `docs/CLAUDE_TEAM_GUIDE.md` + `docs/PROMPT_LIBRARY.md`. **WAJIB arahkan ke `docs/OWNER_SETUP_CHECKLIST.md`.**
- **SENDIRI**: skip CODEOWNERS setup. Reminder kalau pakai DB: setup PostgreSQL role per `docs/MCP_SETUP.md`. **WAJIB AI sebut 2 hal singkat**: (a) file tim (`.github/` dll.) ikut terpasang tapi "tidur" — aktif kapan pun rekrut staff (alur resmi: step 11b); (b) **peringatan kunci API**: robot review PR (`.github/workflows/ai-review.yml`) jalan otomatis saat PR pertama dibuat — tanpa `ANTHROPIC_API_KEY` di GitHub Secrets dia gagal dengan **tanda silang merah** (itu robotnya yang belum dikasih kunci, BUKAN kode kamu yang salah). Pasang kunci dulu sebelum PR pertama, atau abaikan tanda merahnya sampai kunci dipasang.
- **Project setengah jadi (deteksi otomatis, lepas dari ukuran tim)**: kalau ditawarkan + user setuju, workflow "Rapikan ke Standar Tim" jalan — follow output `PROJECT_LIFECYCLE_PROMPT_v1.md` (Stage 4).

15a. **Adaptive commit guidance (v1.5.6 Fix #3)**: setup-pola-b.ps1 closing summary auto-detect branch protection via `Test-MainBranchProtected` (helper di setup-pola-b.ps1). AI WAJIB surface guidance yang sesuai:
- **Branch `main` ter-protect** → suruh user pakai pattern branch + PR (`git checkout -b chore/setup-lintasai-kit` → push → `gh pr create --fill`). Direct commit ke main akan ditolak GitHub.
- **Branch `main` unprotected** → direct commit OK (`git add ... && git commit -m 'chore: setup standar tim IT (lintasAI v1.5.6)'`).
- **Tidak bisa detect** (gh CLI missing / no remote / no auth) → recommend pattern branch + PR sebagai default safe (warn user untuk cek manual di GitHub Settings → Branches).

15b. **Package manager guidance (v1.5.6 Fix #2)**: setup-pola-b.ps1 closing surface install command yang benar via `Get-PackageManager` (helper di `lib/project-detect.ps1`). AI WAJIB ingatkan user pakai command yang DETECTED (mis. `pnpm install` di project pnpm, BUKAN salah ketik `npm install` yang corrupt lockfile).

### Bagian 5 - POPUP CONDITIONAL #3: Audit Now? (cuma muncul kalau project mature)

16. **AI auto-detect project maturity** via `templates/STACK_DETECTION_PATTERN.md`:
- **Trigger conditions** (SEMUA harus terpenuhi):
  - Project punya code real (>= 90 file source NYATA — hitung file kode `.ts/.tsx/.js/.py/.go/dst`, JANGAN hitung file tes/config/auto-generated; bukan boilerplate fresh)
  - Business logic exist (folder `src/` / `app/` / `lib/` terisi feature actual)
  - Bukan template default (manifest punya custom deps, bukan starter kit kosong)
- Kalau **tidak match** → skip Popup #3, langsung closing.

17. **AI WAJIB tanya user kalau trigger terpenuhi** (Popup #3 conditional — tampilkan sebagai **popup klik** per "Cara Tampil Popup" di atas; blok di bawah = isi kanonik + fallback teks):

```
🔍 Project kamu sudah matang (terdeteksi: 90+ file kode, sudah ada logika bisnis / fitur nyata yang jalan).

Mau audit menyeluruh sekarang? (diperiksa dari 8 sisi, 5-10 menit)

Pilihan:
  [1] Ya, audit menyeluruh sekarang (cek 8 sisi, 5-10 menit) (rekomendasi, default) — mumpung baru dipasang, sekali cek langsung ketahuan yang perlu dibenahi; mode aman cuma-baca
  [2] Tidak, audit nanti
  [skip] Lewati audit untuk sesi ini
Default (Enter/kosong) -> [1] Ya
```

18. Tunggu jawaban (auto-confirm mode teks: kosong/Enter → [1] audit sekarang; di mode klik user wajib klik salah satu):
   - **"1" / "Y" / Enter / kosong** ⭐ DEFAULT → Eksekusi `AUDIT_POST_SETUP_PROMPT_v1.md` workflow langsung (read-only). 8 dimensi: refactor / security / qa-test / database / devops / performance / docs-gap / onboarding. Adversarial verify per finding. Output ranked low → high risk (3 tier) + analogi non-programmer + sprint execution plan. Detail di `CLAUDE_universal_v1.md` section 4.4 + file standalone `AUDIT_POST_SETUP_PROMPT_v1.md`.
   - **"2" / "N" / [skip]** → Skip audit. Tutup dengan: **"Semua aktif. Mulai tugas pertama kapanpun - aturan sudah kumuat + pembuatan catatan otomatis per-file (LAZY-GENERATE) siap. Audit bisa dijalankan kapan saja: ketik 'audit project' / paste AUDIT_POST_SETUP_PROMPT_v1.md / ketik 'periksa seluruh kode'."**

### Bagian 6 - Auto-Decide: Split Repo Migration (dynamic, derive dari monorepo detect + Popup #2)

19. **AI auto-detect monorepo state** via helper `lib/project-detect.ps1`:
- Run `Get-MonorepoState -ProjectRoot $PWD` → return `IsMonorepo` (bool) + `MonorepoFlavor` (NextjsFullstack / WorkspaceMonorepo / PrismaPlusComponents / MixedBackendFrontendDeps) + `Confidence` (low/medium/high).
- Run `Test-PostSplitState -ProjectRoot $PWD` → kalau `IsPostSplit = true` (marker `.claude-kit/.split-state` atau AGENTS.md mention post-split atau sibling repos detected), SKIP entire Bagian 6 silent — JANGAN nawarin split lagi. AI WAJIB lanjut ke further-split trigger check kalau backend/frontend repo file count > 500 atau Prisma model > 50.

20. **AI auto-decide split repo migration offer** berdasarkan Popup #2 answer + MonorepoState:

**Decision matrix per tier (lihat matriks di bawah)**:

- **Popup #2 = "3" SENDIRI** + IsMonorepo = true:
  - Recommendation stance: OPTIONAL — skip oleh default, catat reminder.
  - Popup format:
    ```
    🏗️  Project kamu monorepo — semua kode (tampilan/frontend + mesin/backend) numpuk di 1 tempat simpan kode (repo).
    Kamu kerja sendiri. Memecah tempat simpan kode (split repo) TIDAK MENDESAK — aman dilewati.

    Pilihan:
      [1] Tunda — catat di docs/MIGRATION_REMINDER.md (rekomendasi untuk yang kerja sendiri, default) ⭐ DEFAULT — pecah-repo tidak mendesak saat kerja sendiri; tidak mengubah kode, aman dilewati
      [2] Ya, pecah sekarang juga (jarang dibutuhkan kalau kerja sendiri)
      [3] Tetap 1 tempat simpan kode (monorepo) selamanya — JANGAN tawarkan lagi (keputusan dicatat permanen di docs/decisions/<tgl>-permanent-monorepo.md)
    Default (Enter/kosong) -> [1] Tunda
    ```

- **Popup #2 = "1" TIM KECIL** + IsMonorepo = true:
  - Recommendation stance: RECOMMEND split (sweet spot untuk 3-4 staff).
  - Popup format:
    ```
    🏗️  Project kamu monorepo (semua kode dalam 1 tempat simpan/repo) + tim 3-4 staff.
    Pecah-repo (split) DISARANKAN — staf tampilan tidak tak-sengaja mengubah kode
    bagian mesin (backend), dan pemeriksaan kode per-tempat-simpan lebih fokus.

    Pilihan:
      [1] Ya, pecah sekarang (rekomendasi, default) ⭐ DEFAULT — pas untuk tim 3-4 staff: staf tampilan tidak tak-sengaja ubah kode mesin, review per-repo lebih fokus — jalankan SPLIT_REPO_MIGRATION_PROMPT_v1.md
      [2] Tunda — catat di docs/MIGRATION_REMINDER.md, tawarkan lagi kalau staff bertambah jadi 5+
      [3] Tetap 1 tempat simpan kode (monorepo) selamanya — keputusan dicatat permanen di docs/decisions/<tgl>-permanent-monorepo.md
    Default (Enter/kosong) -> [1] Ya pecah
    ```

- **Popup #2 = "2" TIM BESAR/BERKEMBANG** + IsMonorepo = true:
  - Recommendation stance: **STRONGLY RECOMMEND** split (5+ staff = monorepo friction terlalu mahal).
  - Popup format:
    ```
    🏗️  Project kamu monorepo (semua kode dalam 1 tempat simpan/repo) + tim 5+ staff (atau berencana nambah).

    Pecah-repo (split — pisahkan tempat simpan kode per bagian) SANGAT DISARANKAN:
      - Pemeriksaan kode per-bagian lebih fokus (staf tampilan tidak kebanjiran permintaan-review kode bagian mesin)
      - Hak akses benar-benar terpisah per tempat-simpan-kode (bukan sekadar daftar penanggung-jawab file `.github/CODEOWNERS` yang sifatnya imbauan)
      - Jalur kirim-ke-server-live mandiri per bagian (gangguan di sisi tampilan tidak menahan rilis sisi mesin)
      - Staf baru lebih cepat siap kerja (cukup unduh 1 tempat-simpan-kode kecil, bukan kebanjiran folder)

    Pilihan:
      [1] Ya, pecah sekarang (rekomendasi, default) ⭐ DEFAULT — untuk tim 5+ staff, numpuk 1 repo terlalu mahal: akses benar-benar terpisah + rilis tiap bagian mandiri — jalankan SPLIT_REPO_MIGRATION_PROMPT_v1.md (4-6 minggu)
      [2] Tunda — catat di docs/MIGRATION_REMINDER.md, tawarkan lagi tiap awal sesi
      [3] Tetap 1 tempat simpan kode (monorepo) selamanya — keputusan dicatat permanen di docs/decisions/<tgl>-permanent-monorepo.md (jarang dipilih untuk tim 5+ staff)
    Default (Enter/kosong) -> [1] Ya pecah
    ```

> **Catatan bentuk split (v1.8.0):** saat eksekusi `SPLIT_REPO_MIGRATION_PROMPT_v1.md`, AI WAJIB tanya **Mode Selector** dulu — **[1] per-Lapisan** (3 repo: frontend/backend/shared, rekomendasi, default — paling sederhana, cocok untuk mayoritas tim, cukup 3 tempat-simpan-kode) atau **[2] per-Kapabilitas** (5/6/7 repo: dashboard/shared/core/`<kapabilitas>`×N). Default [1]; pilih [2] hanya kalau ada bounded context jelas + butuh isolasi tim per-kapabilitas. Penamaan standar + aturan ada di Mode Selector file itu.

- **Project setengah jadi (deteksi-otomatis, menggantikan opsi [4] MIGRATION lama)** → workflow "Rapikan ke Standar Tim" (`PROJECT_LIFECYCLE_PROMPT_v1.md` Stage 4) sudah ditawarkan terpisah (lihat langkah 11 TAMBAHAN); tawaran pecah-repo tetap ikut decision matrix ukuran tim di atas.

- **IsMonorepo = false** untuk semua tier → SKIP Bagian 6 (no split offer relevant).

21. **Anti-spam guard (semua tier)**: sebelum tampilkan popup, AI WAJIB cek:
- `docs/MIGRATION_REMINDER.md` exist → kalau pilihan terakhir adalah "Tunda" dan sesi terakhir <7 hari → SKIP.
- `docs/decisions/*permanent-monorepo*.md` exist → SKIP selamanya (user sudah commit).
- `.claude-kit/.split-state` marker file exist → SKIP (post-split state).

---

### Bagian 6b - Catatan KODE dibuat di AKHIR untuk project matang (v1.7.1 NEW)

> **Prinsip**: dokumentasi = foto kondisi akhir. Untuk project matang/setengah-jadi yang pilih [1] LENGKAP **DAN memilih [1] Nanti di Popup #2C**, bulk-bootstrap catatan kode DITUNDA ke sini — dijalankan SETELAH audit (Bagian 5) + rapikan/pecah (Bagian 6), supaya catatan cocok dengan kode FINAL (tidak basi). (Kalau user pilih [2] Sekarang di Popup #2C, catatan kode sudah dibuat di langkah 12 — bagian ini di-skip.)
> 🏢 Analogi: jangan bikin katalog isi gudang yang sebentar lagi ditata ulang — rapikan dulu, baru foto-katalog.

21b. **HANYA kalau** Popup #1 = [1] LENGKAP **DAN** project matang **DAN** user pilih **[1] Nanti di Popup #2C** (langkah 12) **DAN** catatan kode belum dibuat (kalau user pilih [2] Sekarang, catatan kode sudah dibuat di langkah 12 → Bagian 6b di-skip):
- Execute `PROJECT_LIFECYCLE_PROMPT_v1.md` Stage 2 (Bootstrap Docs) untuk SEMUA kandidat CRITICAL **pada kondisi kode TERKINI** (sesudah rapikan/pecah).
- Kalau tadi **MEMECAH (split)** → jalankan bulk-docs **di tiap folder hasil pecah** (backend/frontend/shared), BUKAN di monolith lama.
- Kalau user **menunda** rapikan/pecah ([2]/skip, kode tidak berubah) → boleh langsung bulk-docs sekarang pada kondisi apa adanya; catat di laporan "catatan dibuat atas kode yang belum dirapikan".
- Lapor hasil ke user pakai bahasa non-programmer (mis. "✅ N catatan kode dibuat di folder docs/").

---

### Bagian 7 - WAJIB lapor Pending Action Items (tier-aware popup-per-item)

> **Catatan sejarah (sejak v1.6.2):** Bagian 7 dipindah dari `POST_SETUP_CHECKLIST_PROMPT_v1.md`
> ke sini supaya jalur `npx init` maupun paste-manual pakai daftar yang SAMA (sumber tunggal).

Sebelum tutup workflow, AI WAJIB lapor daftar item yang perlu owner tindak lanjut (skip yang tidak relevan stack). **WAJIB arahkan owner/lead ke `docs/OWNER_SETUP_CHECKLIST.md`** — checklist 1 halaman semua tugas teknis sekali-pasang (bahasa non-programmer):

```markdown
## 📋 Daftar Tugas Menunggu (perlu owner kerjakan manual)

| # | Tugas | Tier | Perilaku AI | Perkiraan waktu |
|---|---|---|---|---|
| 1 | Edit `.github/CODEOWNERS`: ganti placeholder (nama contoh sementara) → GitHub username staff yang asli | **B** | Lapor saja (owner manual via GitHub) | 5 menit/staff |
| 2 | Pasang `ANTHROPIC_API_KEY` (kunci API robot review kode) di GitHub Secrets (brankas rahasia GitHub) | **B** | Lapor saja (owner manual via GitHub) | 2 menit |
| 3 | Buat denah struktur database (DB schema scan) → `docs/db-schema.md` (kalau terdeteksi pakai Prisma — alat pengelola database) | **A** | **WAJIB popup tawarkan jalankan** (mode aman cuma-baca, ~15 menit) | 15 menit |
| 4 | Pasang RLS di Supabase (aturan siapa boleh lihat baris data mana — kalau 1 aplikasi dipakai banyak perusahaan/klien sekaligus) | **C** | **WAJIB popup konfirmasi HARD** (risikonya tinggi) | 1-2 jam |
| 5 | Pecah-repo (monorepo split) — Tahap 0 persiapan cepat (kalau terdeteksi penanda MULTI): bikin 3 folder salinan berdampingan, kode asli tidak disentuh. Lihat `SPLIT_REPO_MIGRATION_PROMPT_v1.md`. | **A** | **WAJIB popup tawarkan jalankan Tahap 0** (~30-60 menit, bisa dibatalkan — kode asli tetap utuh) | 30-60 menit |
| 6 | Sambungkan bot ke channel chat Discord | **C** | **WAJIB popup konfirmasi HARD** (menyentuh layanan di luar project ini) | 30 menit |
| 7 | Rapikan catatan ke sub-folder docs/ (kalau `docs/` >30 file ATAU `src/lib/` punya >=3 file penting/CRITICAL) | **A** | **WAJIB popup tawarkan jalankan** (risikonya rendah, ~30 menit) | 30 menit |

Keterangan Tier: **A** = AI bisa kerjakan langsung · **B** = harus owner kerjakan manual · **C** = AI bisa tapi risikonya tinggi.
```

**Untuk tim split-repo** (sesudah Stage 0): nyalakan rambu skala-besar di tiap repo —
**kunci pengaman gabung** (`.github/scripts/setup-branch-protection.ps1`, default SIMULASI) +
**gabung-otomatis-aman** (`.github/workflows/auto-merge-shared.yml`). Detail di
`SPLIT_REPO_MIGRATION_PROMPT_v1.md` + `CROSS_REPO_TYPES_PIPELINE.md`.

**Aturan tier-aware popup-per-item** (WAJIB, bukan "lapor tabel diam"):

- **Tier A (AI bisa execute LANGSUNG)** — WAJIB tawarkan via popup. Pilihan: `[1] Ya, jalankan sekarang` (rekomendasi kalau cocok — risikonya rendah, bisa AI kerjakan langsung tanpa repot owner) / `[2] Nanti aja` / `[3] Jangan`. Default kalau diam: `[2] Nanti aja`.
- **Tier B (AI tidak bisa execute)** — Lapor saja: "⚠️ WAJIB owner manual via [tempat]: [action]. [1-baris kenapa penting + analogi tools digital]." Tidak ada popup.
- **Tier C (AI bisa tapi risk tinggi)** — WAJIB popup KONFIRMASI HARD. Pilihan: `[1] Ya, aku paham risikonya` / `[2] Nanti aja` (rekomendasi — pilihan paling aman; risikonya tinggi, lebih baik ditunda sampai owner benar-benar siap) / `[3] Jangan`. Default: `[2] Nanti aja`.

---

## Aturan AI selama workflow ini

- **Auto-confirm mode (per user preference)** dari user paste prompt → lakukan tiap step REGULER langsung tanpa nanya. Untuk **destructive ops** (delete, force-push, rm -rf, DROP, prisma migrate prod) AI WAJIB tanya 1x walau auto-confirm aktif (lihat `CLAUDE_universal_v1.md` section 8.1). JANGAN minta konfirmasi AI-side tambahan untuk step reguler **kecuali**:
  - **Popup #1** (Step 8 - WAJIB tanya Setup Mode [1] LENGKAP / [2] CEPAT / [3] PILIH SENDIRI).
  - **Popup #2** (Step 10 - WAJIB tanya Ukuran Tim [1] TIM KECIL / [2] TIM BESAR / [3] SENDIRI — urutan v1.12.0, default TIM KECIL; "project lama" dideteksi otomatis, bukan opsi popup).
  - **Popup #2C CONDITIONAL** (Step 12 - HANYA muncul kalau Popup #1 = LENGKAP DAN project sudah ada kodenya/matang: tanya catatan KODE dibuat [1] Nanti-setelah-rapikan / [2] Sekarang. Default [1] Nanti. Kalau project fresh/kosong → skip, catatan langsung dibuat).
  - **Popup #3 CONDITIONAL** (Step 17 - HANYA muncul kalau project mature: 90+ files + business logic exist + bukan boilerplate. Kalau tidak match, skip diam-diam tanpa popup).
  - **BOOTSTRAP FASE 5** (per-file approval optional - pakai mode "approve all per kategori" untuk efisiensi).
- Auto-decide tanpa popup untuk:
  - **Bulk-bootstrap mode** → derive dari Popup #1 (CEPAT = skip bulk, LENGKAP = bulk semua; **untuk project MATANG, LENGKAP = catatan kode DITUNDA ke Bagian 6b setelah audit+rapikan**, PILIH SENDIRI = sub-menu).
  - **Tawaran pecah-repo** → derive dari Popup #2 sesuai matriks Bagian 6 (SENDIRI = tunda/catat, TIM KECIL = disarankan kalau monorepo+matang, TIM BESAR = sangat disarankan kalau monorepo+matang). Opsi MIGRATION lama sudah dihapus v1.6.6 — project lama dideteksi otomatis.
  - **Audit komprehensif** → derive dari project maturity detection (mature = Popup #3 muncul, fresh = skip).
- Kalau ERROR yang gak bisa di-fix sendiri, lapor + saran fix.
- JANGAN ubah file di `.claude-kit/` (read-only).
- Anti-overwrite di `docs/` + `.github/`: file existing di-skip, tidak ditimpa.
- **Default Full (1)** kalau user jawab kosong/Enter di Popup #1. Filosofi: untuk owner-grade onboarding + staff non-programmer, Enter = Full = langsung dapat peta proyek + denah database (no docs-gap friction di Day 0). User yang mau setup ringan pilih "2" Quick eksplisit (LAZY-GENERATE per-file tetap aktif, bulk bisa di-trigger nanti).
- **Default auto-detect** kalau user jawab kosong/Enter di Popup #2. Stack pattern detection biasanya akurat untuk inferring project type.
- **Default Yes (Y)** kalau user jawab kosong/Enter di Popup #3 conditional. Filosofi: context masih hangat dari setup, audit comprehensive 5-10 menit = high-leverage moment.
- IDE permission prompt (PowerShell/Edit YES-NO) di luar kontrol prompt ini.
- Semua respons AI ke user dalam **Bahasa Indonesia** (sesuai aturan global).

---

## Untuk Staff Baru (Day 0 Pertama Kali Pakai lintasAI)

Setelah selesai workflow di atas, kalau kamu **staff IT non-programmer baru pertama kali pakai lintasAI**, AI akan auto-trigger **Guided Step-by-Step Pattern** (`CLAUDE_universal_v1.md` section 4.3):

- 6 phase universal (Foundation → Reading → Project Context → Environment Setup → First Micro-Task → Daily Work Starts)
- Wait-for-confirm pattern: AI minta kamu konfirm tiap step sebelum lanjut, tidak overwhelm
- Berlaku universal untuk SEMUA project (akses, bigseo, pbn-monitor, dst.)
- Phase 2 (reading GLOSSARY + SECURITY_PLAYBOOK) cuma sekali per staff - di-skip kalau pernah baca

Trigger conditions: detect `architecture.md` fresh-generated, `AGENTS.md` placeholder belum filled, atau user eksplisit ngomong "halo aku staff baru".

Detail lengkap di `CLAUDE_universal_v1.md` seksi 4.3.

---

Mulai dari langkah 1 sekarang.
