Bagaimana Kami Menggunakan Claude Code untuk Memelihara Monorepo Nuxt 4 + Rust
Engineering Team
Stack Kami dan Mengapa Claude Code Cocok
Di Open Soft, produk utama kami adalah website yang dibangun sebagai monorepo: frontend Nuxt 4 dengan TypeScript dan backend API Rust/Axum yang didukung PostgreSQL. Codebase mencakup dua bahasa, dua sistem build, kontrak data bersama, migrasi database, file i18n untuk 10 bahasa, dan infrastruktur deployment. Perubahan sering menyentuh kedua sisi stack secara bersamaan.
Kami mengadopsi Claude Code pada pertengahan 2025 dan telah menjadi alat pengembangan yang paling sering kami gunakan. Bukan karena ia menulis kode untuk kami — tetapi karena ia bernalar tentang seluruh codebase kami dengan cara yang tidak bisa dilakukan alat lain. Ketika Anda memberi tahu Claude Code “tambahkan field published_at ke articles,” ia membaca migrasi Rust, memperbarui kueri SQL di handler, memodifikasi tipe TypeScript di frontend, menyesuaikan komponen halaman Nuxt, memperbarui semua 10 file locale, dan menjalankan build untuk verifikasi. Kesadaran lintas-stack itulah yang membuatnya tak tergantikan untuk pengembangan monorepo.
CLAUDE.md: Mengajarkan Konvensi Anda ke Agen
Fondasi penggunaan Claude Code yang efektif adalah file CLAUDE.md. Ini adalah file instruksi tingkat proyek yang dibaca Claude Code di awal setiap sesi. Anggap saja sebagai dokumentasi onboarding, tetapi untuk agen AI Anda.
CLAUDE.md kami mencakup:
- Konvensi commit: Setiap commit harus dimulai dengan
TASK-XXX:dan menggunakan imperative mood - Gambaran arsitektur: Struktur monorepo, direktori mana berisi apa
- Aturan gaya kode: TypeScript strict mode, tanpa
any, hanya Composition API, sintaks<script setup> - Aturan i18n: Semua 10 locale harus tetap sinkron, key diurutkan alfabetis, key dalam bahasa Inggris
- Aturan keamanan: Tidak ada rahasia di commit, SQL parameterized, CORS origin eksplisit
- Perintah pengembangan:
npm run dev,cargo run,make fixtures, dll.
Claude Code mengikuti konvensi ini secara konsisten. Ketika menghasilkan pesan commit, ia menggunakan prefix TASK-XXX:. Ketika menambahkan key terjemahan, ia menambahkannya ke semua 10 file locale dalam urutan alfabetis. Ketika menulis SQL, ia menggunakan parameterized query. Ini menghilangkan seluruh kategori feedback code review — pelanggaran konvensi.
# Contoh cuplikan CLAUDE.md
## Aturan i18n
Semua 10 locale HARUS tetap sinkron. Saat menambahkan key terjemahan:
1. Format key: Gunakan teks bahasa Inggris polos sebagai key
2. Urutan alfabetis: Key di setiap file locale HARUS diurutkan A-Z
3. Semua locale diperlukan: en, ru, id, zh, ja, ko, fr, de, es, ar
Kami juga memelihara file CLAUDE.md per-direktori untuk backend (/server/CLAUDE.md) dan fixture (/server/fixtures/CLAUDE.md), menyediakan instruksi spesifik konteks yang aktif ketika Claude Code bekerja di direktori tersebut.
Refactoring Multi-File: Kasus Penggunaan Unggulan
Alur kerja yang paling menghemat waktu kami adalah refactoring lintas-stack. Berikut contoh nyata dari proyek kami.
Tugas: Tambahkan field SEO (meta_title, meta_description, focus_keyword, robots_meta) ke sistem articles.
Tanpa Claude Code, perubahan ini memerlukan:
- Tulis migrasi SQL yang menambahkan 4 kolom
- Perbarui struct model Rust
Article - Perbarui DTO Rust
CreateArticledanUpdateArticle - Perbarui semua kueri SQL di handler articles (SELECT, INSERT, UPDATE)
- Perbarui tipe TypeScript
Articledi frontend - Perbarui form editor admin untuk menyertakan field baru
- Perbarui halaman blog post untuk merender meta tag
- Perbarui logika pembuatan sitemap
- Perbarui semua file fixture dengan field baru
- Jalankan migrasi, rebuild, tes
Dengan Claude Code, kami mengetik satu perintah:
Tambahkan field SEO (meta_title, meta_description, focus_keyword, robots_meta) ke articles.
Tulis migrasi, perbarui model dan handler Rust, perbarui tipe frontend
dan editor admin, tambahkan meta tag ke halaman blog, dan perbarui fixture.
Claude Code mengeksekusi ini sebagai satu loop agentik:
- Membaca file migrasi yang ada untuk memahami skema
- Membaca model Rust untuk memahami struct saat ini
- Membaca handler untuk menemukan semua kueri SQL
- Membaca tipe dan komponen frontend
- Membuat semua perubahan di 12+ file
- Menjalankan
cargo checkuntuk memverifikasi kode Rust terkompilasi - Menjalankan
npm run builduntuk memverifikasi frontend ter-build - Memperbaiki error dan iterasi sampai keduanya berhasil
Seluruh proses memakan waktu sekitar 5 menit, dibandingkan 45-60 menit melakukannya secara manual. Lebih penting lagi, ia menangkap bug referensi silang yang manusia lewatkan — seperti lupa menambahkan kolom baru ke kueri UPDATE atau melewatkan file fixture.
Penulisan Migrasi
Migrasi database sangat cocok untuk Claude Code karena memerlukan pemahaman skema saat ini, state akhir yang diinginkan, dan jalur transformasi aman di antara keduanya.
Ketika kami meminta Claude Code menulis migrasi, ia:
- Membaca semua file migrasi yang ada untuk memahami skema saat ini
- Membaca model Rust untuk memahami state target
- Menulis SQL migrasi dengan statement
ALTER TABLEyang tepat - Menambahkan guard
IF NOT EXISTSuntuk idempotency bila sesuai - Membuat migrasi “down” yang sesuai jika kami menggunakan migrasi reversibel
- Memperbarui model dan handler Rust untuk menggunakan skema baru
Pembuatan Tes
Kami menggunakan Claude Code secara ekstensif untuk menghasilkan fixture tes dan data seed SQL. File fixture kami berisi konten realistis berdurasi panjang (artikel 1500+ kata) dengan metadata SEO yang tepat, dan menulisnya secara manual itu melelahkan dan rawan kesalahan.
Alur kerjanya:
- Deskripsikan artikel yang dibutuhkan (topik, sudut pandang, kedalaman teknis)
- Claude Code menghasilkan statement SQL INSERT dengan konten Markdown lengkap
- Ia mengikuti konvensi UUID kami (
d0000000-...untuk artikel,a0000000-...untuk kategori) - Ia menambahkan
ON CONFLICT (slug) DO NOTHINGuntuk idempotency - Ia menghubungkan artikel ke tag via tabel junction
article_tags
Code Review dengan Claude Code
Sebelum membuka merge request, kami menjalankan Claude Code sebagai reviewer:
Review semua perubahan di branch ini untuk bug, masalah keamanan, masalah performa,
dan konsistensi dengan konvensi CLAUDE.md kami.
Claude Code:
- Menjalankan
git diff main...HEADuntuk melihat semua perubahan - Menganalisis setiap file untuk potensi masalah
- Memeriksa SQL injection (kueri non-parameterized)
- Memverifikasi key i18n ada di semua 10 locale
- Memeriksa panggilan
.unwrap()di kode produksi Rust - Memverifikasi penanganan error mengikuti pola kami
- Melaporkan temuan dengan path file dan nomor baris
Ini menangkap sekitar 30% masalah yang sebaliknya akan ditemukan di code review manusia, membiarkan reviewer manusia kami fokus pada arsitektur dan logika bisnis.
Hook: Mengotomatisasi Quality Gate
Claude Code mendukung hook — skrip yang berjalan otomatis sebelum atau sesudah aksi tertentu. Kami menggunakan hook untuk menegakkan kualitas:
Pre-commit hook: Menjalankan cargo fmt --check dan cargo clippy sebelum Claude Code membuat commit. Jika salah satu gagal, Claude Code memperbaiki masalah dan mencoba lagi.
Post-edit hook: Setelah Claude Code memodifikasi file apa pun di /i18n/locales/, hook menjalankan skrip yang memverifikasi semua 10 file locale memiliki set key identik. Jika key hilang, Claude Code menambahkannya.
Server MCP: Memperluas Kemampuan Claude Code
Server Model Context Protocol (MCP) memungkinkan Anda memberikan Claude Code akses ke alat eksternal. Kami menjalankan dua server MCP kustom:
-
Server MCP database: Memungkinkan Claude Code mengkueri PostgreSQL pengembangan kami secara langsung. Saat men-debug masalah data, Claude Code dapat menjalankan kueri
SELECTuntuk memeriksa state database aktual, memahami masalah, dan menulis perbaikan — semua dalam satu loop. -
Server MCP status deployment: Terhubung ke pipeline CI/CD kami. Claude Code dapat memeriksa apakah deployment terbaru berhasil, membaca log build, dan mendiagnosis kegagalan tanpa kami beralih ke dashboard CI.
Tips untuk Codebase Besar dengan Konteks 1M
Jendela konteks 1M token Claude Code adalah fitur paling kuatnya untuk pekerjaan monorepo. Berikut cara kami memaksimalkannya:
Biarkan Claude Code menjelajah. Jangan mencoba memilih file mana yang akan ditampilkan. Deskripsikan apa yang Anda inginkan dan biarkan Claude Code menggunakan alatnya (Grep, Glob, Read) untuk menemukan kode yang relevan.
Gunakan CLAUDE.md untuk konteks stabil. Informasi yang tidak berubah antar sesi — arsitektur, konvensi, perintah — masuk ke CLAUDE.md sehingga Claude Code tidak membuang konteks untuk menemukan ulang.
Pecah mega-task menjadi fase. Bahkan dengan 1M token, tugas seperti “refaktor seluruh sistem autentikasi” mendapat manfaat dari phasing: pertama analisis dan rencanakan, kemudian implementasi modul demi modul, lalu tes.
Percaya pada loop agentik. Ketika Claude Code membuat perubahan, menjalankan build, melihat error, dan memperbaikinya — loop itu adalah fiturnya. Jangan interupsi di tengah siklus. Biarkan konvergen.
Jebakan dan Solusi
Jebakan: Claude Code over-engineering. Kadang ia menambahkan abstraksi atau pola yang tidak diperlukan. Solusi: Tambahkan “KISS — Keep it simple. Hindari over-engineering.” ke CLAUDE.md Anda.
Jebakan: Konteks basi di sesi panjang. Setelah banyak edit, pemahaman Claude Code tentang state file saat ini bisa menyimpang. Solusi: Mulai sesi baru untuk setiap tugas utama.
Jebakan: Output non-deterministik. Prompt yang sama bisa menghasilkan kode berbeda di run berbeda. Solusi: Gunakan prompt yang spesifik dan detail.
Jebakan: Kualitas data tes. Data tes yang dihasilkan AI bisa tidak konsisten secara internal. Solusi: Selalu review fixture yang dihasilkan dan jalankan full test suite.
Jebakan: Perubahan file agresif. Claude Code kadang memodifikasi file yang tidak Anda minta. Solusi: Review diff dengan cermat sebelum menerima.
FAQ
Berapa biaya Claude Code untuk penggunaan harian?
Untuk tim kami yang terdiri dari 4 developer, kami menghabiskan sekitar $200-300/bulan untuk penggunaan API Claude Code di semua proyek. Max plan di $20/bulan per developer adalah alternatif yang lebih dapat diprediksi.
Apakah Claude Code bisa digunakan offline?
Tidak. Claude Code memerlukan koneksi internet untuk berkomunikasi dengan API Anthropic. Semua pemrosesan kode terjadi di sisi server.
Bisakah Claude Code merusak build kami?
Ya, tetapi ia menangkap sebagian besar masalah sendiri. Claude Code menjalankan perintah build Anda sebagai bagian dari loop agentiknya. Jika cargo check gagal, ia membaca error dan memperbaikinya. Dalam pengalaman kami, sekitar 90% build berhasil pada percobaan pertama, dan 99% berhasil setelah loop koreksi diri Claude Code.
Bagaimana Anda menangani rahasia dan variabel lingkungan?
Claude Code menghormati .gitignore dan dapat dikonfigurasi untuk mengecualikan file sensitif. Kami tidak pernah menyimpan rahasia di repositori kami.
Apakah Claude Code cocok untuk developer solo?
Tentu saja. Dalam beberapa hal ia bahkan lebih berharga untuk developer solo, karena berfungsi sebagai sepasang mata kedua untuk code review, basis pengetahuan untuk mengingat konvensi proyek, dan pengali kekuatan untuk tugas membosankan.
Kesimpulan
Claude Code bukan tongkat ajaib yang menulis aplikasi Anda. Ia adalah pengali kekuatan yang unggul dalam penalaran lintas-stack, penegakan konvensi, dan perubahan multi-file yang membosankan. Kombinasi CLAUDE.md untuk pengetahuan proyek persisten, hook untuk penegakan kualitas, dan server MCP untuk akses alat eksternal menjadikannya alat pengembangan AI paling mampu yang pernah kami gunakan untuk pekerjaan monorepo.
Wawasan kunci setelah 9 bulan penggunaan harian: Claude Code paling berharga bukan untuk menulis kode baru, tetapi untuk memelihara kode yang ada — refactoring, migrasi, pengujian, dan review. Ini adalah tugas yang mengonsumsi 70% waktu developer dan paling diuntungkan dari agen yang memahami seluruh codebase Anda.