Automatic Code Refactor

Cross-file dependency understanding, satu instruction refactor seluruh project—bukan variable rename, ini structural refactor beneran

Refactor tradisional sesakit apa? Lo pasti tahu

Manual refactor = lembur + doa

Ganti nama satu fungsi, harus search-replace 100 file. Setelah selesai, takut ada yang ketinggalan. Jalanin test, ternyata ada 3 tempat yang error. Mulai debug pake binary search. Makin gede project, makin takut sentuh, ujung-ujungnya technical debt terus numpuk. Siapa juga yang mau liat-liat kode yang aneh itu. Apalagi refactor besar kayak split class atau extract module—manual dorong minimal seminggu.

OpenClaw gimana cara solve problem ini

Satu command scan seluruh project, paham dependency antar file

OpenClaw bukan cuma liat file yang lo buka—dia baca seluruh project directory, analisis import chain, function call relationship, type definition, module dependency. Terus baru mulai refactor. Habis itu auto-run test pastiin nggak break existing functionality. Lo cukup bilang "ubah project ini dari class jadi hooks", sisanya dia handle.

Prompt siap pakai, langsung pake

Tiga Prompt ini cover refactor scenario paling umum. Kopas-paste aja.

Refactor React project dari Class Component ke Hooks Golden instruction
Analisis semua React Class Component file di project.

Jalanin refactor:
1. Konversi tiap class component jadi function component + Hooks
2. this.state / this.setState → useState
3. componentDidMount / componentWillUnmount → useEffect
4. Extract reusable logic jadi custom Hook
5. Maintain props interface, parent component nggak perlu ubah
6. Jalanin test yang existing, pastiin nggak break

Untuk tiap file, list perubahan yang dilakukan, jelasin kenapa.
Prompt ini works perfect di Claude Opus—dia bisa track `this` reference dan lifecycle relationship dengan tepat. Untuk project gede, recommend split per directory, execute in batches.
Standardisasi error handling pattern di project Advanced tips
Analisis semua error handling code di project.

Audit status sekarang:
- Cari semua try-catch block, .catch() call, error callback
- List tempat yang nggak konsisten (ada yang suppress error, ada yang console.log aja, ada yang throw)

Standardisasi solution:
1. Buat AppError class yang unified (contain code, message, cause)
2. Buat global error handling middleware
3. Semua business layer pake AppError throw, jangan langsung throw new Error
4. API layer return { success: false, error: { code, message } } secara konsisten
5. Kasih list file yang diubah dan diff-nya
Prompt ini bikin AI audit dulu sebelum modify, jadi nggak sembarangan. Cocok buat project yang error handling-nya berantakan.
Migrasi JavaScript project ke TypeScript Golden instruction
Gw mau migrasi JavaScript project ke TypeScript.

Jalanin step ini:
1. Analisis project structure, generate tsconfig.json (strict mode)
2. Mulai dari entry file, migrasi .js → .ts/.tsx sesuai dependency order
3. Tambahin type annotation buat semua function parameter dan return value
4. Minimize penggunaan `any`, pake specific type sebanyak mungkin
5. Install @types package buat third-party library
6. Buat types/ directory buat common type definition
7. Pastiin tsc --noEmit success, nggak ada type error

Untuk tiap file, list summary dari perubahan. Kalo ada tempat yang harus pake `any`, jelaskan alasannya.
JS ke TS adalah migrasi paling umum. Prompt ini bikin AI migrasi sesuai dependency order, bukan random jadi error di mana-mana.

Konfigurasi rekomendasi

Refactor task recommend setup ini, bikin AI lebih hati-hati dan kontrol.

skill_config — khusus code refactor
# .openclaw/skill_config.yaml
refactor:
  model: claude-opus-4-6      # Opus pilihan utama refactor, paham cross-file paling bagus
  context_depth: full         # Baca project structure lengkap
  safety:
    dry_run: true              # Preview dulu, confirm baru tulis
    run_tests: true            # Auto-run test setelah refactor
    backup: true               # Backup dulu sebelum refactor
  ignore:
    - node_modules/
    - dist/
    - "*.min.js"

OpenClaw vs Copilot — perbandingan refactor ability

OpenClaw refactor
  • Paham dependency graph keseluruhan project, ubah satu tempat auto-update semua reference
  • Rename batch antar file, extract common module, split giant file
  • Auto-run test setelah refactor, confirm nggak break, langsung rollback kalo ada issue
  • Support custom refactor rule dan blacklist
VS
Copilot refactor
  • Mostly completion dan suggestion dalam current file
  • Cross-file refactor perlu manually buka file satu-satu
  • Nggak ada built-in test validation flow
  • Depend on IDE refactor feature, limited by IDE plugin

Detail comparison lebih lengkap 👉 OpenClaw vs Copilot · OpenClaw vs Cursor

Real scenario: large project refactor

100K line React project migrate dari Class ke Hooks
Sebuah 3-year-old project punya 200+ class component, tim mau migrasi ke Hooks tapi takut sentuh. Prediksi manual migrate butuh 3 bulan.
OpenClaw solution
Pake Prompt, AI migrasi per module dalam batch. Tiap batch finish auto-run test. Total 2 hari, 0 production bug. Key-nya AI handle `this` binding, lifecycle mapping, ref conversion dengan benar—tempat yang biasa salah.
Traditional solution
Manual refactor file satu-satu. Sampai file ke-50 mulai ada yang ketinggalan, `this` binding ilang jadi runtime error. Akhirnya 2 bulan, masih ada belasan bug di production.
Kesimpulan: project-level refactor adalah tempat AI paling bisa showcase value—nggak cepet sedikit, tapi totally different level.

Model mana yang pakai buat refactor

Refactor minta code understanding ability paling tinggi, jangan hemat disini.

  • Claude Opus 4.6 —— First choice buat large refactor, cross-file dependency tracking terbaik
  • GPT-4o —— Small-medium refactor cukup, speed lebih cepat
  • DeepSeek V3.2 —— Backup option kalo budget terbatas, hasil juga oke

Beberapa pengalaman

💡 Large project jangan sekali jalan semua—split per module, refactor batch-by-batch, tiap batch jalanin test confirm, baru lanjut batch berikut.
⚠️ Sebelum refactor pastiin test coverage cukup. Kalo nggak ada test, refactor selesai lo juga nggak tahu bener apa nggak.
ℹ️ Pake dry_run mode preview dulu. Kalo feeling aman baru let AI write file beneran.
Case ini membantu kamu?