Claude Code "Skills" 로 일정관리. (custom skills)

요즘 거의 모든 일을 Claude Code 워크스페이스 안에서 하려고 한다.

문서 작성도, 블로그 발행도, 심지어 업무 자동화도.

하지만 미뤄둔 게 있었다.

일정 관리.


Google Calendar를 MCP로 연결하는 방법도 있었지만,

Claude Code에서 MCP는 항상 context를 차지하고 있어서 부담스러웠다.

그러다 Claude에 Skills라는 새로운 방식이 나왔다.

"AI가 스스로 판단해서 실행하는 기능 모듈"

생각보다 많은 걸 할 수 있겠다는 생각에,

Claude Code 내에서 Google Calendar(일정 관리)를 시도했다.

상담원 기술 페이지 스크린샷

자연어로 캘린더 조회

이를테면 이런 방식이다.

Claude Code + Skills를 셋팅해서

나: "오늘 일정 뭐 있어?"

Claude: (알아서 캘린더 스크립트 실행)

화면엔 이렇게 뜬다.

```markdown
## 오늘 일정
- 19:30 GPTers 19기 스터디장 OT 모임
```

내가 "일정"이라는 단어만 말하면,

Claude가 알아서 Google Calendar를 조회하고,

Markdown으로 정리해서 보여준다.

MCP처럼 서버를 돌릴 필요도 없고, 복잡한 설정도 필요 없다.

그냥 한 번 세팅해두면,

"오늘 일정", "이번 주 일정", "미팅 잡아줘"

이런 자연스러운 말에 자동으로 반응한다.

Claude Code와 함께 만들어가기

먼저 Claude Code에게 Skills 업데이트 문서를 읽혔다.

"Google Calendar를 Skill로 만들고 싶은데, 어떻게 하면 좋을까?"

Claude가 두 가지 옵션을 제안했다.

옵션 1: Python으로 Google Calendar API 직접 구현

- 장점: 완전한 제어 가능

- 단점: OAuth 인증, 기능 구현 모두 직접 해야 함

옵션 2: gcalcli (CLI 도구) 활용 + Python 래퍼

- 장점: 기능은 gcalcli가 처리, 출력만 Markdown으로 변환

- 단점: 외부 도구 의존성

gcalcli를 선택했다.

"바퀴를 다시 발명할 필요는 없으니까."


Claude가 설치 과정을 안내했다.

```bash
brew install pipx
pipx install gcalcli
gcalcli init
```

10분 만에 설치 완료.

OAuth 인증 에러가 났는데, Claude가 바로 진단했다.

"OAuth 앱이 테스트 모드인데 사용자가 테스터 목록에 없네요."

Google Cloud Console에서 내 이메일을 테스터로 추가하니 해결.

출력 파싱 문제

gcalcli는 잘 작동했는데, 출력 형식이 문제였다.

```
Thu Oct 23 하나 94,000
9:00am Team Meeting
16:00 록담 미팅
```


이걸 Daily Note에 넣으려면 Markdown으로 변환해야 했다.

Claude에게 "이 출력을 Markdown으로 변환하는 Python 스크립트 만들어줘"라고 했다.


문제 1: ANSI 색상 코드

첫 번째 버전을 실행했더니 이상한 문자가 섞여 나왔다.

```
[0;33m\nThu Oct 23[0m[0m 하나 94,000
```


Claude에게 보여주니:

"아, --nocolor 옵션을 써도 일부 ANSI 코드가 남네요. 정규식으로 제거하겠습니다."

```python
output_clean = re.sub(r'\x1b\[[0-9;]*m|\[[0-9;]*m', '', output)
```

해결.

문제 2: 종일 일정 미표시

"종일 일정이 안 나와."

Claude: "gcalcli의 날짜 범위 처리 버그입니다. 내일까지 조회한 후 오늘 것만 필터링하면 됩니다."

```python
tomorrow = (today_date + timedelta(days=1)).strftime('%Y-%m-%d')
cmd = ['agenda', today, tomorrow, '--nocolor', '--nodeclined']
filtered = filter_today_only(output, today)
```

해결.


문제 3: 시간 형식 혼재

"어떤 일정은 9:00am인데 어떤 건 16:00이야."

Claude: "12시간 형식과 24시간 형식을 모두 지원하도록 수정하겠습니다."

```python
time_match = re.match(r'^\s*(\d{1,2}:\d{2})([ap]m)?', line, re.IGNORECASE)
if time_match:
time_str = time_match.group(1)
ampm = time_match.group(2)
if ampm:
time_display = convert_to_24h(time_str + ampm)
else:
time_display = time_str
```

해결.

이런 식으로 문제가 생길 때마다 Claude에게 말하면,

바로 원인을 찾아서 수정해줬다.

내가 한 건 문제를 발견하고 Claude에게 알려주는 것뿐이었다.

