ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 15일에 19번 업데이트? Claude Code 1월 업데이트 정리
    개발하면서/타인글보면서 2026. 1. 25. 15:42
    반응형

    업무에서 Claude Code를 설계와 검증에 더 시간을 쏟고 구현은 거의 안 하는 느낌으로 사용하고 있다.

     

    사용하다 보면 Claude Code에 좋다고 하는 추가 skill이나 에이전트 소개가 많이 나오는데 크게 관심이 없다.

    왜냐하면 정말 좋다고 하면 엔트로픽에서 Claude Code에 조만간 반영하겠지.. 생각이 크다.

     

    이번에 TODO -> TASK를 바꾼것도 비슷한 맥락이다.

     

    Claude Code에 대한 내 생각을 적어봤는데 이번글에서는 그래서 올해 Claude Code에 어떤 수정이 있었는지 정리해 봤다.

     

     

     


    작년 12월에 회사에서 발표한 slash command(skill로 합쳐짐)와 단축키 슬라이드다.

    없어진 명령어와 기능도 있으니 참고해서 테스트하고 본인에게 맞는 걸 쓰면 된다.

     

     


    RELEASE NOTE

    정리해 달라고 먼저 요청하고 수정했다.

     

     

    버전 날짜 핵심변경사항
    v2.1.0 1월 9일 메이저 업데이트!! Skill 핫리로드, language 설정
    v2.1.2 1월 9일 winget 지원
    v2.1.3 1월 9일 slash command와 skill 통합
    v2.1.4 1월 10일 백그라운드 작업 비활성화 옵션
    v2.1.5 1월 12일 임시 디렉토리 커스터마이징
    v2.1.6 1월 13일 /config 검색, /stats 필터링
    v2.1.7 1월 14일 커스텀 키바인딩, MCP 자동모드
    v2.1.9 1월 16일 plansDirectory, 외부 에디터지원
    v2.1.10 1월 17일 Setup 훅 이벤트
    v2.1.11 1월 17일 MCP 연결 최적화
    v2.1.12 1월 17일 렌더링 버그 수정
    v2.1.14 1월 20일 Bash 히스토리 자동완성, 플러그인 검색
    v2.1.15 1월 21일 React Compiler 성능 개선
    v2.1.16 1월 22일 Task Management 시스템
    v2.1.17 1월 22일 AVX 호환성 수정
    v2.1.18 1월 23일 고급 키바인딩 시스템
    v2.1.19 1월 23일 VSCode 세션 포크, Custom command 인자 문법

     

     

    핵심기능 Top 7

    1. Skill 시스템 기능 강화 (v2.1.0, v2.1.19)

    자동 스킬: ~/.claude/skills 폴더 파일 수정 시 세션 재시작 없이 즉시 반영

    `context: fork`: 스킬을 fork된 subagent 컨텍스트에서 실행

    slash command 통합: `/스킬명` 으로 스킬 직접 호출 가능

    Hook 지원: 스킬 frontmatter에서 PreToolUse, PostToolUse, Stop Hook 정의

    승인 없이 사용 가능: 추가 권한이나 훅이 없는 스킬은 승인 절차 없이 바로 실행 가능 (v2.1.19)

     

    실전활용 예시 1

    ```yaml
    # ~/.claude/skills/test-runner.md
    ---
    name: test-runner
    description: 테스트를 실행하고 결과를 분석합니다
    context: fork
    allowed-tools:
      - Bash(npm test *)
      - Bash(jest *)
      - Read
    hooks:
      PreToolUse:
        - command: echo "🧪 테스트 시작: $(date)"
      PostToolUse:
        - command: |
            if [ $TOOL_EXIT_CODE -ne 0 ]; then
              echo "❌ 테스트 실패 - 로그 확인 필요"
            fi
    ---
    
    
    # 테스트 러너
    
    이 스킬은 프로젝트의 테스트를 실행하고 결과를 분석합니다.
    
    ## 수행 작업
    1. package.json에서 테스트 스크립트 확인
    2. 테스트 실행
    3. 실패한 테스트 분석 및 해결책 제안
    ``
    
    
    # 사용 방법
    ```bash
    # Claude Code에서
    /test-runner
    ```

     

     

    실전활용 예시 2

    포크 한 subagent에서 skill 실행

    ```yaml
    # ~/.claude/skills/code-review.md
    ---
    name: code-review
    description: Git 변경사항을 분석하고 코드 리뷰를 수행합니다
    context: fork
    allowed-tools:
      - Bash(git diff *)
      - Bash(git log *)
      - Read
      - Grep
    ---
    
    # 코드 리뷰어
    
    현재 브랜치의 변경사항을 분석하여 코드 리뷰를 수행합니다.
    
    ## 검토 항목
    - 코드 스타일 일관성
    - 잠재적 버그
    - 성능 이슈
    - 보안 취약점
    - 테스트 커버리지
    ```

     

     

    2. Task Management 시스템 (v2.1.16, v2.1.19)

    복잡한 멀티스텝 프로젝트를 관리할 수 있는 작업관리시스템이 도입됐다.

     

    # Claude Code에서

    print a list that usable tools. 

     

    새로운 Task Management가 맞지 않는다면 환경변수 추가로 비활성화할 수 있다.

    ```bash

    export CLAUDE_CODE_ENABLE_TASKS=false

    ```

     

    실전활용 예시

    "JWT 인증으로 마이그레이션 할 건데, 단계별로 작업 목록을 만들고 의존성을 설정해서 순서대로 진행해 줘"

     

     

    3. 고급 키바인딩 시스템 (v2.1.18)

    https://code.claude.com/docs/en/keybindings

    ```json
    // ~/.claude/settings.json
    {
      "keyBindings": {
        // 기본 키바인딩
        "submit": "ctrl+enter",
        "escape": "ctrl+c",
    
        // 컨텍스트별 설정
        "vim.normal": {
          "gg": "scrollToTop",
          "G": "scrollToBottom"
        },
        "vim.insert": {
          "ctrl+[": "exitInsertMode"
        }
      }
    }
    ```

     

     

    4. 커스텀 명령어 인자 문법 개선 (v2.1.19)

    short hand syntax: `$0`, `$1`, `$2`

    ```yaml
    # ~/.claude/commands/deploy.md
    ---
    name: deploy
    description: 특정 환경에 배포합니다
    ---
    
    # 배포 명령어
    
    환경: $0
    브랜치: $1
    
    ## 실행
    $0 환경으로 $1 브랜치를 배포합니다.
    ```
    
    
    **사용 방법:**
    ```bash
    /deploy production main
    # → $0 = "production", $1 = "main"
    ```

     

     

    5. MCP 자동 모드 (v2.1.7, v2.1.9)

    MCP의 도구 설명이 전체 컨텍스트 사용량이 임계값을 초과하면

    MCP 연결을 자동으로 지연시켜 컨텍스트를 최적화한다.

    ```json
    // ~/.claude/settings.json
    {
      "mcpServers": {
        "my-server": {
          "command": "node",
          "args": ["./server.js"],
          "mode": "auto:30"  // 30% 컨텍스트 초과 시 지연
        }
      }
    }
    ```
    
    | 모드 | 설명 |
    |------|------|
    | `"mode": "auto"` | 기본값 (10% 초과 시 지연) |
    | `"mode": "auto:30"` | 30% 초과 시 지연 |
    | `"mode": "auto:0"` | 항상 지연 (필요할 때만 연결) |
    | `"mode": "enabled"` | 항상 연결 |

     

    실전활용 예시

    {
      "mcpServers": {
        // 자주 사용하는 서버: 항상 연결
        "database": {
          "command": "mcp-postgres",
          "mode": "enabled"
        },
        // 가끔 사용하는 서버: 컨텍스트 절약
        "analytics": {
          "command": "mcp-analytics",
          "mode": "auto:50"
        }
      }
    }

     

    6. Bash 히스토리 자동완성 (v2.1.14)

    1. `!` 모드로 진입

    2. 이전에 실행했던 명령어 일부 입력

    3. Tab 키를 눌러 히스토리에서 자동완성

     

    ```bash

    # 예시: 이전에 "npm run build:production" 실행했다면

    !npm run bu[Tab]

    # -> npm run build:production 자동완성

    ```

     

     

    개발자 경험 향상

    설정 옵션 완벽 가이드

    {
      // 응답 언어 설정 (v2.1.0)
      "language": "korean",
    
      // 계획 파일 저장 위치 (v2.1.9)
      "plansDirectory": "~/Documents/claude-plans",
    
      // 턴 시간 표시 숨기기 (v2.1.7)
      "showTurnDuration": false,
    
      // @-멘션 파일 선택기에서 .gitignore 적용 (v2.1.0)
      "respectGitignore": true,
    
      // 커스텀 키바인딩 (v2.1.7, v2.1.18 확장)
      "keyBindings": {
        "submit": "ctrl+enter",
        "escape": "ctrl+c"
      }
    }

     

     

    환경변수

    ```bash
    # ~/.zshrc 또는 ~/.bashrc에 추가
    
    # 임시 디렉토리 커스터마이징 (v2.1.5)
    export CLAUDE_CODE_TMPDIR="/tmp/claude-workspace"
    
    # 백그라운드 작업 비활성화 (v2.1.4)
    export CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=true
    
    # 스트리밍/데모용 이메일/조직 숨기기 (v2.1.0)
    export IS_DEMO=true
    
    # 🆕 Task Management 비활성화 (v2.1.19)
    export CLAUDE_CODE_ENABLE_TASKS=false
    ```

     

     

    Hook 시스템 확장

    새로운 Hook 이벤트: Setup (v2.1.10)

    `--init`, `--init-only`, `--maintenance` 플래그로 실행될 때 트리거된다.

    // settings.json
    {
      "hooks": {
        "Setup": [
          {
            "command": "echo '초기화 시작: $(date)' >> ~/.claude/init.log"
          },
          {
            "command": "./scripts/check-env.sh",
            "timeout": 5000
          }
        ]
      }
    }

     

    일회성 Hook

    `once: true`

    {
      "hooks": {
        "PreToolUse": [
          {
            "command": "echo '첫 도구 사용!'",
            "once": true  // 세션당 한 번만 실행
          }
        ]
      }
    }

     

    PreToolUse의 additionalContext 반환

    #!/bin/bash
    # ~/.claude/hooks/context-provider.sh
    
    # JSON 형태로 additionalContext 반환
    echo '{"additionalContext": "현재 프로젝트는 TypeScript 5.0을 사용합니다."}'

     

    TIP

    1. 효율적인 Skill 구조

    ~/.claude/skills/
    ├── daily/
    │   ├── standup.md       # 일일 스탠드업 정리
    │   └── review.md        # 코드 리뷰
    ├── project/
    │   ├── deploy.md        # 배포 자동화
    │   └── db-migrate.md    # DB 마이그레이션
    └── personal/
        ├── blog-helper.md   # 블로그 작성 도우미
        └── learning.md      # 학습 노트 정리

     

     

    2. MCP 서버 최적화 설정

    {
      "mcpServers": {
        // 핵심 서버: 항상 연결
        "filesystem": {
          "command": "mcp-filesystem",
          "mode": "enabled"
        },
        // 보조 서버: 필요할 때만
        "github": {
          "command": "mcp-github",
          "mode": "auto:20"
        },
        // 무거운 서버: 명시적 요청 시만
        "kubernetes": {
          "command": "mcp-k8s",
          "mode": "auto:0"
        }
      }
    }

     

     

    3. 커스텀 키바인딩 설정

    {
      "keyBindings": {
        "submit": "ctrl+enter",      // 전송
        "escape": "ctrl+c",          // 취소
        "interrupt": "ctrl+d"        // 중단
      }
    }

     

     

     

    마지막으로 프로젝트 경로 설정하는 환경변수도 찾아봤다.

     

    주요 환경변수 목록

    변수명 설명 사용 가능 위치
    CLAUDE_PROJECT_DIR 프로젝트 루트 절대 경로 Hooks, MCP Server
    CLAUDE_ENV_FILE 환경변수 영속화용 파일 경로 SessionStart, Setup Hook만
    CLAUDE_PLUGIN_ROOT 플러그인 디렉토리 경로 Plugin hooks
    CLAUDE_CODE_REMOTE 원격 실행 여부 ("true" or 빈값) 모든 곳

     

    활용 예시

    Hook에서 사용                                                                                                                                                                                                                                                                                                                                                   

    {

      "hooks": {

        "PreToolUse": [

          {

            "matcher": "Bash",

            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/validate.sh"

          }

        ]

      }

    }

     

    plandDirectory 설정에 활용

    아쉽게도 settings.json에서는 환경변수 치환이 지원되지 않는다.

     

    // ❌ 이렇게는 안 됨

    {

        "plansDirectory": "$CLAUDE_PROJECT_DIR/claudeworkspace"

    }                                                                                                                                                                                                                                                                                                                                                                         

    // ✅ 상대 경로로 사용

    {

        "plansDirectory": "./claudeworkspace"

    }

     

    SessionStart Hook에서 환경변수 설정

    #!/bin/bash
    # .claude/hooks/session-start.sh
    
    # 다른 명령어에서 사용할 변수 영속화
    echo "export MY_WORKSPACE=$CLAUDE_PROJECT_DIR" >> "$CLAUDE_ENV_FILE"
    echo "export MY_PLANS_DIR=$CLAUDE_PROJECT_DIR/claudeworkspace" >> "$CLAUDE_ENV_FILE"
    
    ---
    Hook 입력으로 받는 정보 (stdin JSON)
    
    {
      "session_id": "abc123",
      "cwd": "/current/working/directory",
      "transcript_path": "/path/to/conversation.json",
      "permission_mode": "default"
    }

                                                                                                                                                                                                                                                                                                                                                                              

                                                                                                                                                                                                                                                                                                                                                                    

      ★ Insight ─────────────────────────────────────                                                                                                                                                                                                                                                                                                                         

      - CLAUDE_PROJECT_DIR vs cwd: CLAUDE_PROJECT_DIR는 Claude Code를 시작한 프로젝트 루트이고, cwd는 현재 작업 디렉토리입니다. cd 명령으로 이동해도 CLAUDE_PROJECT_DIR는 변하지 않습니다.

      - settings.json 제한: 설정 파일에서는 환경변수 치환이 안 되므로,./claudeworkspace처럼 상대 경로를 사용하면 프로젝트 루트 기준으로 자동 해석됩니다.

      - CLAUDE_ENV_FILE: SessionStart 훅에서만 사용 가능하며, 여기에 export VAR=value를 추가하면 이후 Bash 명령어에서 해당 변수를 사용할 수 있습니다.

      ─────────────────────────────────────────────────                                                                                            

     

    📚 참고 자료

    - Claude Code GitHub Releases

    - 공식 CHANGELOG

    - 키바인딩 문서

    - ClaudeLog Changelog

    - Releasebot Updates

     

    반응형

    댓글

Designed by Tistory.