codehava-agent-kit 2.0.0 → 3.0.0
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/README.md +78 -29
- package/package.json +2 -2
- package/templates/.agent/.shared/ACTIVE-template.md +44 -0
- package/templates/.agent/.shared/HANDOFF-template.md +75 -0
- package/templates/.agent/.shared/MEMORY-schema.md +117 -0
- package/templates/.agent/.shared/STATE-template.md +59 -0
- package/templates/.agent/.shared/checklists/planning-quality.md +69 -0
- package/templates/.agent/.shared/types/api-backend/config.md +25 -0
- package/templates/.agent/.shared/types/api-backend/guide.md +41 -0
- package/templates/.agent/.shared/types/api-backend/skill-loadout.md +16 -0
- package/templates/.agent/.shared/types/application/config.md +27 -0
- package/templates/.agent/.shared/types/application/guide.md +51 -0
- package/templates/.agent/.shared/types/application/skill-loadout.md +39 -0
- package/templates/.agent/.shared/types/campaign/config.md +24 -0
- package/templates/.agent/.shared/types/campaign/guide.md +36 -0
- package/templates/.agent/.shared/types/campaign/skill-loadout.md +12 -0
- package/templates/.agent/.shared/types/utility/config.md +24 -0
- package/templates/.agent/.shared/types/utility/guide.md +31 -0
- package/templates/.agent/.shared/types/utility/skill-loadout.md +10 -0
- package/templates/.agent/.shared/types/workflow/config.md +25 -0
- package/templates/.agent/.shared/types/workflow/guide.md +41 -0
- package/templates/.agent/.shared/types/workflow/skill-loadout.md +13 -0
- package/templates/.agent/SKILLS_INDEX.md +68 -7
- package/templates/.agent/agents/backend-specialist.md +12 -0
- package/templates/.agent/agents/database-architect.md +11 -0
- package/templates/.agent/agents/frontend-specialist.md +12 -0
- package/templates/.agent/agents/mobile-developer.md +11 -0
- package/templates/.agent/agents/penetration-tester.md +13 -0
- package/templates/.agent/agents/test-engineer.md +10 -0
- package/templates/.agent/rules/GEMINI.md +292 -183
- package/templates/.agent/skills/systematic-debugging/SKILL.md +202 -0
- package/templates/.agent/skills/vibe-prd/SKILL.md +48 -6
- package/templates/.agent/workflows/add-type.md +133 -0
- package/templates/.agent/workflows/apply.md +95 -0
- package/templates/.agent/workflows/graduate.md +150 -0
- package/templates/.agent/workflows/launch.md +127 -0
- package/templates/.agent/workflows/new-feature.md +21 -23
- package/templates/.agent/workflows/pause.md +118 -0
- package/templates/.agent/workflows/pipeline.md +95 -0
- package/templates/.agent/workflows/progress.md +103 -0
- package/templates/.agent/workflows/resume.md +105 -0
- package/templates/.agent/workflows/unify.md +126 -0
- package/templates/.agent/workflows/vibe-plan.md +135 -72
- package/templates/.agent/workflows/vibe-recap.md +89 -12
- package/templates/.antigravity/rules.md +75 -27
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: systematic-debugging
|
|
3
|
+
description: "Gunakan skill ini ketika menemukan error, bug, crash, test failure, atau
|
|
4
|
+
performa yang tidak diharapkan. Skill ini mencakup 3L5W root cause analysis (5 Whys +
|
|
5
|
+
Search & Destroy + Global Mitigation), 4-level artifact verification, dan silent
|
|
6
|
+
self-healing protocol agar user tidak terbebani error teknis. Aktifkan secara otomatis
|
|
7
|
+
saat ada stack trace, TypeScript error, runtime crash, compilation failure, atau saat
|
|
8
|
+
@lint-and-validate menemukan masalah. Jangan tanya user cara fix — fix sendiri dulu."
|
|
9
|
+
risk: low
|
|
10
|
+
source: internal
|
|
11
|
+
date_added: "2025-04-10"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Systematic Debugging
|
|
15
|
+
|
|
16
|
+
> Bukan sekadar fix satu file — temukan dan eliminasi akar masalah dari seluruh codebase.
|
|
17
|
+
> Subagent bekerja ~70% kualitas. Gunakan skill ini dalam satu session untuk hasil terbaik.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Kapan Menggunakan Skill Ini
|
|
22
|
+
|
|
23
|
+
- Ada error terminal, stack trace, atau crash
|
|
24
|
+
- TypeScript / ESLint melaporkan error
|
|
25
|
+
- Unit test atau E2E test gagal
|
|
26
|
+
- Komponen render salah atau data tidak muncul
|
|
27
|
+
- Performance drastis menurun setelah perubahan
|
|
28
|
+
- `@lint-and-validate` mendeteksi masalah
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Protokol: 3L5W (3 Legs, 5 Whys)
|
|
33
|
+
|
|
34
|
+
### LEG 1 — Root Cause via 5 Whys
|
|
35
|
+
|
|
36
|
+
**Tanya "Kenapa?" minimal 5x berturut-turut sampai ketemu akar masalah struktural.**
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Error: Cannot read property 'id' of undefined
|
|
40
|
+
|
|
41
|
+
Kenapa 1: Kenapa 'id' undefined? → Object tidak di-return dari query
|
|
42
|
+
Kenapa 2: Kenapa query tidak return? → findFirst() return null jika tidak ada data
|
|
43
|
+
Kenapa 3: Kenapa data tidak ada? → User belum onboarded, field wajib belum diisi
|
|
44
|
+
Kenapa 4: Kenapa bisa sampai ke halaman ini tanpa onboarding? → Guard middleware tidak ada
|
|
45
|
+
Kenapa 5: Kenapa guard tidak ada? → Spec tidak mendefinisikan edge case ini
|
|
46
|
+
|
|
47
|
+
Root Cause: Missing onboarding guard → fix di middleware, bukan di component
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Aturan Leg 1:**
|
|
51
|
+
- Jangan stop di simptom — terus gali sampai structural cause
|
|
52
|
+
- Jika tidak bisa 5x, minimal 3x
|
|
53
|
+
- Catat root cause sebelum lanjut ke Leg 2
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
### LEG 2 — Search & Destroy
|
|
58
|
+
|
|
59
|
+
**Cari pattern yang sama di SELURUH codebase — jangan fix hanya satu file.**
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Contoh: jika root cause adalah missing null check
|
|
63
|
+
grep -r "\.id" src/ --include="*.ts" | grep -v "?.id"
|
|
64
|
+
|
|
65
|
+
# Jika root cause adalah missing await
|
|
66
|
+
grep -r "headers()" src/ --include="*.ts" | grep -v "await headers()"
|
|
67
|
+
|
|
68
|
+
# Jika root cause adalah missing error boundary
|
|
69
|
+
grep -r "fetch(" src/ --include="*.tsx" | grep -v "try {"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Yang harus dicari:**
|
|
73
|
+
- File lain yang pakai pattern/sintaks yang sama
|
|
74
|
+
- Komponen serupa yang mungkin terkena masalah sama
|
|
75
|
+
- Import yang salah path di seluruh project
|
|
76
|
+
- Environment variable yang missing di tempat lain
|
|
77
|
+
|
|
78
|
+
**Output Leg 2:** Daftar semua file yang perlu diperbaiki
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### LEG 3 — Global Mitigation + Log
|
|
83
|
+
|
|
84
|
+
**Perbaiki SEMUA temuan + buat proteksi struktural + catat RCA.**
|
|
85
|
+
|
|
86
|
+
**Buat proteksi:**
|
|
87
|
+
```typescript
|
|
88
|
+
// Null check
|
|
89
|
+
const userId = session?.user?.id ?? null
|
|
90
|
+
if (!userId) return redirect('/login')
|
|
91
|
+
|
|
92
|
+
// Zod validation
|
|
93
|
+
const schema = z.object({ id: z.string().min(1) })
|
|
94
|
+
const parsed = schema.safeParse(params)
|
|
95
|
+
if (!parsed.success) return notFound()
|
|
96
|
+
|
|
97
|
+
// Error boundary
|
|
98
|
+
try {
|
|
99
|
+
const result = await fetchData()
|
|
100
|
+
return result
|
|
101
|
+
} catch (error) {
|
|
102
|
+
logger.error('[module:method]', { error: error.message })
|
|
103
|
+
return null
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Catat RCA di `docs/troubleshooting.md`:**
|
|
108
|
+
```markdown
|
|
109
|
+
## [YYYY-MM-DD] — [Judul Error Singkat]
|
|
110
|
+
|
|
111
|
+
**Simptom:** [apa yang terlihat]
|
|
112
|
+
**Root Cause:** [hasil 5 Whys]
|
|
113
|
+
**Files Affected:** [daftar file]
|
|
114
|
+
**Fix Applied:** [ringkasan fix]
|
|
115
|
+
**Prevention:** [apa yang ditambahkan agar tidak terulang]
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 4-Level Artifact Verification (setelah fix)
|
|
121
|
+
|
|
122
|
+
Sebelum lapor "sudah diperbaiki" ke user, verifikasi:
|
|
123
|
+
|
|
124
|
+
| Level | Check | Cara Verify |
|
|
125
|
+
|-------|-------|-------------|
|
|
126
|
+
| **1. EXISTS** | File/function/fix sudah ada | Baca file, konfirm perubahan ada |
|
|
127
|
+
| **2. SUBSTANTIVE** | Logic benar, bukan stub kosong | Review konten — ada real logic? |
|
|
128
|
+
| **3. WIRED** | Connected ke caller yang benar | Cek import + invocation di caller |
|
|
129
|
+
| **4. DATA FLOWS** | Data benar-benar mengalir | Trace dari input → proses → output |
|
|
130
|
+
|
|
131
|
+
**Jangan laporkan DONE sebelum level 4 terpenuhi.**
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Escalation Status
|
|
136
|
+
|
|
137
|
+
| Status | Kondisi | Action |
|
|
138
|
+
|--------|---------|--------|
|
|
139
|
+
| **DONE** | Fix complete, 4-level verified | Lapor ke user dengan ringkasan |
|
|
140
|
+
| **DONE_WITH_CONCERNS** | Fix works tapi ada technical debt | Lapor + beri catatan recommendation |
|
|
141
|
+
| **NEEDS_CONTEXT** | Butuh info dari user untuk lanjut | Tanya 1 pertanyaan spesifik |
|
|
142
|
+
| **BLOCKED** | Tidak bisa lanjut tanpa keputusan user | Jelaskan opsi A vs B, minta pilihan |
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Silent Self-Healing Protocol (Non-Programmer Shield)
|
|
147
|
+
|
|
148
|
+
**DILARANG:**
|
|
149
|
+
- ❌ Paste stack trace mentah ke user
|
|
150
|
+
- ❌ Tanya "Bagaimana cara memperbaikinya?"
|
|
151
|
+
- ❌ Bilang "Ada error, tolong cek terminal"
|
|
152
|
+
- ❌ Fix parsial lalu lapor selesai
|
|
153
|
+
|
|
154
|
+
**WAJIB:**
|
|
155
|
+
- ✅ Telan error, analisis sendiri
|
|
156
|
+
- ✅ Jalankan 3L5W sampai selesai
|
|
157
|
+
- ✅ Fix semua temuan, bukan hanya satu file
|
|
158
|
+
- ✅ Baru lapor ke user setelah fix terverifikasi
|
|
159
|
+
|
|
160
|
+
**Format laporan ke user (setelah fix):**
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
✅ Error ditemukan dan diperbaiki.
|
|
164
|
+
|
|
165
|
+
Root cause: [1 kalimat jelas]
|
|
166
|
+
Fix: [apa yang diubah, di mana]
|
|
167
|
+
Files affected: [N] file
|
|
168
|
+
[Opsional] Catatan: [jika ada concern atau recommendation]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Decision Framework: Pilih Pendekatan
|
|
174
|
+
|
|
175
|
+
| Situasi | Pendekatan |
|
|
176
|
+
|---------|-----------|
|
|
177
|
+
| Error jelas, 1 file | Fix langsung + verify 4-level |
|
|
178
|
+
| Error sistemik, multiple files | 3L5W full + Search & Destroy |
|
|
179
|
+
| Error intermittent / race condition | Tambahkan logging dulu, reproduce, baru fix |
|
|
180
|
+
| Error di library/dependency | Check versi, cek breaking changes via context7, update imports |
|
|
181
|
+
| TypeScript error banyak sekaligus | Fix root type dulu, biarkan cascade resolve sendiri |
|
|
182
|
+
| Test failure setelah refactor | Check jika test masih relevan vs implementation sudah benar |
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Anti-patterns yang Harus Dihindari
|
|
187
|
+
|
|
188
|
+
- ❌ **Whack-a-mole fixing** — Fix simptom tanpa cari root cause
|
|
189
|
+
- ❌ **Single-file tunnel vision** — Fix satu file, ignore yang lain
|
|
190
|
+
- ❌ **Suppress errors** — `catch(e) {}` atau `as any` untuk skip error
|
|
191
|
+
- ❌ **Optimistic reporting** — Lapor selesai sebelum 4-level verified
|
|
192
|
+
- ❌ **Over-engineering fix** — Tambah abstraksi baru untuk masalah yang butuh null check biasa
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Integrasi dengan Skill Lain
|
|
197
|
+
|
|
198
|
+
- Setelah fix → panggil `@lint-and-validate` untuk confirm tidak ada regresi
|
|
199
|
+
- Jika root cause ada di database schema → konsultasi `@database-design`
|
|
200
|
+
- Jika root cause ada di auth flow → konsultasi `@auth-implementation-patterns`
|
|
201
|
+
- Jika performa issue → panggil `@performance-profiling`
|
|
202
|
+
- Catat semua fix di `docs/troubleshooting.md` untuk referensi session berikutnya
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vibe-prd
|
|
3
3
|
description: |
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
Gunakan skill ini saat user ingin mendefinisikan requirements, membuat PRD, menentukan
|
|
5
|
+
fitur MVP, menulis user stories, atau memulai planning produk baru. Aktifkan untuk
|
|
6
|
+
kata kunci: "buat PRD", "definisikan fitur", "apa yang harus dibangun", "scope MVP",
|
|
7
|
+
"user stories", "requirements aplikasi", "fitur apa yang perlu dibuat", atau saat
|
|
8
|
+
/vibe-plan masuk ke Step 2. Skill ini menghasilkan docs/01-PRD.md yang terisi penuh
|
|
9
|
+
dengan BDD acceptance criteria (Given/When/Then) per fitur — output siap untuk /apply.
|
|
10
|
+
Setelah PRD selesai, chain ke vibe-techdesign. Jangan skip skill ini — PRD yang buruk
|
|
11
|
+
menghasilkan hallucinated code.
|
|
10
12
|
---
|
|
11
13
|
|
|
12
14
|
# Vibe PRD — Product Requirements Document Generator
|
|
@@ -226,3 +228,43 @@ Generate PRD sekarang? (yes/no)
|
|
|
226
228
|
- Payment section: muncul hanya jika user konfirmasi ada transaksi keuangan
|
|
227
229
|
- **STRUKTUR DOKUMEN WAJIB**: Selaraskan dan lengkapi hierarki PRD yang dihasilkan dengan elemen-elemen profesional dari `docs/SRS-Template.md`.
|
|
228
230
|
- **SKILL CHAINING:** Setelah dokumen PRD selesai dibuat, JANGAN BERHENTI. Secara proaktif tanyakan kepada user: *"PRD sudah siap! Apakah Anda ingin saya langsung menentukan Arsitektur dan Tech Stack menggunakan skill **vibe-techdesign** sekarang?"* Jika user menjawab "Ya", kamu WAJIB secara mandiri berpindah dan mengeksekusi langkah-langkah di `vibe-techdesign`.
|
|
231
|
+
|
|
232
|
+
## BDD Acceptance Criteria — Quality Gate (WAJIB)
|
|
233
|
+
|
|
234
|
+
Sebelum PRD dianggap selesai, pastikan setiap fitur P0 memiliki:
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
✅ Acceptance Criteria Checklist per Fitur P0:
|
|
238
|
+
□ Ada minimal 1 AC success path (Given/When/Then)
|
|
239
|
+
□ Ada minimal 1 AC error/edge case path
|
|
240
|
+
□ 4 UI states terdefinisi: loading, empty, error, success
|
|
241
|
+
□ REQ ID sudah assigned dan unik
|
|
242
|
+
□ Data contract / API format sudah terdefinisi (jika relevan)
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Jika ada fitur P0 yang belum punya AC lengkap → **JANGAN lanjut ke vibe-techdesign**.
|
|
246
|
+
Tanyakan user dulu sampai AC-nya lengkap.
|
|
247
|
+
|
|
248
|
+
**Format AC yang benar:**
|
|
249
|
+
```
|
|
250
|
+
Given [kondisi awal yang spesifik — bukan generic]
|
|
251
|
+
When [aksi yang dilakukan user — satu aksi per AC]
|
|
252
|
+
Then [hasil yang dapat diverifikasi — bisa di-test secara objective]
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Format AC yang salah (hindari):**
|
|
256
|
+
```
|
|
257
|
+
❌ Given the user is logged in, When they use the app, Then it works
|
|
258
|
+
✅ Given user sudah login dan cart berisi 2 item, When user tap "Checkout",
|
|
259
|
+
Then muncul halaman payment summary dengan total harga dan pilihan metode bayar
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## SEED Integration Note
|
|
263
|
+
|
|
264
|
+
Jika skill ini dipanggil dari `/vibe-plan`, project type sudah diketahui.
|
|
265
|
+
Sesuaikan pertanyaan dan output:
|
|
266
|
+
- **Application** → tanyakan semua Q1-Q8
|
|
267
|
+
- **API/Backend** → fokus Q3 (endpoints), Q4 (auth), skip Q6 (platform UI)
|
|
268
|
+
- **Campaign** → ganti Q3 dengan "Konten utama apa?", skip Q5 (payment)
|
|
269
|
+
- **Utility** → tanyakan Q1, Q3 saja (single purpose), skip payment dan platform
|
|
270
|
+
- **Workflow** → fokus Q3 (steps/actions) dan Q7 (error handling strategy)
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: |
|
|
3
|
+
Buat custom project type baru untuk /vibe-plan.
|
|
4
|
+
Gunakan saat 5 default types (Application, API/Backend, Campaign, Utility, Workflow)
|
|
5
|
+
tidak cocok dengan kategori project kamu, atau ada pola project berulang yang
|
|
6
|
+
butuh guided conversation sendiri. Output: 3 file di .agent/.shared/types/{type}/
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /add-type — Create Custom Project Type
|
|
10
|
+
|
|
11
|
+
Extend /vibe-plan dengan project type baru yang sepenuhnya customizable.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Langkah 1 — Nama Type
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Berikan nama untuk project type baru kamu:
|
|
19
|
+
- Format: lowercase, hyphen untuk spasi
|
|
20
|
+
- Contoh: "chrome-extension", "microservice", "mobile-game", "saas-landing"
|
|
21
|
+
- Singular (bukan plural)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Cek apakah type sudah ada di `.agent/.shared/types/`:
|
|
25
|
+
- Jika sudah ada → "Type '[nama]' sudah ada. Mau edit yang existing atau buat nama baru?"
|
|
26
|
+
- Jika belum ada → lanjut
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Langkah 2 — Definisikan Sections
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
List topik percakapan untuk type ini, dalam urutan prioritas:
|
|
34
|
+
|
|
35
|
+
Contoh untuk "chrome-extension":
|
|
36
|
+
1. Problem & Target User
|
|
37
|
+
2. Extension Permissions
|
|
38
|
+
3. Content Script vs Background Worker
|
|
39
|
+
4. Storage Strategy (chrome.storage vs IndexedDB)
|
|
40
|
+
5. Distribution (personal/team/Chrome Web Store)
|
|
41
|
+
6. Done Criteria & Test Cases
|
|
42
|
+
|
|
43
|
+
Rigor level:
|
|
44
|
+
tight — Fast-moving, tahan scope creep (seperti Utility)
|
|
45
|
+
standard — Balanced exploration (seperti Workflow)
|
|
46
|
+
deep — Thorough, architecture-focused (seperti Application)
|
|
47
|
+
creative — Generative, loose approach (seperti Campaign)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Langkah 3 — Generate 3 Files
|
|
53
|
+
|
|
54
|
+
Buat di `.agent/.shared/types/[nama-type]/`:
|
|
55
|
+
|
|
56
|
+
### File 1: guide.md
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
# [Type Name] — Conversation Guide
|
|
60
|
+
|
|
61
|
+
## Section 1: [Nama Section]
|
|
62
|
+
**Explore:** [Pertanyaan-pertanyaan yang perlu dijawab untuk section ini]
|
|
63
|
+
**Suggest:** [Rekomendasi proaktif jika user stuck — "For X, biasanya Y karena..."]
|
|
64
|
+
**Depth:** required/optional
|
|
65
|
+
|
|
66
|
+
## Section 2: [Nama Section]
|
|
67
|
+
**Explore:** [...]
|
|
68
|
+
**Suggest:** [...]
|
|
69
|
+
**Depth:** required/optional
|
|
70
|
+
|
|
71
|
+
[... ulangi untuk semua sections ...]
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### File 2: config.md
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
# [Type Name] — Configuration
|
|
78
|
+
|
|
79
|
+
| Setting | Value |
|
|
80
|
+
|---------|-------|
|
|
81
|
+
| Rigor | [tight/standard/deep/creative] |
|
|
82
|
+
| Demeanor | "[Deskripsi cara AI coaching untuk type ini]" |
|
|
83
|
+
| Sections | [N] |
|
|
84
|
+
|
|
85
|
+
## Required Sections
|
|
86
|
+
- [Section 1]
|
|
87
|
+
- [Section 2]
|
|
88
|
+
...
|
|
89
|
+
|
|
90
|
+
## Optional Sections
|
|
91
|
+
- [Section N]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### File 3: skill-loadout.md
|
|
95
|
+
|
|
96
|
+
```markdown
|
|
97
|
+
# [Type Name] — Skill Loadout
|
|
98
|
+
|
|
99
|
+
## Recommended Skills from 600+ Library
|
|
100
|
+
|
|
101
|
+
| Skill | Priority | Why |
|
|
102
|
+
|-------|----------|-----|
|
|
103
|
+
| [skill-name] | required | [alasan] |
|
|
104
|
+
| [skill-name] | recommended | [alasan] |
|
|
105
|
+
| [skill-name] | optional | [alasan] |
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Langkah 4 — Konfirmasi
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
✅ Custom type '[nama]' siap digunakan!
|
|
114
|
+
|
|
115
|
+
Files dibuat:
|
|
116
|
+
.agent/.shared/types/[nama]/guide.md
|
|
117
|
+
.agent/.shared/types/[nama]/config.md
|
|
118
|
+
.agent/.shared/types/[nama]/skill-loadout.md
|
|
119
|
+
|
|
120
|
+
Type baru langsung tersedia tanpa perlu modifikasi file lain.
|
|
121
|
+
|
|
122
|
+
Test sekarang: /vibe-plan
|
|
123
|
+
→ Saat ditanya project type, ketik '[nama]'
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Aturan
|
|
129
|
+
|
|
130
|
+
- Type baru tidak menimpa type default (composable design)
|
|
131
|
+
- Rigor **tight** = aktif resist expansion — gunakan untuk single-purpose types
|
|
132
|
+
- Rigor **deep** = butuh coverage luas sebelum graduate — untuk complex projects
|
|
133
|
+
- Sections optional boleh di-skip jika user sudah punya jawabannya
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: |
|
|
3
|
+
Kerjakan semua task dalam plan satu per satu, verifikasi tiap task sebelum lanjut.
|
|
4
|
+
Gunakan setelah /vibe-plan atau /new-feature menghasilkan plan.
|
|
5
|
+
Selalu tutup dengan /unify setelah semua task selesai.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /apply — Mengerjakan Plan
|
|
9
|
+
|
|
10
|
+
Mulai mengerjakan semua task dalam plan. Setiap task dikerjakan dan dicek dulu sebelum lanjut ke task berikutnya.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Langkah 1 — Cek Plan
|
|
15
|
+
|
|
16
|
+
Baca PLANNING.md atau plan file yang tersedia. Jika tidak ada plan → tanya user: "Kamu mau mulai dari mana? Jelaskan fitur yang ingin dibangun."
|
|
17
|
+
|
|
18
|
+
**Jika scope terlalu besar (6+ file atau tidak jelas):**
|
|
19
|
+
> "Pekerjaan ini cukup besar. Saya sarankan kita bagi jadi dua bagian: [X] dulu, baru [Y]. Setuju?"
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Langkah 2 — Kerjakan Task Satu per Satu
|
|
24
|
+
|
|
25
|
+
Untuk setiap task:
|
|
26
|
+
|
|
27
|
+
### A: Baca task + syarat keberhasilan (internal)
|
|
28
|
+
|
|
29
|
+
Baca task, acceptance criteria, dan file yang akan diubah. Lakukan ini secara internal — jangan tampilkan ke user.
|
|
30
|
+
|
|
31
|
+
### B: Cari skill yang relevan (internal, silent)
|
|
32
|
+
|
|
33
|
+
Search `.agent/skills/` untuk skill yang cocok. Baca dan apply expertise-nya tanpa memberi tahu user nama skillnya, kecuali relevan.
|
|
34
|
+
|
|
35
|
+
### C: Kerjakan
|
|
36
|
+
|
|
37
|
+
- Implement task
|
|
38
|
+
- Hanya ubah file yang ada di daftar task
|
|
39
|
+
- Jangan sentuh file yang tidak terkait
|
|
40
|
+
|
|
41
|
+
### D: Verifikasi (internal, silent)
|
|
42
|
+
|
|
43
|
+
Sebelum lanjut, pastikan secara diam-diam:
|
|
44
|
+
1. File/function sudah benar-benar ada
|
|
45
|
+
2. Ada logika nyata, bukan placeholder kosong
|
|
46
|
+
3. Sudah terhubung ke bagian kode yang memanggilnya
|
|
47
|
+
4. Data bisa mengalir dari awal sampai akhir
|
|
48
|
+
|
|
49
|
+
### E: Laporkan ke user (plain language)
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
✅ [nama task] — selesai
|
|
53
|
+
⚠️ [nama task] — selesai, ada catatan: [penjelasan sederhana]
|
|
54
|
+
❓ Saya butuh tahu: [satu pertanyaan spesifik]
|
|
55
|
+
🚫 Tidak bisa lanjut karena: [alasan jelas]. Kamu mau: A) [opsi A] atau B) [opsi B]?
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Langkah 3 — Cek Keseluruhan (internal)
|
|
61
|
+
|
|
62
|
+
Setelah semua task selesai, jalankan pengecekan internal (lint, type-check, test jika ada). Jika ada masalah, perbaiki dulu sebelum lapor ke user.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Langkah 4 — Ringkasan ke User
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
✅ Semua selesai!
|
|
70
|
+
|
|
71
|
+
Yang sudah dikerjakan:
|
|
72
|
+
- [nama task 1]
|
|
73
|
+
- [nama task 2]
|
|
74
|
+
- [nama task 3]
|
|
75
|
+
|
|
76
|
+
[Jika ada catatan:]
|
|
77
|
+
⚠️ [nama task]: [penjelasan catatan dalam bahasa sederhana]
|
|
78
|
+
|
|
79
|
+
[Jika ada yang belum:]
|
|
80
|
+
⏸️ [nama task]: menunggu keputusanmu — [pertanyaan/opsi]
|
|
81
|
+
|
|
82
|
+
File yang diubah: [N] file
|
|
83
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
84
|
+
Langkah selanjutnya: ketik /unify untuk merangkum sesi ini.
|
|
85
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Aturan Penting
|
|
91
|
+
|
|
92
|
+
- Kerjakan satu task sebelum mulai task berikutnya
|
|
93
|
+
- Jika ada temuan di luar scope plan → catat, jangan fix langsung, tanya user dulu
|
|
94
|
+
- Jangan tutup sesi tanpa `/unify`
|
|
95
|
+
- Jika tidak bisa lanjut → selalu lapor dan minta keputusan, jangan diam-diam skip
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: |
|
|
3
|
+
Validasi PLANNING.md lalu promosikan project ke struktur direktori siap-coding.
|
|
4
|
+
Jalankan setelah /vibe-plan selesai dan PLANNING.md sudah diisi penuh.
|
|
5
|
+
Menghasilkan: app directory dengan git init + README yang disintesis dari planning.
|
|
6
|
+
Gunakan /launch jika ingin graduate + langsung init STATE.md dalam satu command.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /graduate — Promote Project ke Buildable Directory
|
|
10
|
+
|
|
11
|
+
Workflow ini memindahkan project dari fase ideation ke struktur siap-coding.
|
|
12
|
+
Hanya boleh dijalankan jika PLANNING.md sudah melewati quality gate.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Langkah 1 — Deteksi Project
|
|
17
|
+
|
|
18
|
+
Cek argument atau tanya user:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Argument yang diterima: /graduate [nama-project]
|
|
22
|
+
|
|
23
|
+
Jika tidak ada argument:
|
|
24
|
+
→ Scan folder projects/ untuk semua PLANNING.md
|
|
25
|
+
→ Tampilkan daftar:
|
|
26
|
+
|
|
27
|
+
Projects yang siap di-graduate:
|
|
28
|
+
1. [nama-project-1] (Application) — dibuat: 2025-04-10
|
|
29
|
+
2. [nama-project-2] (Utility) — dibuat: 2025-04-09
|
|
30
|
+
|
|
31
|
+
Pilih nomor project atau ketik nama:
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Langkah 2 — Quality Gate (dari planning-quality checklist)
|
|
37
|
+
|
|
38
|
+
Baca `.agent/.shared/checklists/planning-quality.md` dan validasi PLANNING.md.
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
📋 Validasi Planning Quality — [Nama Project]
|
|
42
|
+
|
|
43
|
+
Universal Checks:
|
|
44
|
+
□ Project type terdefinisi di header?
|
|
45
|
+
□ Problem statement spesifik (nama masalah, audience, why)?
|
|
46
|
+
□ Minimal 1 design decision dengan rationale?
|
|
47
|
+
□ Open questions section ada (even if empty)?
|
|
48
|
+
□ Next actions terdefinisi (minimal 1)?
|
|
49
|
+
|
|
50
|
+
Type-Specific Checks ([Type]):
|
|
51
|
+
□ Semua required sections terisi (bukan placeholder)?
|
|
52
|
+
□ Depth sesuai rigor level?
|
|
53
|
+
|
|
54
|
+
PAUL-Readiness (jika akan /launch):
|
|
55
|
+
□ Phase breakdown ada dengan shippable milestones?
|
|
56
|
+
□ Tech stack resolved (tidak ada critical TBD)?
|
|
57
|
+
□ Detail cukup untuk AI derive milestones tanpa tanya ulang?
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Hasil:**
|
|
61
|
+
- **Pass** → lanjut ke Langkah 3
|
|
62
|
+
- **Warn** → tampilkan gap, tanya: "Ada bagian yang ingin dilengkapi, atau lanjut graduate?"
|
|
63
|
+
- **Fail** → "PLANNING.md belum cukup detail. Kembali ke `/vibe-plan` untuk melengkapi bagian: [list bagian yang kurang]"
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Langkah 3 — Synthesize README
|
|
68
|
+
|
|
69
|
+
Buat README bersih yang disintesis dari PLANNING.md (bukan copy-paste):
|
|
70
|
+
|
|
71
|
+
```markdown
|
|
72
|
+
# [Nama Project]
|
|
73
|
+
|
|
74
|
+
> [Elevator pitch 1-2 kalimat dari problem statement]
|
|
75
|
+
|
|
76
|
+
## Overview
|
|
77
|
+
[Deskripsi singkat apa yang dibangun]
|
|
78
|
+
|
|
79
|
+
## Tech Stack
|
|
80
|
+
[Stack yang sudah dipilih di PLANNING.md]
|
|
81
|
+
|
|
82
|
+
## Getting Started
|
|
83
|
+
[Placeholder — akan diisi saat development]
|
|
84
|
+
|
|
85
|
+
## Project Structure
|
|
86
|
+
[Placeholder — akan diisi saat development]
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
*Generated from PLANNING.md on [tanggal] — update seiring development*
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Tampilkan ke user: "README draft sudah siap. Approve untuk graduate?"
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Langkah 4 — Create Project Structure
|
|
97
|
+
|
|
98
|
+
Setelah user approve:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Buat direktori app
|
|
102
|
+
mkdir -p apps/[nama-project]
|
|
103
|
+
|
|
104
|
+
# Copy PLANNING.md sebagai referensi
|
|
105
|
+
cp projects/[nama-project]/PLANNING.md apps/[nama-project]/PLANNING.md
|
|
106
|
+
|
|
107
|
+
# Init git
|
|
108
|
+
cd apps/[nama-project]
|
|
109
|
+
git init
|
|
110
|
+
git add README.md PLANNING.md
|
|
111
|
+
git commit -m "chore: initialize project from PLANNING.md"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Struktur direktori yang dibuat:
|
|
115
|
+
```
|
|
116
|
+
apps/[nama-project]/
|
|
117
|
+
├── README.md ← Synthesized dari planning
|
|
118
|
+
├── PLANNING.md ← Copied dari projects/
|
|
119
|
+
├── docs/ ← Siap untuk PRD, Tech Design, dll
|
|
120
|
+
└── specs/ ← Siap untuk feature specs
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Langkah 5 — Update Tracking
|
|
126
|
+
|
|
127
|
+
Tandai project sebagai graduated di `.agent/ACTIVE.md`:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
[nama-project]: graduated → apps/[nama-project]/ on [tanggal]
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Langkah 6 — Closing
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
🎓 Project [nama-project] berhasil di-graduate!
|
|
139
|
+
|
|
140
|
+
📁 Location: apps/[nama-project]/
|
|
141
|
+
🌿 Git: initialized (1 commit)
|
|
142
|
+
📄 README: synthesized dari PLANNING.md
|
|
143
|
+
|
|
144
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
145
|
+
Next steps:
|
|
146
|
+
/launch → graduate + init STATE.md sekaligus (next time)
|
|
147
|
+
/apply → mulai eksekusi PLANNING.md sekarang
|
|
148
|
+
/progress → lihat status current project
|
|
149
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
150
|
+
```
|