Use Cases (Diperbarui: 3/6/2026)

Mengotomatiskan Alur Kerja Development dengan Claude Code

Otomatiskan Issue, review PR, maintenance, log, retry, rollback, dan approval dengan Claude Code.

Mengotomatiskan Alur Kerja Development dengan Claude Code

Otomatisasi alur kerja dengan Claude Code bukan berarti membiarkan agen melakukan merge tanpa pengawasan. Pola yang aman justru lebih kecil: gunakan Claude Code untuk merangkum Issue, menyiapkan perubahan terarah, meninjau PR, membuat laporan maintenance, lalu berhenti saat keputusan manusia dibutuhkan.

Panduan ini berisi contoh yang bisa disalin dan dijalankan dengan gh, git, node, npm, dan claude. Kuncinya adalah memperlakukan otomatisasi sebagai kerangka kerja untuk agen: input dikontrol, aksi yang boleh dilakukan dibatasi, log disimpan, retry dirancang, rollback disiapkan, dan titik approval manusia ditulis jelas.

Tentukan batas otomatisasi dulu

TahapClaude Code boleh melakukanManusia memutuskan
TriageMerangkum Issue, diff, dan log gagalPrioritas dan keputusan produk
PerubahanPerbaikan kecil, test, dokumentasiPerubahan scope dan rilis
ReviewBug, risiko keamanan, test yang kurangSaran mana yang diterima
OperasiPemeriksaan terjadwal, TODO lama, dependencyMerge, penghapusan, release, dampak billing
flowchart LR
  A["Issue / PR"] --> B["Prompt kecil"]
  B --> C["Claude Code"]
  C --> D["Diff dan log"]
  D --> E["Test"]
  E --> F["Approval manusia"]
  F --> G["PR / release"]

Untuk gambaran pipeline yang lebih lengkap, baca juga panduan CI/CD Claude Code dan panduan Hooks Claude Code.

Use case 1: membuat branch kerja aman dari Issue

Script ini membaca GitHub Issue, membuat atau memakai ulang branch deterministik, meminta Claude Code membuat perubahan terkecil yang berguna, menjalankan test, lalu membiarkan commit dilakukan manual.

Simpan sebagai scripts/claude-issue-work.sh.

#!/usr/bin/env bash
set -euo pipefail

ISSUE_NUMBER="${1:-}"
if [ -z "$ISSUE_NUMBER" ]; then
  echo "Usage: ./scripts/claude-issue-work.sh <issue-number>"
  exit 1
fi

for command_name in git gh claude npm; do
  if ! command -v "$command_name" >/dev/null 2>&1; then
    echo "Missing command: $command_name"
    exit 1
  fi
done

: "${ANTHROPIC_API_KEY:?Set ANTHROPIC_API_KEY before running this script}"

mkdir -p .claude-logs
ISSUE_FILE=".claude-logs/issue-${ISSUE_NUMBER}.md"
LOG_FILE=".claude-logs/issue-${ISSUE_NUMBER}-$(date +%Y%m%d-%H%M%S).log"
BRANCH="claude/issue-${ISSUE_NUMBER}"

