一键导入
project-time-tracker
프로젝트별 Claude Code 세션 시간을 집계하여 리포트 생성. 일별/주별/월별 시간 분포를 Obsidian 테이블로 시각화. "시간 추적", "프로젝트 시간", "time tracking" 등의 요청 시 자동 적용.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
프로젝트별 Claude Code 세션 시간을 집계하여 리포트 생성. 일별/주별/월별 시간 분포를 Obsidian 테이블로 시각화. "시간 추적", "프로젝트 시간", "time tracking" 등의 요청 시 자동 적용.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
에러 로그, 스택 트레이스, 시스템 장애 정보를 분석하여 구조화된 버그 리포트를 자동 생성.
매일 아침 업무 시작 전 어제 작업 내역을 정리하여 Daily Note에 반영. 서브 에이전트 기반 병렬 처리로 메인 컨텍스트 절약. "어제 작업 정리해줘", "daily log", "업무 내역 정리" 등의 요청 시 자동 적용.
Claude Code 세션 탐색 및 분석. agf 데이터 소스(history.jsonl)를 활용한 세션 리스트 조회 및 상세 분석. "세션 목록", "session list", "agf" 등의 요청 시 자동 적용.
QA 테스트 결과, 이슈 내용, 조치 사항을 구조화된 QA 문서로 자동 생성.
신기술 스택 도입, 아키텍처 패턴, 구현 가이드를 구조화된 기술 문서로 자동 생성.
프롬프트 작성, brainstorming, planning, design, 설계, 기능 개발 시 Prompt Contracts 프레임워크 적용. Goal/Constraints/Format/Failure Conditions 4요소로 명확한 명세 작성. "바이브 코딩" 방지. brainstorming, writing-plans, 설계, 기능 구현 관련 작업 시 자동 적용.
| name | project-time-tracker |
| description | 프로젝트별 Claude Code 세션 시간을 집계하여 리포트 생성. 일별/주별/월별 시간 분포를 Obsidian 테이블로 시각화. "시간 추적", "프로젝트 시간", "time tracking" 등의 요청 시 자동 적용. |
Claude Code 세션 로그의 타임스탬프를 분석하여 프로젝트별 작업 시간을 집계하고, 일별/주별/월별 리포트를 생성하는 skill.
/project-time-tracker # 이번 주 시간 리포트
/project-time-tracker daily # 오늘 시간 리포트
/project-time-tracker weekly # 이번 주 시간 리포트 (기본값)
/project-time-tracker monthly # 이번 달 시간 리포트
/project-time-tracker 2026-01-15 # 특정 날짜 시간 리포트
| 항목 | 경로 |
|---|---|
| 세션 로그 | ~/.claude/projects/[encoded-path]/*.jsonl |
| 출력 | ~/OneDrive/my-obsidian-vault/analytics/time-tracking/ |
~/.claude/projects/
├── -Users-msbaek-project-a/
│ ├── abc123.jsonl
│ └── def456.jsonl
├── -Users-msbaek-project-b/
│ └── ghi789.jsonl
└── ...
세션 시간 계산:
timestamp 필드timestamp 필드# 세션 시작/종료 시간 추출
jq -s '[.[0].timestamp, .[-1].timestamp] |
{start: .[0], end: .[1],
duration_min: ((.[1] | fromdateiso8601) - (.[0] | fromdateiso8601)) / 60}' \
session.jsonl
# 모드에 따른 기간 설정
MODE="${1:-weekly}"
case "$MODE" in
daily|today)
START_DATE=$(date +%Y-%m-%d)
END_DATE=$(date -v+1d +%Y-%m-%d)
PERIOD_NAME="일일"
;;
weekly)
START_DATE=$(date -v-$(($(date +%u) - 1))d +%Y-%m-%d) # 이번 주 월요일
END_DATE=$(date -v+1d +%Y-%m-%d)
PERIOD_NAME="주간"
;;
monthly)
START_DATE=$(date +%Y-%m-01) # 이번 달 1일
END_DATE=$(date -v+1d +%Y-%m-%d)
PERIOD_NAME="월간"
;;
*)
# 특정 날짜
START_DATE="$MODE"
END_DATE=$(date -j -f "%Y-%m-%d" -v+1d "$MODE" +%Y-%m-%d)
PERIOD_NAME="일일"
;;
esac
echo "분석 기간: $START_DATE ~ $END_DATE ($PERIOD_NAME)"
# 기간 내 수정된 세션 로그 찾기
find ~/.claude/projects -name "*.jsonl" \
-newermt "$START_DATE 00:00:00" \
! -newermt "$END_DATE 00:00:00" 2>/dev/null
# 프로젝트 경로 디코딩 함수
decode_project_path() {
echo "$1" | sed 's/-/\//g' | sed 's/^\/Users\/msbaek\///'
}
# 각 세션 시간 계산 및 프로젝트별 집계
for session in $(find ~/.claude/projects -name "*.jsonl" -newermt "$START_DATE"); do
PROJECT_DIR=$(dirname "$session" | xargs basename)
PROJECT_NAME=$(decode_project_path "$PROJECT_DIR")
# 세션 시간 계산 (분 단위)
DURATION=$(jq -s '
if length > 1 then
(((.[-1].timestamp | fromdateiso8601) - (.[0].timestamp | fromdateiso8601)) / 60) | floor
else
0
end
' "$session" 2>/dev/null || echo "0")
echo "$PROJECT_NAME: ${DURATION}분"
done | sort | uniq -c | sort -rn
# 각 세션의 날짜별 시간 분포
for session in $(find ~/.claude/projects -name "*.jsonl" -newermt "$START_DATE"); do
# 세션 시작 날짜 추출
SESSION_DATE=$(jq -r '.[0].timestamp[:10]' "$session" 2>/dev/null)
# ... 집계
done
---
created: {DATE}
type: time-tracking
period: daily
date: {TARGET_DATE}
tags:
- analytics/time
- analytics/daily
---
# 시간 추적 - {TARGET_DATE}
## 오늘 작업 시간
| 프로젝트 | 세션 수 | 작업 시간 |
|---------|--------|----------|
| project-a | 3 | 2h 30m |
| project-b | 2 | 1h 15m |
| **합계** | **5** | **3h 45m** |
## 세션 상세
| 시작 | 종료 | 프로젝트 | 시간 |
|-----|-----|---------|-----|
| 09:30 | 11:00 | project-a | 1h 30m |
| 14:00 | 15:00 | project-b | 1h 00m |
| ... | ... | ... | ... |
---
created: {DATE}
type: time-tracking
period: weekly
week: {WEEK_NUM}
tags:
- analytics/time
- analytics/weekly
---
# 주간 시간 추적 - {WEEK_NUM}
> 분석 기간: {START_DATE} (월) ~ {END_DATE} (금)
## 프로젝트별 총 시간
| 프로젝트 | 세션 수 | 총 시간 | 비율 |
|---------|--------|--------|-----|
| project-a | 12 | 8h 30m | 45% |
| project-b | 8 | 5h 20m | 28% |
| project-c | 5 | 3h 10m | 17% |
| 기타 | 3 | 1h 50m | 10% |
| **합계** | **28** | **18h 50m** | **100%** |
## 일별 시간 분포
| 프로젝트 | 월 | 화 | 수 | 목 | 금 | 합계 |
|---------|-----|-----|-----|-----|-----|------|
| project-a | 2h | 1h30m | 2h | 1h30m | 1h30m | 8h30m |
| project-b | 1h | 1h | 1h30m | 1h | 50m | 5h20m |
| ... | ... | ... | ... | ... | ... | ... |
## 일별 총 작업 시간
| 요일 | 세션 수 | 총 시간 |
|-----|--------|--------|
| 월 | 5 | 3h 30m |
| 화 | 6 | 4h 00m |
| 수 | 7 | 4h 15m |
| 목 | 5 | 3h 45m |
| 금 | 5 | 3h 20m |
---
created: {DATE}
type: time-tracking
period: monthly
month: {MONTH}
tags:
- analytics/time
- analytics/monthly
---
# 월간 시간 추적 - {MONTH}
## 프로젝트별 총 시간
| 프로젝트 | 세션 수 | 총 시간 | 비율 |
|---------|--------|--------|-----|
| ... | ... | ... | ... |
## 주간별 분포
| 프로젝트 | W01 | W02 | W03 | W04 | 합계 |
|---------|-----|-----|-----|-----|------|
| project-a | 8h | 10h | 7h | 9h | 34h |
| ... | ... | ... | ... | ... | ... |
## 일별 추이 (그래프용 데이터)
| 날짜 | 시간(분) |
|-----|---------|
| 01 | 180 |
| 02 | 210 |
| ... | ... |
| 분 | 표시 형식 |
|---|---|
| 30 | 30m |
| 60 | 1h |
| 90 | 1h 30m |
| 150 | 2h 30m |
# 분 → 시간:분 변환
format_duration() {
local mins=$1
local hours=$((mins / 60))
local remaining=$((mins % 60))
if [ $hours -gt 0 ]; then
echo "${hours}h ${remaining}m"
else
echo "${remaining}m"
fi
}
weekly-claude-analytics: 주간 종합 분석 (시간 외 다른 지표 포함)daily-work-logger: 일일 작업 로그usage-pattern-analyzer: 도구 사용 패턴 분석