Konfigurasi yang sempurna tidak ada artinya bila anggota tim menulis commit asal-asalan. Di episode ini kita merancang standar organisasi: dokumentasi commit message, model branching, onboarding developer, dan checklist code review untuk PR serta release. Standar tertulis adalah jembatan menuju otomasi yang berkelanjutan.

Di episode 19 kita menghubungkan release dengan deployment lewat GitOps. Tapi ada satu bahan bakar yang menentukan segalanya: kualitas commit message. semantic-release hanya sebagus commit yang masuk — bila anggota tim menulis fix: fix bug, analyzer tidak bisa menebak jenis perubahan apa pun dan tidak ada release yang terbit. Konfigurasi terbaik di dunia tidak menolong bila standar tidak didokumentasikan dan diajarkan.
Di episode ini kita membahas:
Aturan yang hanya ada di kepala senior engineer adalah aturan yang tidak pernah dipatuhi. Standar organisasi harus:
Dua dokumen yang paling berdampak: CONTRIBUTING.md untuk kontributor, dan docs/release-process.md untuk siapa pun yang terlibat rilis.
Mulailah CONTRIBUTING.md dengan bagian commit guidelines yang tegas. Template minimal:
## Conventional Commits
Setiap commit wajib mengikuti spesifikasi Conventional Commits:
Format: `type(scope): subject`
Type yang digunakan:
- `feat` - fitur baru, memicu rilis minor
- `fix` - perbaikan bug, memicu rilis patch
- `perf`, `refactor`, `docs`, `test`, `style`, `chore`, `build`, `ci`, `revert`
Aturan khusus:
- Breaking change: tulis footer `BREAKING CHANGE:` atau tambahkan tanda seru
pada subject, contoh: `feat!: drop dukungan Node 16`
- Scope opsional, wajib kata benda singkat: `feat(auth): tambah SSO`
- Subject imperatif, huruf kecil, tanpa titik di akhir
- Body menjelaskan mengapa, bukan apa
Baca spesifikasi lengkap di conventionalcommits.org sebelum commit pertama.Standar yang ditulis seperti ini bisa langsung diterjemahkan menjadi aturan commitlint — sehingga dokumentasi dan enforcement membaca sumber yang sama, tidak menyimpang.
Bagian kedua dari CONTRIBUTING.md adalah model branching. Tim yang tidak paham ke mana harus push akan membuat kekacauan sendiri:
| Branch | Sifat | Hasil semantic-release | Environment |
|---|---|---|---|
main | stable | 1.4.0 | Production |
staging | prerelease | 1.4.0-rc.1 | Staging |
feature/* | sementara | tidak rilis | - |
Aturan tegas yang wajib didokumentasikan:
main dan staging dilindungi branch protection.staging ke main adalah satu-satunya jalan menuju produksi.feature/* dihapus setelah merge.Onboarding bukan sekadar memberi akses repository. Alur yang bekerja di dunia nyata:
CONTRIBUTING.md — jadikan ini bagian dari task pertama.Setup commitlint plus husky yang sudah dibahas di episode 3 dan 9 tetap menjadi tulang punggung:
npm install --save-dev @commitlint/cli @commitlint/config-conventional
npx husky init
npx husky add .husky/commit-msg "npx --no -- commitlint --edit $1"
git commit -m "feat: tambah login SSO"Dengan hook ini, developer belajar dari mesin, bukan dari teguran reviewer. Kesalahan ditangkap sedini mungkin — inilah feedback loop tercepat untuk membangun kebiasaan.
Tip
Buat satu sesi latihan 30 menit khusus commit message saat onboarding: minta developer menulis lima commit yang benar — feat, fix, breaking change, chore, dan commit dengan scope. Pengalaman langsung jauh lebih efektif daripada sekadar membaca dokumentasi.
Review bukan hanya memeriksa kode — ia juga gerbang kualitas untuk release. Checklist yang praktis:
feat menghasilkan minor, fix menghasilkan patch.Untuk release, tambahkan pemeriksaan pasca-rilis:
Review release yang paling efektif dilakukan saat PR di-merge, bukan saat rilis sudah terbit — di situlah keputusan versi benar-benar ditentukan.
Terakhir, tulis docs/release-process.md supaya tidak ada misteri:
staging dan main.git revert v1.3.0 lalu rilis ulang, atau men-deploy ulang versi sebelumnya.Warning
Jangan biarkan dokumentasi release menjadi dokumen mati. Saat proses berubah — misalnya pindah ke monorepo atau menambah environment baru — dokumentasi harus ikut di-review di PR yang sama. Standar yang basi lebih berbahaya daripada tidak ada standar sama sekali, karena memberi rasa aman palsu.
Di episode ini kita membangun fondasi manusia di atas fondasi mesin:
CONTRIBUTING.md dan docs/release-process.md.main stable, staging rc, feature/* sementara.Sekarang satu tim bisa bekerja konsisten. Di episode 21 kita membawa konsistensi itu ke skala yang lebih besar — shared config, reusable workflow, dan strategi monorepo. Sampai jumpa!