Cara Membuat CLI Tool Sendiri dengan Bantuan AI

Terminal dengan command line interface sedang digunakan developer

Written by

in

Salah satu hal yang membuat saya produktif naik drastis beberapa bulan belakangan bukan apps baru yang mahal, bukan workflow mewah — tapi CLI tools kecil yang saya membuat sendiri untuk automasi hal-hal repetitif di pekerjaan sehari-hari.

Dan yang membuat saya bisa membuat tools itu lebih cepat? AI sebagai pair programmer.

Artikel ini bukan tutorial akademis. Ini lebih ke: “gini cara saya benar-benar membuat CLI tool dari nol dengan bantuan AI, langkah demi langkah.”

Kenapa CLI Tool?

Sebelum masuk ke cara membuat, validasi dulu kenapa CLI tool worth it:

  • Speed: Satu command untuk menjalankan serangkaian aksi yang biasanya butuh 5-10 langkah manual
  • Repeatable: Jalankan hal yang sama persis berkali-kali tanpa error manusia
  • Composable: Bisa di-pipe dengan tools lain di terminal
  • Shareable: Bisa dishare ke tim, bisa masuk ke repo, bisa di-versioning

Contoh nyata yang saya membuat: tool untuk rename file markdown sesuai konvensi tertentu, tool untuk generate boilerplate project structure, tool untuk batch resize gambar dengan preset tertentu. Kecil-kecil tapi efeknya besar.

Pilihan Stack

Untuk CLI tool, ada beberapa pilihan populer:

Node.js — Paling accessible kalau kamu JavaScript/TypeScript developer. Library seperti commander.js, yargs, atau oclif membuat ini mudah.

Python — Bahasa scripting yang paling natural untuk automasi. Click dan Typer adalah library CLI yang elegant.

Go — Kalau mau binary yang compiled, single-file, dan fast. cobra adalah library CLI standar di ekosistem Go.

Bash — Untuk yang simple dan tidak perlu distribusi. Tapi scaling-nya terbatas.

Untuk artikel ini, kita pakai Node.js dengan TypeScript karena paling gampang di-demo dan banyak developer sudah familiar.

Setup Project

Mulai dari scratch:

mkdir my-cli-tool

cd my-cli-tool

npm init -y

npm install commander chalk ora

npm install -D typescript @types/node ts-node

npx tsc --init

Struktur direktori dasar:

my-cli-tool/

├── src/

│ ├── index.ts # Entry point

│ ├── commands/ # Command handlers

│ └── utils/ # Helper functions

├── package.json

└── tsconfig.json

Di Sini AI Masuk: Cara Efektif Pakai AI untuk Build CLI

Ini bagian intinya. Bukan sekadar “tanya AI terus copy paste” — ada cara yang lebih efektif.

Langkah 1: Describe Tool Kamu dengan Jelas

Sebelum minta AI menulis kode, definisikan dulu dengan jelas:

  • Apa yang tool ini lakukan?
  • Input apa yang diterima?
  • Output apa yang dihasilkan?
  • Edge case apa yang perlu di-handle?

Contoh prompt yang bagus:

> “Bantu saya membuat CLI tool di Node.js dengan TypeScript. Tool ini bernama imgopt dan fungsinya: menerima path folder sebagai argument, scan semua file JPG dan PNG di folder tersebut, resize ke max-width 1200px (maintain aspect ratio), compress dengan quality 80%, dan simpan ke subfolder /optimized. Tampilkan progress bar saat processing. Kalau folder /optimized sudah ada, tanya konfirmasi sebelum overwrite.”

Prompt spesifik seperti gini akan beri output yang jauh lebih berguna dari sekadar “membuat CLI tool untuk resize gambar.”

Langkah 2: Generate Skeleton, Bukan Final Code

Saya biasanya minta AI untuk buat skeleton/struktur dulu, bukan langsung kode lengkap:

> “Dulu kamu beri prompt di atas — sekarang generate struktur folder dan file yang dibutuhkan, dengan function signatures yang perlu diimplementasi. Jangan tulis implementasi detailnya dulu.”

Ini membuat kamu mengerti arsitekturnya sebelum detail kode ada. Lebih mudah untuk review dan understand.