gh issue view "$ISSUE_NUMBER" --json title,body,labels --jq '
  "# " + .title + "\n\n" + (.body // "") + "\n\nLabels: " + ([.labels[].name] | join(", "))
' > "$ISSUE_FILE"

if git show-ref --verify --quiet "refs/heads/$BRANCH"; then
  git switch "$BRANCH"
else
  git switch -c "$BRANCH"
fi

PROMPT=$(cat <<PROMPT
Anda adalah asisten development untuk repository ini.
Baca Issue di bawah dan lakukan perubahan terkecil yang berguna.

Batasan:
- Periksa file terkait sebelum mengedit.
- Ikuti arsitektur, penamaan, dan gaya test yang sudah ada.
- Jika requirement ambigu, tinggalkan TODO atau pertanyaan, jangan membuat desain besar.
- Jangan menyentuh secret, file environment, atau artikel yang tidak terkait.
- Tinggalkan repository dalam kondisi siap menjalankan npm test.
- Jangan melakukan commit, push, membuat PR, atau merge.

Issue:
$(cat "$ISSUE_FILE")
PROMPT
)

claude -p "$PROMPT" \
  --max-turns 8 \
  --permission-mode acceptEdits \
  --output-format text 2>&1 | tee "$LOG_FILE"

npm test 2>&1 | tee -a "$LOG_FILE"
git diff --stat | tee -a "$LOG_FILE"

echo "Review the diff, then commit manually if it is correct."
echo "Log: $LOG_FILE"

Guardrail-nya sederhana tetapi penting. Jika ANTHROPIC_API_KEY tidak ada, script berhenti di awal. Nama branch stabil, jadi rerun tidak membuat branch duplikat. Log disimpan di .claude-logs, sehingga prompt dan hasil test bisa ditelusuri lagi.

Use case 2: menambahkan review PR di GitHub Actions

Action resmi Claude Code untuk GitHub Actions bisa berjalan pada event PR. Workflow ini hanya meminta review; tidak mengizinkan edit kode, push, atau merge.

Simpan sebagai .github/workflows/claude-review.yml.

name: Claude Review Gate

on:
  pull_request:
    types: [opened, synchronize, reopened]

permissions:
  contents: read
  pull-requests: write
  issues: write

concurrency:
  group: claude-review-${{ github.event.pull_request.number }}
  cancel-in-progress: true

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            Review Pull Request ini.
            Fokus pada bug, keamanan, test yang kurang, kompatibilitas mundur, dan log operasional.
            Tandai setiap temuan sebagai high, medium, atau low dan beri saran perbaikan yang konkret.
            Jangan mengedit kode, push, atau merge.
          claude_args: |
            --max-turns 6
            --permission-mode plan

Jaga permission tetap sempit. Untuk review PR, biasanya contents: read dan pull-requests: write menjadi inti. Tambahkan issues: write hanya jika workflow juga berkomentar di Issue.

Sebelum menyalin contoh lama, cek referensi resmi Claude Code CLI, dokumentasi resmi Claude Code GitHub Actions, dan sintaks workflow GitHub Actions. Contoh lama dengan @beta atau direct_prompt perlu diganti ke @v1 dan prompt.

Use case 3: membuat laporan maintenance dengan Node.js

Maintenance terjadwal tidak harus mengubah file. Laporan tentang test gagal, diff besar, TODO lama, log yang hilang, atau risiko rollback sudah cukup untuk mengurangi kerja ulang.

Simpan sebagai scripts/claude-maintenance.mjs.

#!/usr/bin/env node
import { spawnSync } from "node:child_process";
import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
import { join } from "node:path";

const logDir = ".claude-logs";
const lockFile = join(logDir, "maintenance.lock");
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
const logFile = join(logDir, `maintenance-${stamp}.log`);

function fail(message) {
  console.error(message);
  process.exit(1);
}

function run(command, args, options = {}) {
  const result = spawnSync(command, args, {
    encoding: "utf8",
    shell: process.platform === "win32",
    ...options,
  });

  const output = `${result.stdout || ""}${result.stderr || ""}`;
  if (result.status !== 0) {
    writeFileSync(logFile, output);
    fail(`Command failed: ${command} ${args.join(" ")}. See ${logFile}`);
  }
  return output;
}

if (!process.env.ANTHROPIC_API_KEY) {
  fail("Set ANTHROPIC_API_KEY before running this script.");
}

mkdirSync(logDir, { recursive: true });
if (existsSync(lockFile)) {
  fail(`Another maintenance run is active: ${lockFile}`);
}

writeFileSync(lockFile, String(process.pid));

try {
  const status = run("git", ["status", "--short"]);
  const tests = run("npm", ["test", "--", "--runInBand"]);
  const prompt = [
    "Anda adalah reviewer maintenance untuk repository ini.",
    "Baca git status dan output test, lalu rangkum risiko hari ini.",
    "Jangan edit, hapus, commit, atau push apa pun.",
    "Kelompokkan berdasarkan credentials / idempotency / retry / rollback / logs / human approval.",
    "",
    "git status:",
    status || "(clean)",
    "",
    "test output:",
    tests.slice(-12000),
  ].join("\n");

  const review = run("claude", [
    "-p",
    prompt,
    "--max-turns",
    "5",
    "--permission-mode",
    "plan",
    "--output-format",
    "text",
  ]);

  writeFileSync(logFile, review);
  console.log(`Maintenance report written to ${logFile}`);
} finally {
  rmSync(lockFile, { force: true });
}

Jika project tidak memakai Jest, ganti npm test -- --runInBand dengan command test yang biasa dipakai. Script hanya mengirim 12000 karakter terakhir agar prompt tidak terlalu panjang.

Use case 4: menjadwalkan dengan cron atau Task Scheduler

Di Linux dan macOS, gunakan cron. Di Windows, gunakan Task Scheduler. schedule di GitHub Actions juga bisa, tetapi eksekusi lokal sering lebih cocok jika butuh database lokal, VPN, atau credential internal.

# Jalankan pukul 08:15 pada hari kerja
15 8 * * 1-5 cd /path/to/repo && /usr/bin/node scripts/claude-maintenance.mjs >> .claude-logs/cron.log 2>&1
# Daftarkan task harian di Windows
schtasks /Create /TN "ClaudeMaintenance" /SC DAILY /ST 08:15 /F /TR "powershell -NoProfile -ExecutionPolicy Bypass -Command \"cd C:\path\to\repo; node scripts\claude-maintenance.mjs\""

Otomatisasi terjadwal harus idempotent. Artinya, menjalankan task yang sama dua kali tidak boleh membuat PR, komentar, atau branch duplikat. Gunakan lock file, nama branch stabil, pengecekan PR yang sudah ada, dan log.

Use case 5: tulis titik approval manusia di prompt

Prompt pendek tidak selalu lebih aman. Prompt workflow yang baik menjelaskan apa yang boleh dilakukan, apa yang dilarang, dan apa yang perlu approval manusia.

claude -p "
Tujuan:
  Menerapkan feedback review pada PR #123.

Boleh:
  - Mengedit file implementasi dan test yang terkait.
  - Menjalankan npm test.
  - Merangkum log yang gagal.

Dilarang:
  - git push
  - gh pr merge
  - Menampilkan .env atau secret
  - Refactor yang tidak terkait

Perlu approval manusia:
  - Perubahan kompatibilitas response API
  - Migrasi database
  - Menghapus test yang sudah ada

Laporan akhir:
  - File yang berubah
  - Test yang dijalankan
  - Risiko yang tersisa
  - Langkah rollback
" --max-turns 6 --permission-mode acceptEdits

Untuk struktur review, lihat checklist review Claude Code dan workflow receipt verifikasi.

Failure mode yang perlu dirancang

Failure modeDampakPerbaikan praktis
Prompt terlalu panjangConstraint tertimbun dan run lebih lambatKirim file relevan dan akhir log saja
Credential hilangCI gagal pada ANTHROPIC_API_KEY atau GH_TOKENValidasi env var di awal
Tidak idempotentPR, komentar, atau branch duplikatNama stabil, lock, dan cek state
Tidak ada logTidak jelas agen mencoba apaSimpan .claude-logs atau GitHub artifacts
Retry naifError sementara menjadi write duplikatRetry read, lalu cek state sebelum write
Tidak ada rollbackCommit besar sulit di-revertPR kecil dan catatan rollback
Tanpa approval gateAgen mengambil keputusan produk atau rilisKompatibilitas, data, billing, penghapusan, dan merge harus manusia

Topik terkait: audit keamanan Claude Code, strategi testing Claude Code, dan otomatisasi alur Git.

CTA monetisasi dan AdSense

Konversi yang natural untuk topik ini adalah bantuan praktis. Developer solo bisa mulai dari cheatsheet Claude Code gratis. Tim yang butuh prompt khusus repository, review gate, kebijakan approval, dan training rollout bisa membuka halaman training dan konsultasi Claude Code. Untuk materi setup siap pakai, panduan setup Claude Code adalah shortcut berbayar.

Jangan menaruh iklan atau CTA di tengah urutan command. Untuk kualitas AdSense, artikel seperti ini perlu kode yang bisa dijalankan, failure mode konkret, link resmi, internal link, dan hasil uji langsung.

Kesimpulan

Otomatisasi workflow Claude Code menjadi andal saat titik berhentinya dirancang dulu. Mulai dari triage Issue dan review PR. Lanjutkan ke perubahan kecil. Setelah itu tambahkan maintenance terjadwal dan CI gate dengan approval manusia yang eksplisit.

Dari uji langsung Masa, manfaat terbesar bukan pembuatan PR otomatis penuh, melainkan log Issue yang berulang dan prompt review PR yang tetap. ANTHROPIC_API_KEY yang hilang, output test terlalu panjang, dan rerun pada branch yang sama masing-masing pernah membuat gagal; validasi env, pemotongan ekor log, dan nama branch deterministik membuat diagnosis berikutnya jauh lebih mudah.

#claude-code #otomatisasi-workflow #ci-cd #produktivitas
Gratis

PDF gratis: cheatsheet Claude Code

Masukkan email dan unduh satu halaman berisi command, kebiasaan review, dan workflow aman.

Kami menjaga datamu dan tidak mengirim spam.

Masa

Tentang penulis

Masa

Engineer yang berfokus pada workflow Claude Code praktis dan adopsi tim.