# Referensi Cepat Claude Code

*Perintah CLI, workflow, MCP, hook, konfigurasi*

> Source: Anthropic Claude Code Documentation (docs.anthropic.com) · MIT

## Memulai

### Install & Mulai

```
npm install -g @anthropic-ai/claude-code
claude            # start interactive session
claude --version  # check version
claude update     # update to latest
```

### Autentikasi

```
claude login              # browser OAuth
export ANTHROPIC_API_KEY="sk-ant-..."
claude logout             # clear session
```

## Slash Command

### Perintah Sesi

| Command | Description |
|---------|-------------|
| `/help` | Tampilkan perintah yang tersedia |
| `/clear` | Hapus riwayat percakapan |
| `/compact` | Padatkan konteks untuk menghemat token |
| `/cost` | Tampilkan penggunaan token dan biaya |
| `/status` | Tampilkan info sesi dan model |
| `/new` | Mulai percakapan baru |
| `/config` | Buka atau lihat konfigurasi |
| `/doctor` | Diagnosa masalah konfigurasi |
| `/init` | Buat CLAUDE.md untuk proyek |
| `/login` | Autentikasi dengan Anthropic |
| `/logout` | Hapus autentikasi |

### Perintah Workflow

| Command | Description |
|---------|-------------|
| `/bug` | Laporkan bug |
| `/review` | Minta code review |
| `/pr` | Buat atau perbarui pull request |
| `/commit` | Commit perubahan yang di-stage dengan pesan |

## Shortcut Keyboard

| Command | Description |
|---------|-------------|
| `Ctrl+C` | Batalkan generasi saat ini |
| `Ctrl+D` | Keluar dari Claude Code (EOF) |
| `Escape` | Batalkan input / edit saat ini |
| `Tab` | Autocomplete path file dan perintah |
| `Up/Down` | Navigasi riwayat input |

## Flag CLI

### Flag Umum

| Command | Description |
|---------|-------------|
| `-p, --print` | Mode non-interaktif (headless) |
| `--model` | Atur model: `opus`, `sonnet`, `haiku` |
| `--output-format` | Output sebagai `text`, `json`, `stream-json` |
| `--allowedTools` | Batasi tool: `Edit,Read,Bash` |
| `--max-turns N` | Batasi jumlah giliran percakapan |
| `--debug` | Aktifkan debug logging |
| `-n, --name` | Beri nama sesi |

### Headless / Scripting

```
claude -p "explain this error" < log.txt
claude -p "list todos" --output-format json
echo "fix typos" | claude -p
```

## File Konfigurasi

### Hierarki CLAUDE.md

| Command | Description |
|---------|-------------|
| `./CLAUDE.md` | Instruksi level proyek (masuk repo) |
| `./.claude/settings.json` | Pengaturan proyek (izin, hook) |
| `~/.claude/CLAUDE.md` | Instruksi global user (semua proyek) |
| `~/.claude/settings.json` | Pengaturan global user |
| `~/.claude/projects/*/CLAUDE.md` | Instruksi user per proyek (tidak di repo) |

### Environment Variable

| Command | Description |
|---------|-------------|
| `ANTHROPIC_API_KEY` | API key untuk autentikasi langsung |
| `CLAUDE_MODEL` | Override model default |
| `CLAUDE_CONFIG_DIR` | Path direktori konfigurasi kustom |

## Izin

### settings.json

```
{
  "permissions": {
    "allow": ["Read", "Glob", "Grep"],
    "deny": ["Bash(rm *)"]
  }
}
```

### Mode Izin

| Command | Description |
|---------|-------------|
| `default` | Tanya sebelum tool berisiko |
| `--dangerously-skip-permissions` | Izinkan semua tool (hanya CI/script) |
| `--allowedTools` | Flag CLI untuk membatasi set tool |

## MCP Server

### Apa Itu MCP Server?

> Server Model Context Protocol memperluas Claude Code dengan tool kustom — database, API, layanan. Dikelola via CLI atau `.mcp.json`.

### Manajemen CLI

```
claude mcp add server-name -- cmd arg1 arg2
claude mcp list
claude mcp remove server-name
```

### Konfigurasi .mcp.json

```
{
  "mcpServers": {
    "my-db": {
      "command": "python",
      "args": ["-m", "mcp_server_db"],
      "env": { "DB_URL": "${DATABASE_URL}" }
    }
  }
}
```

### Scope

| Command | Description |
|---------|-------------|
| `.mcp.json` | MCP server level proyek |
| `~/.claude/mcp.json` | MCP server global user |
| `claude mcp add -s user` | Tambah ke scope user |
| `claude mcp add -s project` | Tambah ke scope proyek |

## Hook

### Event Hook

| Command | Description |
|---------|-------------|
| `PreToolUse` | Berjalan sebelum tool dieksekusi |
| `PostToolUse` | Berjalan setelah tool selesai |
| `Notification` | Berjalan saat Claude mengirim notifikasi |
| `Stop` | Berjalan saat Claude selesai merespons |

### Contoh settings.json

```
{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "check-command.sh $INPUT"
      }]
    }]
  }
}
```

### Perilaku Hook

| Command | Description |
|---------|-------------|
| `exit 0` | Izinkan tool berjalan |
| `exit 2` | Blokir tool dari berjalan |
| `stdout` | Feedback JSON ke Claude |

## SDK & Otomasi

### Scripting Headless

```
# Single prompt, get JSON output
claude -p "summarize main.py" \
  --output-format json

# Pipe input
git diff | claude -p "review this diff"
```

### CI / GitHub Actions

```
- uses: anthropics/claude-code-action@v1
  with:
    claude_args: >
      --max-turns 5
      --model claude-sonnet-4-6
```

### Tips

> Gunakan `--max-turns` untuk membatasi biaya dalam otomasi. Gunakan `--output-format json` untuk parsing hasil secara programatik. Kombinasikan dengan `--allowedTools` untuk keamanan.

## Model

### Pemilihan Model

```
claude --model opus     # most capable
claude --model sonnet   # balanced (default)
claude --model haiku    # fastest, cheapest
```

### Shortcut Model

| Command | Description |
|---------|-------------|
| `opus` | Claude Opus — kapabilitas tertinggi |
| `sonnet` | Claude Sonnet — default, seimbang |
| `haiku` | Claude Haiku — cepat dan ekonomis |
| `--model full-name` | mis. `claude-sonnet-4-6` |

## Praktik Terbaik

### Menulis CLAUDE.md

> Masukkan konvensi proyek, tech stack, perintah build, dan instruksi tes ke CLAUDE.md. Buat singkat — Claude membacanya setiap sesi. Gunakan `/init` untuk scaffold.

### Manajemen Biaya

| Command | Description |
|---------|-------------|
| `/cost` | Cek penggunaan token yang berjalan |
| `/compact` | Kompres konteks saat membesar |
| `--max-turns` | Batasi giliran dalam otomasi |
| `sonnet / haiku` | Gunakan model lebih murah untuk tugas sederhana |

### Prompting Efektif

| Command | Description |
|---------|-------------|
| `Spesifik` | "Fix the null check in auth.ts:42" > "fix bug" |
| `Beri konteks` | Referensikan file, fungsi, pesan error |
| `Gunakan @file` | Referensikan file langsung: `@src/main.ts` |
| `Gunakan gambar` | Drag & drop screenshot untuk konteks visual |
| `Iterasi` | Tindak lanjuti untuk penyempurnaan; gunakan `/clear` untuk reset |
