@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.
- package/.github/workflows/publish-npm.yml +40 -0
- package/.github/workflows/validate.yml +93 -0
- package/AUDIT_POST_SETUP_PROMPT_v1.md +280 -0
- package/BOOTSTRAP_PROJECT_DOCS_PROMPT_v1.md +3 -0
- package/CHANGELOG.md +313 -0
- package/CLAUDE_universal_v1.md +1021 -0
- package/CONTRIBUTING.md +101 -0
- package/FIRST_SESSION_PROMPT_v1.md +7 -0
- package/JALANKAN_KIT.md +188 -0
- package/LICENSE +21 -0
- package/MULAI_DI_SINI.md +145 -0
- package/PROJECT_KICKOFF_PROMPT_v1.md +3 -0
- package/PROJECT_LIFECYCLE_PROMPT_v1.md +536 -0
- package/PROJECT_MIGRATION_PROMPT_v1.md +3 -0
- package/README.md +505 -0
- package/SETUP_POLA_B_PROMPT_v1.md +5 -0
- package/SPLIT_REPO_MIGRATION_PROMPT_v1.md +485 -0
- package/TEAM_ROLLOUT_GUIDE_v1.md +172 -0
- package/UPDATE_DOCS_PROMPT_v1.md +3 -0
- package/UPDATE_KIT_PROMPT_v1.md +213 -0
- package/bin/lintasai.js +81 -0
- package/docs/SIGNED_RELEASE.md +162 -0
- package/install-windows.ps1 +225 -0
- package/kit.ps1 +508 -0
- package/lib/agents-md.ps1 +174 -0
- package/lib/git-helpers.ps1 +104 -0
- package/lib/kit-files.psd1 +133 -0
- package/lib/manifest-signing.ps1 +65 -0
- package/lib/manifest.ps1 +267 -0
- package/lib/rollback.ps1 +241 -0
- package/lib/safety.ps1 +193 -0
- package/lib/template-deploy.ps1 +242 -0
- package/lib/version-detect.ps1 +161 -0
- package/package.json +36 -0
- package/setup-pola-b.ps1 +687 -0
- package/templates/ANALOGI_LIBRARY.md +7 -0
- package/templates/CLAUDE_TEAM_GUIDE.md +505 -0
- package/templates/CROSS_REPO_TYPES_PIPELINE.md +473 -0
- package/templates/DB_SCHEMA_SCAN_PROMPT.md +194 -0
- package/templates/DISCORD_BOT_INTEGRATION.md +187 -0
- package/templates/GLOSSARY_NON_PROGRAMMER.md +361 -0
- package/templates/INDEX.md +157 -0
- package/templates/MCP_SETUP.md +1145 -0
- package/templates/MIGRATE_TO_SUBFOLDER_PROMPT_v1.md +220 -0
- package/templates/ONBOARDING.md +172 -0
- package/templates/PROJECT_STARTER_TEMPLATES.md +264 -0
- package/templates/PROMPT_LIBRARY.md +790 -0
- package/templates/RLS_SETUP_PROMPT.md +167 -0
- package/templates/SECURITY_INCIDENT_PLAYBOOK.md +191 -0
- package/templates/SPLIT_REPO_AGENTS_TEMPLATES.md +32 -0
- package/templates/SPLIT_REPO_NON_PROGRAMMER_PROMPTS.md +604 -0
- package/templates/SPLIT_REPO_TOOLS_SETUP.md +388 -0
- package/templates/STACK_DETECTION_PATTERN.md +261 -0
- package/templates/STACK_GUIDE.md +564 -0
- package/templates/STACK_MIGRATION_GUIDE.md +154 -0
- package/templates/STACK_VERSIONS.md +31 -0
- package/templates/UPDATE_GUIDE.md +246 -0
- package/templates/_EXAMPLE.md +110 -0
- package/templates/_PATTERNS.md +173 -0
- package/templates/architecture.md +180 -0
- package/templates/architecture_auto.md +61 -0
- package/templates/decisions/README.md +108 -0
- package/templates/decisions/_TEMPLATE.md +84 -0
- package/templates/feature-flags-advanced.md +171 -0
- package/templates/github/CODEOWNERS.template +61 -0
- package/templates/github/GENERATE_TYPES_SCRIPT.md +77 -0
- package/templates/github/PUBLISH_SHARED_WORKFLOW.yml +52 -0
- package/templates/github/RECEIVE_BACKEND_UPDATE.yml +106 -0
- package/templates/github/RENOVATE_FRONTEND.json +28 -0
- package/templates/github/TRIGGER_FRONTEND_UPDATE.yml +29 -0
- package/templates/github/pull_request_template.md +44 -0
- package/templates/github/scripts/ai-review.js +153 -0
- package/templates/github/workflows/ai-review.yml +61 -0
- package/templates/github/workflows/backup-schemas.yml +169 -0
- package/templates/glossary.md +110 -0
- package/templates/split-agents/BACKEND.md +149 -0
- package/templates/split-agents/FRONTEND.md +141 -0
- package/templates/split-agents/SHARED.md +82 -0
- package/templates/split-agents/TOOLS.md +77 -0
- package/tests/Run-Tests.ps1 +19 -0
- package/tests/lib-safety.Tests.ps1 +66 -0
- package/tests/rollback.Tests.ps1 +66 -0
- package/tests/uninstall.Tests.ps1 +265 -0
- package/tests/update-kit.Tests.ps1 +78 -0
- package/uninstall.ps1 +794 -0
- package/update-kit.ps1 +907 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# ANALOGI_LIBRARY โ 30 jargon teknis x 3-layer analogi tools digital populer Indonesia
|
|
2
|
+
|
|
3
|
+
> **STATUS: ACTIVE** โ Auto-deployed via `setup-pola-b.ps1` ke `docs/ANALOGI_LIBRARY.md` di project user.
|
|
4
|
+
>
|
|
5
|
+
> Library ini dipakai sebagai cadangan rujukan kalau AI butuh analogi konsisten untuk istilah teknis yang sudah ada di tabel. Untuk istilah baru di luar tabel, AI generate 3-layer on-demand sesuai rule di `CLAUDE_universal_v1.md` (Layer 1: sehari-hari, Layer 2: tools digital populer Indonesia, Layer 3: kasus konkret user), lalu suggest tambah ke library via LAZY-GENERATE.
|
|
6
|
+
|
|
7
|
+
5 grounding samples inline di `CLAUDE_universal_v1.md` (Prisma, migration, RLS, schema, env var). Sisanya rujuk ke library ini atau AI generate kontekstual.
|
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
# CLAUDE_TEAM_GUIDE.md โ Panduan Kerja Tim AI-First
|
|
2
|
+
|
|
3
|
+
> Versi 1 ยท 2026-06-01
|
|
4
|
+
> Bahasa Indonesia ยท junior-friendly ยท untuk tim 5โ15 dev AI-first
|
|
5
|
+
> File ini SISTEM (managed by kit). Jangan dihapus. Edit hati-hati โ kalau mau ubah pattern tim, PR ke repo kit `lintasAI`.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Untuk siapa file ini?
|
|
10
|
+
|
|
11
|
+
File ini ditulis untuk **anggota tim yang baru bergabung** dan **anggota lama yang butuh refresh**. Targetnya: dev non-programmer (atau junior) yang coding 100% lewat Claude Code. Setelah baca file ini sampai habis, kamu paham *cara tim ini bekerja sehari-hari*: dari nyalakan laptop pagi sampai PR di-merge sore. Kalau ada istilah asing, cek `docs/glossary.md` atau tanya Claude langsung โ jangan tebak.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 2. Filosofi tim AI-first
|
|
16
|
+
|
|
17
|
+
Tim ini bukan tim "developer yang kebetulan pakai AI". Tim ini adalah **tim AI-first**: AI (Claude Code) jadi co-pilot utama, manusia jadi *decision maker* + *reviewer*. Konsekuensinya:
|
|
18
|
+
|
|
19
|
+
- **Setiap baris kode lahir dari dialog dengan AI**, bukan ketik manual. Kalau kamu ketik kode manual lebih dari 10 baris, berhenti โ minta Claude generate dulu, baru kamu edit.
|
|
20
|
+
- **Konteks > skill teknis**. Yang dinilai bukan "bisa nulis React seberapa lancar", tapi "bisa kasih konteks ke AI seberapa lengkap". Prompt yang jelas = output yang benar.
|
|
21
|
+
- **Dokumen `docs/` adalah memory eksternal tim**. AI tidak ingat sesi kemarin. Tapi kalau semua keputusan ada di `docs/`, AI sesi besok bisa lanjut dari titik yang sama. Jangan males update `.md`.
|
|
22
|
+
- **Manusia tetap accountable**. AI bisa salah, hallucinate, atau ngasal. Kamu yang tanda-tangan PR โ kamu yang tanggung jawab. Jangan auto-approve apa pun yang kamu tidak paham.
|
|
23
|
+
- **Slow is smooth, smooth is fast**. Lebih baik 1 task selesai bersih (kode + docs + test + review) daripada 5 task setengah jadi.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 3. Setup awal dev baru hire (Day 0 โ Day 14)
|
|
28
|
+
|
|
29
|
+
Dev baru hire wajib lewat onboarding 14 hari: Day 0 install tools + clone repo, Day 1 baca dokumentasi inti, Day 1โ2 first PR (good first issue) pair dengan senior, Day 3โ7 task mandiri SโM dengan review, Day 7โ14 full ownership 1 modul kecil, lalu Day 15+ mode normal.
|
|
30
|
+
|
|
31
|
+
**Jangan loncat fase.** Kalau Day 1 belum baca `architecture.md`, jangan langsung pegang task. Pondasi konteks dulu, baru kerja.
|
|
32
|
+
|
|
33
|
+
๐ Detail Day 0-14 playbook lihat `templates/ONBOARDING.md`.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 4. Workflow harian: 1 task = 1 sesi Claude Code
|
|
38
|
+
|
|
39
|
+
**Aturan emas**: satu task = satu sesi Claude Code yang fresh. Jangan campur 2 task dalam 1 sesi panjang โ konteks bercampur, AI bingung, kamu bingung.
|
|
40
|
+
|
|
41
|
+
### Pola harian standar:
|
|
42
|
+
|
|
43
|
+
1. **Pagi (15 menit)**: Buka **channel chat `#tasks-<proyek>` (default)** ATAU GitHub Issues (opsional, dipakai kalau proyek butuh tracking formal). Ambil 1 task yang ditandai ๐ฆ TODO. Pastikan kamu paham *apa yang diminta* sebelum buka Claude. Kalau ragu, tanya di channel tim dulu. Detail format prompt task & emoji status: lihat section 5b.
|
|
44
|
+
2. **Buka sesi Claude Code baru** di folder proyek. Sesi baru = konteks bersih, tidak ada residu dari kemarin.
|
|
45
|
+
3. **Brief AI dengan konteks**:
|
|
46
|
+
- Sebutkan issue/task number.
|
|
47
|
+
- Tunjuk file `docs/` yang relevan (mis. "baca `docs/auth.md` dulu").
|
|
48
|
+
- Jelaskan acceptance criteria dengan jelas.
|
|
49
|
+
4. **Iterasi**: AI generate โ kamu baca โ kamu kritik โ AI revisi. Ulangi sampai puas.
|
|
50
|
+
5. **Verifikasi**: jalankan kode lokal (`npm run dev`), klik manual, atau minta Claude pakai skill `verify`.
|
|
51
|
+
6. **Update docs**: AI auto-generate/update `.md` pendamping. Kamu baca sekilas, pastikan tidak hallucinate.
|
|
52
|
+
7. **Commit + push + PR**: pakai pattern di `PROMPT_LIBRARY.md` no.5 (review PR teman) atau no.6 (refactor).
|
|
53
|
+
8. **Tutup sesi Claude**. Besok pagi, sesi baru lagi.
|
|
54
|
+
|
|
55
|
+
### Yang DILARANG:
|
|
56
|
+
|
|
57
|
+
- โ Sesi Claude jalan 8 jam non-stop tanpa restart โ konteks penuh, AI mulai ngaco.
|
|
58
|
+
- โ Kerja 3 task sekaligus dalam 1 sesi โ mixing context = bug.
|
|
59
|
+
- โ Skip step verifikasi karena "AI bilang udah jadi". Selalu jalankan & lihat sendiri.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 5. Branching strategy untuk non-programmer
|
|
64
|
+
|
|
65
|
+
Git itu menakutkan, tapi tenang โ **Claude bantu semua perintah git**. Kamu cukup paham *konsep*-nya, sintaks biar AI yang urus.
|
|
66
|
+
|
|
67
|
+
### Konsep dasar:
|
|
68
|
+
|
|
69
|
+
- **`main` = production**. Selalu hijau, selalu deployable. **PROTECTED** โ tidak boleh push langsung. Wajib lewat PR.
|
|
70
|
+
- **Feature branch** = tempat kerja kamu. Format nama: `feat/<short-desc>` atau `fix/<short-desc>` atau `docs/<short-desc>`.
|
|
71
|
+
- **Branch max hidup 3 hari**. Lewat 3 hari = ada bau (mungkin task kebesaran, atau ada blocker). Stop, diskusi sama tim.
|
|
72
|
+
|
|
73
|
+
### Workflow per task:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
1. git checkout main && git pull โ sinkron dulu dengan main terbaru
|
|
77
|
+
2. git checkout -b feat/add-search โ bikin branch baru
|
|
78
|
+
3. <kerja, commit, push>
|
|
79
|
+
4. Buka PR di GitHub โ pakai gh CLI atau web UI
|
|
80
|
+
5. Tunggu review + CI hijau
|
|
81
|
+
6. Merge (squash merge biasanya) โ history main bersih
|
|
82
|
+
7. Hapus branch lokal & remote
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Kalau bingung tinggal minta Claude:
|
|
86
|
+
|
|
87
|
+
> "Saya baru selesai kerja task X, branch saat ini `feat/add-search`. Tolong bantu commit + push + buat PR. Pakai pattern Conventional Commits."
|
|
88
|
+
|
|
89
|
+
Claude akan jalankan git commands satu-satu. Kamu cuma approve.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 5b. Workflow Tanpa GitHub Issue (Chat-Driven Task)
|
|
94
|
+
|
|
95
|
+
Tim ini **default tidak pakai GitHub Issues** untuk task harian. Alasannya: anggota tim mayoritas non-programmer, GitHub UI itu ekstra friction (harus buka tab, login, isi form, klik label, dst.). Selama tim kecil (5โ15 orang) dan komunikasi rapat, **channel chat sudah cukup** jadi sumber kebenaran task.
|
|
96
|
+
|
|
97
|
+
> **Audit trail = chat history**. Jangan hapus pesan task. Kalau task selesai, biarkan pesan tetap ada (cuma update emoji status).
|
|
98
|
+
|
|
99
|
+
### Channel yang dipakai
|
|
100
|
+
|
|
101
|
+
Tim pakai 1 channel chat per proyek. Nama channel disepakati owner di awal proyek (`docs/architecture.md` section *Komunikasi*). Contoh:
|
|
102
|
+
|
|
103
|
+
- Slack: `#tasks-akses`, `#tasks-bayar`
|
|
104
|
+
- Discord: channel `tasks-akses` di server tim
|
|
105
|
+
- Telegram/WhatsApp: group `Tasks akses` (untuk tim super-kecil)
|
|
106
|
+
|
|
107
|
+
Satu channel = satu proyek. **Jangan campur task lintas proyek** โ bikin susah cari riwayat.
|
|
108
|
+
|
|
109
|
+
### Format prompt task standar (owner kirim ke channel)
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
[TASK] <deskripsi singkat โ 1 kalimat>
|
|
113
|
+
[Acceptance Criteria]
|
|
114
|
+
1. <criteria 1>
|
|
115
|
+
2. <criteria 2>
|
|
116
|
+
3. <criteria 3>
|
|
117
|
+
[Prioritas] <Rendah/Sedang/Tinggi>, target <kapan>
|
|
118
|
+
[Catatan] <reuse helper apa / file mana โ opsional tapi sangat membantu>
|
|
119
|
+
[Risk Level] <Low / Medium / High โ lihat section 7b>
|
|
120
|
+
* Low = UI minor, copy edit, refactor internal
|
|
121
|
+
* Medium = fitur baru self-contained, tidak sentuh auth/billing/data sensitif
|
|
122
|
+
* High = sentuh auth/billing/schema-user-visible/destruktif/eksperimental โ owner WAJIB hold merge
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Contoh nyata** (owner kirim ke `#tasks-akses`):
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
๐ฆ TODO
|
|
129
|
+
|
|
130
|
+
[TASK] Tambah tombol Export ke Excel di /admin/users
|
|
131
|
+
[Acceptance Criteria]
|
|
132
|
+
1. Tombol muncul di kanan atas tabel users, label "Export Excel"
|
|
133
|
+
2. Klik tombol โ download .xlsx berisi user yang ter-filter
|
|
134
|
+
3. Kolom: nama, email, role, last_login, created_at
|
|
135
|
+
4. Loading state saat generate
|
|
136
|
+
[Prioritas] Sedang, target besok sore
|
|
137
|
+
[Catatan] Reuse helper exportToXlsx() di lib/excel.ts (sudah ada untuk invoices).
|
|
138
|
+
[Risk Level] Low โ UI tambahan, tidak sentuh data sensitif
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Kenapa wajib template ini?**
|
|
142
|
+
- `[TASK]` โ cepat di-scan saat scroll channel.
|
|
143
|
+
- `[Acceptance Criteria]` โ AI butuh ini untuk tahu "selesai" itu apa.
|
|
144
|
+
- `[Prioritas]` + target โ anggota tim tahu mana yang duluan.
|
|
145
|
+
- `[Catatan]` โ kasih konteks reuse supaya AI tidak bikin helper duplikat.
|
|
146
|
+
- `[Risk Level]` โ paksa owner klasifikasi risiko di awal (lihat section 7b). High Risk = owner hold merge sampai yakin.
|
|
147
|
+
|
|
148
|
+
### Convention emoji status
|
|
149
|
+
|
|
150
|
+
Status task ditandai emoji di **baris pertama pesan task**. Owner/PIC **edit pesan asli** saat status berubah โ bukan kirim pesan baru.
|
|
151
|
+
|
|
152
|
+
| Emoji | Status | Artinya |
|
|
153
|
+
|---|---|---|
|
|
154
|
+
| ๐ฆ | **TODO** | Task baru, belum ada yang ambil |
|
|
155
|
+
| ๐ง | **WIP** | Sudah diambil. Tambah PIC: `๐ง WIP โ @bagus` |
|
|
156
|
+
| ๐๏ธ | **REVIEW** | PR sudah dibuka. Tambah link: `๐๏ธ REVIEW โ PR #42` |
|
|
157
|
+
| โ
| **DONE** | Sudah merged & deployed |
|
|
158
|
+
| โ | **BLOCKED** | Ada blocker. Tambah alasan |
|
|
159
|
+
| ๐๏ธ | **CANCELLED** | Dibatalkan |
|
|
160
|
+
|
|
161
|
+
**Aturan**: Hanya owner/PIC yang edit pesan. Jangan hapus pesan lama. Pin pesan WIP/BLOCKED.
|
|
162
|
+
|
|
163
|
+
### Cara ambil task
|
|
164
|
+
|
|
165
|
+
1. Scroll channel, cari ๐ฆ TODO prioritas tinggi.
|
|
166
|
+
2. Edit pesan โ ๐ง WIP โ @<nama>.
|
|
167
|
+
3. Buka sesi Claude Code baru, brief AI dengan paste seluruh pesan task.
|
|
168
|
+
4. Kerja sesuai workflow section 4.
|
|
169
|
+
5. PR dibuka โ edit pesan jadi ๐๏ธ REVIEW โ PR #<nomor>.
|
|
170
|
+
6. Setelah merged โ โ
DONE.
|
|
171
|
+
|
|
172
|
+
### Klarifikasi soal task
|
|
173
|
+
|
|
174
|
+
**Reply thread** pesan task. Jangan kirim pesan baru di channel utama.
|
|
175
|
+
|
|
176
|
+
### Kapan TETAP pakai GitHub Issues?
|
|
177
|
+
|
|
178
|
+
- Proyek dengan klien eksternal (klien minta lihat status formal)
|
|
179
|
+
- Kontrak SLA tracking formal
|
|
180
|
+
- Audit kepatuhan/compliance
|
|
181
|
+
- Tim > 15 orang (chat mulai noisy)
|
|
182
|
+
- Task lintas-proyek besar (butuh Kanban view)
|
|
183
|
+
|
|
184
|
+
Kondisi di atas โ diskusi sama owner, pindah ke GitHub Issues. Format prompt task tetap sama (copy ke body issue, emoji status diganti label).
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 6. Library prompt siap-pakai
|
|
189
|
+
|
|
190
|
+
Daripada nulis prompt dari nol tiap kali, **tim punya `PROMPT_LIBRARY.md`** โ koleksi 10+ prompt yang sudah teruji untuk kasus umum (tambah fitur, fix bug, SEO check, deploy, dll). Baca file itu sekarang kalau belum.
|
|
191
|
+
|
|
192
|
+
Lokasi: `./.claude-kit/templates/PROMPT_LIBRARY.md` (versi master, tim) atau copy lokal di `docs/PROMPT_LIBRARY.md`.
|
|
193
|
+
|
|
194
|
+
Kalau ada pattern baru yang kamu temukan dan terbukti work โ **PR ke kit** (lihat seksi 13).
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 7. MCP setup tim
|
|
199
|
+
|
|
200
|
+
**MCP** (Model Context Protocol) = cara Claude Code terhubung ke tool eksternal: GitHub, Supabase, Vercel, dll. Tanpa MCP, Claude buta ke layanan-layanan ini.
|
|
201
|
+
|
|
202
|
+
Tim ini pakai MCP servers berikut sebagai standar:
|
|
203
|
+
- **GitHub MCP** โ buat PR, baca issue, comment.
|
|
204
|
+
- **Supabase MCP** โ query DB, lihat schema, baca logs.
|
|
205
|
+
- **Vercel/Railway MCP** โ cek deploy status, env vars.
|
|
206
|
+
- **Filesystem MCP** โ baca/tulis file di luar repo (sparingly).
|
|
207
|
+
|
|
208
|
+
Setup detail (token, config JSON, troubleshooting): lihat `./.claude-kit/templates/MCP_SETUP.md`.
|
|
209
|
+
|
|
210
|
+
**Aturan**: token MCP **per-orang**, jangan share. Simpan di password manager pribadi (1Password, Bitwarden). Jangan commit ke repo.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## 7b. Risk Level Decision Tree (Kapan Owner Hati-Hati Approve Merge)
|
|
215
|
+
|
|
216
|
+
Tim default pakai workflow simple: **branch โ PR โ Vercel preview โ owner review โ squash merge โ auto-deploy prod**. Tidak ada feature flag, tidak ada toggle env var, tidak ada gradual rollout.
|
|
217
|
+
|
|
218
|
+
> Filosofi: simpler = less mistake. Untuk team 5-15 staff IT non-programmer, kompleksitas extra (feature flag) jadi friction tanpa benefit jelas. Staff tidak akses Vercel dashboard, jadi flag toggle = owner-only operation = bottleneck.
|
|
219
|
+
|
|
220
|
+
### Tapi tidak semua task sama risiko-nya
|
|
221
|
+
|
|
222
|
+
Tiap task punya **Risk Level**. Owner WAJIB klasifikasi di awal supaya tim tahu cara handle:
|
|
223
|
+
|
|
224
|
+
| Risk Level | Kriteria | Cara Handle |
|
|
225
|
+
|---|---|---|
|
|
226
|
+
| ๐ข **Low** | Copy edit, styling, bugfix <50 baris, refactor internal, fitur baru self-contained (tombol Export, filter, tooltip) | Standar: review cepat, merge, deploy. |
|
|
227
|
+
| ๐ก **Medium** | Fitur baru yang sentuh business logic, API endpoint baru, change yang user lihat tapi tidak kritis | Standar + test manual di Vercel preview lebih teliti sebelum merge. |
|
|
228
|
+
| ๐ด **High** | Auth/login/permission, billing/pricing/payment, schema DB yang user lihat, destruktif (hapus data, migrasi besar), eksperimental | Owner HOLD MERGE โ test extensive di preview, smoke test prod 5+ menit setelah deploy, siap rollback. Pertimbangkan deploy off-hours. |
|
|
229
|
+
|
|
230
|
+
### Format declare di prompt task
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
[Risk Level] <Low / Medium / High>
|
|
234
|
+
* Low = UI minor, copy edit, refactor internal
|
|
235
|
+
* Medium = fitur baru self-contained, tidak sentuh auth/billing/data sensitif
|
|
236
|
+
* High = sentuh auth/billing/schema-user-visible/destruktif/eksperimental โ owner WAJIB hold merge sampai yakin
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Contoh konkret
|
|
240
|
+
|
|
241
|
+
| Task | Risk Level | Alasan |
|
|
242
|
+
|---|---|---|
|
|
243
|
+
| Tambah tombol Export Excel di /admin/users | ๐ข Low | UI tambahan, tidak sentuh data sensitif |
|
|
244
|
+
| Fix typo di footer | ๐ข Low | Copy edit murni |
|
|
245
|
+
| Refactor `lib/utils.ts` (extract helper) | ๐ข Low | Internal, no API change |
|
|
246
|
+
| Tambah filter "Status" di tabel inbox | ๐ข Low | UI baru, tidak ubah data |
|
|
247
|
+
| Tambah endpoint API `/api/reports/export` | ๐ก Medium | API baru, tapi self-contained, read-only |
|
|
248
|
+
| Tambah field NPWP di form registrasi | ๐ก Medium | Schema change user-facing, tapi tidak destruktif |
|
|
249
|
+
| Ganti library auth (NextAuth โ Clerk) | ๐ด High | Sentuh login = bisa lockout semua user |
|
|
250
|
+
| Implement diskon volume di checkout | ๐ด High | Sentuh billing = potensi over/under-charge |
|
|
251
|
+
| Migrasi avatar S3 lama โ bucket baru | ๐ด High | Destruktif/irreversible kalau salah |
|
|
252
|
+
| A/B test redesign landing page | ๐ด High | Eksperimental, butuh monitoring |
|
|
253
|
+
| Bump Next.js 14.2.3 โ 14.2.5 (patch) | ๐ข Low | Patch bump |
|
|
254
|
+
| Bump Next.js 14 โ 15 (major) | ๐ด High | Potensi breaking change widespread |
|
|
255
|
+
|
|
256
|
+
### Aturan untuk Owner
|
|
257
|
+
|
|
258
|
+
- **Risk Level WAJIB di awal task**. Tidak boleh "lihat dulu nanti". Owner yang declare.
|
|
259
|
+
- **High Risk = hold merge sampai yakin**. Boleh nahan PR 1-3 hari untuk extensive review.
|
|
260
|
+
- **Off-hours deploy untuk High Risk**. Merge & deploy saat traffic rendah (mis. tengah malam) supaya kalau bug, dampak minimal.
|
|
261
|
+
- **Smoke test prod 5+ menit** setelah deploy High Risk. Buka URL prod, klik fitur, cek log Vercel + Supabase.
|
|
262
|
+
- **Siap rollback `git revert`** โ kalau bug parah, langsung revert (lihat section 13b Rollback Playbook).
|
|
263
|
+
|
|
264
|
+
### Kalau Owner Butuh Lebih dari Branch+Revert: Feature Flag (Advanced)
|
|
265
|
+
|
|
266
|
+
Untuk kasus EKSTREM (mis. payment toggle saat Black Friday), feature flag tetap pilihan. Tapi itu **advanced operation** yang butuh owner familiar dengan Vercel env vars + redeploy cycle. Detail di `./.claude-kit/templates/feature-flags-advanced.md`. Default workflow: **tidak perlu flag**.
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 8. Code review AI-assisted
|
|
271
|
+
|
|
272
|
+
Review PR teman = wajib, tapi kamu bukan programmer berpengalaman โ itu OK. AI bantu review. Workflow:
|
|
273
|
+
|
|
274
|
+
1. **Buka PR di GitHub**, copy URL.
|
|
275
|
+
2. **Buka sesi Claude Code baru** di repo, pastikan sudah pull main terbaru.
|
|
276
|
+
3. **Pakai prompt no.5 di `PROMPT_LIBRARY.md`** ("Review PR teman"). Intinya:
|
|
277
|
+
```
|
|
278
|
+
Tolong review PR ini: <URL>. Fokus ke:
|
|
279
|
+
- Apakah acceptance criteria di issue terpenuhi?
|
|
280
|
+
- Ada bug obvious? (null check, edge case, typo)
|
|
281
|
+
- Apakah docs `.md` pendamping ter-update?
|
|
282
|
+
- Apakah ada code duplication yang bisa di-reuse?
|
|
283
|
+
- Apakah commit message ikut Conventional Commits?
|
|
284
|
+
```
|
|
285
|
+
4. **Claude akan output report**. Baca pelan-pelan. Tandai poin yang kamu setuju.
|
|
286
|
+
5. **Putuskan**:
|
|
287
|
+
- **Approve** kalau bersih.
|
|
288
|
+
- **Request changes** kalau ada concern. Tulis comment di GitHub PR (Claude bisa bantu draft comment yang sopan).
|
|
289
|
+
- **Comment only** kalau ragu, butuh diskusi.
|
|
290
|
+
6. **Submit review** lewat `gh pr review` atau web UI.
|
|
291
|
+
|
|
292
|
+
**Penting**: kamu tetap accountable. Kalau Claude bilang "LGTM" tapi kamu sebenarnya tidak ngerti kodenya โ *jangan approve*. Tanya teammate dulu.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## 9. Stack convention
|
|
297
|
+
|
|
298
|
+
Tim ini default pakai stack:
|
|
299
|
+
- **Frontend**: Next.js (App Router) + Tailwind + shadcn/ui
|
|
300
|
+
- **Backend**: Next.js Route Handlers / Server Actions, atau Express terpisah
|
|
301
|
+
- **DB**: Supabase (Postgres) via Prisma
|
|
302
|
+
- **Hosting**: Vercel (default), Railway/Render kalau perlu long-running process
|
|
303
|
+
- **Auth**: NextAuth atau Supabase Auth (per proyek)
|
|
304
|
+
- **CI/CD**: GitHub Actions
|
|
305
|
+
- **Package manager**: pnpm (lebih cepat & disk-efficient)
|
|
306
|
+
|
|
307
|
+
Detail lengkap (env vars, struktur folder, naming convention, error handling pattern) ada di `./.claude-kit/templates/STACK_GUIDE.md`.
|
|
308
|
+
|
|
309
|
+
Kalau proyek butuh stack berbeda โ **tulis alasan di `docs/architecture.md`** dan minta approval owner.
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## 10. Conflict resolution untuk non-programmer
|
|
314
|
+
|
|
315
|
+
Merge conflict = saat git tidak bisa otomatis gabungin perubahan kamu dengan main. Kelihatannya menakutkan, tapi gampang dengan AI.
|
|
316
|
+
|
|
317
|
+
### Workflow:
|
|
318
|
+
|
|
319
|
+
1. **Tarik napas**. Conflict itu normal, bukan bencana.
|
|
320
|
+
2. `git status` โ lihat file mana yang conflict.
|
|
321
|
+
3. **Buka file yang conflict**, lihat marker `<<<<<<<`, `=======`, `>>>>>>>`.
|
|
322
|
+
4. **Buka Claude**, paste isi file + konteks:
|
|
323
|
+
```
|
|
324
|
+
Saya ada merge conflict di file <nama>. Branch saya `feat/X` di-merge ke `main` terbaru.
|
|
325
|
+
Berikut isi file dengan conflict markers:
|
|
326
|
+
<paste full file>
|
|
327
|
+
|
|
328
|
+
Branch saya mau nambah fitur Y. Main terbaru sudah ada perubahan Z.
|
|
329
|
+
Tolong resolve, jelaskan kenapa, dan kasih saya file final tanpa markers.
|
|
330
|
+
```
|
|
331
|
+
5. **Baca penjelasan AI**. Kalau masuk akal, replace file lokal dengan output AI.
|
|
332
|
+
6. **Verifikasi**: jalankan kode (`npm run dev`), pastikan tidak break.
|
|
333
|
+
7. **Commit resolution**: `git add <file> && git commit` (pakai message default "Merge branch ...").
|
|
334
|
+
8. **Push**, lanjutkan PR.
|
|
335
|
+
|
|
336
|
+
### Kapan minta tolong manusia:
|
|
337
|
+
- Conflict di file critical (auth, DB schema, payment) โ minta senior review hasil AI sebelum commit.
|
|
338
|
+
- Lebih dari 3 file conflict โ mungkin branch kamu terlalu lama, restart dari main.
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## 11. Memory & plans hygiene
|
|
343
|
+
|
|
344
|
+
Claude punya 2 jenis "ingatan":
|
|
345
|
+
|
|
346
|
+
1. **Memory file** (`~/.claude/projects/<proyek>/memory/MEMORY.md`) โ **per-user, private**. Otomatis ke-load tiap sesi. Isi: preferensi user, snapshot status proyek dari sudut pandang user.
|
|
347
|
+
2. **Plans / TodoWrite** โ internal AI dalam 1 sesi. Hilang saat sesi tutup.
|
|
348
|
+
|
|
349
|
+
### Aturan:
|
|
350
|
+
|
|
351
|
+
- **JANGAN share memory file** ke teman. Itu personal, isinya kebiasaan kamu.
|
|
352
|
+
- **Pattern tim** (cara nulis docs, cara naming branch, cara review) **HARUS** lewat `_PATTERNS.md` di kit โ bukan memory pribadi. Kalau memang pattern tim, PR ke kit.
|
|
353
|
+
- **Update memory** kalau kamu temukan workflow baru yang berulang. Mis: "setiap aku minta deploy, AI selalu cek `.env.local` dulu" โ tulis di memory.
|
|
354
|
+
- **Jangan simpan secrets** di memory. Token, password, API key โ simpan di password manager.
|
|
355
|
+
|
|
356
|
+
Detail teknis memory: `docs/CLAUDE_PERSISTENCE_MAP.md` (kalau ada di proyek) atau tanya owner.
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
## 12. Anti-pattern + FAQ
|
|
361
|
+
|
|
362
|
+
Anti-pattern lengkap dengan analogi: lihat `docs/GLOSSARY_NON_PROGRAMMER.md` ยง8 Anti-Pattern.
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## 13. Escalation path
|
|
367
|
+
|
|
368
|
+
Kapan tanya siapa:
|
|
369
|
+
|
|
370
|
+
| Situasi | Tanya |
|
|
371
|
+
|---|---|
|
|
372
|
+
| Stuck kode/prompt < 30 menit | Claude (iterasi prompt) |
|
|
373
|
+
| Stuck > 30 menit, ada teammate online | Channel tim (Slack/Discord) โ tag `@team` |
|
|
374
|
+
| Konflik desain (arsitektur, DB schema, dependency baru) | Senior dev / tech lead |
|
|
375
|
+
| Keputusan bisnis / scope / deadline | Owner / PM |
|
|
376
|
+
| Pattern baru yang kamu yakin worth dipakai semua tim | PR ke repo kit `lintasAI` |
|
|
377
|
+
| Bug di kit itu sendiri (instruksi salah, broken template) | Issue di repo kit `lintasAI` |
|
|
378
|
+
| Security incident (token bocor, data leak) | Owner langsung, JANGAN di channel publik |
|
|
379
|
+
|
|
380
|
+
### Cara PR ke kit `lintasAI`:
|
|
381
|
+
|
|
382
|
+
1. Fork `github.com/ojokesusu/lintasAI`.
|
|
383
|
+
2. Edit file template di branch baru.
|
|
384
|
+
3. PR dengan judul `pattern: <deskripsi singkat>` dan body yang jelaskan: kapan pakai, contoh kasus, kenapa worth jadi standar tim.
|
|
385
|
+
4. Tag maintainer kit. Tunggu review.
|
|
386
|
+
5. Setelah merged, kit auto-update di proyek-proyek tim saat mereka pull versi baru.
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## 13b. Hotfix & Rollback Playbook
|
|
391
|
+
|
|
392
|
+
Bug serius di production = mimpi buruk. Tapi tim ini punya **2 jalur rollback** yang sudah teruji. Target tim: **time-to-rollback < 5 menit**.
|
|
393
|
+
|
|
394
|
+
> **Aturan pertama saat ada bug serius**: jangan panik, jangan langsung patch. **Rollback dulu**, baru investigasi dengan tenang.
|
|
395
|
+
|
|
396
|
+
### Kapan playbook ini dipakai?
|
|
397
|
+
|
|
398
|
+
Gunakan kalau ada **salah satu**:
|
|
399
|
+
- ๐จ User melaporkan fitur error massal (bukan cuma 1 user)
|
|
400
|
+
- ๐จ Halaman crash / blank screen di prod
|
|
401
|
+
- ๐จ Data salah ditampilkan (mis. invoice 0 padahal ada tagihan)
|
|
402
|
+
- ๐จ Login total tidak bisa
|
|
403
|
+
- ๐จ Pembayaran failed massal
|
|
404
|
+
- ๐จ Vercel deploy terbaru di-trigger commit terakhir, masalah mulai setelah deploy itu
|
|
405
|
+
|
|
406
|
+
Kalau cuma 1 user complain minor โ debug normal, jangan rollback.
|
|
407
|
+
|
|
408
|
+
### Default Workflow: Rollback via Git Revert
|
|
409
|
+
|
|
410
|
+
Tim default TIDAK pakai feature flag (section 7b). Jadi rollback selalu lewat `git revert`. Target waktu: **<5 menit** dari deteksi sampai prod normal.
|
|
411
|
+
|
|
412
|
+
**Eksekusi**: owner / senior dev.
|
|
413
|
+
|
|
414
|
+
1. Buka **sesi Claude Code BARU** (konteks bersih).
|
|
415
|
+
2. Pull main terbaru: `git pull origin main`.
|
|
416
|
+
3. Brief Claude (copy-paste utuh):
|
|
417
|
+
|
|
418
|
+
```
|
|
419
|
+
๐จ EMERGENCY ROLLBACK
|
|
420
|
+
|
|
421
|
+
Ada bug parah di prod yang muncul setelah commit terakhir di main.
|
|
422
|
+
Tolong:
|
|
423
|
+
1. Cek log commit terakhir: git log -1 --oneline
|
|
424
|
+
2. Konfirmasi commit yang akan di-revert
|
|
425
|
+
3. git revert HEAD --no-edit
|
|
426
|
+
4. git push origin main
|
|
427
|
+
5. Konfirmasi commit revert sudah ke-push
|
|
428
|
+
|
|
429
|
+
Setelah push, Vercel akan auto-deploy versi sebelum bug (~5 menit).
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
4. AI tunjukkan commit yang akan di-revert โ **kamu baca DULU**, pastikan benar.
|
|
433
|
+
5. Approve. AI eksekusi `git revert` + `git push`.
|
|
434
|
+
6. Buka Vercel Dashboard โ tab Deployments โ lihat deploy baru jalan.
|
|
435
|
+
7. Tunggu 3โ5 menit sampai status "Ready".
|
|
436
|
+
8. Verifikasi prod normal.
|
|
437
|
+
9. Announce: `"๐ข Rollback via git revert (commit <hash>). Bug investigasi di branch fix/<nama>."`
|
|
438
|
+
|
|
439
|
+
**Catatan jalur B**:
|
|
440
|
+
- `git revert` = commit baru yang membatalkan commit sebelumnya (bukan menghapus history). Aman.
|
|
441
|
+
- **Jangan pakai `git reset --hard`** โ destructive, history hilang.
|
|
442
|
+
- Kalau bug bukan di commit terakhir โ revert commit spesifik: `git revert <hash> --no-edit`.
|
|
443
|
+
|
|
444
|
+
### Yang TIDAK BOLEH saat panik
|
|
445
|
+
|
|
446
|
+
- โ `git push --force` ke main โ destructive
|
|
447
|
+
- โ Edit langsung di GitHub web UI di main โ bypass PR + review
|
|
448
|
+
- โ Hot-patch tanpa branch โ `git commit -am "fix" && git push origin main` langsung
|
|
449
|
+
- โ Hapus deployment di Vercel โ bikin URL prod down
|
|
450
|
+
- โ Diam tanpa announce โ tim lain harus tahu
|
|
451
|
+
|
|
452
|
+
### Post-mortem ringan (wajib)
|
|
453
|
+
|
|
454
|
+
Dalam **24 jam setelah rollback**, owner/PIC bug bikin post-mortem di channel chat atau `docs/incidents/<tanggal>-<nama-bug>.md`:
|
|
455
|
+
|
|
456
|
+
```
|
|
457
|
+
๐ POST-MORTEM โ <judul singkat>
|
|
458
|
+
|
|
459
|
+
Tanggal: <YYYY-MM-DD>
|
|
460
|
+
Durasi impact: <berapa menit bug ada di prod>
|
|
461
|
+
Cara rollback: git revert (atau flag toggle kalau pakai advanced)
|
|
462
|
+
|
|
463
|
+
1. Bug apa? <gejala yang user lihat, dampak>
|
|
464
|
+
2. Root cause? <kenapa terjadi, asumsi yang salah>
|
|
465
|
+
3. Kenapa lolos review? <test miss / preview deploy tidak di-test manual / reviewer skim>
|
|
466
|
+
4. Action items berikutnya:
|
|
467
|
+
- [ ] <mis. tambah test edge case X>
|
|
468
|
+
- [ ] <mis. update review checklist>
|
|
469
|
+
- [ ] <mis. fitur sejenis WAJIB pakai flag>
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
**Aturan**: blameless (fokus proses, bukan menyalahkan orang). Action items konkret, bisa di-track. Jangan skip โ bug serupa pasti terulang.
|
|
473
|
+
|
|
474
|
+
### Latihan fire drill
|
|
475
|
+
|
|
476
|
+
Sekali per kuartal, tim adakan fire drill di staging:
|
|
477
|
+
1. Deploy commit "buggy" sengaja
|
|
478
|
+
2. Anggota tim eksekusi rollback via git revert
|
|
479
|
+
3. Hitung waktu deteksi โ rollback. Target < 5 menit.
|
|
480
|
+
4. Diskusi: langkah yang bingung? Update playbook.
|
|
481
|
+
|
|
482
|
+
Tanpa latihan, saat bug beneran datang, kamu pasti panik.
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
## 14. Quarterly ritual
|
|
487
|
+
|
|
488
|
+
Tiap 3 bulan, tim adakan **kit review session** (1โ2 jam, optional tapi recommended):
|
|
489
|
+
|
|
490
|
+
1. **Survey blocker** โ tiap anggota share: pattern apa yang sering bikin stuck? Anti-pattern apa yang baru ketemu?
|
|
491
|
+
2. **Review `PROMPT_LIBRARY.md`** โ prompt mana yang masih relevan, mana yang outdated. Tambah/hapus sesuai realita.
|
|
492
|
+
3. **Review `_PATTERNS.md`** โ apakah konvensi docs masih masuk akal? Ada pattern baru yang muncul organik?
|
|
493
|
+
4. **Cek `architecture.md`** semua proyek aktif โ apakah masih akurat? Update kalau drift dari realita.
|
|
494
|
+
5. **Bump kit version** kalau ada perubahan signifikan, update `CHANGELOG.md`.
|
|
495
|
+
6. **Action items** โ tiap orang ambil 1 PR ke kit (boleh kecil: typo fix, contoh tambahan).
|
|
496
|
+
|
|
497
|
+
Ritual ini penting karena kit yang stagnan = tim yang stagnan. Tim AI-first hidup dari iterasi pattern.
|
|
498
|
+
|
|
499
|
+
---
|
|
500
|
+
|
|
501
|
+
## Penutup
|
|
502
|
+
|
|
503
|
+
File ini adalah **kontrak kerja tim**. Bukan dokumen mati โ dia hidup, di-update tiap kuartal. Kalau ada bagian yang kamu rasa salah/missing/outdated, jangan diam โ PR ke kit.
|
|
504
|
+
|
|
505
|
+
Selamat bekerja. Slow is smooth, smooth is fast.
|