---
name: day-plan
description: "장기 목표 + 일일진행 + 활동 로그를 분석하여 Obsidian Vault에 일일계획을 자동 생성. Google Drive API로 읽기/쓰기."
user_invocable: true
triggers:
  - "일일계획"
  - "daily plan"
  - "오늘 계획"
  - "계획 생성"
  - "모닝 플래너"
---

# Daily Plan -- 일일계획 생성

## 개요

장기 목표, 일일진행, 이전 계획, PC 활동 로그를 분석하여
Obsidian Vault에 일일계획을 자동 생성한다.
Google Drive API로 파일을 읽고 쓴다.

## 사용법

```
/day-plan              <- 오늘 계획 생성
/day-plan day 1        <- 1일 전 계획 생성
/day-plan day 0-2      <- 오늘~2일 전 (3일간 범위 처리)
```

### 파싱 규칙
1. `day N` -> N일 전 하루 계획 생성. 이미 존재하면 스킵.
2. `day N-M` -> N일 전 ~ M일 전 범위 (예: `day 0-2` = 오늘~2일 전). N < M 이어야 함.
3. 아규먼트 없음 -> 오늘 실행

---

## 설정

### Google Drive 폴더/파일 ID

```
GOALS_FILE_ID       = "1CNuBBr7XeKuwPGqG5tf1HE0PppNg7hkm"
DAILY_PROGRESS_FOLDER_ID = "16RJVBkjB3vdM9BHMa39YhkTJJMz1AIAL"
DAILY_PLAN_FOLDER_ID     = "19YX6W3K-TUjOpnKGEy9nSc_g-_f-pGbB"
```

### 경로

```
DRIVE_PY   = /Users/nicejames/.claude/skills/google-drive/scripts/drive.py
AUTH_PY    = /Users/nicejames/.claude/skills/google-drive/scripts/auth.py
VAULT      = /Users/nicejames/Library/CloudStorage/GoogleDrive-nicejames@gmail.com/My Drive/Obsidian Vault
PLAN_DIR   = $VAULT/3_Claude/plan/일일계획
TMP_DIR    = /tmp/day-plan
ORIGIN     = /Users/nicejames/Projects
```

---

## 실행 흐름 (6단계)

### Step 1: 날짜 계산

```bash
# 오늘
TARGET_DATE="$(date '+%Y-%m-%d')"

# N일 전
TARGET_DATE="$(date -v-${N}d '+%Y-%m-%d')"

# 파일명/헤더 계산 (macOS)
YS=$(date -j -f "%Y-%m-%d" "$TARGET_DATE" "+%y")     # 26
M=$(date -j -f "%Y-%m-%d" "$TARGET_DATE" "+%m")      # 03
D=$(date -j -f "%Y-%m-%d" "$TARGET_DATE" "+%-d")     # 31
DOW=$(date -j -f "%Y-%m-%d" "$TARGET_DATE" "+%u")    # 1=월 ~ 7=일

FILE_NAME="${YS}.${M}.md"                             # 26.03.md
HEADER="### ${M#0}.${D}(요일)"                        # ### 3.31(화)
FORMATTED="2026년 03월 31일 화요일"
```

**요일 한국어 매핑:** 1=월, 2=화, 3=수, 4=목, 5=금, 6=토, 7=일

### Step 2: 중복 체크

대상 날짜의 계획이 이미 존재하는지 확인한다.

```bash
# Drive에서 월별 파일 검색
python3 "$DRIVE_PY" list "$DAILY_PLAN_FOLDER_ID" --limit 50

# 파일이 있으면 다운로드하여 헤더 존재 여부 확인
grep -F "$HEADER" downloaded_plan.md
```

- 헤더가 이미 있으면 -> **스킵** ("이미 존재합니다" 보고)
- 헤더가 없으면 -> 계속 진행

### Step 3: 컨텍스트 데이터 수집

Google Drive에서 3개 파일을 다운로드하고, 로컬 활동을 수집한다.

#### 3-1. Drive 파일 다운로드

```bash
mkdir -p "$TMP_DIR"

# 장기 목표 (항상)
python3 "$DRIVE_PY" download "$GOALS_FILE_ID" "$TMP_DIR/goals.md"

# 일일진행 (해당 월)
PROGRESS_ID=$(drive_find_file_id "$DAILY_PROGRESS_FOLDER_ID" "$FILE_NAME")
python3 "$DRIVE_PY" download "$PROGRESS_ID" "$TMP_DIR/progress.md"

# 이전 일일계획 (해당 월)
PLAN_ID=$(drive_find_file_id "$DAILY_PLAN_FOLDER_ID" "$FILE_NAME")
python3 "$DRIVE_PY" download "$PLAN_ID" "$TMP_DIR/prev_plans.md"
```

**drive_find_file_id 로직:**
```bash
python3 "$DRIVE_PY" list "$FOLDER_ID" --limit 50 | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
for f in data.get('files', []):
    if f['name'] == 'TARGET_FILENAME':
        print(f['id'])
        break
"
```

파일이 없으면 빈 파일 생성.

#### 3-2. PC 활동 수집

