@ojokesusu/lintasai 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/.github/workflows/publish-npm.yml +40 -0
  2. package/.github/workflows/validate.yml +93 -0
  3. package/AUDIT_POST_SETUP_PROMPT_v1.md +280 -0
  4. package/BOOTSTRAP_PROJECT_DOCS_PROMPT_v1.md +3 -0
  5. package/CHANGELOG.md +313 -0
  6. package/CLAUDE_universal_v1.md +1021 -0
  7. package/CONTRIBUTING.md +101 -0
  8. package/FIRST_SESSION_PROMPT_v1.md +7 -0
  9. package/JALANKAN_KIT.md +188 -0
  10. package/LICENSE +21 -0
  11. package/MULAI_DI_SINI.md +145 -0
  12. package/PROJECT_KICKOFF_PROMPT_v1.md +3 -0
  13. package/PROJECT_LIFECYCLE_PROMPT_v1.md +536 -0
  14. package/PROJECT_MIGRATION_PROMPT_v1.md +3 -0
  15. package/README.md +505 -0
  16. package/SETUP_POLA_B_PROMPT_v1.md +5 -0
  17. package/SPLIT_REPO_MIGRATION_PROMPT_v1.md +485 -0
  18. package/TEAM_ROLLOUT_GUIDE_v1.md +172 -0
  19. package/UPDATE_DOCS_PROMPT_v1.md +3 -0
  20. package/UPDATE_KIT_PROMPT_v1.md +213 -0
  21. package/bin/lintasai.js +81 -0
  22. package/docs/SIGNED_RELEASE.md +162 -0
  23. package/install-windows.ps1 +225 -0
  24. package/kit.ps1 +508 -0
  25. package/lib/agents-md.ps1 +174 -0
  26. package/lib/git-helpers.ps1 +104 -0
  27. package/lib/kit-files.psd1 +133 -0
  28. package/lib/manifest-signing.ps1 +65 -0
  29. package/lib/manifest.ps1 +267 -0
  30. package/lib/rollback.ps1 +241 -0
  31. package/lib/safety.ps1 +193 -0
  32. package/lib/template-deploy.ps1 +242 -0
  33. package/lib/version-detect.ps1 +161 -0
  34. package/package.json +36 -0
  35. package/setup-pola-b.ps1 +687 -0
  36. package/templates/ANALOGI_LIBRARY.md +7 -0
  37. package/templates/CLAUDE_TEAM_GUIDE.md +505 -0
  38. package/templates/CROSS_REPO_TYPES_PIPELINE.md +473 -0
  39. package/templates/DB_SCHEMA_SCAN_PROMPT.md +194 -0
  40. package/templates/DISCORD_BOT_INTEGRATION.md +187 -0
  41. package/templates/GLOSSARY_NON_PROGRAMMER.md +361 -0
  42. package/templates/INDEX.md +157 -0
  43. package/templates/MCP_SETUP.md +1145 -0
  44. package/templates/MIGRATE_TO_SUBFOLDER_PROMPT_v1.md +220 -0
  45. package/templates/ONBOARDING.md +172 -0
  46. package/templates/PROJECT_STARTER_TEMPLATES.md +264 -0
  47. package/templates/PROMPT_LIBRARY.md +790 -0
  48. package/templates/RLS_SETUP_PROMPT.md +167 -0
  49. package/templates/SECURITY_INCIDENT_PLAYBOOK.md +191 -0
  50. package/templates/SPLIT_REPO_AGENTS_TEMPLATES.md +32 -0
  51. package/templates/SPLIT_REPO_NON_PROGRAMMER_PROMPTS.md +604 -0
  52. package/templates/SPLIT_REPO_TOOLS_SETUP.md +388 -0
  53. package/templates/STACK_DETECTION_PATTERN.md +261 -0
  54. package/templates/STACK_GUIDE.md +564 -0
  55. package/templates/STACK_MIGRATION_GUIDE.md +154 -0
  56. package/templates/STACK_VERSIONS.md +31 -0
  57. package/templates/UPDATE_GUIDE.md +246 -0
  58. package/templates/_EXAMPLE.md +110 -0
  59. package/templates/_PATTERNS.md +173 -0
  60. package/templates/architecture.md +180 -0
  61. package/templates/architecture_auto.md +61 -0
  62. package/templates/decisions/README.md +108 -0
  63. package/templates/decisions/_TEMPLATE.md +84 -0
  64. package/templates/feature-flags-advanced.md +171 -0
  65. package/templates/github/CODEOWNERS.template +61 -0
  66. package/templates/github/GENERATE_TYPES_SCRIPT.md +77 -0
  67. package/templates/github/PUBLISH_SHARED_WORKFLOW.yml +52 -0
  68. package/templates/github/RECEIVE_BACKEND_UPDATE.yml +106 -0
  69. package/templates/github/RENOVATE_FRONTEND.json +28 -0
  70. package/templates/github/TRIGGER_FRONTEND_UPDATE.yml +29 -0
  71. package/templates/github/pull_request_template.md +44 -0
  72. package/templates/github/scripts/ai-review.js +153 -0
  73. package/templates/github/workflows/ai-review.yml +61 -0
  74. package/templates/github/workflows/backup-schemas.yml +169 -0
  75. package/templates/glossary.md +110 -0
  76. package/templates/split-agents/BACKEND.md +149 -0
  77. package/templates/split-agents/FRONTEND.md +141 -0
  78. package/templates/split-agents/SHARED.md +82 -0
  79. package/templates/split-agents/TOOLS.md +77 -0
  80. package/tests/Run-Tests.ps1 +19 -0
  81. package/tests/lib-safety.Tests.ps1 +66 -0
  82. package/tests/rollback.Tests.ps1 +66 -0
  83. package/tests/uninstall.Tests.ps1 +265 -0
  84. package/tests/update-kit.Tests.ps1 +78 -0
  85. package/uninstall.ps1 +794 -0
  86. package/update-kit.ps1 +907 -0
