---
name: tting-cli
description: |
  Tting CLI 사용 가이드. macOS 인터럽트 알림 앱 Tting의 CLI 명령어 사용법을 안내합니다.
  다음 상황에서 사용하세요:
  - "tting 사용법", "tting 명령어", "알림 보내는 법" 등 Tting CLI 관련 질문
  - tting notify, schedule, status 등 CLI 명령어 작성이 필요할 때
  - 스케줄 등록, 알림 테스트, CLI 설치 등 Tting 관련 작업 시
  - "tting", "띵" 키워드가 포함된 알림/스케줄 관련 요청
---

# Tting CLI Guide

Tting은 macOS에서 화면을 인터럽트하는 알림 앱이다. 기본 배너 알림과 달리 Banner 또는 Fullscreen Overlay로 강제 표시되며, 버튼 클릭으로 URL 열기, 셸 명령 실행, 앱 실행이 가능하다.

## 사전 요구사항

- Tting.app이 실행 중이어야 CLI 명령이 동작한다
- `tting status`로 앱 실행 상태를 확인할 수 있다
- CLI 심볼릭 링크가 없으면 `tting install-cli`로 설치한다

## 알림 보내기 (notify)

즉시 알림을 표시한다.

```bash
tting notify "<제목>" [옵션]
```

| 옵션 | 설명 | 기본값 |
|------|------|--------|
| `--body "<본문>"` | 알림 본문 텍스트 | 없음 |
| `--style <banner\|fullscreen>` | 알림 스타일 | banner |
| `--timeout <초>` | 자동 닫힘 시간 (banner만) | 10 |
| `--action "<라벨>:<타입>:<값>"` | 액션 버튼 (최대 2개) | 없음 |

### 액션 타입

```
--action "라벨:url:https://..."           # 브라우저에서 URL 열기
--action "라벨:shell:./script.sh"         # 셸 명령 실행
--action "라벨:app:com.apple.Xcode"       # 앱 열기 (bundle ID)
```

### 예시

```bash
# 간단한 알림
tting notify "빌드 완료"

# 본문 포함
tting notify "배포 완료" --body "v2.1.0 프로덕션 배포"

# 액션 버튼 포함
tting notify "배포 완료" \
  --body "v2.1.0 프로덕션 배포" \
  --timeout 15 \
  --action "대시보드:url:https://grafana.com" \
  --action "롤백:shell:./rollback.sh"

# 풀스크린 긴급 알림
tting notify "긴급: 서버 장애" \
  --body "프로덕션 API 응답 없음" \
  --style fullscreen \
  --action "대시보드:url:https://grafana.com" \
  --action "확인:url:https://status.company.com"
```

## 스케줄 관리 (schedule)

### 반복 스케줄 추가 (cron)

```bash
tting schedule add \
  --cron "<cron 표현식>" \
  --title "<제목>" \
  [--body "<본문>"] \
  [--style <banner|fullscreen>] \
  [--action "<라벨>:<타입>:<값>"]
```

Cron 표현식은 표준 5-field 형식: `분 시 일 월 요일`

```bash
# 평일 오전 10시 스탠드업 알림
tting schedule add \
  --cron "0 10 * * 1-5" \
  --title "스탠드업" \
  --body "데일리 스크럼 시작" \
  --action "Zoom:url:https://zoom.us/j/123456"

# 매시 정각 휴식 알림
tting schedule add --cron "0 * * * *" --title "스트레칭"

# 매일 오후 6시 퇴근 알림 (풀스크린)
tting schedule add \
  --cron "0 18 * * 1-5" \
  --title "퇴근 시간!" \
  --style fullscreen
```

### 일회성 예약 (once)

```bash
# 절대 시간
tting schedule once \
  --at "2026-03-21 15:00" \
  --title "회의 시작" \
  --action "Zoom:url:https://zoom.us/j/123"

# 상대 시간 (s=초, m=분, h=시간)
tting schedule once --in 30m --title "휴식 끝"
tting schedule once --in 1h --title "점심 시간"
tting schedule once --in 90s --title "타이머 종료" --style fullscreen
```

### 스케줄 목록 조회

```bash
tting schedule list
```

출력 예:
```
● [cron] 스탠드업  (style: banner, id: a1b2c3d4...)
● [once] 회의 시작  (style: banner, id: e5f6g7h8...)
○ [cron] 퇴근 알림  (style: fullscreen, id: i9j0k1l2...)
```
- `●` = 활성, `○` = 비활성

### 스케줄 삭제 / 토글

```bash
# 삭제
tting schedule remove <id>

# 활성/비활성 토글
tting schedule toggle <id>
```

## 유틸리티

```bash
# 앱 실행 상태 확인
tting status

# CLI 심볼릭 링크 설치
tting install-cli              # 자동 감지 (/opt/homebrew/bin 또는 /usr/local/bin)
tting install-cli --path /custom/bin   # 수동 경로 지정
```

## 알림 스타일

| 스타일 | 설명 | 자동 닫힘 |
|--------|------|-----------|
| `banner` | 화면 상단 배너 알림. 스와이프 업으로 닫기. | 기본 10초 |
| `fullscreen` | 모든 화면을 덮는 Gradient Curtain 오버레이. | 없음 (수동 닫기) |

## 종료 코드

| 코드 | 의미 |
|------|------|
| 0 | 성공 |
| 1 | 일반 오류 (잘못된 인자 등) |
| 2 | 앱 미실행 (소켓 연결 실패) |

## 활용 예시

```bash
# CI/CD 파이프라인에서 배포 완료 알림
deploy.sh && tting notify "배포 완료" \
  --body "$(git log --oneline -1)" \
  --action "GitHub:url:https://github.com/org/repo"

# 긴 빌드 후 알림
make build && tting notify "빌드 성공" || tting notify "빌드 실패" --style fullscreen

# 포모도로 타이머
tting schedule once --in 25m --title "포모도로 끝!" --style fullscreen
```
