Category: Claude

  • Latihan Troubleshooting dengan Claude Code

    Latihan Troubleshooting dengan Claude Code

    Jadi hari ini saya mencoba mengasah kemampuan troubleshooting, khususnya pada aplikasi yang dapat diimplementasikan secara on-premise seperti mail server (Zimbra dan Carbonio), platform virtualisasi (Proxmox VE), serta file management (Nextcloud). Menurut saya, kemampuan troubleshooting adalah salah satu keterampilan yang harus terus diasah karena sangat dibutuhkan saat mengelola infrastruktur. Namun, ada satu hal yang sampai sekarang masih sering membuat saya bingung ketika ingin belajar troubleshooting, diantara lain:

    • Saya gonta-ganti konfigurasinya sendiri (oprek)
    • Menunggu ada update/patch/bug terbaru
    • atau, menunggu aplikasi failure/error dengan sendirinya

    Kalau oprek sendiri dengan skill teknis minim seperti saya malah-malah merembet kemana-mana, kalau menunggu update bisa berbulan-bulan, dan apalagi kalau nunggu aplikasi failure nanti malah tidak latihan.

    Masalahnya, menunggu insiden itu tidak efisien. Jadi saya balik logikanya. Saya menjadikan Claude Code untuk merusak lab saya sendiri dengan pola yang realistis, lalu saya yang mendiagnosis dan memperbaiki. Anggap saja latihan tanding, tapi lawannya adalah AI yang paham error apa saja yang biasa terjadi di Proxmox, Nextcloud, Zimbra, atau Carbonio.

    Konsepnya

    Aturannya cuma satu yang penting: Claude berperan sebagai fasilitator, bukan tukang benerin. Tugas dia merusak, memberi gejala, dan memberi petunjuk kalau saya mentok. Yang mendiagnosis dan memperbaiki tetap saya.

    Alurnya kira-kira begini:

    1. Saya pilih platform dan level kesulitan.
    2. Claude menyuntikkan satu fault via SSH, tanpa memberi tahu apa yang dia rusak. (sebenernya mau pake MCP tapi belum paham)
    3. Saya cuma dikasih gejala, seperti tiket dari user. Misalnya “email keluar nyangkut sejak pagi”.
    4. Saya investigasi sendiri. Kalau mentok, boleh minta hint, tapi skornya berkurang.
    5. Setelah saya bilang selesai, Claude verifikasi dan kasih skor.

    Kuncinya ada di poin ketiga. Saya tidak dikasih tahu root cause-nya. Persis seperti simulasi production, saya cuma pegang gejala dan harus menelusuri sendiri sampai ke akar.

    Level 1 sampai 5

    Biar latihannya naik kelas, saya bagi lima level. Makin tinggi, makin dekat ke insiden produksi yang sebenarnya.

    LevelKarakter faultContoh
    1Satu masalah jelas, error terang di logService ke-stop, typo di config
    2Satu masalah, gejala kurang gamblangPort diblok firewall, cert expired
    3Gejala tak langsung lewat dependensiLDAP mati bikin semua auth gagal
    4Cascading, satu akar banyak gejalaDisk penuh, quorum cluster hilang
    5Beberapa masalah sekaligus, butuh metodeFault kombinasi lintas layer

    Level 1 itu pemanasan. Level 5 memaksa saya berpikir sistematis, memisahkan gejala satu per satu, dan menahan diri dari asumsi buru-buru.

    Penutup: Backup, backup, backup

    Sengaja merusak sistem tetap butuh rem. Ada dua aturan yang dibutuhkan

    • Pertama, backup atau snapshot dulu sebelum apa pun.
    • Kedua, kunci jawaban terpisah di folder sementara. Kalau saya baca duluan, latihan jadi percuma. Biar disiplin aja.

    Latihan ini akan dijalankan besok. Stay tune!

  • Memahami dan Memaksimalkan Claude Code

    Memahami dan Memaksimalkan Claude Code

    Saya pakai beberapa AI code assistant, Claude Code, Antigravity, dan sejenisnya, tapi tulisan ini fokus ke Claude Code dan jadi bahan pembelajaran untuk saya yang masih pemula dalam penggunaannya. Prinsip di bawah ini sebagian besar berlaku juga untuk tool lain, cuma cara implementasinya beda-beda.

    Dua masalah paling sering muncul waktu kerja pakai AI code agent:

    1. Token cepat habis, usage limit kena padahal kerjaan belum kelar.
    2. Hasil kerja melenceng dari rencana, jadi harus dikoreksi berkali-kali.

    Catatan ini disusun dari dokumentasi resmi Claude Code (code.claude.com/docs).

    1. Hemat Token dan Usage Limit

    Akar masalahnya satu: context window. Makin penuh context, makin banyak token diproses ulang tiap pesan, dan performa ikut turun karena instruksi lama mulai “terlupakan”. Jadi strategi hemat token intinya jaga context tetap kecil dan relevan.

    StrategiKenapa penting
    Rapikan CLAUDE.mdFile ini kebaca tiap sesi, jadi ikut nambah token di tiap request. Isi cuma hal yang Claude tidak bisa tebak sendiri: perintah build khusus, konvensi kode beda dari default, gotcha project. Kalau satu baris dihapus dan Claude tetap benar, hapus saja
    /clear antar taskPindah task tapi context lama masih menumpuk itu boros. /clear reset total
    /compact <instruksi>Kasih arahan spesifik, misal /compact fokus ke perubahan API dan hasil test, biar ringkasan yang tersimpan relevan
    Reference file pakai @Sebut file spesifik, misal @src/auth/session.ts, daripada suruh Claude eksplorasi satu folder penuh
    Delegasikan riset ke subagentSubagent jalan di context terpisah, yang balik ke context utama cuma rangkumannya
    Pilih model sesuai beban kerjaSonnet cukup untuk kerjaan harian dan lebih murah. Simpan Opus untuk keputusan arsitektur atau analisis kompleks. Ganti lewat /model
    Pantau lewat /context dan /usage/context kasih breakdown token per komponen. /usage kasih estimasi biaya sesi berjalan

    2. Supaya Claude Code Jalan Sesuai Rencana

    Bagian ini paling sering diabaikan. Langsung suruh coding tanpa eksplorasi dan rencana biasanya menghasilkan kode yang terlihat benar tapi menjawab masalah yang salah.

    Alur resmi yang direkomendasikan ada empat tahap:

    1. Explore: masuk plan mode, suruh Claude baca dan pahami kode relevan dulu tanpa mengubah apa pun.
    2. Plan: minta Claude buat rencana implementasi detail. Bisa diedit manual dulu sebelum lanjut.
    3. Implement: keluar plan mode, biarkan Claude coding sambil verifikasi ke rencana yang disepakati.
    4. Commit: minta Claude commit dengan pesan jelas.

    Plan mode ada overhead-nya, jadi skip saja untuk perubahan kecil yang sudah jelas seperti perbaiki typo atau rename variabel. Pakai kalau perubahan menyentuh banyak file, atau kalian sendiri belum yakin pendekatan yang tepat.

    Dua kebiasaan lain yang paling berpengaruh ke akurasi hasil:

    Kasih konteks spesifik, bukan instruksi umum.

    Kurang spesifikLebih spesifik
    “tambahin test buat foo.py”“tulis test untuk foo.py, cover kasus user sudah logout, jangan pakai mock”
    “perbaiki bug login”“login gagal setelah session timeout, cek flow auth di src/auth/ terutama token refresh, buat failing test dulu baru diperbaiki”

    Kasih Claude cara verifikasi sendiri, entah test suite, build, atau screenshot dibanding desain awal. Tanpa itu, satu-satunya sinyal “kelar” cuma kode yang terlihat masuk akal, belum tentu benar.

    Untuk fitur besar, minta Claude interview kalian dulu soal implementasi teknis, UX, dan edge case, sebelum nulis spek ke file terpisah. Sesi implementasi baru dimulai setelah spek matang, jadi context-nya bersih dan fokus.

    Kalau sudah dikoreksi dua kali untuk masalah yang sama, jangan koreksi ketiga kalinya di sesi yang sama. /clear saja dan tulis ulang prompt yang lebih spesifik.

    Untuk kerjaan tanpa pengawasan, tambahkan satu langkah review dari subagent terpisah yang mengecek diff terhadap rencana awal, bukan sekadar gaya penulisan kode.

    3. Lain-lain

    • Hooks: aturan yang wajib jalan tanpa kecuali, misal lint otomatis tiap habis edit file. Deterministik, beda dari CLAUDE.md yang sifatnya cuma anjuran.
    • Skills: workflow berulang, bikin SKILL.md di .claude/skills/ daripada jelasin ulang tiap sesi.
    • Rename dan resume session: kasih nama sesi jelas pakai /rename per workstream, lanjut pakai --resume atau --continue.
    • Non-interactive mode: untuk kerjaan berulang atau otomasi, pakai claude -p "prompt" di script, pre-commit hook, atau CI.
    • Checkpoint dan rewind: tiap prompt otomatis bikin checkpoint. Kalau salah arah, tekan Esc dua kali atau jalankan /rewind.

    Pola gagal yang paling sering terjadi:

    Pola gagalCara mengatasi
    Satu sesi dipakai banyak task tidak nyambung/clear tiap ganti task
    Koreksi berulang tanpa hasil membaik/clear setelah dua kali gagal, tulis ulang prompt
    CLAUDE.md kepanjangan sampai instruksi penting ketutup noisePangkas ruthless
    Percaya hasil tanpa verifikasiSelalu sediakan cara ngecek
    Eksplorasi tanpa scope jelasBatasi cakupan riset atau delegasikan ke subagent

    Penutup

    Intinya satu: context adalah resource terbatas, perlakukan seperti resource, bukan tempat sampah. Makin bersih dan terarah context yang dikasih ke Claude Code, makin hemat token, dan makin kecil kemungkinan hasilnya melenceng dari rencana.

    Referensi:

    • Best practices for Claude Code, Anthropic. https://code.claude.com/docs/en/best-practices
    • Manage costs effectively, Anthropic. https://code.claude.com/docs/en/costs
  • Menulis Blog di WordPress dengan Claude Code

    Menulis Blog di WordPress dengan Claude Code

    Halo kembali lagi dengan Rafi. Kali ini saya ingin berbagi pengalaman yang cukup menarik tentang dua hal: WordPress MCP Abilities dan Claude Code dengan Nvidia NIM. Keduanya sebenarnya berbeda, namun saya mencoba menggabungkannya karena bisa menjadi solusi yang lengkap.

    Tulisan ini terinspirasi dari Mas Afatyo dan Mentor saya Pak Nugi di Excellent. Jadi, Mas Afatyo ini menulis di github tentang integrasi wordpress dengan claude code. Namun disini harus menggunakan claude code yang berbayar (pro plan). Namun, ternyata Pak Nugi punya solusi untuk mengakali hal ini (meskipun terasa ilegal) pada tulisan di artikelnya.

    Sebelumnya, saya sudah terbiasa menggunakan Claude versi web untuk kegiatan dan pekerjaan sehari-hari. Namun, untuk mencoba claude code memang memerlukan subscription dari Antrhopic.

    Latar Belakang

    Saya biasa menulis blog sehari-hari mengenai segala hal tentang IT dan untuk menulis biasanya dibantu dengan AI (ChatGPT atau Claude). Lalu dari inspirasi diatas saya bertanya, “Kenapa nulis blog masih harus pindah konteks ke browser lagi?” padahal urusan di terminal atau CLI sudah jadi kebiasaan. Idealnya, dari terminal yang sama saya pakai dan ngurus server, saya bisa bilang ke AI “bikin draft post tentang X, simpan di WordPress”, lalu tinggal review di dashboard admin wordpress.

    Komponennya sebenarnya sudah ada semua, hanya butuh dirangkai:

    • Claude Code — CLI agentic dari Anthropic yang bisa manggil tools via MCP (Model Context Protocol).
    • WordPress 6.8+ — yang sudah punya REST API dan, lewat plugin tertentu, bisa di-bridge ke MCP.
    • Sebuah plugin penghubung yang menerjemahkan “buat post” jadi panggilan REST API yang aman.

    Bahan-Bahan

    1. Tutorial Claude Code Gratis dari Pak Nugi

    Pak Nugi Abdiansyah menulis panduan lengkap berbahasa Indonesia: Cara Menjalankan Claude Code Gratis dengan NVIDIA NIM (Mac & Linux). Inti dari tutorial ini: pakai proyek open-source free-claude-code sebagai proxy lokal yang membuat Claude Code mengira sedang ngomong ke API Anthropic, padahal request-nya dialihkan ke NVIDIA NIM yang punya tier gratis sampai 40 request/menit.

    Saya tidak akan ulang langkah per langkahnya di sini — silakan baca langsung di artikel asli Pak Nugi karena penjelasannya sudah sangat lengkap, dari install uv, ambil API key NVIDIA, sampai bikin alias fcc-claude.

    2. Plugin wp-blog-abilities dari Mas Afatyo

    Plugin ini dibuat oleh Mas Afatyo dan source-nya ada di github.com/afatyoo/wp-blog-abilities. Fungsinya untuk mendaftarkan empat abilities untuk post WordPress:

    • blog/create-post
    • blog/update-post
    • blog/list-posts
    • blog/delete-post

    Secara otomatis ditemukan oleh WordPress MCP Adapter. Hasilnya, tool-tool ini bisa dipanggil oleh client MCP manapun, termasuk Claude Code.

    Bagusnya, semua akses tetap melalui autentikasi WordPress standar (Application Password + capability check), jadi tidak ada endpoint publik yang bocor.

    Catatan Penting

    Meskipun judulnya “Claude Code gratis”, namun artikel yang ditulis Pak Nugi yang jalan di balik layar itu bukan model Claude. Proxy free-claude-code meneruskan request ke model lain (default-nya stepfun-ai/step-3.5-flash, bisa juga Kimi, DeepSeek, dst) lalu membungkus respon-nya supaya terlihat seperti Claude.

    Implikasinya untuk percobaan ini:

    • Privasi: isi draft yang dibikin akan transit ke server NVIDIA NIM. Untuk blog publik tidak masalah, tapi kalau mau bikin draft yang sensitif (laporan internal, dll) perlu dipertimbangkan lagi.

    Kalau kalian tetap mau lanjut, berikut langkah-langkahnya.

    Langkah 1 — Setup Claude Code + NVIDIA NIM

    Ikuti tutorial dari blog Pak Nugi sampai selesai (langkah 1 sampai 6). Pastikan di akhir, Anda bisa menjalankan fcc-claude dan banner Claude Code muncul tanpa diminta login.

    Tweak kecil yang saya pakai berbeda dari tutorial:

    • Saya jalankan proxy-nya di dalam tmux sesuai saran “Pro Tip” Pak Nugi, jadi terminal utama tetap bersih.

    Tes cepat sebelum lanjut:

    fcc-claude
    # di prompt Claude Code, ketik:
    > apa yang bisa kamu lakukan?

    Output:

    Kalau jawabannya keluar lancar, fondasinya sudah siap.

    Langkah 2 — Install Plugin di WordPress

    Ada dua plugin yang harus saya install (sesuai instruksi di README afatyo):

    1. mcp-adapter — bridge resmi dari WordPress.org yang mengubah ability jadi MCP server.
    2. wp-blog-abilities — plugin afatyo yang mendaftarkan abilities khusus untuk blog post.

    Karena saya pegang akses SSH ke VPS WordPress, saya pilih jalur git clone:

    cd /var/www/html/wp-content/plugins
    sudo -u www-data git clone https://github.com/WordPress/mcp-adapter.git
    sudo -u www-data git clone https://github.com/afatyoo/wp-blog-abilities.git

    Lalu ke WP Admin → Plugins, aktifkan keduanya. Penting: aktifkan mcp-adapter dulu, baru wp-blog-abilities, supaya hook registrasi ability tidak gagal.

    Buat yang nggak punya akses SSH, Mas Afatyo juga sudah menyediakan ZIP yang bisa di-upload via Plugins → Add New → Upload Plugin.

    Langkah 3 — Application Password

    WordPress butuh kredensial khusus untuk dipakai aplikasi luar. Jangan pakai password login Anda — itu bahaya dan juga tidak akan jalan.

    1. Buka WP Admin → Users → Profile.
    2. Scroll ke bagian Application Passwords.
    3. Isi nama (saya pakai Claude MCP via NIM) dan klik Add New Application Password.
    4. Salin password yang muncul — formatnya xxxx xxxx xxxx xxxx xxxx xxxx dengan spasi. Password ini hanya tampil sekali.

    Simpan di password manager karena kalau hilang harus generate ulang.

    Langkah 4 — Konfigurasi .mcp.json

    Di laptop saya, saya buat file .mcp.json sesuai template di README afatyo:

    {
      "mcpServers": {
        "wordpress-blog": {
          "command": "npx",
          "args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
          "env": {
            "WP_API_URL": "https://domain-blog-anda.com/wp-json/mcp/mcp-adapter-default-server",
            "WP_API_USERNAME": "username-kalian",
            "WP_API_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
          }
        }
      }
    }

    Ganti tiga baris di dalam env dengan nilai milik Anda sendiri. Spasi pada WP_API_PASSWORD tidak perlu dihapus, biarkan apa adanya seperti yang WordPress kasih.

    Langkah 5 — Restart Claude Code

    Bagian ini saya sempat trouble. /exit di Claude Code tidak cukup, perubahan .mcp.json hanya ke-detect kalau prosesnya dimatikan (kill) lalu start lagi. Di terminal saya:

    # keluar dulu dari sesi sebelumnya
    # pastikan tidak ada proses claude yang nyangkut:
    pgrep -a claude
    
    # kalau ada, kill
    pkill -f "claude"
    
    # baru jalankan ulang
    fcc-claude

    Setelah Claude Code jalan lagi, saya tes konektivitas MCP:

    > List all published posts on my blog

    Output:

    Dan voila — daftar published post saya muncul, lengkap dengan ID, judul, dan tanggal modifikasi.

    Langkah 6 — Buat Blog

    Blog ini ditulis dengan AI, namun saya sendiri yang mengedit dan mereview, jadi mohon maaf kalau ada kesalahan atau kata-kata yang kaku.

    Membuat blog dari dua sumber:

    Kalian juga bisa minta AI untuk mengedit tulisan sesuai dengan yang kalian mau:

    Catatan Setelah Pemakaian

    Supaya post ini tidak cuma jadi hype, ini hal-hal yang saya rasakan setelah beberapa hari:

    Yang jalan dengan baik:

    • List, create, update, delete post — semuanya solid. Application Password jalan, capability check WordPress jalan, tidak ada endpoint yang nyeleneh.
    • Workflow AI buat draft post → Review dan Publish Mandiri sangat cocok dengan setup ini. Jangan biarkan AI langsung publish.

    Perlu diakali:

    • Karena modelnya bukan Claude beneran, saya merasakan output yang kadang kaku atau struktur paragrafnya kurang natural. Cantumkan di /memory agar AI agent paham output yang diinginkan.
    • Limit 40 request/menit dari NVIDIA NIM aman buat satu sesi penulisan, tapi kalau dipakai eksplorasi panjang (banyak tool call baca-tulis post), bisa kena rate limit.
    • Untuk post yang SEO-optimized dengan struktur heading kompleks, perlu dilakukan review mandiri.

    Penutup & Kredit

    Eksperimen ini sebenarnya hanya nyambungin dua kerjaan orang lain dengan kabel pendek. Tanpa dua artikel/proyek di bawah ini, saya tidak akan bisa mencobanya. Terima kasih kepada:

    • 🙏 Pak Nugi (nugi.biz) — untuk panduan lengkap setup Claude Code gratis pakai NVIDIA NIM. Tutorialnya rapi, ada troubleshooting, dan langsung saya pakai tanpa perlu nyari ke sumber lain.
    • 🙏 Mas Afatyo (github.com/afatyoo) — untuk plugin wp-blog-abilities yang membungkus operasi blog jadi MCP abilities yang bersih dan aman. Permission callback-nya ketat, sanitasi input lengkap, dan README-nya termasuk dokumentasi yang rapi.
    • 🙏WordPress –  MCP Adapter  — untuk plugin MCP Adapter

    Kalau Anda merasa terbantu seperti saya, bisa mampir ke blog Pak Nugi dan bintangi repo Mas Afatyo di GitHub, kontribusi seperti ini yang membuat dunia per-IT-an menjadi lebih hidup.

    Selamat ngeblog dari terminal!


    Disclaimer percobaan: Saya jalankan setup ini hanya di lingkungan pribadi untuk eksperimen. Untuk pemakaian produksi atau yang melibatkan data sensitif, pertimbangkan pakai API Anthropic resmi (atau LLM lain yang Anda host sendiri) supaya privasi data dan kualitas output bisa dikontrol penuh.

    Tulisan ini dibuat oleh AI