Langkah 3: Implement Bagian per Bagian

Setelah struktur clear, implement satu command atau satu fungsi sekaligus:

// src/index.ts — yang AI generate sebagai starting point

import { Command } from 'commander';

import { optimizeImages } from './commands/optimize';

const program = new Command();

program

.name('imgopt')

.description('CLI tool untuk optimasi gambar')

.version('1.0.0');

program

.command('optimize <folder>')

.description('Optimize semua gambar di folder')

.option('-w, --width <number>', 'Max width (default: 1200)', '1200')

.option('-q, --quality <number>', 'Quality 1-100 (default: 80)', '80')

.option('-o, --output <folder>', 'Output folder (default: optimized)', 'optimized')

.action(optimizeImages);

program.parse();

Lalu untuk setiap bagian yang perlu diimplementasi, tanya AI dengan konteks yang spesifik.

Langkah 4: Iterasi dengan Error

Ini yang sering dilewat. Ketika ada error, jangan langsung fix sendiri atau langsung paste ke AI tanpa konteks. Cara yang lebih efektif:

  1. Jalankan kode
  2. Kalau ada error, screenshot atau copy error message-nya
  3. Paste ke AI dengan konteks: “Ini error yang muncul ketika saya run dengan input [X]. Ini adalah kode yang saya jalankan: [kode]. Ini error-nya: [error]. Tolong explain kenapa terjadi dan bagaimana fix-nya.”

Minta explanation, bukan sekadar fix. Ini membuat kamu belajar dan mengerti, bukan cuma copy-paste.

Contoh Real: Tool Rename Markdown Files

Ini tool sederhana yang benar-benar saya membuat. Masalahnya: saya punya banyak file markdown yang nama filenya inkonsisten, dan saya mau standardize jadi format YYYY-MM-DD-judul-kebab-case.md.

Prompt ke AI:

> “Membuat CLI tool Node.js TypeScript bernama mdren yang bisa rename file markdown. Command: mdren rename . Behavior: scan semua file .md di folder, extract tanggal dari frontmatter YAML (field date), extract title dari frontmatter (field title), convert title ke kebab-case, rename file ke format YYYY-MM-DD-judul-kebab-case.md. Tampilkan preview rename sebelum eksekusi dan minta konfirmasi. Kalau file tidak punya frontmatter, skip dan beri warning.”

Dalam 2-3 iterasi dengan AI, tool ini jadi. Sesuatu yang kalau saya tulis manual dari nol mungkin butuh setengah hari.

Publish ke npm (Opsional)

Kalau mau share ke tim atau publik:

// package.json

{

"name": "your-cli-tool",

"bin": {

"mytool": "./dist/index.js"

},

"scripts": {

"build": "tsc",

"prepublish": "npm run build"

}

}

Setelah build dan npm publish, orang lain bisa install dengan npm install -g your-cli-tool.

Tips Tambahan

Tambahkan --dry-run flag untuk operasi yang destructive (rename, delete, overwrite). Jalankan dulu tanpa benar-benar eksekusi, lihat apa yang akan terjadi.

Gunakan chalk untuk colored output — ini membuat CLI kamu jauh lebih readable, terutama untuk error (merah), success (hijau), dan warning (kuning).

Error handling yang proper — jangan biarkan tool crash dengan stack trace mentah. Catch error dan beri pesan yang human-readable.

Simpan di PATH kamu — entah via npm global install atau symlink manual, pastikan tool kamu bisa dipanggil dari mana saja di terminal.

Kesimpulan

CLI tool kustom adalah investasi produktivitas yang underrated. Dan sekarang dengan AI sebagai pair programmer, barrier untuk membuat tool sendiri jauh lebih rendah.

Kuncinya: jangan minta AI menulis semua sekaligus. Iterate, tanya per bagian, minta explanation bukan cuma code dump. Treat AI seperti junior developer yang sangat cepat, tapi tetap butuh diarahkan dan di-review hasilnya.


Punya ide CLI tool yang mau kamu membuat tapi tidak tahu mulai dari mana? Atau butuh partner untuk develop tools custom untuk workflow tim kamu? Yuk ngobrol — hubungi mafadev dan kita bangun bareng.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *