with one click
close-day
인생OS 하루 마감 - 데일리 노트 회고 + 포커스 타이머 CSV 결산 + 에세이 자동 정리. 매일 저녁 22~23시 실행.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
인생OS 하루 마감 - 데일리 노트 회고 + 포커스 타이머 CSV 결산 + 에세이 자동 정리. 매일 저녁 22~23시 실행.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
인생OS AI 참모(에이전트) 설정 - 나만의 AI 참모 페르소나(이름·호칭·톤·역할)를 대화형으로 정의해 볼트 CLAUDE.md에 안전하게 기록. 기존 설정은 덮어쓰기 전 반드시 확인(비파괴적). 첫 설정 또는 업데이트 시 선택 실행.
인생OS 콘트롤타워 - home.md 대시보드 자동 생성/갱신. 북극성 준수율·포커스 누적·데일리·에세이·활성스킬을 한 화면에. 주 1회+수시 실행.
인생OS 에세이 자동발행(볼트 내부) - 데일리 에세이를 수집해 월별 모음집 + 명장면 인덱스로 정리. 외부 발송 없음. 주 1회 또는 월말 실행.
인생OS 월간 마감 - 지난달 데일리 노트를 월별 폴더로 정리 + 월간 리포트(작성일수·집중시간·북극성·핵심성과) 자동 생성. 매달 1일 실행.
인생OS 주간 마감 - 지난 7일 데일리+포커스 분석, 북극성 준수율 산출, 미완료 이월, 주간 리포트 자동 생성. 매주 일요일 저녁 실행.
인생OS 포커스 타이머 - 25분 집중 세션 시작/종료 + CSV 자동 기록. 하루 5개 의사결정 추적.
| name | close-day |
| description | 인생OS 하루 마감 - 데일리 노트 회고 + 포커스 타이머 CSV 결산 + 에세이 자동 정리. 매일 저녁 22~23시 실행. |
인생OS 17개 스킬 중 #2 (Tier 1: 일일 루틴) 매일 저녁 22~23시 1회 실행
오늘 데일리 노트 회고 섹션 채움 + 포커스 타이머 CSV 결산 + 에세이 1편 작성을 한 번에.
/close-day
→ 다음을 자동 수행:
01_daily/YYYY-MM-DD.md) 읽기07_scratch_ai/YYYY-MM-DD_에세이.md)#!/bin/bash
# 볼트 자동 탐색 (환경변수 LIFEOS_VAULT 우선)
if [ -n "$LIFEOS_VAULT" ] && [ -d "$LIFEOS_VAULT" ]; then
VAULT="$LIFEOS_VAULT"
else
VAULT_LIST=$(find "$HOME" -maxdepth 1 -type d -name "lifeOS_*" 2>/dev/null)
if [ -z "$VAULT_LIST" ]; then
echo "❌ 인생OS 볼트를 찾을 수 없습니다."
echo " 먼저 /lifeOS-init 을 실행하세요."
exit 1
fi
VAULT_COUNT=$(echo "$VAULT_LIST" | wc -l | tr -d ' ')
VAULT=$(echo "$VAULT_LIST" | head -1)
if [ "$VAULT_COUNT" -gt 1 ]; then
echo "⚠️ 여러 볼트 발견 (현재: $(basename $VAULT)):" >&2
echo "$VAULT_LIST" | sed 's|^| |' >&2
echo " 특정 볼트 지정: export LIFEOS_VAULT=~/lifeOS_[name]" >&2
echo "" >&2
fi
fi
USER_NAME=$(basename "$VAULT" | sed 's/lifeOS_//')
TODAY=$(date +%Y-%m-%d)
TODAY_COMPACT=$(date +%Y%m%d)
# 폴더 자동 탐색
DAILY_DIR=$(find "$VAULT" -maxdepth 1 -type d \( -name "01_daily" -o -name "01_데일리" \) | head -1)
SCRATCH_DIR=$(find "$VAULT" -maxdepth 1 -type d \( -name "07_scratch_ai" -o -name "07_AI초안" \) | head -1)
[ -z "$SCRATCH_DIR" ] && SCRATCH_DIR="$VAULT/07_scratch_ai" && mkdir -p "$SCRATCH_DIR"
TODAY_FILE="$DAILY_DIR/$TODAY.md"
CSV="$DAILY_DIR/focus_timer_$TODAY_COMPACT.csv"
STATE="$DAILY_DIR/.focus_timer_state"
ESSAY="$SCRATCH_DIR/${TODAY}_에세이.md"
echo ""
echo "🌙 ${USER_NAME}님의 하루 마감 ($TODAY)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
# 1. 진행 중 세션 자동 종료 안내
if [ -f "$STATE" ]; then
echo "⚠️ 진행 중인 포커스 타이머 세션 발견:"
cat "$STATE"
echo ""
read -p " 자동 종료할까요? (Y/n): " AUTO_STOP
if [ "$AUTO_STOP" != "n" ]; then
IFS='|' read -r SESSION_NO START_TIME ACTIVITY < "$STATE"
END_TIME=$(date +%H:%M)
START_MIN=$(( $(echo "$START_TIME" | cut -d: -f1) * 60 + $(echo "$START_TIME" | cut -d: -f2) ))
END_MIN=$(( $(echo "$END_TIME" | cut -d: -f1) * 60 + $(echo "$END_TIME" | cut -d: -f2) ))
DURATION=$((END_MIN - START_MIN))
[ $DURATION -lt 0 ] && DURATION=$((DURATION + 1440))
echo "$SESSION_NO,$START_TIME,$END_TIME,$DURATION,$ACTIVITY,(자동종료)" >> "$CSV"
rm "$STATE"
echo " ✓ 세션 #$SESSION_NO 자동 종료 (${DURATION}분)"
fi
fi
# 2. 오늘 데일리 노트 확인
if [ ! -f "$TODAY_FILE" ]; then
echo "⚠️ 오늘 데일리 노트가 없습니다."
echo " /today 를 먼저 실행하거나 빈 노트를 만듭니다."
cat > "$TODAY_FILE" <<EOF
# $TODAY
## 포커스 타이머
## 회고
EOF
fi
# 3. 포커스 타이머 결산 → 데일리 노트 삽입
echo "📊 포커스 타이머 결산:"
if [ -f "$CSV" ] && [ $(wc -l < "$CSV") -gt 1 ]; then
COUNT=$(($(wc -l < "$CSV") - 1))
TOTAL=$(awk -F, 'NR>1 {sum+=$4} END {print sum}' "$CSV")
echo " ${COUNT}개 세션, ${TOTAL}분 (≈ $((TOTAL/60))h $((TOTAL%60))m)"
# 시간대별 집계 (오전: 06-12, 오후: 12-18, 저녁: 18-24)
AM=$(awk -F, 'NR>1 {h=substr($2,1,2)+0; if (h>=6 && h<12) {n++; m+=$4}} END {print n"|"m+0}' "$CSV")
PM=$(awk -F, 'NR>1 {h=substr($2,1,2)+0; if (h>=12 && h<18) {n++; m+=$4}} END {print n"|"m+0}' "$CSV")
EV=$(awk -F, 'NR>1 {h=substr($2,1,2)+0; if (h>=18 || h<6) {n++; m+=$4}} END {print n"|"m+0}' "$CSV")
AM_N=$(echo $AM | cut -d'|' -f1); AM_M=$(echo $AM | cut -d'|' -f2)
PM_N=$(echo $PM | cut -d'|' -f1); PM_M=$(echo $PM | cut -d'|' -f2)
EV_N=$(echo $EV | cut -d'|' -f1); EV_M=$(echo $EV | cut -d'|' -f2)
# 시간대별 활동 요약 (csv 컬럼 5)
AM_ACT=$(awk -F, 'NR>1 {h=substr($2,1,2)+0; if (h>=6 && h<12) print $5}' "$CSV" | paste -sd"," - | sed 's/,$//')
PM_ACT=$(awk -F, 'NR>1 {h=substr($2,1,2)+0; if (h>=12 && h<18) print $5}' "$CSV" | paste -sd"," - | sed 's/,$//')
EV_ACT=$(awk -F, 'NR>1 {h=substr($2,1,2)+0; if (h>=18 || h<6) print $5}' "$CSV" | paste -sd"," - | sed 's/,$//')
TIMER_TABLE=$(cat <<EOF
## 포커스 타이머
| 시간대 | 세션 | 분 | 활동 |
|--------|------|-----|------|
| 오전 | $AM_N | $AM_M | $AM_ACT |
| 오후 | $PM_N | $PM_M | $PM_ACT |
| 저녁 | $EV_N | $EV_M | $EV_ACT |
| **합계** | **$COUNT** | **$TOTAL** | |
EOF
)
# 데일리 노트에 삽입 (## 포커스 타이머 섹션 교체)
python3 - "$TODAY_FILE" <<PYEOF
import sys, re
fn = sys.argv[1]
with open(fn) as f: content = f.read()
table = """$TIMER_TABLE"""
pattern = r'## 포커스 타이머.*?(?=\n## |\Z)'
if re.search(pattern, content, re.DOTALL):
new = re.sub(pattern, table.strip() + '\n\n', content, count=1, flags=re.DOTALL)
else:
new = content + '\n' + table + '\n'
with open(fn, 'w') as f: f.write(new)
PYEOF
echo " ✓ 데일리 노트 포커스 타이머 섹션 갱신"
else
echo " (오늘 기록 없음)"
fi
# 4. 회고 가이드 표시
echo ""
echo "📝 회고 가이드 — 데일리 노트 ## 회고 섹션에 답하세요:"
echo " 1. 오늘 가장 잘한 1가지는?"
echo " 2. 오늘 가장 아쉬운 1가지는?"
echo " 3. 내일 더 잘하기 위해 바꿀 1가지는?"
echo ""
# 5. 에세이 작성 가이드
if [ ! -f "$ESSAY" ]; then
cat > "$ESSAY" <<EOF
# ${TODAY} 에세이
> 오늘 깨달은 것, 만난 사람, 느낀 감정을 자유롭게 300단어 정도로.
> 폴라 톤: 하루키 + 김영하 + 이석원 (선택)
## 명장면 1개
(오늘 가장 인상 깊었던 순간 한 장면)
## 깨달음
(그 장면에서 무엇을 배웠나)
## 내일에게
(내일의 나에게 한 마디)
---
*${USER_NAME} · ${TODAY}*
EOF
echo "📓 에세이 템플릿 생성: $ESSAY"
else
echo "📓 에세이 파일 이미 존재: $ESSAY"
fi
# 6. 결산 요약
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✅ 하루 마감 준비 완료"
echo ""
echo "📌 마무리 체크리스트:"
echo " [ ] 데일리 노트 ## 회고 섹션 작성"
echo " [ ] 에세이 작성 ($(basename $ESSAY))"
echo " [ ] Obsidian에서 저장 확인"
echo " [ ] 내일 /today 알람 (07:30 권장)"
echo ""
# Obsidian 자동 열기 (회고 작성용)
if command -v open &> /dev/null; then
open "$TODAY_FILE" 2>/dev/null
fi
/close-day 실행 후 01_daily/2026-05-26.md:
# 2026-05-26
## AI 브리핑 (자동 생성: 07:32)
...
## 포커스 타이머
| 시간대 | 세션 | 분 | 활동 |
|--------|------|-----|------|
| 오전 | 2 | 67 | 북극성 정의, 이메일 정리 |
| 오후 | 2 | 55 | 회의 준비, 블로그 초안 |
| 저녁 | 1 | 25 | close-day |
| **합계** | **5** | **147** | |
## 회고
(수동 입력 — 3개 질문 답변)
Q: 포커스 타이머를 안 썼어요. close-day가 작동하나요? A: 네. "(오늘 기록 없음)"으로 표시되고 정상 진행됩니다.
Q: 에세이가 매일 부담스러워요. A: 3~5개 문장도 충분합니다. 꾸준함 > 완성도.
Q: 회고 섹션을 비워두면 안 되나요? A: 가능하지만 권장하지 않습니다. 매일 5분 회고가 4주 후 가장 큰 자산이 됩니다.
Q: 진행 중인 포커스 타이머 세션을 자동 종료하면 시간이 부정확하지 않나요? A: 부정확합니다. /focus-timer stop을 직접 실행한 시간 vs close-day 실행 시간의 차이만큼 오차 발생. close-day 전에 stop 권장.
/today — 아침 루틴 (이 스킬과 짝)/focus-timer — 일일 세션 기록 (이 스킬이 CSV 결산)/north-star-define — 회고 기준 (북극성 행동 점검)/weekly-review — 주간 리뷰 (W3 출시 예정)GPTers 22기 부트캠프 W1 일일 루틴 #2 2026-05-20 폴라 작성