Skills 통합


스크립트가 완성되면, SKILL.md 파일만 만들면 된다.

Claude가 템플릿을 제안했다:

```yaml
---
name: google-calendar
description: Google Calendar 일정 조회, 검색, 등록. "오늘 일정", "이번 주 일정", "일정 검색" 등을 언급하면 자동 실행.
allowed-tools: Bash, Read
---
## 사용 시나리오
### 1. 오늘 일정 조회
Trigger: "오늘 일정 뭐 있어?"
실행: cd /Users/rhim/.../calendar && python3 get_events.py
### 2. 이번 주 일정 조회
Trigger: "이번 주 스케줄 알려줘"
실행: python3 get_week_events.py
```

핵심은 description이다.

Claude가 이 설명을 보고 언제 skill을 실행할지 판단한다.

"오늘 일정", "이번 주 일정" 같은 Trigger 키워드를 구체적으로 명시하면,

사용자가 자연스럽게 말했을 때 자동으로 실행된다.

MCP와 뭐가 다른가

MCP는 서버를 계속 돌려야 하고,

Claude Code에서 항상 context를 차지한다.

Skills는 필요할 때만 실행된다.

평소엔 context를 전혀 차지하지 않는다.

나처럼 Claude Code를 워크스페이스로 쓰면서

context를 최대한 효율적으로 쓰고 싶다면 Skills가 훨씬 낫다.

워크플로우가 끊기지 않는다

좋은 점은 세 가지다.

첫째, 워크플로우가 끊기지 않는다.

문서 쓰다가 → "오늘 일정 뭐 있지?" → 바로 확인 → 다시 문서 작업.

캘린더 앱 켜고, 날짜 찾고, 다시 돌아오는 번거로움이 없다.


둘째, 커스텀 커맨드와 완벽하게 연동된다.

나는 매일 아침 /daily-note를 쓴다.

이 커맨드가 실행되면:

1. 오늘 날짜의 Daily Note 생성

2. Claude가 자동으로 google-calendar skill 실행

3. 오늘 일정을 Markdown으로 가져와 삽입

4. 나는 템플릿이 완성된 노트를 바로 사용

```markdown
## 2025-10-22
### 📅 오늘 일정
- **19:30** GPTers 19기 스터디장 OT 모임
### 완료한 일
-
### 배운 점
-
```

이게 가능한 이유:

Skill의 description에 트리거 키워드를 명시해뒀기 때문이다.

```yaml
description: Google Calendar 일정 조회, 검색, 등록. "오늘 일정", "이번 주 일정", "일정 검색" 등을 언급하면 자동 실행.
```

/daily-note 커맨드의 프롬프트에 "오늘 일정을 포함해서 생성"이라는 문구가 들어있고,

Claude가 이걸 보고 자동으로 skill을 실행한다.


셋째, 템플릿 형식을 보장한다.

Skill로 가져온 일정을 내가 원하는 형식으로 변환해서 넣을 수 있다.

예를 들어:

- gcalcli 출력: 9:00am Team Meeting

- Daily Note 형식: - **09:00** Team Meeting


Python 스크립트에서 파싱 규칙을 정의해두면,

항상 내 템플릿 형식에 맞게 들어간다.


하루를 시작하는 루틴이 훨씬 가볍고 명확해졌다.


AI와 협업한다는 것

이번 경험에서 느낀 건,

내가 한 일:

- "일정 관리를 워크스페이스에 통합하고 싶다"는 의도

- 문제 발견 ("종일 일정이 안 나와", "시간 형식이 이상해")

- 옵션 선택 (Python API vs gcalcli)

Claude가 한 일:

- 기술 옵션 제안

- 설치 과정 안내

- 스크립트 작성

- 버그 수정

- 문서화

내가 방향을 잡고, Claude가 실행한다.

이게 2025년 방식의 협업인 것 같다.


워크스페이스가 완성되어 간다

이제 Claude Code 워크스페이스 안에서

문서 작업, 블로그 발행, 업무 자동화, 일정 관리까지

모두 해결된다.


브라우저 탭 10개 열고 왔다갔다 하는 대신,

터미널 하나에서 모든 게 흐른다.


워크스페이스가 점점 더 완성도 있게 만들어지고 있다.


하나씩 추가될 때마다,

내가 일하는 방식이 개선된다.

AI는 단순히 질문에 답하는 도구가 아니라,

일하는 환경을 만드는 파트너가 될 수 있다.


참고자료

- [Claude Code Skills 공식 문서](https://docs.claude.com/en/docs/claude-code/skills)

- [gcalcli - Google Calendar CLI](https://github.com/insanum/gcalcli)

- [Claude Code 커스텀 커맨드 가이드](https://docs.claude.com/en/docs/claude-code/custom-commands)

8
3개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요