# Claude Code 핵심 치트시트 (1장)

> UI·CLI는 버전에 따라 다를 수 있음. 최종 동작은 **공식 Claude Code 문서**를 확인하세요.

## 제품 구분 (혼동 방지)

- **본 워크북 / Starter** = **Claude Code** (`claude` CLI, `CLAUDE.md`, Plan Mode, MCP, Hooks, `claude -p`).
- **[anthropics/claude-cookbooks](https://github.com/anthropics/claude-cookbooks)** = 주로 **Claude API + Python/Jupyter** 레시피. **필수 실습 경로가 아님** — 개념 심화·숙제용.

## 자주 쓰는 명령·기능

| 동작 | 메모 |
|------|------|
| `/init` | 프로젝트 스캔 후 `CLAUDE.md` 초안 생성 |
| `/compact` | 컨텍스트 압축. 예: `/compact Keep: 인증 아키텍처 결정, 미해결 순환참조 스택트레이스` |
| Plan Mode | **계획 승인 후** 구현. IDE에서는 `Shift+Tab` 두 번(제품 기준) |
| MCP 추가 | 예: `claude mcp add github -- npx -y @modelcontextprotocol/server-github` |
| 헤드리스 | `claude -p "프롬프트"` — 파이프와 CI에 끼워 넣기 |

## `.claude/settings.json` — PreToolUse 훅 스켈레톤

필드 이름은 설치된 CLI/버전 문서에 맞게 조정하세요. 아래는 **예시 구조**입니다.

```json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "bash ${workspaceFolder}/scripts/protect-files.sh"
          }
        ]
      }
    ]
  }
}
```

- `protect-files.sh`가 대상 파일(예: `.env`)에 대한 편집을 감지하면 **exit code 2**로 차단하도록 구현합니다.

## `claude -p` 파이프 예시

```bash
cat sample-error.log | claude -p "이 로그의 원인을 한 줄로 요약해"
```

CI에서: 로그/테스트 출력을 파이프로 넘겨 짧은 요약·분류만 받아 **아티팩트**로 저장.

## 저비용 모델 (예시)

플래그 이름·모델 ID는 **현재 CLI 도움말** 기준. 예: 경량 모델 옵션이 있으면 실습 중 멀티 에이전트·긴 맥락 구간에만 제한 사용.

## `/compact` Keep 패턴

- `Keep: [아키텍처 결정 1문장] + [열려 있는 이슈] + [재현 커맨드]`
- 압축 후 **같은 세션에서** `현재 프로젝트 상태를 요약해`로 보존 여부 확인.