@@ -0,0 +1,187 @@
1
+ # Discord Bot Integration Template - lintasAI
2
+
3
+ > Untuk tim yang pakai Discord sebagai komunikasi utama (instead of Slack/Signal).
4
+ > Audience: Owner setup, staff pakai.
5
+
6
+ ---
7
+
8
+ ## Bagian 1: Discord Server Structure Recommended
9
+
10
+ Bikin Discord server untuk project akses (atau project apapun) dengan channel struktur:
11
+
12
+ ```
13
+ [ akses Server ]
14
+
15
+ ANNOUNCEMENTS
16
+ ├── #announcements (owner only post)
17
+ └── #releases (deploy notifications auto)
18
+
19
+ DISCUSSION
20
+ ├── #general (chit-chat, non-work)
21
+ ├── #akses-help (Q&A staff <-> owner)
22
+ └── #akses-design (UI/UX discussion + Figma share)
23
+
24
+ TASK MANAGEMENT
25
+ ├── #akses-task (owner post task baru)
26
+ ├── #akses-review (PR review request, links)
27
+ └── #akses-daily (async daily standup)
28
+
29
+ NOTIFICATIONS (bot-driven)
30
+ ├── #ci-builds (GitHub Action results)
31
+ ├── #vercel-deploys (deploy success/fail)
32
+ └── #pr-events (PR opened/merged/closed)
33
+
34
+ BOT COMMANDS
35
+ └── #bot-commands (slash commands to bot)
36
+ ```
37
+
38
+ Tools digital analogi: kayak struktur folder Google Drive yang clear per topik. Bukan 1 channel chaos chat semuanya.
39
+
40
+ ## Bagian 2: Setup Discord Webhook (untuk Notifications)
41
+
42
+ ### A. Bikin Webhook URL
43
+
44
+ 1. Discord server kamu → Right-click channel #ci-builds → Edit Channel
45
+ 2. Integrations → Webhooks → New Webhook
46
+ 3. Nama: "GitHub Actions"
47
+ 4. Copy Webhook URL (rahasia, jangan share)
48
+
49
+ Ulangi untuk:
50
+ - #vercel-deploys
51
+ - #pr-events
52
+
53
+ ### B. Integrate ke GitHub Actions
54
+
55
+ Tambah di repo Settings → Secrets:
56
+ - DISCORD_WEBHOOK_CI: URL webhook #ci-builds
57
+ - DISCORD_WEBHOOK_DEPLOY: URL webhook #vercel-deploys
58
+ - DISCORD_WEBHOOK_PR: URL webhook #pr-events
59
+
60
+ Tambah workflow .github/workflows/discord-notif.yml:
61
+
62
+ ```yaml
63
+ name: Discord Notifications
64
+ on:
65
+ pull_request:
66
+ types: [opened, closed, reopened]
67
+ workflow_run:
68
+ workflows: ["CI"]
69
+ types: [completed]
70
+
71
+ jobs:
72
+ notify-pr:
73
+ if: github.event_name == 'pull_request'
74
+ runs-on: ubuntu-latest
75
+ steps:
76
+ - name: PR Event
77
+ run: |
78
+ STATUS="${{ github.event.action }}"
79
+ curl -H "Content-Type: application/json" \
80
+ -d "{ \"content\": \"[PR-${{ github.event.pull_request.number }}] $STATUS by ${{ github.event.pull_request.user.login }}: ${{ github.event.pull_request.title }}\nURL: ${{ github.event.pull_request.html_url }}\" }" \
81
+ ${{ secrets.DISCORD_WEBHOOK_PR }}
82
+
83
+ notify-ci:
84
+ if: github.event_name == 'workflow_run'
85
+ runs-on: ubuntu-latest
86
+ steps:
87
+ - name: CI Result
88
+ run: |
89
+ STATUS="${{ github.event.workflow_run.conclusion }}"
90
+ EMOJI=$( [ "$STATUS" = "success" ] && echo "OK" || echo "FAIL" )
91
+ curl -H "Content-Type: application/json" \
92
+ -d "{ \"content\": \"$EMOJI CI $STATUS: ${{ github.event.workflow_run.name }} on ${{ github.event.workflow_run.head_branch }}\" }" \
93
+ ${{ secrets.DISCORD_WEBHOOK_CI }}
94
+ ```
95
+
96
+ ### C. Integrate ke Vercel
97
+
98
+ Vercel Dashboard → Project → Settings → Integrations → Discord → Add webhook URL #vercel-deploys.
99
+
100
+ Otomatis kasih notif:
101
+ - Deploy started
102
+ - Deploy success (with preview URL)
103
+ - Deploy failed (with error link)
104
+
105
+ ## Bagian 3: Discord Bot Custom (Optional)
106
+
107
+ Untuk feature yang webhook tidak support, bikin bot custom.
108
+
109
+ ### Use Case Bot Custom
110
+
111
+ 1. /akses status - cek health prod (uptime, latency)
112
+ 2. /akses task <ID> - lookup task description
113
+ 3. /akses pr <number> - shortcut buka PR di GitHub
114
+ 4. /akses deploy - trigger manual deploy (owner only)
115
+ 5. /akses scale - cek Vercel + Supabase usage saat ini
116
+
117
+ ### Setup Bot (Discord.js)
118
+
119
+ ```bash
120
+ mkdir akses-discord-bot && cd akses-discord-bot
121
+ npm init -y
122
+ npm install discord.js dotenv
123
+
124
+ # .env
125
+ DISCORD_TOKEN=<from Discord Developer Portal>
126
+ GUILD_ID=<server ID>
127
+ GITHUB_TOKEN=<for PR lookup>
128
+ ```
129
+
130
+ Create index.js dengan slash command handler.
131
+
132
+ Deploy bot ke:
133
+ - Railway $5/mo (recommended, easy)
134
+ - Atau Vercel functions (serverless, free tier)
135
+ - Atau self-host VPS
136
+
137
+ ### Caveat untuk Bot Custom
138
+
139
+ - Setup effort: 4-8 jam awal
140
+ - Maintenance: 1-2 jam/bulan
141
+ - Cost: $0-5/mo
142
+ - Worth kalau owner sering perlu shortcut command
143
+
144
+ Untuk MVP: SKIP bot custom. Pakai webhook saja cukup.
145
+
146
+ ## Bagian 4: Discord Notification Etiquette
147
+
148
+ Untuk staff non-programmer di tim:
149
+
150
+ DO:
151
+ - Reply ke channel sesuai topic (PR di #akses-review, task di #akses-task)
152
+ - Mention @owner kalau urgent (Discord notification active)
153
+ - Pakai thread untuk diskusi panjang (jangan flood channel utama)
154
+ - React emoji untuk acknowledge task
155
+
156
+ DON'T:
157
+ - Spam @everyone (jangan ping semua untuk non-urgent)
158
+ - Post sensitive info di public channel (credentials, customer data)
159
+ - Diskusi panjang di #ci-builds (channel ini cuma notif bot)
160
+
161
+ ## Bagian 5: Discord vs Slack vs Telegram
162
+
163
+ | Aspect | Discord | Slack | Telegram |
164
+ |---|---|---|---|
165
+ | Cost | Free unlimited | Free 90-day history | Free unlimited |
166
+ | Voice/Video | Native built-in | Need Huddles | Need group call |
167
+ | Bot ecosystem | Strong (gaming origin) | Strong (work origin) | OK (custom bot) |
168
+ | Best for | Community + small team | Enterprise | Quick async |
169
+
170
+ Kit lintasAI default = Discord (user feedback).
171
+
172
+ ## Bagian 6: Integrasi dengan lintasAI
173
+
174
+ Saat AI Claude Code execute task, AI bisa post update ke Discord via:
175
+ - GITHUB_TOKEN call ke API GitHub (PR creation triggers Discord webhook)
176
+ - atau langsung POST ke Discord webhook URL (set di env)
177
+
178
+ Owner setup webhook sekali, semua AI activity auto-broadcast ke channel.
179
+
180
+ ## Bagian 7: Privacy + Security
181
+
182
+ - Webhook URL = rahasia, jangan commit ke git
183
+ - Audit Discord log periodic (Server Settings → Audit Log)
184
+ - Revoke webhook kalau staff resign (regenerate baru)
185
+ - Bot custom: rotate DISCORD_TOKEN tiap 90 hari
186
+
187
+ ---
@@ -0,0 +1,361 @@
1
+ # Glossary untuk Staff IT Non-Programmer
2
+
3
+ > Dokumen wajib baca **DULU** sebelum Day 0 onboarding.
4
+ >
5
+ > Tujuannya: kasih kamu peta istilah teknis dengan **bahasa awam + analogi sehari-hari** supaya kamu tidak panik baca dokumentasi tim.
6
+ >
7
+ > Cara baca: scroll sampai habis sambil bayangin analogi. Tidak perlu hafal — bookmark file ini, balik baca tiap ketemu istilah asing.
8
+
9
+ ---
10
+
11
+ ## 🗂️ Bagian 1 — Soal Kode & GitHub
12
+
13
+ ### **Repo (Repository)**
14
+ Folder kode proyek di GitHub. Berisi semua file source code + history perubahan.
15
+ - **Analogi**: kayak Google Drive folder shared, tapi khusus kode + ada catatan "siapa ubah apa kapan".
16
+
17
+ ### **Clone**
18
+ Aksi download repo dari GitHub ke laptop kamu.
19
+ - **Analogi**: download folder Google Drive ke laptop biar bisa edit offline.
20
+
21
+ ### **Branch**
22
+ Versi alternatif dari kode utama (`main`) yang kamu pakai buat kerja task tertentu.
23
+ - **Analogi A (Word)**: copy file Word yang kamu rename jadi "draft - versi Bagus" sebelum edit. Master file (`main`) tetap aman, kamu kerja di copy.
24
+ - **Analogi B (Notion)**: kayak duplicate page di Notion. Page asli (`main`) tetap, kamu edit page duplikat sampai siap publish.
25
+ - **Analogi C (Canva)**: duplicate design di Canva sebelum bereksperimen. Design asli aman, kamu edit copy-nya.
26
+
27
+ ### **Commit**
28
+ Save point di kode. Tiap commit = snapshot perubahan + pesan "apa yang berubah".
29
+ - **Analogi**: tekan **Ctrl+S** di Word, plus tulis 1 kalimat "save apa": *"Tambah kolom email di form registrasi"*.
30
+
31
+ ### **Push**
32
+ Upload commit dari laptop ke GitHub (cloud).
33
+ - **Analogi**: setelah save Word ke laptop, **upload ke Google Drive** supaya teman bisa lihat.
34
+
35
+ ### **Pull / Sync**
36
+ Download perubahan terbaru dari GitHub ke laptop kamu.
37
+ - **Analogi**: download versi terbaru file dari Google Drive yang teman kamu sudah edit.
38
+
39
+ ### **PR (Pull Request)**
40
+ Request resmi supaya kerja kamu (di branch) **digabung** ke kode utama (`main`). Tempat owner review sebelum approve.
41
+ - **Analogi A (atasan)**: kirim laporan ke atasan: *"Pak, ini draft saya, mohon review. Kalau OK boleh saya publish?"*. Atasan baca, kasih komentar, approve atau minta revisi.
42
+ - **Analogi B (Google Form)**: submit Google Form ke atasan untuk approval. Atasan terima notifikasi, baca isi, klik "Approve" atau balas dengan catatan.
43
+ - **Analogi C (Notion share)**: share Notion page ke teammates dengan permission "Can comment". Mereka kasih comment di tiap blok, kamu fix, mereka approve.
44
+
45
+ ### **Merge**
46
+ Aksi gabungin branch kamu ke `main` setelah PR di-approve owner.
47
+ - **Analogi**: dari status "draft" di Google Docs jadi "final". Tidak bisa diubah lagi gampang.
48
+
49
+ ### **Squash Merge**
50
+ Cara khusus merge yang gabungin semua commit di branch jadi 1 commit bersih di `main`.
51
+ - **Analogi**: kamu nulis 10 draft sebelum jadi laporan final. Saat publish, atasan cuma simpan **1 versi final** — bukan semua 10 draft.
52
+
53
+ ### **Conflict (Merge Conflict)**
54
+ Saat git tidak bisa otomatis gabungin perubahan kamu sama main, karena 2 orang edit baris yang sama.
55
+ - **Analogi**: kamu sama teman sama-sama edit baris pertama di Google Docs barengan, sistem bingung mau ambil punya siapa. **Solusi**: minta tolong Claude resolve.
56
+
57
+ ### **Revert**
58
+ Aksi membatalkan commit dengan bikin **commit baru** yang mengembalikan kode ke state sebelumnya.
59
+ - **Analogi**: Ctrl+Z di Word, tapi setelah save. Versi sebelum-rusak kembali, tapi history "pernah rusak" tetap kelihatan.
60
+
61
+ ### **`.gitignore`**
62
+ File khusus yang kasih tau git: "file/folder ini JANGAN di-upload ke GitHub" (mis. password, node_modules).
63
+ - **Analogi**: daftar "rahasia keluarga" yang tidak boleh kamu post di Instagram.
64
+
65
+ ---
66
+
67
+ ## 🚀 Bagian 2 — Soal Deploy & Server
68
+
69
+ ### **Deploy**
70
+ Aksi naikin kode ke server supaya bisa diakses user via internet.
71
+ - **Analogi A (Google Drive)**: upload file ke Google Drive yang **di-share publik** — semua orang bisa buka link-nya.
72
+ - **Analogi B (Instagram)**: publish post di Instagram. Sebelum publish, post cuma "draft" di laptop kamu. Setelah publish, semua follower bisa lihat.
73
+ - **Analogi C (Tokopedia)**: upload produk baru di Tokopedia. Sebelum di-publish: cuma kamu yang lihat di "draft". Setelah klik "Aktifkan": muncul di katalog publik.
74
+
75
+ ### **Production / Prod**
76
+ Versi **live** yang user beneran pakai. URL utama proyek (mis. `akses.app`).
77
+ - **Analogi**: website live di internet, kebalikan dari "draft di laptop".
78
+
79
+ ### **Staging**
80
+ Versi **test** sebelum naik ke production. URL terpisah, biasanya cuma owner + tim yang akses.
81
+ - **Analogi**: showroom prototype mobil. Pelanggan belum bisa beli, tapi tim sudah bisa test drive.
82
+
83
+ ### **Preview URL (Vercel Preview)**
84
+ URL khusus yang auto-generate per PR. Setiap branch dapat URL sendiri untuk test sebelum merge.
85
+ - **Contoh**: `akses-git-feat-export-excel.vercel.app`
86
+ - **Analogi**: link "Preview" di Google Docs — cuma kamu + owner yang lihat, hasil belum publish ke publik.
87
+
88
+ ### **Env Var (Environment Variable)**
89
+ Setting rahasia (password DB, API key, URL) yang **dipisah dari kode**. Tidak boleh masuk Git.
90
+ - **Analogi A (Wi-Fi)**: password Wi-Fi rumah — disimpan di router, tidak ditulis di buku tamu yang bisa dilihat tamu.
91
+ - **Analogi B (Discord)**: settings rahasia di server Discord kamu (tokens bot, webhook URL). Disimpan di "Server Settings", bukan di pesan publik.
92
+ - **Analogi C (password manager)**: kayak entry di 1Password / Bitwarden — disimpan terpisah dari aplikasi yang pakai, dengan kunci master.
93
+
94
+ ### **`.env.local`**
95
+ File teks isi env vars buat development di laptop kamu (jangan upload ke Git!).
96
+ - **Analogi**: kertas catatan password yang kamu simpan di laci pribadi.
97
+
98
+ ### **CI/CD (Continuous Integration / Continuous Deployment)**
99
+ Robot di GitHub yang otomatis test + deploy tiap kamu push kode.
100
+ - **Analogi A (tukang pos)**: tukang pos otomatis. Kamu kirim surat (push), dia cek alamat (test), kalau benar dia antar ke tujuan (deploy).
101
+ - **Analogi B (Zapier/IFTTT)**: kayak workflow di Zapier atau IFTTT — kalau X terjadi, otomatis lakukan Y. Push kode → otomatis test → otomatis deploy.
102
+ - **Analogi C (Tokopedia)**: kayak auto-fulfillment Tokopedia — kalau ada pesanan masuk, sistem otomatis cek stok + kirim notifikasi kurir + update status.
103
+
104
+ ### **AI Reviewer (.github/workflows/ai-review.yml)**
105
+ Robot Claude yang otomatis review PR kamu, kasih komentar di GitHub.
106
+ - **Analogi**: editor digital di redaksi koran — baca tulisan kamu, kasih komentar typo/inkonsistensi sebelum editor manusia review.
107
+
108
+ ### **Rollback**
109
+ Aksi balikin production ke versi sebelumnya saat ada bug.
110
+ - **Analogi**: editor koran ketauan salah cetak, segera tarik edisi yang sudah disebar, ganti dengan edisi lama.
111
+
112
+ ---
113
+
114
+ ## 💻 Bagian 3 — Soal Stack Teknis
115
+
116
+ ### **Next.js**
117
+ Framework JavaScript untuk bikin website + API. Stack utama proyek tim.
118
+ - **Analogi**: WordPress = framework website pakai PHP. Next.js = framework website pakai JavaScript modern.
119
+
120
+ ### **React**
121
+ Library buat bikin UI di browser (tombol, form, modal, dst.). Next.js pakai React di belakang.
122
+ - **Analogi**: LEGO. Tiap "component" = 1 brick yang bisa dipakai ulang.
123
+
124
+ ### **Tailwind CSS**
125
+ Cara nulis styling (warna, ukuran, spacing) langsung di HTML pakai class pendek.
126
+ - **Contoh**: `<button class="bg-blue-500 px-4 py-2">Klik</button>` = tombol biru padding 4 horizontal 2 vertikal.
127
+ - **Analogi**: stiker pre-cut di toko stationary — tinggal tempel, tidak perlu gunting sendiri.
128
+
129
+ ### **shadcn/ui**
130
+ Library siap-pakai untuk component umum (Button, Modal, Form, dst.) berbasis React + Tailwind.
131
+ - **Analogi**: IKEA furniture — kerangka jadi, kamu tinggal rakit + cat sesuai selera. Tidak harus mulai dari kayu mentah.
132
+
133
+ ### **Prisma**
134
+ ORM (Object-Relational Mapping) — library yang nyambungin kode Next.js ke database PostgreSQL.
135
+ - **Analogi**: penerjemah antar bahasa. Kamu ngomong JavaScript ("ambil user dengan email X"), Prisma terjemah jadi SQL ("SELECT * FROM users WHERE email='X'").
136
+
137
+ ### **PostgreSQL / Postgres**
138
+ Database SQL yang banyak dipakai industri. Tempat data permanen disimpan.
139
+ - **Analogi**: Excel super-power dengan miliaran baris dan relasi antar tabel.
140
+
141
+ ### **Supabase**
142
+ Layanan cloud yang nyediain PostgreSQL + Auth + Storage. Tim pakai ini untuk database.
143
+ - **Analogi**: AWS-lite — bundle database + auth + storage dalam 1 dashboard sederhana.
144
+
145
+ ### **NextAuth**
146
+ Library untuk handle login (Google, GitHub, email/password) di Next.js.
147
+ - **Analogi**: aplikasi Bank yang handle login fingerprint + OTP, kamu tidak perlu coding dari nol.
148
+
149
+ ### **API (Application Programming Interface)**
150
+ "Jalan masuk" ke layanan. Browser kirim request → server jawab data.
151
+ - **Analogi A (restoran)**: menu restoran. Customer pesan (request), waitress bawa makanan (response).
152
+ - **Analogi B (Gojek)**: aplikasi Gojek punya API yang ngasih daftar driver terdekat. Aplikasi-aplikasi lain bisa "tanya Gojek" via API ini.
153
+ - **Analogi C (Spotify)**: Spotify API kasih playlist + metadata lagu ke aplikasi 3rd party. Aplikasi minta data, Spotify kasih.
154
+
155
+ ### **Endpoint**
156
+ 1 alamat URL spesifik di API. Mis. `/api/users` = endpoint dapetin list user.
157
+ - **Analogi**: 1 nomor meja di restoran. Pelayan tahu meja 5 pesan apa.
158
+
159
+ ### **Schema (Database Schema)**
160
+ "Cetak biru" struktur database — daftar tabel, kolom, tipe data, relasi antar tabel.
161
+ - **Analogi A (Excel)**: kayak template Excel kosong yang sudah didesain — kolom mana isinya teks, kolom mana isinya tanggal, mana yang wajib diisi.
162
+ - **Analogi B (formulir)**: kayak formulir cetak yang nentuin "kolom 1 = nama, kolom 2 = NIK, kolom 3 = tanggal lahir". Schema = blueprint formulir, data = isian formulir.
163
+
164
+ ### **`prisma migrate`**
165
+ Perintah Prisma yang **ubah struktur database real** (tambah tabel, hapus kolom, rename field). Dijalankan saat schema kamu ubah.
166
+ - **Analogi**: arsitek kasih perintah ke kuli buat **bongkar tembok + bikin kamar baru** di rumah. Bukan cuma rencana di kertas — beneran ngebongkar.
167
+ - **⚠️ HATI-HATI**: `prisma migrate` di production = ubah database LIVE yang dipakai user. Salah migrate = data bisa hilang. WAJIB konfirmasi owner sebelum eksekusi di prod.
168
+
169
+ ---
170
+
171
+ ## 🛠️ Bagian 4 — Soal Tools
172
+
173
+ ### **Claude Code**
174
+ AI coding assistant (Anthropic). Kamu chat, dia eksekusi.
175
+ - **Analogi**: asisten pribadi yang bisa baca/tulis kode, tapi kamu yang putuskan & approve.
176
+
177
+ ### **VS Code (Visual Studio Code)**
178
+ Editor kode populer. Tim default pakai ini.
179
+ - **Analogi**: Microsoft Word, tapi khusus untuk file kode.
180
+
181
+ ### **Terminal / Command Line / PowerShell**
182
+ Layar hitam yang kamu ketik perintah (mis. `git pull`, `pnpm dev`).
183
+ - **Analogi**: cara komunikasi sama komputer langsung tanpa klik mouse, hanya ketik perintah.
184
+
185
+ ### **Node.js / Node**
186
+ Runtime untuk jalankan JavaScript di laptop kamu (bukan di browser).
187
+ - **Analogi**: mesin yang nyala-in mobil JavaScript. Tanpa mesin, kode JS cuma bensin yang tidak jalan.
188
+
189
+ ### **pnpm**
190
+ Package manager — tool buat install dependency (library) project.
191
+ - **Analogi**: kayak `apt-get` di Linux atau App Store di iPhone — kamu ketik "install nama-package", dia download dari internet.
192
+
193
+ ### **gh CLI (GitHub CLI)**
194
+ Tool command-line untuk interaksi sama GitHub tanpa buka browser (mis. `gh pr create`).
195
+ - **Analogi**: kontrol GitHub via remote TV, bukan tombol di TV-nya langsung.
196
+
197
+ ### **MCP (Model Context Protocol)**
198
+ Cara Claude Code terhubung ke layanan luar (GitHub, Supabase, dst.).
199
+ - **Analogi A (USB)**: USB connector. Tanpa MCP, Claude "buta" ke GitHub. Dengan MCP, Claude bisa baca-tulis ke GitHub.
200
+ - **Analogi B (Zoom share screen)**: kayak share screen di Zoom — AI bisa "lihat" tools kamu (GitHub, Supabase) dan operate sambil presentasi ke kamu.
201
+ - **Analogi C (Zapier)**: kayak Zapier yang nyambungin Notion ke Slack ke Gmail. MCP nyambungin Claude ke tool-tool yang kamu pakai.
202
+
203
+ ---
204
+
205
+ ## 📋 Bagian 5 — Soal Workflow
206
+
207
+ ### **Task**
208
+ Pekerjaan yang harus kamu kerjain. Datang dari owner via chat channel.
209
+
210
+ ### **Acceptance Criteria (AC)**
211
+ Daftar syarat yang harus terpenuhi supaya task dianggap "selesai". Bukan opini — testable.
212
+ - **Contoh**: "Tombol Export muncul di kanan atas. Klik = download .xlsx. Loading state aktif." ← jelas, bisa di-cek satu-satu.
213
+
214
+ ### **Risk Level (Low/Medium/High)**
215
+ Klasifikasi tingkat risiko task:
216
+ - 🟢 **Low** = UI minor, tidak sentuh data sensitif (mis. tombol Export, fix typo)
217
+ - 🟡 **Medium** = fitur baru self-contained (mis. endpoint API baru, form baru)
218
+ - 🔴 **High** = sentuh auth/login/billing/destruktif → owner WAJIB extra hati-hati
219
+
220
+ ### **Conventional Commits**
221
+ Format standar untuk commit message: `feat:`, `fix:`, `chore:`, `docs:`, `refactor:`, dst.
222
+ - **Contoh**: `feat(inbox): tambah filter status di tabel`
223
+ - **Analogi**: format subject email yang formal: `[URGENT] [PT.ABC] Permohonan Cuti` — orang langsung tau topik.
224
+
225
+ ### **Squash & Merge**
226
+ Cara owner approve PR yang gabung semua commit branch jadi 1 commit bersih di main.
227
+
228
+ ### **Pin / Unpin Pesan**
229
+ Aksi di chat channel untuk "tempel" pesan task aktif di atas supaya gampang dilihat.
230
+
231
+ ### **Emoji Status Task**
232
+ Tim pakai emoji untuk status:
233
+ - 🟦 TODO (belum ada yang ambil)
234
+ - 🟧 WIP (lagi dikerjain)
235
+ - 👁️ REVIEW (PR siap)
236
+ - ✅ DONE (sudah merged)
237
+ - ⛔ BLOCKED (stuck)
238
+
239
+ ### **LAZY-GENERATE**
240
+ Aturan tim: AI tidak generate semua docs di awal. Hanya generate `.md` saat staff sentuh file CRITICAL pertama kali.
241
+ - **Analogi**: penerjemah buku — terjemahin halaman 1 dulu pas kamu baca halaman 1, tidak terjemahin seluruh buku duluan.
242
+
243
+ ### **AUTO-SYNC**
244
+ Aturan: kalau kode berubah, `.md` pendamping WAJIB ikut update di sesi yang sama.
245
+ - **Analogi**: kalau kamu rename produk di Excel, label di brosur HARUS ikut diubah — tidak boleh inkonsisten.
246
+
247
+ ---
248
+
249
+ ## 🎯 Bagian 6 — Soal Tim
250
+
251
+ ### **Owner**
252
+ Pemilik proyek + maintainer kit `lintasAI`. Yang approve PR final + setup infra.
253
+
254
+ ### **Staff IT (kamu)**
255
+ Anggota tim non-programmer yang kerja lewat Claude Code AI. Fokus: paham konteks, eksekusi task, lapor progress.
256
+
257
+ ### **Senior Dev**
258
+ Anggota tim yang lebih pengalaman, biasanya programmer. Bantu staff IT kalau stuck >30 menit.
259
+
260
+ ### **PIC (Person In Charge)**
261
+ Orang yang lagi pegang task tertentu. Ditandai di emoji status: `🟧 WIP — @bagus`.
262
+
263
+ ### **AI-First Team**
264
+ Pola tim yang AI (Claude) jadi co-pilot utama, manusia jadi decision maker + reviewer. Kebalikan dari "tim developer biasa yang kebetulan pakai AI".
265
+
266
+ ### **Standar Tim (`./.claude-kit/`)**
267
+ Folder berisi aturan + template + script tim. Bukan code proyek — ini cara kerja tim.
268
+
269
+ ---
270
+
271
+ ## 🔒 Bagian 7 — Soal Security
272
+
273
+ ### **Token / API Key**
274
+ Password panjang random untuk akses layanan (mis. token Vercel, token Anthropic).
275
+ - **Analogi A (kunci kos)**: kayak kunci kamar kos kamu — buka pintu khusus, jangan diduplikasi.
276
+ - **Analogi B (1Password)**: kayak entry di 1Password / Bitwarden yang otomatis fill saat login — random 24+ karakter, kamu tidak perlu hafal.
277
+ - **Aturan**: token = personal, jangan share. Simpan di password manager (1Password, Bitwarden).
278
+
279
+ ### **PII (Personally Identifiable Information)**
280
+ Data yang bisa identifikasi orang (nama, email, NPWP, foto). Wajib dihandle hati-hati.
281
+ - **Aturan**: jangan log PII di console mentah. Jangan simpan di repo.
282
+
283
+ ### **RLS (Row-Level Security)**
284
+ Aturan di PostgreSQL yang batasin "user X cuma boleh akses baris yang dia punya".
285
+ - **Analogi**: di kantor, tiap karyawan cuma boleh buka laci namanya sendiri, tidak boleh buka laci kolega.
286
+
287
+ ### **Service Role Key (Supabase)**
288
+ Key super-power yang BYPASS RLS. Cuma owner punya. Jangan share ke staff.
289
+ - **Analogi A (master key)**: master key gedung. Cuma manager yang boleh pegang.
290
+ - **Analogi B (Discord admin)**: kayak role "Administrator" di server Discord — bisa hapus channel, ban user, akses semua. Owner only.
291
+ - **Analogi C (Tokopedia merchant)**: kayak akun "Owner Merchant" di Tokopedia yang bisa lihat semua transaksi + atur permission staff toko.
292
+
293
+ ---
294
+
295
+ ## ⚠️ Bagian 8 — Anti-Pattern yang Harus Dihindari
296
+
297
+ ### **"Vibe Code Accept"**
298
+ Claude generate 200 baris, kamu accept tanpa baca. Bug aneh muncul besoknya.
299
+ - **Solusi**: baca pelan-pelan. Kalau capek, minta Claude jelaskan baris per baris.
300
+
301
+ ### **"Auto-Yes Everything"**
302
+ Setting auto-approve aktif tanpa baca apa yang di-approve. AI hapus file penting.
303
+ - **Solusi**: auto-approve OK untuk read-only. Untuk delete/push/migrate → manual approve.
304
+
305
+ ### **"Skip Docs"**
306
+ Merge PR tanpa update `.md`. 2 minggu kemudian tidak ada yang tau fitur cara kerjanya.
307
+ - **Solusi**: docs = deliverable. PR tanpa docs = request changes.
308
+
309
+ ### **"Mega Prompt"**
310
+ Nulis prompt 2000 kata mencakup 5 task. AI bingung prioritas.
311
+ - **Solusi**: 1 task = 1 sesi Claude. Pecah jadi sesi terpisah.
312
+
313
+ ### **"Branch Panjang Umur"**
314
+ Branch jalan 3 minggu, banyak conflict.
315
+ - **Solusi**: branch max 3 hari. Kalau task besar, pecah jadi sub-task.
316
+
317
+ ---
318
+
319
+ ## 🚨 Bagian 9 — Destructive Ops (WAJIB Konfirmasi Owner)
320
+
321
+ > "Destructive ops" = perintah yang **tidak bisa di-undo gampang**. Kalau AI minta konfirmasi salah satu di bawah ini — **STOP**. Screenshot. Tanya owner Discord dulu sebelum klik Yes.
322
+
323
+ ### **Destructive Ops (umum)**
324
+ Istilah payung untuk semua perintah yang **menghapus / merusak data permanen**.
325
+ - **Analogi**: kayak tombol "Hapus Permanen" di Recycle Bin Windows — bukan "Pindah ke Recycle Bin". Sekali klik, file hilang tanpa bisa dikembalikan dari sampah.
326
+ - **Aturan tim**: AI auto-confirm OK untuk read-only (baca file, list folder). Destructive ops = WAJIB 1x konfirmasi manual walau auto-confirm aktif.
327
+
328
+ ### **`force-push` (git push --force)**
329
+ Perintah git yang **menimpa history GitHub** dengan history laptop kamu — termasuk hapus commit orang lain.
330
+ - **Analogi A (Google Docs)**: kayak "Replace All" di Google Docs yang ngehapus semua edit teman kamu, ganti pake versi kamu doang. Edit teman hilang permanen.
331
+ - **Analogi B (overwrite Drive)**: kayak upload file ke Google Drive dengan opsi "Replace existing" — versi lama hilang, ganti versi kamu. Kalau versi lama ada edit teman, edit-nya hilang.
332
+ - **⚠️ BAHAYA**: `force-push` ke `main` = bisa hilangin kerja seluruh tim. Hampir tidak pernah benar untuk staff IT — kalau Claude minta force-push, STOP & tanya owner.
333
+
334
+ ### **`rm -rf` (atau `Remove-Item -Recurse -Force`)**
335
+ Perintah terminal yang **hapus folder + semua isinya tanpa nanya konfirmasi + tanpa Recycle Bin**.
336
+ - **Analogi A (shredder)**: kayak mesin shredder kantor — masukin folder full of dokumen, keluarnya potongan kertas. Tidak bisa direkat balik.
337
+ - **Analogi B (delete Tokopedia)**: kayak hapus toko Tokopedia kamu + semua produk + semua review + semua chat customer sekaligus. Tidak ada tombol restore.
338
+ - **⚠️ BAHAYA**: `rm -rf /` atau `rm -rf C:\` = hapus seluruh isi laptop. Real story: orang pernah hapus production server pakai 1 baris ini. WAJIB triple-check path sebelum jalankan.
339
+
340
+ ### **`DROP TABLE` (SQL)**
341
+ Perintah SQL yang **hapus seluruh tabel database + semua datanya** permanen.
342
+ - **Analogi A (sheet Excel)**: kayak klik kanan tab sheet di Excel → "Delete Sheet" → confirm. Semua baris hilang, sheet hilang, tidak ada Ctrl+Z.
343
+ - **Analogi B (Tokopedia)**: kayak hapus seluruh data pelanggan + transaksi 5 tahun terakhir di Tokopedia kamu, dengan 1 klik. Customer support kamu bisa di-PHK karena tidak ada data untuk dilayani.
344
+ - **⚠️ BAHAYA**: di production = data customer + transaksi hilang. Kalau Claude generate SQL berisi `DROP TABLE` di prod, STOP TOTAL — tanya owner. Solusi yang benar biasanya pakai `prisma migrate` dengan backup dulu.
345
+
346
+ ### **`prisma migrate` di production**
347
+ (Sudah dijelasin di Bagian 3 — Soal Stack Teknis. Recap singkat: ubah struktur database LIVE = berisiko data hilang. WAJIB konfirmasi owner.)
348
+
349
+ ---
350
+
351
+ ## 📖 Lanjutan
352
+
353
+ Setelah baca glossary ini, lanjut ke:
354
+ 1. `ONBOARDING.md` — jadwal 14 hari pertama
355
+ 2. `CLAUDE_TEAM_GUIDE.md` — workflow harian + aturan tim
356
+ 3. `PROMPT_LIBRARY.md` — template prompt siap-pakai
357
+
358
+ Kalau ketemu istilah baru yang tidak ada di sini → tanya Claude (sesi terpisah, tanpa konteks proyek):
359
+ > *"Jelasin istilah `<istilah>` dengan bahasa awam + analogi sehari-hari. Saya non-programmer."*
360
+
361
+ Hasil dialog bisa kamu PR ke kit `lintasAI` supaya glossary makin lengkap untuk tim.