---
name: git-automation-push
description: Automasi proses commit dan push perubahan kode ke repository Git mengikuti standar Conventional Commits. Gunakan saat Anda ingin merangkum perubahan kode, membuat pesan commit yang deskriptif, dan mengirimkan perubahan ke remote repository.
---

# Git Automation Push

Skill ini membantu Gemini CLI untuk mengelola riwayat perubahan kode dengan cara yang profesional dan terstandarisasi. Skill ini mengotomatiskan analisis perubahan, pembuatan pesan commit, dan proses push ke repository.

## Alur Kerja Utama

Ikuti langkah-langkah berikut untuk melakukan push perubahan:

### 1. Analisis Perubahan
Gunakan perintah berikut untuk memahami apa yang telah berubah:
- `git status` untuk melihat file yang dimodifikasi, ditambah, atau dihapus.
- `git diff` untuk melihat detail perubahan kode.
- `git diff --staged` jika sudah ada file yang masuk ke area staging.

### 2. Pemilihan File (Staging)
Jangan asal melakukan `git add .` kecuali semua perubahan memang berada dalam satu konteks yang sama.
- Pilih file yang relevan dengan fitur atau perbaikan yang sedang dikerjakan.
- Gunakan `git add <file1> <file2> ...` untuk staging yang presisi.

### 3. Pembuatan Pesan Commit
Pesan commit **WAJIB** mengikuti standar **Conventional Commits** sebagaimana didefinisikan dalam `.ai/prompts/git-commit-generator.prompt.md`.

**Format:**
```text
<type>(<scope>): <description>

- Poin detail perubahan 1
- Poin detail perubahan 2 (maksimal 10 poin)
```

**Jenis (Type):**
- `feat`: Fitur baru.
- `fix`: Perbaikan bug.
- `docs`: Perubahan dokumentasi.
- `style`: Formatting (bukan perubahan fungsional).
- `refactor`: Perubahan kode tanpa merubah fungsi.
- `perf`: Peningkatan performa.
- `test`: Penambahan/perbaikan test.
- `chore`: Tugas rutin (build, dependensi).

### 4. Eksekusi Commit & Push
Setelah file di-stage dan pesan commit disiapkan:
1. Jalankan `git commit -m "<pesan_commit>"` (Gunakan tanda kutip ganda dan pastikan body pesan masuk jika diperlukan).
2. Jalankan `git push origin <branch_aktif>`.

## Tips Keamanan
- Selalu periksa apakah ada file sensitif (seperti `.env`) yang tidak sengaja terikut sebelum menjalankan commit.
- Jika ada *breaking change*, tambahkan `!` setelah type/scope (misal: `feat(auth)!: ...`).

## Contoh Penggunaan
"Tolong push perubahan saya tentang penambahan modul login."
1. Jalankan `git status` dan `git diff`.
2. Identifikasi file modul login.
3. Jalankan `git add <file_login>`.
4. Buat pesan: `feat(auth): tambah modul login dan integrasi oauth`.
5. Jalankan `git commit` dan `git push`.