```bash
# 최근 수정 파일 (24시간)
find /Users/nicejames/Projects -type f \
  \( -name "*.py" -o -name "*.ts" -o -name "*.tsx" -o -name "*.js" \
  -o -name "*.md" -o -name "*.json" -o -name "*.html" -o -name "*.css" \
  -o -name "*.sh" \) -mtime -1 | head -50

# Git 커밋 (최근 2일)
for repo in /Users/nicejames/Projects/*/; do
    cd "$repo" && git log --oneline --since="2 days ago" --format="%h %s" | head -10
done

# 최근 실행 앱
mdfind -onlyin /Applications 'kMDItemLastUsedDate >= $time.today(-1)' | head -20

# 터미널 최근 명령어
tail -50 ~/.zsh_history | sed 's/^: [0-9]*:[0-9]*;//' | head -30
```

#### 3-3. 데이터 제한

- 일일진행: `tail -300` (최근 300줄)
- 이전 계획: `tail -300` (최근 300줄)
- 장기 목표: 전체

### Step 4: 계획 생성

수집한 데이터를 분석하여 일일계획을 직접 생성한다.

#### 역할

당신은 나의 **개인 코치이자 전략 분석가**입니다.
엄격하고 직설적인 톤으로 말합니다.

#### 분석 대상

1. **장기 목표** -- 방향성과 우선순위 판단 기준
2. **일일진행** -- 최근 실행한 작업, 진행 패턴
3. **이전 계획** -- 계획 대비 실행 갭 분석
4. **PC 활동 로그** -- 실제 시간 사용 패턴

#### 출력 형식 (Obsidian 호환 마크다운)

인사말/날짜헤더 없이 바로 시작:

```markdown
> [!success]+ 오늘의 목표
> - 핵심 목표 3~5개 (우선순위 순)

> [!danger]+ 채찍질
> - 부족한 점 직설적 지적
> - 계획 대비 실행 갭
> - 시간 낭비 패턴 지적

> [!info]+ 실행 계획
> - **오전 (09~12)**: 구체적 작업
> - **오후 (13~18)**: 구체적 작업
> - **저녁 (19~22)**: 구체적 작업

> [!warning]+ 마감/주의사항
> - 임박한 마감
> - 의존성/블로커

> [!tip]+ 전문가 컨설팅
> - 큰 그림 전략 조언
> - 우선순위 재조정 제안

> [!quote] 오늘의 한마디
> 동기부여 또는 경각심을 주는 한 문장

---

#### 오늘의 질문
소크라테스식 5개 (주관식+객관식 혼합)
1. ...
2. ...

---

#### 나와의 대화
(사용자가 자유롭게 작성하는 영역)
```

### Step 5: 파일 저장

#### 5-1. 파일 구성

**월별 파일이 신규인 경우** (Drive에 해당 월 파일 없음):

```markdown
---
created: 2026-03-31
tags:
  - 일일계획
  - morning-planner
---

# 26년 3월 일일계획

### 3.31(화)
{생성된 계획 내용}

```

**기존 월별 파일에 추가하는 경우:**

```markdown

### 3.31(화)
{생성된 계획 내용}

```

#### 5-2. Google Drive 업로드

```bash
# 기존 파일이 있으면: 다운로드 → 새 내용 추가 → 기존 삭제 → 재업로드
python3 "$DRIVE_PY" download "$EXISTING_ID" "$TMP_DIR/existing_plan.md"
cat new_plan.md >> "$TMP_DIR/existing_plan.md"
python3 "$DRIVE_PY" trash "$EXISTING_ID"
python3 "$DRIVE_PY" upload "$TMP_DIR/existing_plan.md" --folder "$DAILY_PLAN_FOLDER_ID" --name "$FILE_NAME"

# 신규면: 바로 업로드
python3 "$DRIVE_PY" upload new_plan.md --folder "$DAILY_PLAN_FOLDER_ID" --name "$FILE_NAME"
```

#### 5-3. 로컬 Vault 저장 (마운트 있으면)

```bash
PLAN_DIR="$VAULT/3_Claude/plan/일일계획"
if [ -d "$PLAN_DIR" ]; then
    if [ -f "$PLAN_DIR/$FILE_NAME" ]; then
        cat new_plan.md >> "$PLAN_DIR/$FILE_NAME"
    else
        cp new_plan.md "$PLAN_DIR/$FILE_NAME"
    fi
fi
```

### Step 6: 결과 보고

```
## 일일계획 생성 완료

- 날짜: 2026-03-31 (화)
- 파일: 3_Claude/plan/일일계획/26.03.md
- Drive 업로드: 완료
- 로컬 저장: 완료
```

---

## 범위 처리 (day N-M)

`/day-plan day 0-2` -> 오늘, 1일 전, 2일 전 순서대로 처리.

각 날짜마다:
1. 중복 체크 (이미 있으면 스킵)
2. 컨텍스트 수집
3. 계획 생성
4. 업로드

스킵된 날짜는 보고에 포함.

---

## 핵심 규칙

1. **중복 생성 금지** -- 해당 날짜 헤더가 이미 있으면 스킵
2. **기존 내용 삭제 금지** -- 월별 파일의 기존 계획은 보존, 추가만
3. **Drive + 로컬 동시 저장** -- Drive API 업로드 필수, 로컬은 마운트 있을 때만
4. **엄격한 톤** -- 개인 코치 역할, 직설적 피드백
5. **Obsidian callout 형식** -- `> [!type]+` 사용, 옵시디안에서 바로 렌더링
6. **데이터 제한** -- 일일진행/이전 계획은 최근 300줄만 사용 (프롬프트 크기 제한)
