Cursor와 같은 도구는 IDE에 잘 연결되어 있어서 세세한 기능이 Claude Code 보다 좋다 느낄 때가 있다. 그 중 한가지는 시간이 오래 걸리는 작업을 하고 있을 때 완료되면 작업이 완료되었다고 알려주는 기능이다.

Claude Code의 새로운 hooks 기능이 개발자들 사이에서 화제가 되고 있는데, 이 기능을 사용하면 작업 세션이 완료될 때마다 자동으로 알림을 받을 수 있어, 다른 작업을 하면서도 Claude의 작업 진행 상황을 놓치지 않을 수 있다.

Claude Code Hooks란?

Claude Code hooks는 Claude의 작업 생명주기에서 특정 시점에 사용자 정의 스크립트를 실행할 수 있게 해주는 기능입니다. 다음과 같은 시점에서 작동합니다:

  • UserPromptSubmit: 사용자가 프롬프트를 제출하기 직전
  • PreToolUse: Claude가 도구를 사용하기 직전
  • PostToolUse: Claude가 도구 사용을 완료한 직후
  • Notification: 사용자에게 알림이 필요한 시점
  • Stop: 세션이 완료된 시점

이 중에서 Stop 이벤트를 활용하면 작업 완료 시 자동으로 알림을 받을 수 있습니다.

Windows 데스크톱 알림 구현하기

1단계: PowerShell 알림 스크립트 생성

먼저 Windows 토스트 알림을 생성하는 PowerShell 스크립트를 만들어보자.

파일 위치: C:\Users\[사용자명]\bin\auto-notification.ps1

# Auto-disappearing notification
param(
    [string]$Title = "Claude Code",
    [string]$Message = "Task completed",
    [int]$Duration = 2
)

Add-Type -AssemblyName System.Windows.Forms

# Create a form that will auto-close
$form = New-Object System.Windows.Forms.Form
$form.Text = $Title
$form.Size = New-Object System.Drawing.Size(400, 150)
$form.StartPosition = "CenterScreen"
$form.FormBorderStyle = "FixedDialog"
$form.MaximizeBox = $false
$form.MinimizeBox = $false
$form.TopMost = $true
$form.BackColor = [System.Drawing.Color]::LightBlue

# Add label for message
$label = New-Object System.Windows.Forms.Label
$label.Text = $Message
$label.Size = New-Object System.Drawing.Size(380, 80)
$label.Location = New-Object System.Drawing.Point(10, 30)
$label.TextAlign = "MiddleCenter"
$label.Font = New-Object System.Drawing.Font("Arial", 10)
$form.Controls.Add($label)

# Timer to auto-close
$timer = New-Object System.Windows.Forms.Timer
$timer.Interval = $Duration * 1000
$timer.Add_Tick({
    $form.Close()
    $timer.Stop()
})

# Show form and start timer
$timer.Start()
$form.ShowDialog() | Out-Null

Write-Host "Notification displayed for $Duration seconds"

2단계: Claude Code 설정 파일 생성

Claude Code가 알림 스크립트를 실행하도록 설정한한다.

파일 위치: C:\Users\[사용자명]\.claude\settings.json

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "powershell -ExecutionPolicy Bypass -File \"C:\\Users\\[사용자명]\\bin\\auto-notification.ps1\" -Title \"✅ Claude 작업 완료\" -Message \"AI 코딩 세션이 완료되었습니다!\" -Sound \"Notification.SMS\""
          }
        ]
      }
    ]
  }
}

3단계: PowerShell 실행 정책 설정

보안을 위해 PowerShell 스크립트 실행 정책을 설정해야 한다. VS Code와 Claude Code를 연동하고 있다면 이 동작을 미리 했을 수 있다. 관리자 권한으로 PowerShell을 열고 다음 명령어를 실행하자:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

4단계: 디렉토리 생성 및 파일 설정

필요한 디렉토리를 생성하고 파일을 배치한다:

mkdir C:\Users\[사용자명]\bin
mkdir C:\Users\[사용자명]\.claude

중요: [사용자명] 부분을 실제 Windows 사용자명으로 교체해야 한다.

실제 사용 경험

이 설정을 완료한 후 Claude Code를 사용하면:

  1. 명령어 실행: claude 명령어로 AI 코딩 세션 시작
  2. 작업 진행: Claude와 대화하며 코딩 작업 수행
  3. 세션 종료: 작업 완료 후 자동으로 Windows 토스트 알림 표시
  4. 멀티태스킹: 다른 앱을 사용하다가도 알림으로 작업 완료를 즉시 확인 가능

사용 사례 및 활용 팁

프로젝트별 맞춤 알림

특정 프로젝트에서만 작동하는 알림을 설정하려면 프로젝트 폴더에 .claude/settings.local.json 파일을 생성하자:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "powershell -ExecutionPolicy Bypass -File \"C:\\Users\\[사용자명]\\bin\\auto-notification.ps1\" -Title \"🚀 [프로젝트명] 완료\" -Message \"프로젝트 작업이 완료되었습니다!\" -Sound \"Notification.Default\""
          }
        ]
      }
    ]
  }
}

확장 가능성

이 기본 설정을 바탕으로 다음과 같은 고급 기능들도 구현할 수 있다:

  • 이메일 알림: 중요한 작업 완료 시 이메일 발송
  • 슬랙 메시지: 팀 채널에 작업 완료 알림
  • 파일 백업: 작업 완료 시 자동으로 파일 백업
  • 로그 기록: 모든 세션 기록을 자동으로 저장
  • Git 연동: 작업 완료 시 자동 커밋

문제 해결

토스트 알림이 표시되지 않는 경우

  1. Windows 알림 설정 확인: 설정 > 시스템 > 알림에서 알림이 활성화되어 있는지 확인
  2. 포커스 어시스트 설정: 집중 지원 모드에서도 알림이 표시되도록 설정
  3. 권한 문제: 스크립트 실행 권한이 올바르게 설정되었는지 확인

PowerShell 실행 오류

실행 정책 오류가 발생하면 다음 명령어로 해결할 수 있습니다:

Unblock-File "C:\Users\[사용자명]\bin\claude-notification.ps1"

결론

Claude Code hooks를 활용하면 개발 혹은 업무 자동화에 용이하다. 단순한 알림부터 시작해서 복잡한 워크플로우 자동화까지 확장할 수 있다. 특히 긴 분석 작업이나 복잡한 코드 생성 작업을 수행할 때, 다른 업무를 처리하면서도 Claude의 작업 완료를 놓치지 않을 수 있다.

+ Recent posts