System prompts mendefinisikan perilaku, kemampuan, dan gaya respons Claude. Claude Agent SDK menyediakan tiga cara untuk menyesuaikan system prompts: menggunakan output styles (konfigurasi persisten berbasis file), menambahkan ke prompt Claude Code, atau menggunakan prompt yang sepenuhnya kustom.

Memahami system prompts

System prompt adalah set instruksi awal yang membentuk bagaimana Claude berperilaku sepanjang percakapan.
Perilaku default: Agent SDK menggunakan system prompt kosong secara default untuk fleksibilitas maksimum. Untuk menggunakan system prompt Claude Code (instruksi tool, panduan kode, dll.), tentukan systemPrompt: { preset: "claude_code" } di TypeScript atau system_prompt="claude_code" di Python.
System prompt Claude Code mencakup:
  • Instruksi penggunaan tool dan tool yang tersedia
  • Panduan gaya dan format kode
  • Pengaturan nada respons dan verbositas
  • Instruksi keamanan dan keselamatan
  • Konteks tentang direktori kerja saat ini dan lingkungan

Metode modifikasi

Metode 1: Output styles (konfigurasi persisten)

Output styles adalah konfigurasi tersimpan yang memodifikasi system prompt Claude. Mereka disimpan sebagai file markdown dan dapat digunakan kembali di seluruh sesi dan proyek.

Membuat output style

import { writeFile, mkdir } from 'fs/promises'
import { join } from 'path'
import { homedir } from 'os'

async function createOutputStyle(name: string, description: string, prompt: string) {
  // Level pengguna: ~/.claude/output-styles
  // Level proyek: .claude/output-styles
  const outputStylesDir = join(homedir(), '.claude', 'output-styles')
  
  await mkdir(outputStylesDir, { recursive: true })
  
  const content = `---
name: ${name}
description: ${description}
---

${prompt}`
  
  const filePath = join(outputStylesDir, `${name.toLowerCase().replace(/\s+/g, '-')}.md`)
  await writeFile(filePath, content, 'utf-8')
}

// Contoh: Membuat spesialis code review
await createOutputStyle(
  'Code Reviewer',
  'Asisten code review menyeluruh',
  `Anda adalah seorang ahli code reviewer.

Untuk setiap submission kode:
1. Periksa bug dan masalah keamanan
2. Evaluasi performa
3. Sarankan perbaikan
4. Beri rating kualitas kode (1-10)`
)

Menggunakan output styles

Setelah dibuat, aktifkan output styles melalui:
  • CLI: /output-style [style-name]
  • Settings: .claude/settings.local.json
  • Buat baru: /output-style:new [description]

Metode 2: Menggunakan systemPrompt dengan append

Anda dapat menggunakan preset Claude Code dengan properti append untuk menambahkan instruksi kustom Anda sambil mempertahankan semua fungsionalitas bawaan.
import { query } from "@anthropic-ai/claude-agent-sdk"

const messages = []

for await (const message of query({
  prompt: "Bantu saya menulis fungsi Python untuk menghitung bilangan fibonacci",
  options: {
    systemPrompt: {
      type: "preset",
      preset: "claude_code",
      append: "Selalu sertakan docstring detail dan type hints dalam kode Python."
    }
  }
})) {
  messages.push(message)
  if (message.type === 'assistant') {
    console.log(message.message.content)
  }
}

Metode 3: Custom system prompts

Anda dapat menyediakan string kustom sebagai systemPrompt untuk mengganti default sepenuhnya dengan instruksi Anda sendiri.
import { query } from "@anthropic-ai/claude-agent-sdk"

const customPrompt = `Anda adalah spesialis coding Python.
Ikuti panduan berikut:
- Tulis kode yang bersih dan terdokumentasi dengan baik
- Gunakan type hints untuk semua fungsi
- Sertakan docstring yang komprehensif
- Lebih suka pola functional programming bila sesuai
- Selalu jelaskan pilihan kode Anda`

const messages = []

for await (const message of query({
  prompt: "Buat pipeline pemrosesan data",
  options: {
    systemPrompt: customPrompt
  }
})) {
  messages.push(message)
  if (message.type === 'assistant') {
    console.log(message.message.content)
  }
}

Perbandingan ketiga pendekatan

FiturOutput StylessystemPrompt dengan appendCustom systemPrompt
Persistensi✅ Disimpan sebagai file❌ Hanya sesi❌ Hanya sesi
Reusabilitas✅ Lintas proyek❌ Duplikasi kode❌ Duplikasi kode
Manajemen✅ CLI + file⚠️ Dalam kode⚠️ Dalam kode
Tool default✅ Dipertahankan✅ Dipertahankan❌ Hilang (kecuali disertakan)
Keamanan bawaan✅ Dipelihara✅ Dipelihara❌ Harus ditambahkan
Konteks lingkungan✅ Otomatis✅ Otomatis❌ Harus disediakan
Level kustomisasi⚠️ Ganti default⚠️ Hanya penambahan✅ Kontrol penuh
Version control✅ Ya✅ Dengan kode✅ Dengan kode
Discovery/output-style❌ Tidak dapat ditemukan❌ Tidak dapat ditemukan
Catatan: “Dengan append” berarti menggunakan systemPrompt: { type: "preset", preset: "claude_code", append: "..." } di TypeScript atau system_prompt={"type": "preset", "preset": "claude_code", "append": "..."} di Python.

Kasus penggunaan dan praktik terbaik

Kapan menggunakan output styles

Terbaik untuk:
  • Perubahan perilaku persisten di seluruh sesi
  • Konfigurasi yang dibagikan tim
  • Asisten khusus (code reviewer, data scientist, DevOps)
  • Modifikasi prompt kompleks yang memerlukan versioning
Contoh:
  • Membuat asisten optimisasi SQL khusus
  • Membangun code reviewer yang berfokus pada keamanan
  • Mengembangkan asisten pengajar dengan pedagogi spesifik

Kapan menggunakan systemPrompt dengan append

Terbaik untuk:
  • Menambahkan standar atau preferensi coding spesifik
  • Menyesuaikan format output
  • Menambahkan pengetahuan domain-spesifik
  • Memodifikasi verbositas respons
  • Meningkatkan perilaku default Claude Code tanpa kehilangan instruksi tool

Kapan menggunakan custom systemPrompt

Terbaik untuk:
  • Kontrol penuh atas perilaku Claude
  • Tugas khusus sesi tunggal
  • Menguji strategi prompt baru
  • Situasi di mana tool default tidak diperlukan
  • Membangun agen khusus dengan perilaku unik

Menggabungkan pendekatan

Anda dapat menggabungkan metode ini untuk fleksibilitas maksimum:

Contoh: Output style dengan penambahan spesifik sesi

import { query } from "@anthropic-ai/claude-agent-sdk"

// Asumsikan output style "Code Reviewer" aktif (melalui /output-style)
// Tambahkan area fokus spesifik sesi
const messages = []

for await (const message of query({
  prompt: "Review modul autentikasi ini",
  options: {
    systemPrompt: {
      type: "preset",
      preset: "claude_code",
      append: `
        Untuk review ini, prioritaskan:
        - Kepatuhan OAuth 2.0
        - Keamanan penyimpanan token
        - Manajemen sesi
      `
    }
  }
})) {
  messages.push(message)
}

Lihat juga