동작하는 코드
claude -p 플래그로 비대화형(headless) 모드를 사용해봅시다:
claude -p "이 프로젝트의 아키텍처를 분석해줘"
결과가 출력되고 프로세스가 종료됩니다. 대화형 세션을 열지 않으므로 스크립트에서 사용하기 좋습니다.
파이프로 입력을 전달할 수도 있습니다:
cat error.log | claude -p "이 에러 로그를 분석해줘"
JSON 형태로 출력받으려면:
claude -p --output-format json "package.json의 의존성을 분석해줘"
구조화된 JSON으로 결과를 받아서 다른 도구에서 파싱할 수 있습니다.
직접 수정하기
일일 자동화 스크립트를 만들어봅시다:
#!/bin/bash
# daily-check.sh — 매일 아침 실행하는 프로젝트 점검 스크립트
echo "=== 코드 품질 점검 ==="
claude -p "src/ 디렉토리에서 TODO, FIXME, HACK 주석을 모아서 우선순위를 매겨줘"
echo ""
echo "=== 보안 점검 ==="
claude -p "package.json의 의존성 중 보안 취약점이 있는지 확인해줘"
echo ""
echo "=== 테스트 상태 ==="
claude -p "npm test를 실행하고 실패하는 것이 있으면 원인을 분석해줘"
이 스크립트를 cron이나 CI에 등록하면 자동으로 매일 점검이 실행됩니다.
"왜?" — 대화형을 넘어 시스템으로
지금까지 Claude Code를 터미널에서 대화형으로 사용했습니다. Headless 모드는 Claude Code를 하나의 CLI 도구로 바꿉니다. grep, jq, curl처럼 파이프라인의 한 단계로 사용할 수 있습니다.
핵심 플래그
| 플래그 | 기능 |
| ----------------------------- | --------------------------------- |
| -p "프롬프트" | 비대화형 실행 (결과 출력 후 종료) |
| --output-format json | JSON 형식 출력 |
| --output-format stream-json | 스트리밍 JSON 출력 |
| --max-turns N | 최대 턴 수 제한 |
파이프라인 활용 패턴
# 에러 로그 분석
cat error.log | claude -p "이 에러의 근본 원인을 찾아줘"
# PR diff 리뷰
gh pr diff 42 | claude -p "이 변경 사항을 시니어 개발자로 리뷰해줘"
# 코드 변환
cat legacy.js | claude -p "이 코드를 TypeScript로 변환해줘" > modern.ts
# 릴리스 노트 생성
git log --oneline v1.0..HEAD | claude -p "이 커밋들로 릴리스 노트를 작성해줘"
Claude Code SDK
TypeScript/JavaScript에서 프로그래밍적으로 호출할 수 있습니다:
import { claude } from "@anthropic-ai/claude-code";
const result = await claude({
prompt: "이 파일의 보안 취약점을 분석해줘",
workingDirectory: "./my-project",
});
console.log(result.stdout);
SDK를 사용하면:
- 커스텀 자동화 도구를 만들 수 있습니다.
- CI/CD 파이프라인에 Claude Code를 통합할 수 있습니다.
- 모니터링 시스템에서 코드 분석을 자동화할 수 있습니다.
CI/CD 통합 예시
# .github/workflows/ai-review.yml
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Review PR
run: |
gh pr diff ${{ github.event.number }} | \
claude -p "이 PR을 리뷰해줘. 버그, 보안, 성능 관점에서." \
> review.md
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
- name: Post Review Comment
run: gh pr comment ${{ github.event.number }} --body-file review.md
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
심화 학습
비대화형 모드의 비용은 어떻게 되나요?
claude -p도 일반 세션과 동일하게 토큰을 소비합니다. CI/CD에서 매 PR마다 실행하면 비용이 누적될 수 있으므로:
- API 사용 시 반드시 예산 한도를 설정하세요.
- 단순 작업에는 Sonnet, 복잡한 분석에만 Opus를 사용하세요.
--max-turns로 실행 횟수를 제한하세요.
stdout과 stderr의 차이는?
claude -p의 출력:
- stdout: Claude의 최종 응답 (파이프로 전달 가능)
- stderr: 진행 상황, 도구 사용 로그 등 (터미널에 표시)
스크립트에서는 stdout만 캡처하면 깔끔한 결과를 얻습니다:
result=$(claude -p "분석해줘" 2>/dev/null)
claude -p로 프로젝트의 TODO 목록을 추출하는 명령어를 실행해보세요.git log | claude -p로 최근 커밋의 릴리스 노트를 자동 생성해보세요.- 일일 점검 스크립트를 만들어서 3가지 이상의 자동 검사를 실행해보세요.
Q1. Claude Code를 CI/CD 파이프라인에서 사용하려면 어떤 모드를 사용하나요?
- A) Plan 모드 (
Shift+Tab) - B) 대화형 모드 (
claude) - C) 비대화형 모드 (
claude -p) - D) Worktree 모드 (
claude -w)