# Claude Code Tham Khảo Nhanh

*Lệnh CLI, workflow, MCP, hook, cấu hình*

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

## Bắt Đầu

### Cài Đặt & Khởi Chạy

```
npm install -g @anthropic-ai/claude-code
claude            # bắt đầu phiên tương tác
claude --version  # kiểm tra phiên bản
claude update     # cập nhật lên mới nhất
```

### Xác Thực

```
claude login              # xác thực qua trình duyệt OAuth
export ANTHROPIC_API_KEY="sk-ant-..."
claude logout             # xóa phiên đăng nhập
```

## Slash Commands

### Lệnh Phiên Làm Việc

| Command | Description |
|---------|-------------|
| `/help` | Hiển thị các lệnh có sẵn |
| `/clear` | Xóa lịch sử hội thoại |
| `/compact` | Nén ngữ cảnh để tiết kiệm token |
| `/cost` | Xem mức sử dụng token và chi phí |
| `/status` | Xem thông tin phiên và model |
| `/new` | Bắt đầu hội thoại mới |
| `/config` | Mở hoặc xem cấu hình |
| `/doctor` | Chẩn đoán sự cố cấu hình |
| `/init` | Tạo CLAUDE.md cho dự án |
| `/login` | Xác thực với Anthropic |
| `/logout` | Xóa xác thực |

### Lệnh Workflow

| Command | Description |
|---------|-------------|
| `/bug` | Báo cáo lỗi |
| `/review` | Yêu cầu code review |
| `/pr` | Tạo hoặc cập nhật pull request |
| `/commit` | Commit các thay đổi đã staged kèm message |

## Phím Tắt

| Command | Description |
|---------|-------------|
| `Ctrl+C` | Hủy generation hiện tại |
| `Ctrl+D` | Thoát Claude Code (EOF) |
| `Escape` | Hủy input/chỉnh sửa hiện tại |
| `Tab` | Tự động hoàn thành đường dẫn và lệnh |
| `Up/Down` | Điều hướng lịch sử input |

## CLI Flags

### Flag Thường Dùng

| Command | Description |
|---------|-------------|
| `-p, --print` | Chế độ không tương tác (headless) |
| `--model` | Đặt model: `opus`, `sonnet`, `haiku` |
| `--output-format` | Đầu ra dạng `text`, `json`, `stream-json` |
| `--allowedTools` | Giới hạn tool: `Edit,Read,Bash` |
| `--max-turns N` | Giới hạn số lượt hội thoại |
| `--debug` | Bật debug logging |
| `-n, --name` | Đặt tên phiên làm việc |

### Headless / Scripting

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

## File Cấu Hình

### Phân Cấp CLAUDE.md

| Command | Description |
|---------|-------------|
| `./CLAUDE.md` | Hướng dẫn cấp dự án (được commit vào repo) |
| `./.claude/settings.json` | Cài đặt dự án (quyền, hook) |
| `~/.claude/CLAUDE.md` | Hướng dẫn toàn cục người dùng (tất cả dự án) |
| `~/.claude/settings.json` | Cài đặt toàn cục người dùng |
| `~/.claude/projects/*/CLAUDE.md` | Hướng dẫn người dùng theo dự án (không trong repo) |

### Biến Môi Trường

| Command | Description |
|---------|-------------|
| `ANTHROPIC_API_KEY` | API key để xác thực trực tiếp |
| `CLAUDE_MODEL` | Ghi đè model mặc định |
| `CLAUDE_CONFIG_DIR` | Đường dẫn thư mục cấu hình tùy chỉnh |

## Quyền

### settings.json

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

### Chế Độ Quyền

| Command | Description |
|---------|-------------|
| `default` | Hỏi trước khi dùng tool rủi ro |
| `--dangerously-skip-permissions` | Cho phép tất cả tool (chỉ dùng CI/script) |
| `--allowedTools` | Flag CLI để giới hạn bộ tool |

## MCP Servers

### MCP Server Là Gì?

> Model Context Protocol server mở rộng Claude Code với tool tùy chỉnh — database, API, dịch vụ. Quản lý qua CLI hoặc `.mcp.json`.

### Quản Lý CLI

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

### Cấu Hình .mcp.json

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

### Phạm Vi

| Command | Description |
|---------|-------------|
| `.mcp.json` | MCP server cấp dự án |
| `~/.claude/mcp.json` | MCP server toàn cục người dùng |
| `claude mcp add -s user` | Thêm vào phạm vi người dùng |
| `claude mcp add -s project` | Thêm vào phạm vi dự án |

## Hooks

### Sự Kiện Hook

| Command | Description |
|---------|-------------|
| `PreToolUse` | Chạy trước khi tool được thực thi |
| `PostToolUse` | Chạy sau khi tool hoàn thành |
| `Notification` | Chạy khi Claude gửi thông báo |
| `Stop` | Chạy khi Claude hoàn thành response |

### Ví Dụ settings.json

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

### Hành Vi Hook

| Command | Description |
|---------|-------------|
| `exit 0` | Cho phép tool tiếp tục |
| `exit 2` | Chặn tool không cho chạy |
| `stdout` | JSON phản hồi cho Claude |

## SDK & Tự Động Hóa

### Scripting Headless

```
# Prompt đơn, nhận đầu ra JSON
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
```

### Mẹo

> Dùng `--max-turns` để giới hạn chi phí trong automation. Dùng `--output-format json` để phân tích kết quả theo chương trình. Kết hợp với `--allowedTools` để đảm bảo an toàn.

## Models

### Chọn Model

```
claude --model opus     # mạnh nhất
claude --model sonnet   # cân bằng (mặc định)
claude --model haiku    # nhanh nhất, rẻ nhất
```

### Phím Tắt Model

| Command | Description |
|---------|-------------|
| `opus` | Claude Opus — khả năng cao nhất |
| `sonnet` | Claude Sonnet — mặc định, cân bằng |
| `haiku` | Claude Haiku — nhanh và tiết kiệm |
| `--model full-name` | vd: `claude-sonnet-4-6` |

## Best Practices

### Viết CLAUDE.md

> Đặt quy ước dự án, tech stack, lệnh build, và hướng dẫn test vào CLAUDE.md. Giữ ngắn gọn — Claude đọc mỗi phiên. Dùng `/init` để tạo khung.

### Quản Lý Chi Phí

| Command | Description |
|---------|-------------|
| `/cost` | Kiểm tra mức sử dụng token đang chạy |
| `/compact` | Nén ngữ cảnh khi quá lớn |
| `--max-turns` | Giới hạn lượt trong automation |
| `sonnet / haiku` | Dùng model rẻ hơn cho tác vụ đơn giản |

### Đặt Prompt Hiệu Quả

| Command | Description |
|---------|-------------|
| `Cụ thể` | "Fix the null check in auth.ts:42" > "fix bug" |
| `Cung cấp ngữ cảnh` | Tham chiếu file, hàm, thông báo lỗi |
| `Dùng @file` | Tham chiếu file trực tiếp: `@src/main.ts` |
| `Dùng ảnh` | Kéo thả screenshot để cung cấp ngữ cảnh |
| `Lặp lại` | Tiếp tục để tinh chỉnh; dùng `/clear` để reset |
